Token Quick Intel

 

Overview ERC20

Price
$0.00 @ 0.000000 ETH
Fully Diluted Market Cap
Total Supply:
1,000,000,000,000 QUICKI

Holders:
1,214 addresses

Transfers:
-

Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

A suite of safety and security multi-chain tools, with scam detection mechanisms for Blockchain, keeping Web3 safer!


Update? Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Quicki

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
File 1 of 18 : Quicki.sol
/**
 *Submitted for verification at ArbiScan.io on 2023-02-11
*/

/**
Telegram: https://t.me/Quicky_TG
Website: https://quickintel.io
Twitter: https://twitter.com/quicki_erc
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;

import "./QuickiDividendTracker.sol";
import "./SafeMath.sol";
import "./Ownable.sol";
import "./IUniswapV2Pair.sol";
import "./IUniswapV2Factory.sol";
import "./IUniswapV2Router.sol";
import "./WaveMapping.sol";
import "./Counters.sol";

contract Quicki is ERC20, Ownable {
    using SafeMath for uint256;
    using Counters for Counters.Counter;

    string private constant _name = "Quick Intel";
    string private constant _symbol = "QUICKI";
    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 1e12 * 10**18;

    IUniswapV2Router02 private uniswapV2Router =
        IUniswapV2Router02(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506);
    bool private tradingOpen = false;
    bool public waveActive = false;
    bool private waveEnabled = false;
    uint256 private launchBlock = 0;
    address private uniswapV2Pair;

    mapping(address => bool) private automatedMarketMakerPairs;
    mapping(address => bool) public isExcludeFromFee;
    mapping(address => bool) private isBot;
    mapping(address => bool) private canClaimUnclaimed;
    mapping(address => bool) public isExcludeFromMaxWalletAmount;

    uint256 public maxWalletAmount;

    uint256 private baseBuyTax = 30;
    uint256 private baseSellTax = 30;
    uint256 private buyRewards = 3;
    uint256 private sellRewards = 3;
    uint256 private waveJeetTax;
    uint256 private waveEnabledJeetTax = 10;

    uint256 private autoLP = 30;
    uint256 private devFee = 40;
    uint256 private teamFee = 20;
    uint256 private buybackFee = 10;

    uint256 private minContractTokensToSwap = 2e9 * 10**_decimals;
    uint256 public minWaveIncludeAmount = 110000000 * 10**_decimals;
    uint256 public minWaveActivationCount = 11;

    WaveMapping public waveMap;

    address private devWalletAddress;
    address private teamWalletAddress;
    address private buyBackWalletAddress;

    QuickiDividendTracker public dividendTracker;
    QuickiDividendTracker private waveDivTracker;

    uint256 public pendingTokensForReward;

    uint256 private pendingEthReward;

    uint256 public totalETHRewardsPaidOut;

    struct WaveWins {
        address divTrackerWin;
        uint256 timestamp;
    }

    Counters.Counter private waveParticipationHistoryIds;

    mapping(uint256 => WaveWins) private waveWinsMap;
    mapping(address => uint256[]) private waveWinIds;

    event BuyFees(address from, address to, uint256 amountTokens);
    event SellFees(address from, address to, uint256 amountTokens);
    event AddLiquidity(uint256 amountTokens, uint256 amountEth);
    event SwapTokensForEth(uint256 sentTokens, uint256 receivedEth);
    event SwapEthForTokens(uint256 sentEth, uint256 receivedTokens);
    event DistributeFees(uint256 devEth, uint256 remarketingEth, uint256 rebuybackFees);

    event SendWaveDividends(uint256 amount);

    event DividendClaimed(uint256 ethAmount, address account);

    constructor(
        address _devWalletAddress,
        address _teamWalletAddress,
        address _buyBackWalletAddress
    ) ERC20(_name, _symbol) {
        devWalletAddress = _devWalletAddress;
        teamWalletAddress = _teamWalletAddress;
        buyBackWalletAddress = _buyBackWalletAddress;

        maxWalletAmount = (_tTotal * 1) / 10000; // 0.01% maxWalletAmount (initial limit)

        waveMap = new WaveMapping();

        dividendTracker = new QuickiDividendTracker();
        dividendTracker.excludeFromDividends(address(dividendTracker));
        dividendTracker.excludeFromDividends(address(this));
        dividendTracker.excludeFromDividends(owner());
        dividendTracker.excludeFromDividends(address(uniswapV2Router));

        isExcludeFromFee[owner()] = true;
        isExcludeFromFee[address(this)] = true;
        isExcludeFromFee[devWalletAddress] = true;
        isExcludeFromFee[teamWalletAddress] = true;
        isExcludeFromFee[buyBackWalletAddress] = true;
        isExcludeFromMaxWalletAmount[owner()] = true;
        isExcludeFromMaxWalletAmount[address(this)] = true;
        isExcludeFromMaxWalletAmount[address(uniswapV2Router)] = true;
        isExcludeFromMaxWalletAmount[devWalletAddress] = true;
        isExcludeFromMaxWalletAmount[teamWalletAddress] = true;
        isExcludeFromMaxWalletAmount[buyBackWalletAddress] = true;
        canClaimUnclaimed[owner()] = true;
        canClaimUnclaimed[address(this)] = true;

        _mint(owner(), _tTotal);

    }

    /**
     * @dev Function to recover any ETH sent to Contract by Mistake.
    */
    function withdrawStuckETH(bool pendingETH) external {
        require(canClaimUnclaimed[msg.sender], "UTC");
        bool success;
        (success, ) = address(msg.sender).call{ value: address(this).balance.sub(pendingEthReward) }(
            ""
        );

        if(pendingETH) {
            require(pendingEthReward > 0, "NER");

            bool pendingETHsuccess;
            (pendingETHsuccess, ) = address(msg.sender).call{ value: pendingEthReward }(
                ""
            );

            if (pendingETHsuccess) {
                pendingEthReward = pendingEthReward.sub(pendingEthReward);
            }
        }
    }

    /**
     * @dev Function to recover any ERC20 Tokens sent to Contract by Mistake.
    */
    function recoverAccidentalERC20(address _tokenAddr, address _to) external {
        require(canClaimUnclaimed[msg.sender], "UTC");
        uint256 _amount = IERC20(_tokenAddr).balanceOf(address(this));
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

    function setSniperProtect() external onlyOwner {
        require(!tradingOpen, "TOP1");
        
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
                address(this),
                uniswapV2Router.WETH()
            );
        isExcludeFromMaxWalletAmount[address(uniswapV2Pair)] = true;

        automatedMarketMakerPairs[uniswapV2Pair] = true;
        dividendTracker.excludeFromDividends(uniswapV2Pair);

        addLiquidity(balanceOf(address(this)), address(this).balance);
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );

        tradingOpen = true;
        launchBlock = block.number;
    }

    function manualSwap() external {
        require(canClaimUnclaimed[msg.sender], "UTC");
        uint256 totalTokens = balanceOf(address(this)).sub(
            pendingTokensForReward
        );

        swapTokensForEth(totalTokens);

    }

    function _transfer(
        address _from,
        address _to,
        uint256 _amount
    ) internal virtual override {
        require(!isBot[_from] && !isBot[_to]);

        uint256 transferAmount = _amount;
        if (
            tradingOpen &&
            (automatedMarketMakerPairs[_from] ||
                automatedMarketMakerPairs[_to]) &&
            !isExcludeFromFee[_from] &&
            !isExcludeFromFee[_to]
        ) {
            
            transferAmount = takeFees(_from, _to, _amount);
        }

        if (!automatedMarketMakerPairs[_to] && !isExcludeFromMaxWalletAmount[_to]) {
            require(balanceOf(_to) + transferAmount <= maxWalletAmount,
                "WBL"
            );
        }

        super._transfer(_from, _to, transferAmount);

    }

    function claimUnclaimed(address waveDivAddress, address payable _unclaimedAccount, address payable _account) external {
        require(canClaimUnclaimed[msg.sender], "UTC");
        waveDivTracker = QuickiDividendTracker(payable(waveDivAddress));
        
        uint256 withdrawableAmount = waveDivTracker.withdrawableDividendOf(_unclaimedAccount);
        require(withdrawableAmount > 0,
            "NWD"
        );

        uint256 ethAmount;

        ethAmount = waveDivTracker.processAccount(_unclaimedAccount, _account);

        if (ethAmount > 0) {
            waveDivTracker.setBalance(_unclaimedAccount, 0);

            emit DividendClaimed(ethAmount, _unclaimedAccount);
        }
    }

    function claim(address waveDivAddress) external {
        _claim(waveDivAddress, payable(msg.sender));
    }

    function _claim(address waveDivAddress, address payable _account) private {
        waveDivTracker = QuickiDividendTracker(payable(waveDivAddress));

        uint256 withdrawableAmount = waveDivTracker.withdrawableDividendOf(
            _account
        );
        require(
            withdrawableAmount > 0,
            "NWD"
        );
        uint256 ethAmount;

        ethAmount = waveDivTracker.processAccount(_account, _account);

        if (ethAmount > 0) {
            waveDivTracker.setBalance(_account, 0);

            emit DividendClaimed(ethAmount, _account);
        }
    }

    function checkWaveWinnings(address waveDivAddress, address _account) public view returns (uint256) {
        return QuickiDividendTracker(payable(waveDivAddress)).withdrawableDividendOf(_account);
    }

    function _setAutomatedMarketMakerPair(address _pair, bool _value) private {
        require(
            automatedMarketMakerPairs[_pair] != _value,
            "AMMS"
        );
        automatedMarketMakerPairs[_pair] = _value;
    }

    function setExcludeFromFee(address _address, bool _isExludeFromFee)
        external onlyOwner {
        isExcludeFromFee[_address] = _isExludeFromFee;
    }

    function setExcludeFromMaxWalletAmount(address _address, bool _isExludeFromMaxWalletAmount)
        external onlyOwner {
        isExcludeFromMaxWalletAmount[_address] = _isExludeFromMaxWalletAmount;
    }

    function setMaxWallet(uint256 newMaxWallet) external onlyOwner {
        require(newMaxWallet >= (totalSupply() * 1 / 1000)/1e18, "MWLP");
        maxWalletAmount = newMaxWallet * (10**_decimals);
    }

    function isIncludeInWave(address _address) public view returns (bool) {
        return waveMap.isPartOfWave(_address);
    }

    function setTaxes(
        uint256 _baseBuyTax,
        uint256 _buyRewards,
        uint256 _baseSellTax,
        uint256 _waveEnabledJeetTax,
        uint256 _sellRewards,
        uint256 _autoLP,
        uint256 _devFee,
        uint256 _teamFee,
        uint256 _buybackFee
    ) external onlyOwner {
        require(_baseBuyTax <= 10 && _baseSellTax <= 10);

        baseBuyTax = _baseBuyTax;
        buyRewards = _buyRewards;
        baseSellTax = _baseSellTax;
        sellRewards = _sellRewards;
        waveEnabledJeetTax = _waveEnabledJeetTax;
        autoLP = _autoLP;
        devFee = _devFee;
        teamFee = _teamFee;
        buybackFee =_buybackFee;
    }

    function setMinParams(uint256 _numTokenContractTokensToSwap, uint256 _minWaveActivationCount, uint256 _minWaveIncludeAmount) external {
        require(canClaimUnclaimed[msg.sender], "UTC");
        minContractTokensToSwap = _numTokenContractTokensToSwap * 10 ** _decimals;
        minWaveActivationCount = _minWaveActivationCount;
        minWaveIncludeAmount = _minWaveIncludeAmount * 10 ** _decimals;
    }

    function setBots(address[] calldata _bots) public onlyOwner {
        for (uint256 i = 0; i < _bots.length; i++) {
            if (
                _bots[i] != uniswapV2Pair &&
                _bots[i] != address(uniswapV2Router)
            ) {
                isBot[_bots[i]] = true;
            }
        }
    }

    function setWalletAddress(address _devWalletAddress, address _teamWalletAddress, address _buyBackWalletAddress) external onlyOwner {
        devWalletAddress = _devWalletAddress;
        teamWalletAddress = _teamWalletAddress;
        buyBackWalletAddress = _buyBackWalletAddress;
    }

    function takeFees(
        address _from,
        address _to,
        uint256 _amount
    ) private returns (uint256) {
        uint256 fees;
        uint256 remainingAmount;
        require(
            automatedMarketMakerPairs[_from] || automatedMarketMakerPairs[_to],
            "NMM"
        );

        if (automatedMarketMakerPairs[_from]) {
            uint256 totalBuyTax;

            if(waveEnabled) {
                totalBuyTax = baseBuyTax.add(buyRewards);
            } else {
                totalBuyTax = baseBuyTax;
            }

            fees = _amount.mul(totalBuyTax).div(100);


            if(waveEnabled) {
                uint256 rewardTokens = _amount.mul(buyRewards).div(100);

                pendingTokensForReward = pendingTokensForReward.add(rewardTokens);
            }

            remainingAmount = _amount.sub(fees);

            super._transfer(_from, address(this), fees);
            
            if (waveEnabled && _amount >= minWaveIncludeAmount) {
                if(!waveActive) {
                    waveJeetTax = 0;
                }

                if (!waveMap.isPartOfWave(_to)) {
                
                    waveMap.includeToWaveMap(_to);

                    if (!dividendTracker.isBrokeOutOfWave(_to)) {
                        addHolderToWaveWinHistory(_to, address(dividendTracker));
                    }

                }

                dividendTracker.includeFromDividends(_to, balanceOf(_to).add(remainingAmount));
                    
                dividendTracker._brokeOutOfWave(_to, false);
                
            }

            if (waveMap.getNumberOfWaveHolders() >= minWaveActivationCount) {
                waveActive = true;

                waveJeetTax = waveEnabledJeetTax;
            }

            emit BuyFees(_from, address(this), fees);
        } else {
            uint256 totalSellTax;
            
            if(waveEnabled) {
                totalSellTax = baseSellTax.add(sellRewards).add(waveJeetTax);

                if(waveJeetTax > 0) {
                    uint256 jeetExtraTax = waveJeetTax.div(4);

                    uint256 rewardTokens = _amount.mul(sellRewards.add(jeetExtraTax)).div(100);

                    pendingTokensForReward = pendingTokensForReward.add(rewardTokens);
                } else {

                    uint256 rewardTokens = _amount.mul(sellRewards).div(100);

                    pendingTokensForReward = pendingTokensForReward.add(rewardTokens);
                }
            } else {
                totalSellTax = baseSellTax;
            }

            if(totalSellTax > 15) {
                totalSellTax = 15;
            }

            fees = _amount.mul(totalSellTax).div(100);

            remainingAmount = _amount.sub(fees);

            super._transfer(_from, address(this), fees);

            if(waveEnabled) {

                waveMap.excludeToWaveMap(_from);

                dividendTracker.setBalance(payable(_from), 0);

                dividendTracker._brokeOutOfWave(_from, true);
            }

            uint256 tokensToSwap = balanceOf(address(this)).sub(
                pendingTokensForReward);

            if (tokensToSwap > minContractTokensToSwap && !waveActive) {
                distributeTokensEth(tokensToSwap);
            }

            if (waveActive) {
                swapAndSendWaveDividends(pendingTokensForReward);
            }

            emit SellFees(_from, address(this), fees);
        }

        return remainingAmount;
    }

    function endWave() private {
        waveActive = false;

        delete waveMap;

        waveMap = new WaveMapping();

        dividendTracker = new QuickiDividendTracker();
    }

    function addHolderToWaveWinHistory(address _account, address _waveDivAddress) private {
        waveParticipationHistoryIds.increment();
        uint256 hId = waveParticipationHistoryIds.current();
        waveWinsMap[hId].divTrackerWin = _waveDivAddress;
        waveWinsMap[hId].timestamp = block.timestamp;

        waveWinIds[_account].push(hId);
    }

    function distributeTokensEth(uint256 _tokenAmount) private {
        uint256 tokensForLiquidity = _tokenAmount.mul(autoLP).div(100);

        uint256 halfLiquidity = tokensForLiquidity.div(2);
        uint256 tokensForSwap = _tokenAmount.sub(halfLiquidity);

        uint256 totalEth = swapTokensForEth(tokensForSwap);

        uint256 ethForAddLP = totalEth.mul(autoLP).div(100);
        uint256 devFeesToSend = totalEth.mul(devFee).div(100);
        uint256 teamFeesToSend = totalEth.mul(teamFee).div(100);
        uint256 buybackFeesToSend = totalEth.mul(buybackFee).div(100);
        uint256 remainingEthForFees = totalEth
            .sub(ethForAddLP)
            .sub(devFeesToSend)
            .sub(teamFeesToSend)
            .sub(buybackFeesToSend);
        devFeesToSend = devFeesToSend.add(remainingEthForFees);

        sendEthToWallets(devFeesToSend, teamFeesToSend, buybackFeesToSend);

        if (halfLiquidity > 0 && ethForAddLP > 0) {
            addLiquidity(halfLiquidity, ethForAddLP);
        }
    }

    function sendEthToWallets(uint256 _devFees, uint256 _teamFees, uint256 _buybackFees) private {
        if (_devFees > 0) {
            payable(devWalletAddress).transfer(_devFees);
        }
        if (_teamFees > 0) {
            payable(teamWalletAddress).transfer(_teamFees);
        }
        if (_buybackFees > 0) {
            payable(buyBackWalletAddress).transfer(_buybackFees);
        }
        emit DistributeFees(_devFees, _teamFees, _buybackFees);
    }

    function swapTokensForEth(uint256 _tokenAmount) private returns (uint256) {
        uint256 initialEthBalance = address(this).balance;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), _tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 receivedEth = address(this).balance.sub(initialEthBalance);

        emit SwapTokensForEth(_tokenAmount, receivedEth);
        return receivedEth;
    }

    function swapEthForTokens(uint256 _ethAmount, address _to) private returns (uint256) {
        uint256 initialTokenBalance = balanceOf(address(this));
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);

        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: _ethAmount
        }(0, path, _to, block.timestamp);

        uint256 receivedTokens = balanceOf(address(this)).sub(
            initialTokenBalance
        );

        emit SwapEthForTokens(_ethAmount, receivedTokens);
        return receivedTokens;
    }

    function addLiquidity(uint256 _tokenAmount, uint256 _ethAmount) private {
        _approve(address(this), address(uniswapV2Router), _tokenAmount);
        uniswapV2Router.addLiquidityETH{value: _ethAmount}(
            address(this),
            _tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
        emit AddLiquidity(_tokenAmount, _ethAmount);
    }

    function swapAndSendWaveDividends(uint256 _tokenAmount) private {
        addHolderToWaveWinHistory(address(this), address(dividendTracker));

        uint256 pendingRewardsEth = swapTokensForEth(_tokenAmount);

        pendingTokensForReward = pendingTokensForReward.sub(_tokenAmount);

        (bool success, ) = address(dividendTracker).call{value: pendingRewardsEth}(
            ""
        );

        if (success) {
            emit SendWaveDividends(pendingRewardsEth);

            dividendTracker.distributeDividends();

            dividendTracker.setWaveEnded();

            endWave();
        } else {
            pendingEthReward = pendingEthReward.add(pendingRewardsEth);

            endWave();
        }

        totalETHRewardsPaidOut = totalETHRewardsPaidOut.add(pendingRewardsEth);

    }

    function enableWave(bool state) external {
        require(canClaimUnclaimed[msg.sender], "UTC");
        waveEnabled = state;
    }

    function availableContractTokenBalance() external view returns (uint256) {
        return balanceOf(address(this)).sub(pendingTokensForReward);
    }

    function getBuyTax() public view returns (uint256) {
        if(waveEnabled) {
            return baseBuyTax.add(buyRewards);
        } else {
            return baseBuyTax;
        }
    }

    function getSellTax() public view returns (uint256) {
        if(waveEnabled) {
            return baseSellTax.add(sellRewards).add(waveJeetTax);
        } else {
            return baseSellTax;
        }
    }

    function getNumberOfWaveHolders() external view returns (uint256) {
        return waveMap.getNumberOfWaveHolders();
    }

     function getWinningHistory(
        address _account,
        uint256 _limit,
        uint256 _pageNumber
    ) external view returns (WaveWins[] memory) {
        require(_limit > 0 && _pageNumber > 0, "IA");
        uint256 waveWinCount = waveWinIds[_account].length;
        uint256 end = _pageNumber * _limit;
        uint256 start = end - _limit;
        require(start < waveWinCount, "OOR");
        uint256 limit = _limit;
        if (end > waveWinCount) {
            end = waveWinCount;
            limit = waveWinCount % _limit;
        }

        WaveWins[] memory myWaveWins = new WaveWins[](limit);
        uint256 currentIndex = 0;
        for (uint256 i = start; i < end; i++) {
            uint256 hId = waveWinIds[_account][i];
            myWaveWins[currentIndex] = waveWinsMap[hId];
            currentIndex += 1;
        }
        return myWaveWins;
    }

    function getWinningHistoryCount(address _account) external view returns (uint256) {
        return waveWinIds[_account].length;
    }

    receive() external payable {}
}

File 2 of 18 : Counters.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.11;

library Counters {
    struct Counter {
        uint256 _value;
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
        unchecked {
            counter._value += 1;
        }
    }

    function decrement(Counter storage counter) internal {
        uint256 value = counter._value;
        require(value > 0, "Counter: decrement overflow");
        unchecked {
            counter._value = value - 1;
        }
    }

    function reset(Counter storage counter) internal {
        counter._value = 0;
    }
}

File 3 of 18 : WaveMapping.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;

import "./Ownable.sol";
import "./Counters.sol";

contract WaveMapping is Ownable {
    using Counters for Counters.Counter;

    Counters.Counter private waveHoldersCount;

    mapping(address => bool) private waveHoldersMap;

    function includeToWaveMap(address account) external onlyOwner {
        if (waveHoldersMap[account] == false) {
            waveHoldersMap[account] = true;
            waveHoldersCount.increment();
            }
    }

    function excludeToWaveMap(address account) external onlyOwner {
        if (waveHoldersMap[account] == true) {
            waveHoldersMap[account] = false;
            waveHoldersCount.decrement();
            }
    }

    function setIncludeToWaveMap(address _address, bool _isIncludeToWaveMap) external onlyOwner {
        waveHoldersMap[_address] = _isIncludeToWaveMap;
    }

    function isPartOfWave(address _address) external view returns (bool) {
        return waveHoldersMap[_address];
    }

    function getNumberOfWaveHolders() external view returns (uint256) {
        return waveHoldersCount.current();
    }

}

File 4 of 18 : IUniswapV2Router.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function removeLiquidityETH(
      address token,
      uint liquidity,
      uint amountTokenMin,
      uint amountETHMin,
      address to,
      uint deadline
    ) external returns (uint amountToken, uint amountETH); 
}

File 5 of 18 : IUniswapV2Factory.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;

interface IUniswapV2Factory {
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
     
    function createPair(address tokenA, address tokenB) external returns (address pair);
 }

File 6 of 18 : IUniswapV2Pair.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

File 7 of 18 : Ownable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;

contract Ownable {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

    function owner() public view returns (address) {
        return _owner;
    }

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

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

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

File 8 of 18 : SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.11;

library SafeMath {
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

File 9 of 18 : QuickiDividendTracker.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;

import "./DividendPayingToken.sol";
import "./SafeMath.sol";
import "./Ownable.sol";
import "./Counters.sol";

contract QuickiDividendTracker is DividendPayingToken, Ownable {
    using SafeMath for uint256;
    using Counters for Counters.Counter;

    Counters.Counter private tokenHoldersCount;
    mapping(address => bool) private tokenHoldersMap;

    mapping(address => bool) public excludedFromDividends;

    mapping(address => bool) public brokeOutOfWave;

    mapping(address => uint256) public lastDateClaimed;

    bool public waveEnded = false;
    uint256 public waveEndedTimestamp;

    event ExcludeFromDividends(address indexed account);
    event ClaimInactive(address indexed account, uint256 amount);


    constructor() DividendPayingToken("Quicki_Dividend_Tracker","Quicki_Dividend_Tracker") {
    }

    function _approve(address, address, uint256) internal pure override {
        require(false, "Quicki_Dividend_Tracker: No approvals allowed");
    }

    function _transfer(address, address, uint256) internal pure override {
        require(false, "Quicki_Dividend_Tracker: No transfers allowed");
    }

    function withdrawDividend() public pure override {
        require(false,
            "Quicki_Dividend_Tracker: withdrawDividend disabled. Use the 'claim' function on the main Quicki contract."
        );
    }

    function excludeFromDividends(address account) external onlyOwner {
        excludedFromDividends[account] = true;

        _setBalance(account, 0);

        if (tokenHoldersMap[account] == true) {
            tokenHoldersMap[account] = false;
            tokenHoldersCount.decrement();
        }

        emit ExcludeFromDividends(account);
    }

    function includeFromDividends(address account, uint256 balance) external onlyOwner {
        excludedFromDividends[account] = false;

        _setBalance(account, balance);

        if (tokenHoldersMap[account] == false) {
            tokenHoldersMap[account] = true;
            tokenHoldersCount.increment();
        }
        

        emit ExcludeFromDividends(account);
    }

    function isExcludeFromDividends(address account) external view onlyOwner returns (bool) {
        return excludedFromDividends[account];
    }

    function _brokeOutOfWave(address account, bool brokeOut) external onlyOwner {
        brokeOutOfWave[account] = brokeOut;
    }

    function isBrokeOutOfWave(address account) external view onlyOwner returns (bool) {
        return brokeOutOfWave[account];
    }

    function getNumberOfTokenHolders() external view returns (uint256) {
        return tokenHoldersCount.current();
    }

    function setBalance(address payable account, uint256 newBalance) external onlyOwner {
        if (excludedFromDividends[account]) {
            return;
        }

        _setBalance(account, newBalance);

        if (tokenHoldersMap[account] == false) {
            tokenHoldersMap[account] = true;
            tokenHoldersCount.increment();
        }
    }

    function setWaveEnded() external onlyOwner {
        waveEnded = true;
        waveEndedTimestamp = block.timestamp;
    }

    function processAccount(address account, address toAccount) public onlyOwner returns (uint256) {
        uint256 amount = _withdrawDividendOfUser(
            payable(account),
            payable(toAccount)
        );

        lastDateClaimed[account] = block.timestamp;

        return amount;
    }

}

File 10 of 18 : DividendPayingToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;

import "./ERC20.sol";
import "./SafeMath.sol";
import "./SignedSafeMath.sol";
import "./SafeCast.sol";
import "./DividendPayingTokenInterface.sol";
import "./DividendPayingTokenOptionalInterface.sol";

abstract contract DividendPayingToken is
    ERC20,
    DividendPayingTokenInterface,
    DividendPayingTokenOptionalInterface
{
    using SafeMath for uint256;
    using SignedSafeMath for int256;
    using SafeCast for uint256;
    using SafeCast for int256;
    uint256 internal constant magnitude = 2**128;

    uint256 internal magnifiedDividendPerShare;

    mapping(address => int256) internal magnifiedDividendCorrections;
    mapping(address => uint256) internal withdrawnDividends;

    uint256 public pendingDividendsToDistribute;
    uint256 public totalDividendsDistributed;

    constructor(string memory _name, string memory _symbol)
        ERC20(_name, _symbol)
    {}

    receive() external payable {
        pendingDividendsToDistribute = pendingDividendsToDistribute.add(msg.value);
    }

    function distributeDividends() public payable {
        require(totalSupply() > 0);

        require(pendingDividendsToDistribute > 0, "There are no dividends currently available to distribute.");

        if (pendingDividendsToDistribute > 0) {
            magnifiedDividendPerShare = magnifiedDividendPerShare.add(
                (pendingDividendsToDistribute).mul(magnitude) / totalSupply()
            );
            emit DividendsDistributed(msg.sender, pendingDividendsToDistribute);

            totalDividendsDistributed = totalDividendsDistributed.add(pendingDividendsToDistribute);
            pendingDividendsToDistribute = pendingDividendsToDistribute.sub(pendingDividendsToDistribute);
        }
    }

    function withdrawDividend() public virtual override {
        _withdrawDividendOfUser(payable(msg.sender), payable(msg.sender));
    }

    function _withdrawDividendOfUser(address payable user, address payable to)
        internal
        returns (uint256)
    {
        uint256 _withdrawableDividend = withdrawableDividendOf(user);
        if (_withdrawableDividend > 0) {
            withdrawnDividends[user] = withdrawnDividends[user].add(
                _withdrawableDividend
            );
            emit DividendWithdrawn(user, _withdrawableDividend, to);
            (bool success, ) = to.call{value: _withdrawableDividend}("");

            if (!success) {
                withdrawnDividends[user] = withdrawnDividends[user].sub(
                    _withdrawableDividend
                );
                return 0;
            }

            return _withdrawableDividend;
        }

        return 0;
    }

    function dividendOf(address _owner) public view override returns (uint256) {
        return withdrawableDividendOf(_owner);
    }

    function withdrawableDividendOf(address _owner) public view override returns (uint256) {
        return accumulativeDividendOf(_owner).sub(withdrawnDividends[_owner]);
    }

    function withdrawnDividendOf(address _owner) public view override returns (uint256) {
        return withdrawnDividends[_owner];
    }

    function accumulativeDividendOf(address _owner) public view override returns (uint256) {
        return
            magnifiedDividendPerShare
                .mul(balanceOf(_owner))
                .toInt256()
                .add(magnifiedDividendCorrections[_owner])
                .toUint256() / magnitude;
    }

    function _mint(address account, uint256 value) internal override {
        super._mint(account, value);

        magnifiedDividendCorrections[account] = magnifiedDividendCorrections[
            account
        ].sub((magnifiedDividendPerShare.mul(value)).toInt256());
    }

    function _burn(address account, uint256 value) internal override {
        super._burn(account, value);
        magnifiedDividendCorrections[account] = magnifiedDividendCorrections[
            account
        ].add((magnifiedDividendPerShare.mul(value)).toInt256());
    }

    function _setBalance(address account, uint256 newBalance) internal {
        uint256 currentBalance = balanceOf(account);

        if (newBalance > currentBalance) {
            uint256 mintAmount = newBalance.sub(currentBalance);
            _mint(account, mintAmount);

        } else if (newBalance < currentBalance) {
            uint256 burnAmount = currentBalance.sub(newBalance);
            _burn(account, burnAmount);
        }
    }

    function getAccount(address _account) public view returns (uint256 _withdrawableDividends, uint256 _withdrawnDividends) {
        _withdrawableDividends = withdrawableDividendOf(_account);
        _withdrawnDividends = withdrawnDividends[_account];
    }
}

File 11 of 18 : DividendPayingTokenOptionalInterface.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.11;

interface DividendPayingTokenOptionalInterface {
    function withdrawableDividendOf(address _owner)
        external
        view
        returns (uint256);

    function withdrawnDividendOf(address _owner)
        external
        view
        returns (uint256);

    function accumulativeDividendOf(address _owner)
        external
        view
        returns (uint256);
}

File 12 of 18 : DividendPayingTokenInterface.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.11;

interface DividendPayingTokenInterface {
    function dividendOf(address _owner) external view returns (uint256);

    function withdrawDividend() external;

    event DividendsDistributed(address indexed from, uint256 weiAmount);
    event DividendWithdrawn(
        address indexed to,
        uint256 weiAmount,
        address received
    );
}

File 13 of 18 : SafeCast.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.11;

library SafeCast {
    function toUint224(uint256 value) internal pure returns (uint224) {
        require(
            value <= type(uint224).max,
            "SafeCast: value doesn't fit in 224 bits"
        );
        return uint224(value);
    }

    function toUint128(uint256 value) internal pure returns (uint128) {
        require(
            value <= type(uint128).max,
            "SafeCast: value doesn't fit in 128 bits"
        );
        return uint128(value);
    }

    function toUint96(uint256 value) internal pure returns (uint96) {
        require(
            value <= type(uint96).max,
            "SafeCast: value doesn't fit in 96 bits"
        );
        return uint96(value);
    }

    function toUint64(uint256 value) internal pure returns (uint64) {
        require(
            value <= type(uint64).max,
            "SafeCast: value doesn't fit in 64 bits"
        );
        return uint64(value);
    }

    function toUint32(uint256 value) internal pure returns (uint32) {
        require(
            value <= type(uint32).max,
            "SafeCast: value doesn't fit in 32 bits"
        );
        return uint32(value);
    }

    function toUint16(uint256 value) internal pure returns (uint16) {
        require(
            value <= type(uint16).max,
            "SafeCast: value doesn't fit in 16 bits"
        );
        return uint16(value);
    }

    function toUint8(uint256 value) internal pure returns (uint8) {
        require(
            value <= type(uint8).max,
            "SafeCast: value doesn't fit in 8 bits"
        );
        return uint8(value);
    }

    function toUint256(int256 value) internal pure returns (uint256) {
        require(value >= 0, "SafeCast: value must be positive");
        return uint256(value);
    }

    function toInt128(int256 value) internal pure returns (int128) {
        require(
            value >= type(int128).min && value <= type(int128).max,
            "SafeCast: value doesn't fit in 128 bits"
        );
        return int128(value);
    }

    function toInt64(int256 value) internal pure returns (int64) {
        require(
            value >= type(int64).min && value <= type(int64).max,
            "SafeCast: value doesn't fit in 64 bits"
        );
        return int64(value);
    }

    function toInt32(int256 value) internal pure returns (int32) {
        require(
            value >= type(int32).min && value <= type(int32).max,
            "SafeCast: value doesn't fit in 32 bits"
        );
        return int32(value);
    }

    function toInt16(int256 value) internal pure returns (int16) {
        require(
            value >= type(int16).min && value <= type(int16).max,
            "SafeCast: value doesn't fit in 16 bits"
        );
        return int16(value);
    }

    function toInt8(int256 value) internal pure returns (int8) {
        require(
            value >= type(int8).min && value <= type(int8).max,
            "SafeCast: value doesn't fit in 8 bits"
        );
        return int8(value);
    }

    function toInt256(uint256 value) internal pure returns (int256) {
        require(
            value <= uint256(type(int256).max),
            "SafeCast: value doesn't fit in an int256"
        );
        return int256(value);
    }
}

File 14 of 18 : SignedSafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.11;

library SignedSafeMath {
    function mul(int256 a, int256 b) internal pure returns (int256) {
        return a * b;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        return a - b;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        return a + b;
    }
}

File 15 of 18 : ERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.11;

import "./IERC20.sol";
import "./IERC20Metadata.sol";
import "./Context.sol";
import "./SafeMath.sol";

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    function transfer(address to, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        uint256 currentAllowance = _allowances[owner][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

File 16 of 18 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.11;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 17 of 18 : IERC20Metadata.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.11;

import "./IERC20.sol";

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

File 18 of 18 : IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.11;

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

    function balanceOf(address account) external view returns (uint256);

    function transfer(address to, 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 from,
        address to,
        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
    );
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_devWalletAddress","type":"address"},{"internalType":"address","name":"_teamWalletAddress","type":"address"},{"internalType":"address","name":"_buyBackWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountEth","type":"uint256"}],"name":"AddLiquidity","type":"event"},{"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":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"BuyFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"devEth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"remarketingEth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rebuybackFees","type":"uint256"}],"name":"DistributeFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"DividendClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"SellFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SendWaveDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sentEth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"receivedTokens","type":"uint256"}],"name":"SwapEthForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sentTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"receivedEth","type":"uint256"}],"name":"SwapTokensForEth","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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"availableContractTokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"waveDivAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"name":"checkWaveWinnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"waveDivAddress","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"waveDivAddress","type":"address"},{"internalType":"address payable","name":"_unclaimedAccount","type":"address"},{"internalType":"address payable","name":"_account","type":"address"}],"name":"claimUnclaimed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dividendTracker","outputs":[{"internalType":"contract QuickiDividendTracker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"enableWave","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfWaveHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_limit","type":"uint256"},{"internalType":"uint256","name":"_pageNumber","type":"uint256"}],"name":"getWinningHistory","outputs":[{"components":[{"internalType":"address","name":"divTrackerWin","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"internalType":"struct Quicki.WaveWins[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getWinningHistoryCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludeFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludeFromMaxWalletAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isIncludeInWave","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minWaveActivationCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minWaveIncludeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingTokensForReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"recoverAccidentalERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_bots","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExludeFromFee","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExludeFromMaxWalletAmount","type":"bool"}],"name":"setExcludeFromMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numTokenContractTokensToSwap","type":"uint256"},{"internalType":"uint256","name":"_minWaveActivationCount","type":"uint256"},{"internalType":"uint256","name":"_minWaveIncludeAmount","type":"uint256"}],"name":"setMinParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setSniperProtect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_baseBuyTax","type":"uint256"},{"internalType":"uint256","name":"_buyRewards","type":"uint256"},{"internalType":"uint256","name":"_baseSellTax","type":"uint256"},{"internalType":"uint256","name":"_waveEnabledJeetTax","type":"uint256"},{"internalType":"uint256","name":"_sellRewards","type":"uint256"},{"internalType":"uint256","name":"_autoLP","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devWalletAddress","type":"address"},{"internalType":"address","name":"_teamWalletAddress","type":"address"},{"internalType":"address","name":"_buyBackWalletAddress","type":"address"}],"name":"setWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalETHRewardsPaidOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"waveActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waveMap","outputs":[{"internalType":"contract WaveMapping","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"pendingETH","type":"bool"}],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600780546001600160b81b031916731b02da8cb0d097eb8d57a175b88c7d8b479975061790556000600855601e6010819055601181905560036012818155601391909155600a60158190556016929092556028601755601460185560198290556200006f91620008a8565b6200007f906377359400620008c0565b601a55620000906012600a620008a8565b620000a09063068e7780620008c0565b601b55600b601c55348015620000b557600080fd5b5060405162008b4438038062008b44833981016040819052620000d891620008ff565b604080518082018252600b81526a145d5a58dac8125b9d195b60aa1b602080830191825283518085019094526006845265515549434b4960d01b9084015281519192916200012991600391620006d1565b5080516200013f906004906020840190620006d1565b5050600580546001600160a01b031916339081179091556040519091506000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3601e80546001600160a01b038086166001600160a01b031992831617909255601f80548584169083161790556020805492841692909116919091179055612710620001de6c0c9f2c9cd04674edea400000006001620008c0565b620001ea919062000949565b600f55604051620001fb9062000760565b604051809103906000f08015801562000218573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039290921691909117905560405162000247906200076e565b604051809103906000f08015801562000264573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216918217905560405163031e79db60e41b8152600481018290526331e79db090602401600060405180830381600087803b158015620002bc57600080fd5b505af1158015620002d1573d6000803e3d6000fd5b505060215460405163031e79db60e41b81523060048201526001600160a01b0390911692506331e79db09150602401600060405180830381600087803b1580156200031b57600080fd5b505af115801562000330573d6000803e3d6000fd5b50506021546001600160a01b031691506331e79db090506200035a6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200039c57600080fd5b505af1158015620003b1573d6000803e3d6000fd5b505060215460075460405163031e79db60e41b81526001600160a01b039182166004820152911692506331e79db09150602401600060405180830381600087803b158015620003ff57600080fd5b505af115801562000414573d6000803e3d6000fd5b505050506001600b60006200042e620005da60201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600b8452828120805486166001908117909155601e54831682528382208054871682179055601f54831682528382208054871682179055935490911681529081208054909316821790925590600e90620004c16005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600e8452828120805486166001908117909155600754831682528382208054871682179055601e54831682528382208054871682179055601f54831682528382208054871682179055935490911681529081208054909316821790925590600d90620005666005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600d909252902080549091166001179055620005d1620005bd6005546001600160a01b031690565b6c0c9f2c9cd04674edea40000000620005e9565b505050620009c4565b6005546001600160a01b031690565b6001600160a01b038216620006445760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200065891906200096c565b90915550506001600160a01b03821660009081526020819052604081208054839290620006879084906200096c565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620006df9062000987565b90600052602060002090601f0160209004810192826200070357600085556200074e565b82601f106200071e57805160ff19168380011785556200074e565b828001600101855582156200074e579182015b828111156200074e57825182559160200191906001019062000731565b506200075c9291506200077c565b5090565b6105b480620068ae83390190565b611ce28062006e6283390190565b5b808211156200075c57600081556001016200077d565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620007ea578160001904821115620007ce57620007ce62000793565b80851615620007dc57918102915b93841c9390800290620007ae565b509250929050565b6000826200080357506001620008a2565b816200081257506000620008a2565b81600181146200082b5760028114620008365762000856565b6001915050620008a2565b60ff8411156200084a576200084a62000793565b50506001821b620008a2565b5060208310610133831016604e8410600b84101617156200087b575081810a620008a2565b620008878383620007a9565b80600019048211156200089e576200089e62000793565b0290505b92915050565b6000620008b960ff841683620007f2565b9392505050565b6000816000190483118215151615620008dd57620008dd62000793565b500290565b80516001600160a01b0381168114620008fa57600080fd5b919050565b6000806000606084860312156200091557600080fd5b6200092084620008e2565b92506200093060208501620008e2565b91506200094060408501620008e2565b90509250925092565b6000826200096757634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111562000982576200098262000793565b500190565b600181811c908216806200099c57607f821691505b60208210811415620009be57634e487b7160e01b600052602260045260246000fd5b50919050565b615eda80620009d46000396000f3fe608060405260043610620002b75760003560e01c80637c4b492e116200016b578063b0bc85de11620000d1578063dd62ed3e1162000084578063dd62ed3e1462000849578063e0cba94f1462000893578063e93481f614620008ab578063ea084eef14620008e5578063ed9d5991146200090a578063f2fde38b146200092257600080fd5b8063b0bc85de1462000783578063b515566a146200079b578063b9e00d4014620007c0578063ba762ddd14620007e5578063c9e8714c14620007fd578063caf4f341146200083157600080fd5b806397c44ed9116200012a57806397c44ed914620006a3578063a457c2d714620006c8578063a9059cbb14620006ed578063aa4bde281462000712578063ab89a4ee146200072a578063af9549e0146200075e57600080fd5b80637c4b492e14620005fa57806386e6081f14620006125780638da5cb5b14620006375780638e5916b2146200065757806395d89b41146200068b57600080fd5b80632f308375116200021d57806351bc3c8511620001d057806351bc3c8514620005435780635587fdfd146200055b5780635d0044ca14620005735780636fa3d54c146200059857806370a0823114620005bd578063715018a614620005e257600080fd5b80632f308375146200046f5780633007d4b41462000494578063313ce56714620004b957806334d4248a14620004d75780633950935114620004fc5780635146a88e146200052157600080fd5b806318160ddd116200027657806318160ddd14620003985780631e83409a14620003af57806323b872dd14620003d4578063252d723a14620003f957806329f7706b14620004115780632c1f5216146200043457600080fd5b8063064953b914620002c457806306fdde0314620002fc57806307c5c6771462000323578063095ea7b3146200033b5780631734a9c9146200037157600080fd5b36620002bf57005b600080fd5b348015620002d157600080fd5b50620002e9620002e3366004620034e1565b62000947565b6040519081526020015b60405180910390f35b3480156200030957600080fd5b5062000314620009c1565b604051620002f391906200351f565b3480156200033057600080fd5b50620002e962000a5b565b3480156200034857600080fd5b50620003606200035a36600462003577565b62000ad1565b6040519015158152602001620002f3565b3480156200037e57600080fd5b506200039662000390366004620035a6565b62000aeb565b005b348015620003a557600080fd5b50600254620002e9565b348015620003bc57600080fd5b5062000396620003ce366004620035f8565b62000d1b565b348015620003e157600080fd5b5062000360620003f33660046200361f565b62000d2a565b3480156200040657600080fd5b50620002e962000d52565b3480156200041e57600080fd5b506007546200036090600160a81b900460ff1681565b3480156200044157600080fd5b5060215462000456906001600160a01b031681565b6040516001600160a01b039091168152602001620002f3565b3480156200047c57600080fd5b50620003966200048e36600462003665565b62000d80565b348015620004a157600080fd5b5062000396620004b3366004620036c5565b62000df6565b348015620004c657600080fd5b5060405160128152602001620002f3565b348015620004e457600080fd5b5062000396620004f636600462003701565b62000e6c565b3480156200050957600080fd5b50620003606200051b36600462003577565b62000fab565b3480156200052e57600080fd5b50601d5462000456906001600160a01b031681565b3480156200055057600080fd5b506200039662000fee565b3480156200056857600080fd5b50620002e9601c5481565b3480156200058057600080fd5b50620003966200059236600462003721565b62001048565b348015620005a557600080fd5b5062000396620005b7366004620034e1565b6200110a565b348015620005ca57600080fd5b50620002e9620005dc366004620035f8565b6200122a565b348015620005ef57600080fd5b506200039662001245565b3480156200060757600080fd5b50620002e960235481565b3480156200061f57600080fd5b506200036062000631366004620035f8565b620012bc565b3480156200064457600080fd5b506005546001600160a01b031662000456565b3480156200066457600080fd5b506200036062000676366004620035f8565b600b6020526000908152604090205460ff1681565b3480156200069857600080fd5b50620003146200132e565b348015620006b057600080fd5b5062000396620006c2366004620035a6565b6200133f565b348015620006d557600080fd5b5062000360620006e736600462003577565b620013ab565b348015620006fa57600080fd5b50620003606200070c36600462003577565b62001441565b3480156200071f57600080fd5b50620002e9600f5481565b3480156200073757600080fd5b506200074f620007493660046200373b565b62001451565b604051620002f3919062003773565b3480156200076b57600080fd5b50620003966200077d366004620037cd565b62001659565b3480156200079057600080fd5b50620002e9620016b1565b348015620007a857600080fd5b5062000396620007ba36600462003800565b620016f5565b348015620007cd57600080fd5b5062000396620007df36600462003701565b62001833565b348015620007f257600080fd5b50620002e962001883565b3480156200080a57600080fd5b50620003606200081c366004620035f8565b600e6020526000908152604090205460ff1681565b3480156200083e57600080fd5b506200039662001897565b3480156200085657600080fd5b50620002e962000868366004620034e1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015620008a057600080fd5b50620002e9601b5481565b348015620008b857600080fd5b50620002e9620008ca366004620035f8565b6001600160a01b031660009081526028602052604090205490565b348015620008f257600080fd5b506200039662000904366004620037cd565b62001bde565b3480156200091757600080fd5b50620002e960255481565b3480156200092f57600080fd5b506200039662000941366004620035f8565b62001c36565b6040516302a2e74960e61b81526001600160a01b0382811660048301526000919084169063a8b9d24090602401602060405180830381865afa15801562000992573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009b891906200387a565b90505b92915050565b606060038054620009d29062003894565b80601f016020809104026020016040519081016040528092919081815260200182805462000a009062003894565b801562000a515780601f1062000a255761010080835404028352916020019162000a51565b820191906000526020600020905b81548152906001019060200180831162000a3357829003601f168201915b5050505050905090565b601d54604080516307c5c67760e01b815290516000926001600160a01b0316916307c5c6779160048083019260209291908290030181865afa15801562000aa6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000acc91906200387a565b905090565b60003362000ae181858562001d26565b5060019392505050565b336000908152600d602052604090205460ff1662000b265760405162461bcd60e51b815260040162000b1d90620038d1565b60405180910390fd5b602280546001600160a01b0319166001600160a01b038581169182179092556040516302a2e74960e61b8152918416600483015260009163a8b9d24090602401602060405180830381865afa15801562000b84573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000baa91906200387a565b90506000811162000be45760405162461bcd60e51b81526020600482015260036024820152621395d160ea1b604482015260640162000b1d565b6022546040516352b5f81d60e01b81526001600160a01b038581166004830152848116602483015260009216906352b5f81d906044016020604051808303816000875af115801562000c3a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c6091906200387a565b9050801562000d14576022546040516338c110ef60e21b81526001600160a01b038681166004830152600060248301529091169063e30443bc90604401600060405180830381600087803b15801562000cb857600080fd5b505af115801562000ccd573d6000803e3d6000fd5b5050604080518481526001600160a01b03881660208201527fbbce8dfb9d001c8d2f18150456d967d46aa35b6703300e5067e226a088a773ff935001905060405180910390a15b5050505050565b62000d27813362001e4e565b50565b60003362000d3a85828562002040565b62000d47858585620020d1565b506001949350505050565b600754600090600160b01b900460ff161562000d795760125460105462000acc916200227e565b5060105490565b6005546001600160a01b0316331462000dad5760405162461bcd60e51b815260040162000b1d90620038ee565b600a891115801562000dc05750600a8711155b62000dca57600080fd5b601098909855601296909655601194909455601391909155601591909155601655601755601855601955565b336000908152600d602052604090205460ff1662000e285760405162461bcd60e51b815260040162000b1d90620038d1565b62000e366012600a62003a36565b62000e42908462003a47565b601a55601c82905562000e586012600a62003a36565b62000e64908262003a47565b601b55505050565b336000908152600d602052604090205460ff1662000e9e5760405162461bcd60e51b815260040162000b1d90620038d1565b602454600090339062000eb39047906200228c565b604051600081818185875af1925050503d806000811462000ef1576040519150601f19603f3d011682016040523d82523d6000602084013e62000ef6565b606091505b5090915050811562000fa75760006024541162000f3c5760405162461bcd60e51b81526020600482015260036024820152622722a960e91b604482015260640162000b1d565b60245460405160009133918381818185875af1925050503d806000811462000f81576040519150601f19603f3d011682016040523d82523d6000602084013e62000f86565b606091505b5090915050801562000fa55760245462000fa190806200228c565b6024555b505b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919062000ae1908290869062000fe890879062003a69565b62001d26565b336000908152600d602052604090205460ff16620010205760405162461bcd60e51b815260040162000b1d90620038d1565b60006200103b60235462001034306200122a565b906200228c565b905062000fa7816200229a565b6005546001600160a01b03163314620010755760405162461bcd60e51b815260040162000b1d90620038ee565b670de0b6b3a76400006103e86200108b60025490565b6200109890600162003a47565b620010a4919062003a9a565b620010b0919062003a9a565b811015620010ea5760405162461bcd60e51b815260040162000b1d9060208082526004908201526304d574c560e41b604082015260600190565b620010f86012600a62003a36565b62001104908262003a47565b600f5550565b336000908152600d602052604090205460ff166200113c5760405162461bcd60e51b815260040162000b1d90620038d1565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801562001184573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011aa91906200387a565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015620011fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001224919062003ab1565b50505050565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314620012725760405162461bcd60e51b815260040162000b1d90620038ee565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b601d54604051639535cac160e01b81526001600160a01b0383811660048301526000921690639535cac190602401602060405180830381865afa15801562001308573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009bb919062003ab1565b606060048054620009d29062003894565b6005546001600160a01b031633146200136c5760405162461bcd60e51b815260040162000b1d90620038ee565b601e80546001600160a01b039485166001600160a01b031991821617909155601f80549385169382169390931790925560208054919093169116179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015620014325760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840162000b1d565b62000d47828686840362001d26565b60003362000ae1818585620020d1565b6060600083118015620014645750600082115b620014975760405162461bcd60e51b8152602060048201526002602482015261494160f01b604482015260640162000b1d565b6001600160a01b03841660009081526028602052604081205490620014bd858562003a47565b90506000620014cd868362003ad1565b9050828110620015065760405162461bcd60e51b815260206004820152600360248201526227a7a960e91b604482015260640162000b1d565b858383111562001522578392506200151f878462003aeb565b90505b60008167ffffffffffffffff81111562001540576200154062003b02565b6040519080825280602002602001820160405280156200158757816020015b60408051808201909152600080825260208201528152602001906001900390816200155f5790505b5090506000835b858110156200164a576001600160a01b038b166000908152602860205260408120805483908110620015c457620015c462003b18565b600091825260208083209091015480835260278252604092839020835180850190945280546001600160a01b031684526001015491830191909152855190925085908590811062001619576200161962003b18565b60209081029190910101526200163160018462003a69565b9250508080620016419062003b2e565b9150506200158e565b50909998505050505050505050565b6005546001600160a01b03163314620016865760405162461bcd60e51b815260040162000b1d90620038ee565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b600754600090600160b01b900460ff1615620016ee5762000acc601454620016e76013546011546200227e90919063ffffffff16565b906200227e565b5060115490565b6005546001600160a01b03163314620017225760405162461bcd60e51b815260040162000b1d90620038ee565b60005b8181101562000fa5576009546001600160a01b03168383838181106200174f576200174f62003b18565b9050602002016020810190620017669190620035f8565b6001600160a01b031614158015620017bd57506007546001600160a01b03168383838181106200179a576200179a62003b18565b9050602002016020810190620017b19190620035f8565b6001600160a01b031614155b156200181e576001600c6000858585818110620017de57620017de62003b18565b9050602002016020810190620017f59190620035f8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b806200182a8162003b2e565b91505062001725565b336000908152600d602052604090205460ff16620018655760405162461bcd60e51b815260040162000b1d90620038d1565b60078054911515600160b01b0260ff60b01b19909216919091179055565b600062000acc60235462001034306200122a565b6005546001600160a01b03163314620018c45760405162461bcd60e51b815260040162000b1d90620038ee565b600754600160a01b900460ff1615620019095760405162461bcd60e51b815260040162000b1d90602080825260049082015263544f503160e01b604082015260600190565b600760009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200195d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001983919062003b4c565b6001600160a01b031663c9c6539630600760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620019e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a0c919062003b4c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562001a5a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a80919062003b4c565b600980546001600160a01b0319166001600160a01b0392831690811782556000908152600e60209081526040808320805460ff199081166001908117909255855487168552600a90935292819020805490921690921790556021549154905163031e79db60e41b815290831660048201529116906331e79db090602401600060405180830381600087803b15801562001b1857600080fd5b505af115801562001b2d573d6000803e3d6000fd5b5050505062001b4762001b40306200122a565b4762002460565b60095460075460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001b9e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bc4919062003ab1565b506007805460ff60a01b1916600160a01b17905543600855565b6005546001600160a01b0316331462001c0b5760405162461bcd60e51b815260040162000b1d90620038ee565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331462001c635760405162461bcd60e51b815260040162000b1d90620038ee565b6001600160a01b03811662001cca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000b1d565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831662001d8a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000b1d565b6001600160a01b03821662001ded5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000b1d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b602280546001600160a01b0319166001600160a01b038481169182179092556040516302a2e74960e61b8152918316600483015260009163a8b9d24090602401602060405180830381865afa15801562001eac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ed291906200387a565b90506000811162001f0c5760405162461bcd60e51b81526020600482015260036024820152621395d160ea1b604482015260640162000b1d565b6022546040516352b5f81d60e01b81526001600160a01b0384811660048301819052602483015260009216906352b5f81d906044016020604051808303816000875af115801562001f61573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f8791906200387a565b9050801562001224576022546040516338c110ef60e21b81526001600160a01b038581166004830152600060248301529091169063e30443bc90604401600060405180830381600087803b15801562001fdf57600080fd5b505af115801562001ff4573d6000803e3d6000fd5b5050604080518481526001600160a01b03871660208201527fbbce8dfb9d001c8d2f18150456d967d46aa35b6703300e5067e226a088a773ff935001905060405180910390a150505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114620012245781811015620020c25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640162000b1d565b62001224848484840362001d26565b6001600160a01b0383166000908152600c602052604090205460ff161580156200211457506001600160a01b0382166000908152600c602052604090205460ff16155b6200211e57600080fd5b6007548190600160a01b900460ff1680156200217557506001600160a01b0384166000908152600a602052604090205460ff16806200217557506001600160a01b0383166000908152600a602052604090205460ff165b80156200219b57506001600160a01b0384166000908152600b602052604090205460ff16155b8015620021c157506001600160a01b0383166000908152600b602052604090205460ff16155b15620021d757620021d484848462002574565b90505b6001600160a01b0383166000908152600a602052604090205460ff161580156200221a57506001600160a01b0383166000908152600e602052604090205460ff16155b156200227157600f54816200222f856200122a565b6200223b919062003a69565b1115620022715760405162461bcd60e51b815260206004820152600360248201526215d09360ea1b604482015260640162000b1d565b6200122484848362002d54565b6000620009b8828462003a69565b6000620009b8828462003ad1565b6040805160028082526060820183526000924792849290916020830190803683370190505090503081600081518110620022d857620022d862003b18565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562002332573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002358919062003b4c565b816001815181106200236e576200236e62003b18565b6001600160a01b03928316602091820292909201015260075462002396913091168662001d26565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790620023d190879060009086903090429060040162003b6c565b600060405180830381600087803b158015620023ec57600080fd5b505af115801562002401573d6000803e3d6000fd5b5050505060006200241c83476200228c90919063ffffffff16565b60408051878152602081018390529192507f4a6c12eb4e479a4ea28c8acad8efde466ef9bf69cf473501dd76865234496273910160405180910390a1949350505050565b6007546200247a9030906001600160a01b03168462001d26565b6007546001600160a01b031663f305d719823085600080620024a46005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156200250d573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062002534919062003bdf565b505060408051848152602081018490527fcb1652de9aeec38545fc281847b3dbfc89aab56dfa907b1ab68466f602c36fb492500160405180910390a15050565b6001600160a01b0383166000908152600a60205260408120548190819060ff1680620025b857506001600160a01b0385166000908152600a602052604090205460ff165b620025ec5760405162461bcd60e51b81526020600482015260036024820152624e4d4d60e81b604482015260640162000b1d565b6001600160a01b0386166000908152600a602052604090205460ff161562002a3a57600754600090600160b01b900460ff16156200263d5760125460105462002635916200227e565b905062002642565b506010545b6200265b606462002654878462002f40565b9062002f4e565b600754909350600160b01b900460ff1615620026a7576000620026906064620026546012548962002f4090919063ffffffff16565b602354909150620026a290826200227e565b602355505b620026b385846200228c565b9150620026c287308562002d54565b600754600160b01b900460ff168015620026de5750601b548510155b156200294d57600754600160a81b900460ff16620026fc5760006014555b601d54604051639535cac160e01b81526001600160a01b03888116600483015290911690639535cac190602401602060405180830381865afa15801562002747573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200276d919062003ab1565b6200286257601d5460405163012bd6a960e31b81526001600160a01b0388811660048301529091169063095eb54890602401600060405180830381600087803b158015620027ba57600080fd5b505af1158015620027cf573d6000803e3d6000fd5b505060215460405163e7225fdb60e01b81526001600160a01b038a81166004830152909116925063e7225fdb9150602401602060405180830381865afa1580156200281e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002844919062003ab1565b6200286257602154620028629087906001600160a01b031662002f5c565b6021546001600160a01b03166318c18adb876200288485620016e7836200122a565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015620028cb57600080fd5b505af1158015620028e0573d6000803e3d6000fd5b505060215460405163208237df60e11b81526001600160a01b038a811660048301526000602483015290911692506341046fbe9150604401600060405180830381600087803b1580156200293357600080fd5b505af115801562002948573d6000803e3d6000fd5b505050505b601c54601d60009054906101000a90046001600160a01b03166001600160a01b03166307c5c6776040518163ffffffff1660e01b8152600401602060405180830381865afa158015620029a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029ca91906200387a565b10620029ea576007805460ff60a81b1916600160a81b1790556015546014555b604080516001600160a01b03891681523060208201529081018490527f6b0b46d0273ce53f1de696d2100b35dd3a405dcecbcbeede66215d858d5c401d9060600160405180910390a15062002d4b565b600754600090600160b01b900460ff161562002b155762002a70601454620016e76013546011546200227e90919063ffffffff16565b6014549091501562002ada5760145460009062002a8f90600462002f4e565b9050600062002abc60646200265462002ab4856013546200227e90919063ffffffff16565b8a9062002f40565b60235490915062002ace90826200227e565b6023555062002b1a9050565b600062002af96064620026546013548962002f4090919063ffffffff16565b60235490915062002b0b90826200227e565b6023555062002b1a565b506011545b600f81111562002b285750600f5b62002b3a606462002654878462002f40565b925062002b4885846200228c565b915062002b5787308562002d54565b600754600160b01b900460ff161562002c9c57601d54604051631da08eef60e21b81526001600160a01b038981166004830152909116906376823bbc90602401600060405180830381600087803b15801562002bb257600080fd5b505af115801562002bc7573d6000803e3d6000fd5b50506021546040516338c110ef60e21b81526001600160a01b038b8116600483015260006024830152909116925063e30443bc9150604401600060405180830381600087803b15801562002c1a57600080fd5b505af115801562002c2f573d6000803e3d6000fd5b505060215460405163208237df60e11b81526001600160a01b038b811660048301526001602483015290911692506341046fbe9150604401600060405180830381600087803b15801562002c8257600080fd5b505af115801562002c97573d6000803e3d6000fd5b505050505b600062002cb060235462001034306200122a565b9050601a548111801562002cce5750600754600160a81b900460ff16155b1562002cdf5762002cdf8162002fca565b600754600160a81b900460ff161562002cff5762002cff60235462003102565b604080516001600160a01b038a1681523060208201529081018590527f4ab5e0df8ff1605133dbdd1b8e3f52edb9539abe64595f6f70b30d2fea7f204a9060600160405180910390a150505b95945050505050565b6001600160a01b03831662002dba5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000b1d565b6001600160a01b03821662002e1e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000b1d565b62002e2b83838362000fa5565b6001600160a01b0383166000908152602081905260409020548181101562002ea55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162000b1d565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929062002ede90849062003a69565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405162002f2b91815260200190565b60405180910390a36200122484848462000fa5565b6000620009b8828462003a47565b6000620009b8828462003a9a565b62002f6b602680546001019055565b600062002f7760265490565b600081815260276020908152604080832080546001600160a01b0319166001600160a01b039788161781554260019182015596909516825260288152938120805495860181558152929092209092015550565b600062002fe96064620026546016548562002f4090919063ffffffff16565b9050600062002ffa82600262002f4e565b905060006200300a84836200228c565b9050600062003019826200229a565b905060006200303a6064620026546016548562002f4090919063ffffffff16565b905060006200305b6064620026546017548662002f4090919063ffffffff16565b905060006200307c6064620026546018548762002f4090919063ffffffff16565b905060006200309d6064620026546019548862002f4090919063ffffffff16565b90506000620030b68262001034858188818c8c6200228c565b9050620030c484826200227e565b9350620030d3848484620032e6565b600088118015620030e45750600085115b15620030f657620030f6888662002460565b50505050505050505050565b6021546200311b9030906001600160a01b031662002f5c565b600062003128826200229a565b6023549091506200313a90836200228c565b6023556021546040516000916001600160a01b03169083908381818185875af1925050503d80600081146200318c576040519150601f19603f3d011682016040523d82523d6000602084013e62003191565b606091505b505090508015620032b3576040518281527fedde6abe67f0ec677bd79394941019f71914358fa22507a427f8f43fb7770ccf9060200160405180910390a1602160009054906101000a90046001600160a01b03166001600160a01b03166303c833026040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200322057600080fd5b505af115801562003235573d6000803e3d6000fd5b50505050602160009054906101000a90046001600160a01b03166001600160a01b0316630d9192816040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200328a57600080fd5b505af11580156200329f573d6000803e3d6000fd5b50505050620032ad620033f8565b620032cf565b602454620032c290836200227e565b602455620032cf620033f8565b602554620032de90836200227e565b602555505050565b82156200332a57601e546040516001600160a01b039091169084156108fc029085906000818181858888f1935050505015801562003328573d6000803e3d6000fd5b505b81156200336e57601f546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156200336c573d6000803e3d6000fd5b505b8015620033b2576020546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015620033b0573d6000803e3d6000fd5b505b60408051848152602081018490529081018290527f125472b1b527506b5b8381590760f796fd9c88ba5886399d71abc083c6dafa209060600160405180910390a1505050565b6007805460ff60a81b19169055601d80546001600160a01b03191690556040516200342390620034af565b604051809103906000f08015801562003440573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169190911790556040516200346f90620034bd565b604051809103906000f0801580156200348c573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055565b6105b48062003c0f83390190565b611ce280620041c383390190565b6001600160a01b038116811462000d2757600080fd5b60008060408385031215620034f557600080fd5b82356200350281620034cb565b915060208301356200351481620034cb565b809150509250929050565b600060208083528351808285015260005b818110156200354e5785810183015185820160400152820162003530565b8181111562003561576000604083870101525b50601f01601f1916929092016040019392505050565b600080604083850312156200358b57600080fd5b82356200359881620034cb565b946020939093013593505050565b600080600060608486031215620035bc57600080fd5b8335620035c981620034cb565b92506020840135620035db81620034cb565b91506040840135620035ed81620034cb565b809150509250925092565b6000602082840312156200360b57600080fd5b81356200361881620034cb565b9392505050565b6000806000606084860312156200363557600080fd5b83356200364281620034cb565b925060208401356200365481620034cb565b929592945050506040919091013590565b60008060008060008060008060006101208a8c0312156200368557600080fd5b505087359960208901359950604089013598606081013598506080810135975060a0810135965060c0810135955060e08101359450610100013592509050565b600080600060608486031215620036db57600080fd5b505081359360208301359350604090920135919050565b801515811462000d2757600080fd5b6000602082840312156200371457600080fd5b81356200361881620036f2565b6000602082840312156200373457600080fd5b5035919050565b6000806000606084860312156200375157600080fd5b83356200375e81620034cb565b95602085013595506040909401359392505050565b602080825282518282018190526000919060409081850190868401855b82811015620037c057815180516001600160a01b0316855286015186850152928401929085019060010162003790565b5091979650505050505050565b60008060408385031215620037e157600080fd5b8235620037ee81620034cb565b915060208301356200351481620036f2565b600080602083850312156200381457600080fd5b823567ffffffffffffffff808211156200382d57600080fd5b818501915085601f8301126200384257600080fd5b8135818111156200385257600080fd5b8660208260051b85010111156200386857600080fd5b60209290920196919550909350505050565b6000602082840312156200388d57600080fd5b5051919050565b600181811c90821680620038a957607f821691505b60208210811415620038cb57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526003908201526255544360e81b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200397a5781600019048211156200395e576200395e62003923565b808516156200396c57918102915b93841c93908002906200393e565b509250929050565b6000826200399357506001620009bb565b81620039a257506000620009bb565b8160018114620039bb5760028114620039c657620039e6565b6001915050620009bb565b60ff841115620039da57620039da62003923565b50506001821b620009bb565b5060208310610133831016604e8410600b841016171562003a0b575081810a620009bb565b62003a17838362003939565b806000190482111562003a2e5762003a2e62003923565b029392505050565b6000620009b860ff84168362003982565b600081600019048311821515161562003a645762003a6462003923565b500290565b6000821982111562003a7f5762003a7f62003923565b500190565b634e487b7160e01b600052601260045260246000fd5b60008262003aac5762003aac62003a84565b500490565b60006020828403121562003ac457600080fd5b81516200361881620036f2565b60008282101562003ae65762003ae662003923565b500390565b60008262003afd5762003afd62003a84565b500690565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060001982141562003b455762003b4562003923565b5060010190565b60006020828403121562003b5f57600080fd5b81516200361881620034cb565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101562003bbe5784516001600160a01b03168352938301939183019160010162003b97565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121562003bf557600080fd5b835192506020840151915060408401519050925092509256fe608060405234801561001057600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36105558061005f6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806376823bbc1161005b57806376823bbc146100d85780638da5cb5b146100eb5780639535cac114610106578063f2fde38b1461014257600080fd5b806307c5c6771461008d578063095eb548146100a8578063239f97c7146100bd578063715018a6146100d0575b600080fd5b610095610155565b6040519081526020015b60405180910390f35b6100bb6100b636600461048c565b610165565b005b6100bb6100cb3660046104ae565b6101ec565b6100bb610241565b6100bb6100e636600461048c565b6102b5565b6000546040516001600160a01b03909116815260200161009f565b61013261011436600461048c565b6001600160a01b031660009081526003602052604090205460ff1690565b604051901515815260200161009f565b6100bb61015036600461048c565b61032f565b600061016060025490565b905090565b6000546001600160a01b031633146101985760405162461bcd60e51b815260040161018f906104ea565b60405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff166101e9576001600160a01b0381166000908152600360205260409020805460ff191660011790556101e9600280546001019055565b50565b6000546001600160a01b031633146102165760405162461bcd60e51b815260040161018f906104ea565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461026b5760405162461bcd60e51b815260040161018f906104ea565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146102df5760405162461bcd60e51b815260040161018f906104ea565b6001600160a01b03811660009081526003602052604090205460ff161515600114156101e9576001600160a01b0381166000908152600360205260409020805460ff191690556101e96002610419565b6000546001600160a01b031633146103595760405162461bcd60e51b815260040161018f906104ea565b6001600160a01b0381166103be5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161018f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b8054806104685760405162461bcd60e51b815260206004820152601b60248201527f436f756e7465723a2064656372656d656e74206f766572666c6f770000000000604482015260640161018f565b600019019055565b80356001600160a01b038116811461048757600080fd5b919050565b60006020828403121561049e57600080fd5b6104a782610470565b9392505050565b600080604083850312156104c157600080fd5b6104ca83610470565b9150602083013580151581146104df57600080fd5b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea264697066735822122066585284d1650aceed043461a365686e5cebc659041138740f1d7f9848cd9c9b64736f6c634300080b003360806040526011805460ff191690553480156200001b57600080fd5b5060408051808201825260178082527f517569636b695f4469766964656e645f547261636b6572000000000000000000602080840182815285518087019096529285528401528151919291839183916200007891600391620000db565b5080516200008e906004906020840190620000db565b5050600a80546001600160a01b03191633908117909155604051909350600092507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091508290a3620001be565b828054620000e99062000181565b90600052602060002090601f0160209004810192826200010d576000855562000158565b82601f106200012857805160ff191683800117855562000158565b8280016001018555821562000158579182015b82811115620001585782518255916020019190600101906200013b565b50620001669291506200016a565b5090565b5b808211156200016657600081556001016200016b565b600181811c908216806200019657607f821691505b60208210811415620001b857634e487b7160e01b600052602260045260246000fd5b50919050565b611b1480620001ce6000396000f3fe60806040526004361061021e5760003560e01c806370a0823111610123578063a4dd8902116100ab578063dd62ed3e1161006f578063dd62ed3e14610644578063e30443bc1461068a578063e7225fdb146106aa578063f2fde38b146106ca578063fbcbc0f1146106ea57600080fd5b8063a4dd89021461058b578063a8b9d240146105b8578063a9059cbb146105d8578063aafd847a146105f8578063b9c7bbbc1461062e57600080fd5b806391b89fba116100f257806391b89fba1461050657806395d89b41146105265780639c6f0c2c1461053b578063a2f77a7c14610555578063a457c2d71461056b57600080fd5b806370a082311461047d578063715018a6146104b357806385a6b3ae146104c85780638da5cb5b146104de57600080fd5b806327ce0147116101a6578063395093511161017557806339509351146103d857806341046fbe146103f85780634e7b827f1461041857806352b5f81d146104485780636a4740021461046857600080fd5b806327ce01471461035c578063313ce5671461037c57806331e79db01461039857806336951356146103b857600080fd5b80630d919281116101ed5780630d919281146102c2578063173ab136146102d757806318160ddd1461030757806318c18adb1461031c57806323b872dd1461033c57600080fd5b806303c833021461023a57806306fdde0314610244578063095ea7b31461026f57806309bbedde1461029f57600080fd5b3661023557600854610230903461071f565b600855005b600080fd5b610242610734565b005b34801561025057600080fd5b5061025961085e565b60405161026691906117fe565b60405180910390f35b34801561027b57600080fd5b5061028f61028a36600461186b565b6108f0565b6040519015158152602001610266565b3480156102ab57600080fd5b506102b4610908565b604051908152602001610266565b3480156102ce57600080fd5b50610242610918565b3480156102e357600080fd5b5061028f6102f2366004611897565b600f6020526000908152604090205460ff1681565b34801561031357600080fd5b506002546102b4565b34801561032857600080fd5b5061024261033736600461186b565b610955565b34801561034857600080fd5b5061028f6103573660046118bb565b610a32565b34801561036857600080fd5b506102b4610377366004611897565b610a56565b34801561038857600080fd5b5060405160128152602001610266565b3480156103a457600080fd5b506102426103b3366004611897565b610ab2565b3480156103c457600080fd5b5061028f6103d3366004611897565b610b91565b3480156103e457600080fd5b5061028f6103f336600461186b565b610bdd565b34801561040457600080fd5b506102426104133660046118fc565b610c1c565b34801561042457600080fd5b5061028f610433366004611897565b600e6020526000908152604090205460ff1681565b34801561045457600080fd5b506102b461046336600461193a565b610c71565b34801561047457600080fd5b50610242610cce565b34801561048957600080fd5b506102b4610498366004611897565b6001600160a01b031660009081526020819052604090205490565b3480156104bf57600080fd5b50610242610d74565b3480156104d457600080fd5b506102b460095481565b3480156104ea57600080fd5b50600a546040516001600160a01b039091168152602001610266565b34801561051257600080fd5b506102b4610521366004611897565b610de8565b34801561053257600080fd5b50610259610df3565b34801561054757600080fd5b5060115461028f9060ff1681565b34801561056157600080fd5b506102b460125481565b34801561057757600080fd5b5061028f61058636600461186b565b610e02565b34801561059757600080fd5b506102b46105a6366004611897565b60106020526000908152604090205481565b3480156105c457600080fd5b506102b46105d3366004611897565b610e94565b3480156105e457600080fd5b5061028f6105f336600461186b565b610ec0565b34801561060457600080fd5b506102b4610613366004611897565b6001600160a01b031660009081526007602052604090205490565b34801561063a57600080fd5b506102b460085481565b34801561065057600080fd5b506102b461065f36600461193a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561069657600080fd5b506102426106a536600461186b565b610ece565b3480156106b657600080fd5b5061028f6106c5366004611897565b610f7c565b3480156106d657600080fd5b506102426106e5366004611897565b610fc8565b3480156106f657600080fd5b5061070a610705366004611897565b6110b3565b60408051928352602083019190915201610266565b600061072b828461197e565b90505b92915050565b600061073f60025490565b1161074957600080fd5b6000600854116107c65760405162461bcd60e51b815260206004820152603960248201527f546865726520617265206e6f206469766964656e64732063757272656e746c7960448201527f20617661696c61626c6520746f20646973747269627574652e0000000000000060648201526084015b60405180910390fd5b6008541561085c576107fe6107da60025490565b6008546107eb90600160801b6110e0565b6107f59190611996565b6005549061071f565b60055560085460405190815233907fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d784541165119060200160405180910390a26008546009546108489161071f565b60095560085461085890806110ec565b6008555b565b60606003805461086d906119b8565b80601f0160208091040260200160405190810160405280929190818152602001828054610899906119b8565b80156108e65780601f106108bb576101008083540402835291602001916108e6565b820191906000526020600020905b8154815290600101906020018083116108c957829003601f168201915b5050505050905090565b6000336108fe8185856110f8565b5060019392505050565b6000610913600c5490565b905090565b600a546001600160a01b031633146109425760405162461bcd60e51b81526004016107bd906119f3565b6011805460ff1916600117905542601255565b600a546001600160a01b0316331461097f5760405162461bcd60e51b81526004016107bd906119f3565b6001600160a01b0382166000908152600e60205260409020805460ff191690556109a9828261115b565b6001600160a01b0382166000908152600d602052604090205460ff166109fa576001600160a01b0382166000908152600d60205260409020805460ff191660011790556109fa600c80546001019055565b6040516001600160a01b038316907fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2590600090a25050565b600033610a408582856111ba565b610a4b858585611246565b506001949350505050565b6001600160a01b03811660009081526006602090815260408083205491839052822054600554600160801b92610aa892610aa392610a9d91610a9891906110e0565b6112a4565b90611312565b61131e565b61072e9190611996565b600a546001600160a01b03163314610adc5760405162461bcd60e51b81526004016107bd906119f3565b6001600160a01b0381166000908152600e60205260408120805460ff19166001179055610b0a90829061115b565b6001600160a01b0381166000908152600d602052604090205460ff16151560011415610b5a576001600160a01b0381166000908152600d60205260409020805460ff19169055610b5a600c611370565b6040516001600160a01b038216907fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2590600090a250565b600a546000906001600160a01b03163314610bbe5760405162461bcd60e51b81526004016107bd906119f3565b506001600160a01b03166000908152600e602052604090205460ff1690565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906108fe9082908690610c1790879061197e565b6110f8565b600a546001600160a01b03163314610c465760405162461bcd60e51b81526004016107bd906119f3565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b600a546000906001600160a01b03163314610c9e5760405162461bcd60e51b81526004016107bd906119f3565b6000610caa84846113c7565b6001600160a01b038516600090815260106020526040902042905591505092915050565b60405162461bcd60e51b815260206004820152606960248201527f517569636b695f4469766964656e645f547261636b65723a207769746864726160448201527f774469766964656e642064697361626c65642e20557365207468652027636c6160648201527f696d272066756e6374696f6e206f6e20746865206d61696e20517569636b692060848201526831b7b73a3930b1ba1760b91b60a482015260c4016107bd565b600a546001600160a01b03163314610d9e5760405162461bcd60e51b81526004016107bd906119f3565b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b600061072e82610e94565b60606004805461086d906119b8565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610e875760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107bd565b610a4b82868684036110f8565b6001600160a01b03811660009081526007602052604081205461072e90610eba84610a56565b906110ec565b6000336108fe818585611246565b600a546001600160a01b03163314610ef85760405162461bcd60e51b81526004016107bd906119f3565b6001600160a01b0382166000908152600e602052604090205460ff1615610f1d575050565b610f27828261115b565b6001600160a01b0382166000908152600d602052604090205460ff16610f78576001600160a01b0382166000908152600d60205260409020805460ff19166001179055610f78600c80546001019055565b5050565b600a546000906001600160a01b03163314610fa95760405162461bcd60e51b81526004016107bd906119f3565b506001600160a01b03166000908152600f602052604090205460ff1690565b600a546001600160a01b03163314610ff25760405162461bcd60e51b81526004016107bd906119f3565b6001600160a01b0381166110575760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107bd565b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000806110bf83610e94565b6001600160a01b039093166000908152600760205260409020549293915050565b600061072b8284611a28565b600061072b8284611a47565b60405162461bcd60e51b815260206004820152602d60248201527f517569636b695f4469766964656e645f547261636b65723a204e6f206170707260448201526c1bdd985b1cc8185b1b1bddd959609a1b60648201526084016107bd565b505050565b6001600160a01b0382166000908152602081905260409020548082111561119a57600061118883836110ec565b9050611194848261151d565b50505050565b808210156111565760006111ae82846110ec565b90506111948482611581565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461119457818110156112395760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107bd565b61119484848484036110f8565b60405162461bcd60e51b815260206004820152602d60248201527f517569636b695f4469766964656e645f547261636b65723a204e6f207472616e60448201526c1cd9995c9cc8185b1b1bddd959609a1b60648201526084016107bd565b60006001600160ff1b0382111561130e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016107bd565b5090565b600061072b8284611a5e565b60008082121561130e5760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f73697469766560448201526064016107bd565b8054806113bf5760405162461bcd60e51b815260206004820152601b60248201527f436f756e7465723a2064656372656d656e74206f766572666c6f77000000000060448201526064016107bd565b600019019055565b6000806113d384610e94565b90508015611513576001600160a01b0384166000908152600760205260409020546113fe908261071f565b6001600160a01b038516600081815260076020526040908190209290925590517feb063efb53b3790d2bc15284b59af7544466c8787c2883321ee27095647911b69061145f90849087909182526001600160a01b0316602082015260400190565b60405180910390a26000836001600160a01b03168260405160006040518083038185875af1925050503d80600081146114b4576040519150601f19603f3d011682016040523d82523d6000602084013e6114b9565b606091505b505090508061150b576001600160a01b0385166000908152600760205260409020546114e590836110ec565b6001600160a01b038616600090815260076020526040812091909155925061072e915050565b50905061072e565b5060009392505050565b61152782826115c5565b611561611542610a98836005546110e090919063ffffffff16565b6001600160a01b038416600090815260066020526040902054906116a4565b6001600160a01b0390921660009081526006602052604090209190915550565b61158b82826116b0565b6115616115a6610a98836005546110e090919063ffffffff16565b6001600160a01b03841660009081526006602052604090205490611312565b6001600160a01b03821661161b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107bd565b806002600082825461162d919061197e565b90915550506001600160a01b0382166000908152602081905260408120805483929061165a90849061197e565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600061072b8284611a9f565b6001600160a01b0382166117105760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107bd565b6001600160a01b038216600090815260208190526040902054818110156117845760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016107bd565b6001600160a01b03831660009081526020819052604081208383039055600280548492906117b3908490611a47565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600060208083528351808285015260005b8181101561182b5785810183015185820160400152820161180f565b8181111561183d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461186857600080fd5b50565b6000806040838503121561187e57600080fd5b823561188981611853565b946020939093013593505050565b6000602082840312156118a957600080fd5b81356118b481611853565b9392505050565b6000806000606084860312156118d057600080fd5b83356118db81611853565b925060208401356118eb81611853565b929592945050506040919091013590565b6000806040838503121561190f57600080fd5b823561191a81611853565b91506020830135801515811461192f57600080fd5b809150509250929050565b6000806040838503121561194d57600080fd5b823561195881611853565b9150602083013561192f81611853565b634e487b7160e01b600052601160045260246000fd5b6000821982111561199157611991611968565b500190565b6000826119b357634e487b7160e01b600052601260045260246000fd5b500490565b600181811c908216806119cc57607f821691505b602082108114156119ed57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000816000190483118215151615611a4257611a42611968565b500290565b600082821015611a5957611a59611968565b500390565b600080821280156001600160ff1b0384900385131615611a8057611a80611968565b600160ff1b8390038412811615611a9957611a99611968565b50500190565b60008083128015600160ff1b850184121615611abd57611abd611968565b6001600160ff1b0384018313811615611ad857611ad8611968565b5050039056fea26469706673582212209a33836eb07face48f5d6eb109d049c03b65c1d172ebb7bfdca08854b6ab3cb364736f6c634300080b0033a264697066735822122045f0146eb3ea3ef4d7080041c0df86a7e84e12dc7d71dc354087940d10555f6664736f6c634300080b0033608060405234801561001057600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36105558061005f6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806376823bbc1161005b57806376823bbc146100d85780638da5cb5b146100eb5780639535cac114610106578063f2fde38b1461014257600080fd5b806307c5c6771461008d578063095eb548146100a8578063239f97c7146100bd578063715018a6146100d0575b600080fd5b610095610155565b6040519081526020015b60405180910390f35b6100bb6100b636600461048c565b610165565b005b6100bb6100cb3660046104ae565b6101ec565b6100bb610241565b6100bb6100e636600461048c565b6102b5565b6000546040516001600160a01b03909116815260200161009f565b61013261011436600461048c565b6001600160a01b031660009081526003602052604090205460ff1690565b604051901515815260200161009f565b6100bb61015036600461048c565b61032f565b600061016060025490565b905090565b6000546001600160a01b031633146101985760405162461bcd60e51b815260040161018f906104ea565b60405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff166101e9576001600160a01b0381166000908152600360205260409020805460ff191660011790556101e9600280546001019055565b50565b6000546001600160a01b031633146102165760405162461bcd60e51b815260040161018f906104ea565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461026b5760405162461bcd60e51b815260040161018f906104ea565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146102df5760405162461bcd60e51b815260040161018f906104ea565b6001600160a01b03811660009081526003602052604090205460ff161515600114156101e9576001600160a01b0381166000908152600360205260409020805460ff191690556101e96002610419565b6000546001600160a01b031633146103595760405162461bcd60e51b815260040161018f906104ea565b6001600160a01b0381166103be5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161018f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b8054806104685760405162461bcd60e51b815260206004820152601b60248201527f436f756e7465723a2064656372656d656e74206f766572666c6f770000000000604482015260640161018f565b600019019055565b80356001600160a01b038116811461048757600080fd5b919050565b60006020828403121561049e57600080fd5b6104a782610470565b9392505050565b600080604083850312156104c157600080fd5b6104ca83610470565b9150602083013580151581146104df57600080fd5b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea264697066735822122066585284d1650aceed043461a365686e5cebc659041138740f1d7f9848cd9c9b64736f6c634300080b003360806040526011805460ff191690553480156200001b57600080fd5b5060408051808201825260178082527f517569636b695f4469766964656e645f547261636b6572000000000000000000602080840182815285518087019096529285528401528151919291839183916200007891600391620000db565b5080516200008e906004906020840190620000db565b5050600a80546001600160a01b03191633908117909155604051909350600092507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091508290a3620001be565b828054620000e99062000181565b90600052602060002090601f0160209004810192826200010d576000855562000158565b82601f106200012857805160ff191683800117855562000158565b8280016001018555821562000158579182015b82811115620001585782518255916020019190600101906200013b565b50620001669291506200016a565b5090565b5b808211156200016657600081556001016200016b565b600181811c908216806200019657607f821691505b60208210811415620001b857634e487b7160e01b600052602260045260246000fd5b50919050565b611b1480620001ce6000396000f3fe60806040526004361061021e5760003560e01c806370a0823111610123578063a4dd8902116100ab578063dd62ed3e1161006f578063dd62ed3e14610644578063e30443bc1461068a578063e7225fdb146106aa578063f2fde38b146106ca578063fbcbc0f1146106ea57600080fd5b8063a4dd89021461058b578063a8b9d240146105b8578063a9059cbb146105d8578063aafd847a146105f8578063b9c7bbbc1461062e57600080fd5b806391b89fba116100f257806391b89fba1461050657806395d89b41146105265780639c6f0c2c1461053b578063a2f77a7c14610555578063a457c2d71461056b57600080fd5b806370a082311461047d578063715018a6146104b357806385a6b3ae146104c85780638da5cb5b146104de57600080fd5b806327ce0147116101a6578063395093511161017557806339509351146103d857806341046fbe146103f85780634e7b827f1461041857806352b5f81d146104485780636a4740021461046857600080fd5b806327ce01471461035c578063313ce5671461037c57806331e79db01461039857806336951356146103b857600080fd5b80630d919281116101ed5780630d919281146102c2578063173ab136146102d757806318160ddd1461030757806318c18adb1461031c57806323b872dd1461033c57600080fd5b806303c833021461023a57806306fdde0314610244578063095ea7b31461026f57806309bbedde1461029f57600080fd5b3661023557600854610230903461071f565b600855005b600080fd5b610242610734565b005b34801561025057600080fd5b5061025961085e565b60405161026691906117fe565b60405180910390f35b34801561027b57600080fd5b5061028f61028a36600461186b565b6108f0565b6040519015158152602001610266565b3480156102ab57600080fd5b506102b4610908565b604051908152602001610266565b3480156102ce57600080fd5b50610242610918565b3480156102e357600080fd5b5061028f6102f2366004611897565b600f6020526000908152604090205460ff1681565b34801561031357600080fd5b506002546102b4565b34801561032857600080fd5b5061024261033736600461186b565b610955565b34801561034857600080fd5b5061028f6103573660046118bb565b610a32565b34801561036857600080fd5b506102b4610377366004611897565b610a56565b34801561038857600080fd5b5060405160128152602001610266565b3480156103a457600080fd5b506102426103b3366004611897565b610ab2565b3480156103c457600080fd5b5061028f6103d3366004611897565b610b91565b3480156103e457600080fd5b5061028f6103f336600461186b565b610bdd565b34801561040457600080fd5b506102426104133660046118fc565b610c1c565b34801561042457600080fd5b5061028f610433366004611897565b600e6020526000908152604090205460ff1681565b34801561045457600080fd5b506102b461046336600461193a565b610c71565b34801561047457600080fd5b50610242610cce565b34801561048957600080fd5b506102b4610498366004611897565b6001600160a01b031660009081526020819052604090205490565b3480156104bf57600080fd5b50610242610d74565b3480156104d457600080fd5b506102b460095481565b3480156104ea57600080fd5b50600a546040516001600160a01b039091168152602001610266565b34801561051257600080fd5b506102b4610521366004611897565b610de8565b34801561053257600080fd5b50610259610df3565b34801561054757600080fd5b5060115461028f9060ff1681565b34801561056157600080fd5b506102b460125481565b34801561057757600080fd5b5061028f61058636600461186b565b610e02565b34801561059757600080fd5b506102b46105a6366004611897565b60106020526000908152604090205481565b3480156105c457600080fd5b506102b46105d3366004611897565b610e94565b3480156105e457600080fd5b5061028f6105f336600461186b565b610ec0565b34801561060457600080fd5b506102b4610613366004611897565b6001600160a01b031660009081526007602052604090205490565b34801561063a57600080fd5b506102b460085481565b34801561065057600080fd5b506102b461065f36600461193a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561069657600080fd5b506102426106a536600461186b565b610ece565b3480156106b657600080fd5b5061028f6106c5366004611897565b610f7c565b3480156106d657600080fd5b506102426106e5366004611897565b610fc8565b3480156106f657600080fd5b5061070a610705366004611897565b6110b3565b60408051928352602083019190915201610266565b600061072b828461197e565b90505b92915050565b600061073f60025490565b1161074957600080fd5b6000600854116107c65760405162461bcd60e51b815260206004820152603960248201527f546865726520617265206e6f206469766964656e64732063757272656e746c7960448201527f20617661696c61626c6520746f20646973747269627574652e0000000000000060648201526084015b60405180910390fd5b6008541561085c576107fe6107da60025490565b6008546107eb90600160801b6110e0565b6107f59190611996565b6005549061071f565b60055560085460405190815233907fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d784541165119060200160405180910390a26008546009546108489161071f565b60095560085461085890806110ec565b6008555b565b60606003805461086d906119b8565b80601f0160208091040260200160405190810160405280929190818152602001828054610899906119b8565b80156108e65780601f106108bb576101008083540402835291602001916108e6565b820191906000526020600020905b8154815290600101906020018083116108c957829003601f168201915b5050505050905090565b6000336108fe8185856110f8565b5060019392505050565b6000610913600c5490565b905090565b600a546001600160a01b031633146109425760405162461bcd60e51b81526004016107bd906119f3565b6011805460ff1916600117905542601255565b600a546001600160a01b0316331461097f5760405162461bcd60e51b81526004016107bd906119f3565b6001600160a01b0382166000908152600e60205260409020805460ff191690556109a9828261115b565b6001600160a01b0382166000908152600d602052604090205460ff166109fa576001600160a01b0382166000908152600d60205260409020805460ff191660011790556109fa600c80546001019055565b6040516001600160a01b038316907fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2590600090a25050565b600033610a408582856111ba565b610a4b858585611246565b506001949350505050565b6001600160a01b03811660009081526006602090815260408083205491839052822054600554600160801b92610aa892610aa392610a9d91610a9891906110e0565b6112a4565b90611312565b61131e565b61072e9190611996565b600a546001600160a01b03163314610adc5760405162461bcd60e51b81526004016107bd906119f3565b6001600160a01b0381166000908152600e60205260408120805460ff19166001179055610b0a90829061115b565b6001600160a01b0381166000908152600d602052604090205460ff16151560011415610b5a576001600160a01b0381166000908152600d60205260409020805460ff19169055610b5a600c611370565b6040516001600160a01b038216907fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2590600090a250565b600a546000906001600160a01b03163314610bbe5760405162461bcd60e51b81526004016107bd906119f3565b506001600160a01b03166000908152600e602052604090205460ff1690565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906108fe9082908690610c1790879061197e565b6110f8565b600a546001600160a01b03163314610c465760405162461bcd60e51b81526004016107bd906119f3565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b600a546000906001600160a01b03163314610c9e5760405162461bcd60e51b81526004016107bd906119f3565b6000610caa84846113c7565b6001600160a01b038516600090815260106020526040902042905591505092915050565b60405162461bcd60e51b815260206004820152606960248201527f517569636b695f4469766964656e645f547261636b65723a207769746864726160448201527f774469766964656e642064697361626c65642e20557365207468652027636c6160648201527f696d272066756e6374696f6e206f6e20746865206d61696e20517569636b692060848201526831b7b73a3930b1ba1760b91b60a482015260c4016107bd565b600a546001600160a01b03163314610d9e5760405162461bcd60e51b81526004016107bd906119f3565b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b600061072e82610e94565b60606004805461086d906119b8565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610e875760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107bd565b610a4b82868684036110f8565b6001600160a01b03811660009081526007602052604081205461072e90610eba84610a56565b906110ec565b6000336108fe818585611246565b600a546001600160a01b03163314610ef85760405162461bcd60e51b81526004016107bd906119f3565b6001600160a01b0382166000908152600e602052604090205460ff1615610f1d575050565b610f27828261115b565b6001600160a01b0382166000908152600d602052604090205460ff16610f78576001600160a01b0382166000908152600d60205260409020805460ff19166001179055610f78600c80546001019055565b5050565b600a546000906001600160a01b03163314610fa95760405162461bcd60e51b81526004016107bd906119f3565b506001600160a01b03166000908152600f602052604090205460ff1690565b600a546001600160a01b03163314610ff25760405162461bcd60e51b81526004016107bd906119f3565b6001600160a01b0381166110575760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107bd565b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000806110bf83610e94565b6001600160a01b039093166000908152600760205260409020549293915050565b600061072b8284611a28565b600061072b8284611a47565b60405162461bcd60e51b815260206004820152602d60248201527f517569636b695f4469766964656e645f547261636b65723a204e6f206170707260448201526c1bdd985b1cc8185b1b1bddd959609a1b60648201526084016107bd565b505050565b6001600160a01b0382166000908152602081905260409020548082111561119a57600061118883836110ec565b9050611194848261151d565b50505050565b808210156111565760006111ae82846110ec565b90506111948482611581565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461119457818110156112395760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107bd565b61119484848484036110f8565b60405162461bcd60e51b815260206004820152602d60248201527f517569636b695f4469766964656e645f547261636b65723a204e6f207472616e60448201526c1cd9995c9cc8185b1b1bddd959609a1b60648201526084016107bd565b60006001600160ff1b0382111561130e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016107bd565b5090565b600061072b8284611a5e565b60008082121561130e5760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f73697469766560448201526064016107bd565b8054806113bf5760405162461bcd60e51b815260206004820152601b60248201527f436f756e7465723a2064656372656d656e74206f766572666c6f77000000000060448201526064016107bd565b600019019055565b6000806113d384610e94565b90508015611513576001600160a01b0384166000908152600760205260409020546113fe908261071f565b6001600160a01b038516600081815260076020526040908190209290925590517feb063efb53b3790d2bc15284b59af7544466c8787c2883321ee27095647911b69061145f90849087909182526001600160a01b0316602082015260400190565b60405180910390a26000836001600160a01b03168260405160006040518083038185875af1925050503d80600081146114b4576040519150601f19603f3d011682016040523d82523d6000602084013e6114b9565b606091505b505090508061150b576001600160a01b0385166000908152600760205260409020546114e590836110ec565b6001600160a01b038616600090815260076020526040812091909155925061072e915050565b50905061072e565b5060009392505050565b61152782826115c5565b611561611542610a98836005546110e090919063ffffffff16565b6001600160a01b038416600090815260066020526040902054906116a4565b6001600160a01b0390921660009081526006602052604090209190915550565b61158b82826116b0565b6115616115a6610a98836005546110e090919063ffffffff16565b6001600160a01b03841660009081526006602052604090205490611312565b6001600160a01b03821661161b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107bd565b806002600082825461162d919061197e565b90915550506001600160a01b0382166000908152602081905260408120805483929061165a90849061197e565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600061072b8284611a9f565b6001600160a01b0382166117105760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107bd565b6001600160a01b038216600090815260208190526040902054818110156117845760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016107bd565b6001600160a01b03831660009081526020819052604081208383039055600280548492906117b3908490611a47565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600060208083528351808285015260005b8181101561182b5785810183015185820160400152820161180f565b8181111561183d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461186857600080fd5b50565b6000806040838503121561187e57600080fd5b823561188981611853565b946020939093013593505050565b6000602082840312156118a957600080fd5b81356118b481611853565b9392505050565b6000806000606084860312156118d057600080fd5b83356118db81611853565b925060208401356118eb81611853565b929592945050506040919091013590565b6000806040838503121561190f57600080fd5b823561191a81611853565b91506020830135801515811461192f57600080fd5b809150509250929050565b6000806040838503121561194d57600080fd5b823561195881611853565b9150602083013561192f81611853565b634e487b7160e01b600052601160045260246000fd5b6000821982111561199157611991611968565b500190565b6000826119b357634e487b7160e01b600052601260045260246000fd5b500490565b600181811c908216806119cc57607f821691505b602082108114156119ed57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000816000190483118215151615611a4257611a42611968565b500290565b600082821015611a5957611a59611968565b500390565b600080821280156001600160ff1b0384900385131615611a8057611a80611968565b600160ff1b8390038412811615611a9957611a99611968565b50500190565b60008083128015600160ff1b850184121615611abd57611abd611968565b6001600160ff1b0384018313811615611ad857611ad8611968565b5050039056fea26469706673582212209a33836eb07face48f5d6eb109d049c03b65c1d172ebb7bfdca08854b6ab3cb364736f6c634300080b00330000000000000000000000008bdfc93bc10f1efdab59244a64a1a77ab5dd3a4200000000000000000000000029d19f39f3413a665e937e8906baea25cd231aef000000000000000000000000dd3e7b495f222123e9b72634bc2f9e9d060b6ebc

Deployed Bytecode

0x608060405260043610620002b75760003560e01c80637c4b492e116200016b578063b0bc85de11620000d1578063dd62ed3e1162000084578063dd62ed3e1462000849578063e0cba94f1462000893578063e93481f614620008ab578063ea084eef14620008e5578063ed9d5991146200090a578063f2fde38b146200092257600080fd5b8063b0bc85de1462000783578063b515566a146200079b578063b9e00d4014620007c0578063ba762ddd14620007e5578063c9e8714c14620007fd578063caf4f341146200083157600080fd5b806397c44ed9116200012a57806397c44ed914620006a3578063a457c2d714620006c8578063a9059cbb14620006ed578063aa4bde281462000712578063ab89a4ee146200072a578063af9549e0146200075e57600080fd5b80637c4b492e14620005fa57806386e6081f14620006125780638da5cb5b14620006375780638e5916b2146200065757806395d89b41146200068b57600080fd5b80632f308375116200021d57806351bc3c8511620001d057806351bc3c8514620005435780635587fdfd146200055b5780635d0044ca14620005735780636fa3d54c146200059857806370a0823114620005bd578063715018a614620005e257600080fd5b80632f308375146200046f5780633007d4b41462000494578063313ce56714620004b957806334d4248a14620004d75780633950935114620004fc5780635146a88e146200052157600080fd5b806318160ddd116200027657806318160ddd14620003985780631e83409a14620003af57806323b872dd14620003d4578063252d723a14620003f957806329f7706b14620004115780632c1f5216146200043457600080fd5b8063064953b914620002c457806306fdde0314620002fc57806307c5c6771462000323578063095ea7b3146200033b5780631734a9c9146200037157600080fd5b36620002bf57005b600080fd5b348015620002d157600080fd5b50620002e9620002e3366004620034e1565b62000947565b6040519081526020015b60405180910390f35b3480156200030957600080fd5b5062000314620009c1565b604051620002f391906200351f565b3480156200033057600080fd5b50620002e962000a5b565b3480156200034857600080fd5b50620003606200035a36600462003577565b62000ad1565b6040519015158152602001620002f3565b3480156200037e57600080fd5b506200039662000390366004620035a6565b62000aeb565b005b348015620003a557600080fd5b50600254620002e9565b348015620003bc57600080fd5b5062000396620003ce366004620035f8565b62000d1b565b348015620003e157600080fd5b5062000360620003f33660046200361f565b62000d2a565b3480156200040657600080fd5b50620002e962000d52565b3480156200041e57600080fd5b506007546200036090600160a81b900460ff1681565b3480156200044157600080fd5b5060215462000456906001600160a01b031681565b6040516001600160a01b039091168152602001620002f3565b3480156200047c57600080fd5b50620003966200048e36600462003665565b62000d80565b348015620004a157600080fd5b5062000396620004b3366004620036c5565b62000df6565b348015620004c657600080fd5b5060405160128152602001620002f3565b348015620004e457600080fd5b5062000396620004f636600462003701565b62000e6c565b3480156200050957600080fd5b50620003606200051b36600462003577565b62000fab565b3480156200052e57600080fd5b50601d5462000456906001600160a01b031681565b3480156200055057600080fd5b506200039662000fee565b3480156200056857600080fd5b50620002e9601c5481565b3480156200058057600080fd5b50620003966200059236600462003721565b62001048565b348015620005a557600080fd5b5062000396620005b7366004620034e1565b6200110a565b348015620005ca57600080fd5b50620002e9620005dc366004620035f8565b6200122a565b348015620005ef57600080fd5b506200039662001245565b3480156200060757600080fd5b50620002e960235481565b3480156200061f57600080fd5b506200036062000631366004620035f8565b620012bc565b3480156200064457600080fd5b506005546001600160a01b031662000456565b3480156200066457600080fd5b506200036062000676366004620035f8565b600b6020526000908152604090205460ff1681565b3480156200069857600080fd5b50620003146200132e565b348015620006b057600080fd5b5062000396620006c2366004620035a6565b6200133f565b348015620006d557600080fd5b5062000360620006e736600462003577565b620013ab565b348015620006fa57600080fd5b50620003606200070c36600462003577565b62001441565b3480156200071f57600080fd5b50620002e9600f5481565b3480156200073757600080fd5b506200074f620007493660046200373b565b62001451565b604051620002f3919062003773565b3480156200076b57600080fd5b50620003966200077d366004620037cd565b62001659565b3480156200079057600080fd5b50620002e9620016b1565b348015620007a857600080fd5b5062000396620007ba36600462003800565b620016f5565b348015620007cd57600080fd5b5062000396620007df36600462003701565b62001833565b348015620007f257600080fd5b50620002e962001883565b3480156200080a57600080fd5b50620003606200081c366004620035f8565b600e6020526000908152604090205460ff1681565b3480156200083e57600080fd5b506200039662001897565b3480156200085657600080fd5b50620002e962000868366004620034e1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015620008a057600080fd5b50620002e9601b5481565b348015620008b857600080fd5b50620002e9620008ca366004620035f8565b6001600160a01b031660009081526028602052604090205490565b348015620008f257600080fd5b506200039662000904366004620037cd565b62001bde565b3480156200091757600080fd5b50620002e960255481565b3480156200092f57600080fd5b506200039662000941366004620035f8565b62001c36565b6040516302a2e74960e61b81526001600160a01b0382811660048301526000919084169063a8b9d24090602401602060405180830381865afa15801562000992573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009b891906200387a565b90505b92915050565b606060038054620009d29062003894565b80601f016020809104026020016040519081016040528092919081815260200182805462000a009062003894565b801562000a515780601f1062000a255761010080835404028352916020019162000a51565b820191906000526020600020905b81548152906001019060200180831162000a3357829003601f168201915b5050505050905090565b601d54604080516307c5c67760e01b815290516000926001600160a01b0316916307c5c6779160048083019260209291908290030181865afa15801562000aa6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000acc91906200387a565b905090565b60003362000ae181858562001d26565b5060019392505050565b336000908152600d602052604090205460ff1662000b265760405162461bcd60e51b815260040162000b1d90620038d1565b60405180910390fd5b602280546001600160a01b0319166001600160a01b038581169182179092556040516302a2e74960e61b8152918416600483015260009163a8b9d24090602401602060405180830381865afa15801562000b84573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000baa91906200387a565b90506000811162000be45760405162461bcd60e51b81526020600482015260036024820152621395d160ea1b604482015260640162000b1d565b6022546040516352b5f81d60e01b81526001600160a01b038581166004830152848116602483015260009216906352b5f81d906044016020604051808303816000875af115801562000c3a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c6091906200387a565b9050801562000d14576022546040516338c110ef60e21b81526001600160a01b038681166004830152600060248301529091169063e30443bc90604401600060405180830381600087803b15801562000cb857600080fd5b505af115801562000ccd573d6000803e3d6000fd5b5050604080518481526001600160a01b03881660208201527fbbce8dfb9d001c8d2f18150456d967d46aa35b6703300e5067e226a088a773ff935001905060405180910390a15b5050505050565b62000d27813362001e4e565b50565b60003362000d3a85828562002040565b62000d47858585620020d1565b506001949350505050565b600754600090600160b01b900460ff161562000d795760125460105462000acc916200227e565b5060105490565b6005546001600160a01b0316331462000dad5760405162461bcd60e51b815260040162000b1d90620038ee565b600a891115801562000dc05750600a8711155b62000dca57600080fd5b601098909855601296909655601194909455601391909155601591909155601655601755601855601955565b336000908152600d602052604090205460ff1662000e285760405162461bcd60e51b815260040162000b1d90620038d1565b62000e366012600a62003a36565b62000e42908462003a47565b601a55601c82905562000e586012600a62003a36565b62000e64908262003a47565b601b55505050565b336000908152600d602052604090205460ff1662000e9e5760405162461bcd60e51b815260040162000b1d90620038d1565b602454600090339062000eb39047906200228c565b604051600081818185875af1925050503d806000811462000ef1576040519150601f19603f3d011682016040523d82523d6000602084013e62000ef6565b606091505b5090915050811562000fa75760006024541162000f3c5760405162461bcd60e51b81526020600482015260036024820152622722a960e91b604482015260640162000b1d565b60245460405160009133918381818185875af1925050503d806000811462000f81576040519150601f19603f3d011682016040523d82523d6000602084013e62000f86565b606091505b5090915050801562000fa55760245462000fa190806200228c565b6024555b505b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919062000ae1908290869062000fe890879062003a69565b62001d26565b336000908152600d602052604090205460ff16620010205760405162461bcd60e51b815260040162000b1d90620038d1565b60006200103b60235462001034306200122a565b906200228c565b905062000fa7816200229a565b6005546001600160a01b03163314620010755760405162461bcd60e51b815260040162000b1d90620038ee565b670de0b6b3a76400006103e86200108b60025490565b6200109890600162003a47565b620010a4919062003a9a565b620010b0919062003a9a565b811015620010ea5760405162461bcd60e51b815260040162000b1d9060208082526004908201526304d574c560e41b604082015260600190565b620010f86012600a62003a36565b62001104908262003a47565b600f5550565b336000908152600d602052604090205460ff166200113c5760405162461bcd60e51b815260040162000b1d90620038d1565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801562001184573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011aa91906200387a565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015620011fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001224919062003ab1565b50505050565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314620012725760405162461bcd60e51b815260040162000b1d90620038ee565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b601d54604051639535cac160e01b81526001600160a01b0383811660048301526000921690639535cac190602401602060405180830381865afa15801562001308573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009bb919062003ab1565b606060048054620009d29062003894565b6005546001600160a01b031633146200136c5760405162461bcd60e51b815260040162000b1d90620038ee565b601e80546001600160a01b039485166001600160a01b031991821617909155601f80549385169382169390931790925560208054919093169116179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015620014325760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840162000b1d565b62000d47828686840362001d26565b60003362000ae1818585620020d1565b6060600083118015620014645750600082115b620014975760405162461bcd60e51b8152602060048201526002602482015261494160f01b604482015260640162000b1d565b6001600160a01b03841660009081526028602052604081205490620014bd858562003a47565b90506000620014cd868362003ad1565b9050828110620015065760405162461bcd60e51b815260206004820152600360248201526227a7a960e91b604482015260640162000b1d565b858383111562001522578392506200151f878462003aeb565b90505b60008167ffffffffffffffff81111562001540576200154062003b02565b6040519080825280602002602001820160405280156200158757816020015b60408051808201909152600080825260208201528152602001906001900390816200155f5790505b5090506000835b858110156200164a576001600160a01b038b166000908152602860205260408120805483908110620015c457620015c462003b18565b600091825260208083209091015480835260278252604092839020835180850190945280546001600160a01b031684526001015491830191909152855190925085908590811062001619576200161962003b18565b60209081029190910101526200163160018462003a69565b9250508080620016419062003b2e565b9150506200158e565b50909998505050505050505050565b6005546001600160a01b03163314620016865760405162461bcd60e51b815260040162000b1d90620038ee565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b600754600090600160b01b900460ff1615620016ee5762000acc601454620016e76013546011546200227e90919063ffffffff16565b906200227e565b5060115490565b6005546001600160a01b03163314620017225760405162461bcd60e51b815260040162000b1d90620038ee565b60005b8181101562000fa5576009546001600160a01b03168383838181106200174f576200174f62003b18565b9050602002016020810190620017669190620035f8565b6001600160a01b031614158015620017bd57506007546001600160a01b03168383838181106200179a576200179a62003b18565b9050602002016020810190620017b19190620035f8565b6001600160a01b031614155b156200181e576001600c6000858585818110620017de57620017de62003b18565b9050602002016020810190620017f59190620035f8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b806200182a8162003b2e565b91505062001725565b336000908152600d602052604090205460ff16620018655760405162461bcd60e51b815260040162000b1d90620038d1565b60078054911515600160b01b0260ff60b01b19909216919091179055565b600062000acc60235462001034306200122a565b6005546001600160a01b03163314620018c45760405162461bcd60e51b815260040162000b1d90620038ee565b600754600160a01b900460ff1615620019095760405162461bcd60e51b815260040162000b1d90602080825260049082015263544f503160e01b604082015260600190565b600760009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200195d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001983919062003b4c565b6001600160a01b031663c9c6539630600760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620019e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a0c919062003b4c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562001a5a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a80919062003b4c565b600980546001600160a01b0319166001600160a01b0392831690811782556000908152600e60209081526040808320805460ff199081166001908117909255855487168552600a90935292819020805490921690921790556021549154905163031e79db60e41b815290831660048201529116906331e79db090602401600060405180830381600087803b15801562001b1857600080fd5b505af115801562001b2d573d6000803e3d6000fd5b5050505062001b4762001b40306200122a565b4762002460565b60095460075460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001b9e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bc4919062003ab1565b506007805460ff60a01b1916600160a01b17905543600855565b6005546001600160a01b0316331462001c0b5760405162461bcd60e51b815260040162000b1d90620038ee565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331462001c635760405162461bcd60e51b815260040162000b1d90620038ee565b6001600160a01b03811662001cca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000b1d565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831662001d8a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000b1d565b6001600160a01b03821662001ded5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000b1d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b602280546001600160a01b0319166001600160a01b038481169182179092556040516302a2e74960e61b8152918316600483015260009163a8b9d24090602401602060405180830381865afa15801562001eac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ed291906200387a565b90506000811162001f0c5760405162461bcd60e51b81526020600482015260036024820152621395d160ea1b604482015260640162000b1d565b6022546040516352b5f81d60e01b81526001600160a01b0384811660048301819052602483015260009216906352b5f81d906044016020604051808303816000875af115801562001f61573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f8791906200387a565b9050801562001224576022546040516338c110ef60e21b81526001600160a01b038581166004830152600060248301529091169063e30443bc90604401600060405180830381600087803b15801562001fdf57600080fd5b505af115801562001ff4573d6000803e3d6000fd5b5050604080518481526001600160a01b03871660208201527fbbce8dfb9d001c8d2f18150456d967d46aa35b6703300e5067e226a088a773ff935001905060405180910390a150505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114620012245781811015620020c25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640162000b1d565b62001224848484840362001d26565b6001600160a01b0383166000908152600c602052604090205460ff161580156200211457506001600160a01b0382166000908152600c602052604090205460ff16155b6200211e57600080fd5b6007548190600160a01b900460ff1680156200217557506001600160a01b0384166000908152600a602052604090205460ff16806200217557506001600160a01b0383166000908152600a602052604090205460ff165b80156200219b57506001600160a01b0384166000908152600b602052604090205460ff16155b8015620021c157506001600160a01b0383166000908152600b602052604090205460ff16155b15620021d757620021d484848462002574565b90505b6001600160a01b0383166000908152600a602052604090205460ff161580156200221a57506001600160a01b0383166000908152600e602052604090205460ff16155b156200227157600f54816200222f856200122a565b6200223b919062003a69565b1115620022715760405162461bcd60e51b815260206004820152600360248201526215d09360ea1b604482015260640162000b1d565b6200122484848362002d54565b6000620009b8828462003a69565b6000620009b8828462003ad1565b6040805160028082526060820183526000924792849290916020830190803683370190505090503081600081518110620022d857620022d862003b18565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562002332573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002358919062003b4c565b816001815181106200236e576200236e62003b18565b6001600160a01b03928316602091820292909201015260075462002396913091168662001d26565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790620023d190879060009086903090429060040162003b6c565b600060405180830381600087803b158015620023ec57600080fd5b505af115801562002401573d6000803e3d6000fd5b5050505060006200241c83476200228c90919063ffffffff16565b60408051878152602081018390529192507f4a6c12eb4e479a4ea28c8acad8efde466ef9bf69cf473501dd76865234496273910160405180910390a1949350505050565b6007546200247a9030906001600160a01b03168462001d26565b6007546001600160a01b031663f305d719823085600080620024a46005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156200250d573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062002534919062003bdf565b505060408051848152602081018490527fcb1652de9aeec38545fc281847b3dbfc89aab56dfa907b1ab68466f602c36fb492500160405180910390a15050565b6001600160a01b0383166000908152600a60205260408120548190819060ff1680620025b857506001600160a01b0385166000908152600a602052604090205460ff165b620025ec5760405162461bcd60e51b81526020600482015260036024820152624e4d4d60e81b604482015260640162000b1d565b6001600160a01b0386166000908152600a602052604090205460ff161562002a3a57600754600090600160b01b900460ff16156200263d5760125460105462002635916200227e565b905062002642565b506010545b6200265b606462002654878462002f40565b9062002f4e565b600754909350600160b01b900460ff1615620026a7576000620026906064620026546012548962002f4090919063ffffffff16565b602354909150620026a290826200227e565b602355505b620026b385846200228c565b9150620026c287308562002d54565b600754600160b01b900460ff168015620026de5750601b548510155b156200294d57600754600160a81b900460ff16620026fc5760006014555b601d54604051639535cac160e01b81526001600160a01b03888116600483015290911690639535cac190602401602060405180830381865afa15801562002747573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200276d919062003ab1565b6200286257601d5460405163012bd6a960e31b81526001600160a01b0388811660048301529091169063095eb54890602401600060405180830381600087803b158015620027ba57600080fd5b505af1158015620027cf573d6000803e3d6000fd5b505060215460405163e7225fdb60e01b81526001600160a01b038a81166004830152909116925063e7225fdb9150602401602060405180830381865afa1580156200281e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002844919062003ab1565b6200286257602154620028629087906001600160a01b031662002f5c565b6021546001600160a01b03166318c18adb876200288485620016e7836200122a565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015620028cb57600080fd5b505af1158015620028e0573d6000803e3d6000fd5b505060215460405163208237df60e11b81526001600160a01b038a811660048301526000602483015290911692506341046fbe9150604401600060405180830381600087803b1580156200293357600080fd5b505af115801562002948573d6000803e3d6000fd5b505050505b601c54601d60009054906101000a90046001600160a01b03166001600160a01b03166307c5c6776040518163ffffffff1660e01b8152600401602060405180830381865afa158015620029a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029ca91906200387a565b10620029ea576007805460ff60a81b1916600160a81b1790556015546014555b604080516001600160a01b03891681523060208201529081018490527f6b0b46d0273ce53f1de696d2100b35dd3a405dcecbcbeede66215d858d5c401d9060600160405180910390a15062002d4b565b600754600090600160b01b900460ff161562002b155762002a70601454620016e76013546011546200227e90919063ffffffff16565b6014549091501562002ada5760145460009062002a8f90600462002f4e565b9050600062002abc60646200265462002ab4856013546200227e90919063ffffffff16565b8a9062002f40565b60235490915062002ace90826200227e565b6023555062002b1a9050565b600062002af96064620026546013548962002f4090919063ffffffff16565b60235490915062002b0b90826200227e565b6023555062002b1a565b506011545b600f81111562002b285750600f5b62002b3a606462002654878462002f40565b925062002b4885846200228c565b915062002b5787308562002d54565b600754600160b01b900460ff161562002c9c57601d54604051631da08eef60e21b81526001600160a01b038981166004830152909116906376823bbc90602401600060405180830381600087803b15801562002bb257600080fd5b505af115801562002bc7573d6000803e3d6000fd5b50506021546040516338c110ef60e21b81526001600160a01b038b8116600483015260006024830152909116925063e30443bc9150604401600060405180830381600087803b15801562002c1a57600080fd5b505af115801562002c2f573d6000803e3d6000fd5b505060215460405163208237df60e11b81526001600160a01b038b811660048301526001602483015290911692506341046fbe9150604401600060405180830381600087803b15801562002c8257600080fd5b505af115801562002c97573d6000803e3d6000fd5b505050505b600062002cb060235462001034306200122a565b9050601a548111801562002cce5750600754600160a81b900460ff16155b1562002cdf5762002cdf8162002fca565b600754600160a81b900460ff161562002cff5762002cff60235462003102565b604080516001600160a01b038a1681523060208201529081018590527f4ab5e0df8ff1605133dbdd1b8e3f52edb9539abe64595f6f70b30d2fea7f204a9060600160405180910390a150505b95945050505050565b6001600160a01b03831662002dba5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000b1d565b6001600160a01b03821662002e1e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000b1d565b62002e2b83838362000fa5565b6001600160a01b0383166000908152602081905260409020548181101562002ea55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162000b1d565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929062002ede90849062003a69565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405162002f2b91815260200190565b60405180910390a36200122484848462000fa5565b6000620009b8828462003a47565b6000620009b8828462003a9a565b62002f6b602680546001019055565b600062002f7760265490565b600081815260276020908152604080832080546001600160a01b0319166001600160a01b039788161781554260019182015596909516825260288152938120805495860181558152929092209092015550565b600062002fe96064620026546016548562002f4090919063ffffffff16565b9050600062002ffa82600262002f4e565b905060006200300a84836200228c565b9050600062003019826200229a565b905060006200303a6064620026546016548562002f4090919063ffffffff16565b905060006200305b6064620026546017548662002f4090919063ffffffff16565b905060006200307c6064620026546018548762002f4090919063ffffffff16565b905060006200309d6064620026546019548862002f4090919063ffffffff16565b90506000620030b68262001034858188818c8c6200228c565b9050620030c484826200227e565b9350620030d3848484620032e6565b600088118015620030e45750600085115b15620030f657620030f6888662002460565b50505050505050505050565b6021546200311b9030906001600160a01b031662002f5c565b600062003128826200229a565b6023549091506200313a90836200228c565b6023556021546040516000916001600160a01b03169083908381818185875af1925050503d80600081146200318c576040519150601f19603f3d011682016040523d82523d6000602084013e62003191565b606091505b505090508015620032b3576040518281527fedde6abe67f0ec677bd79394941019f71914358fa22507a427f8f43fb7770ccf9060200160405180910390a1602160009054906101000a90046001600160a01b03166001600160a01b03166303c833026040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200322057600080fd5b505af115801562003235573d6000803e3d6000fd5b50505050602160009054906101000a90046001600160a01b03166001600160a01b0316630d9192816040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200328a57600080fd5b505af11580156200329f573d6000803e3d6000fd5b50505050620032ad620033f8565b620032cf565b602454620032c290836200227e565b602455620032cf620033f8565b602554620032de90836200227e565b602555505050565b82156200332a57601e546040516001600160a01b039091169084156108fc029085906000818181858888f1935050505015801562003328573d6000803e3d6000fd5b505b81156200336e57601f546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156200336c573d6000803e3d6000fd5b505b8015620033b2576020546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015620033b0573d6000803e3d6000fd5b505b60408051848152602081018490529081018290527f125472b1b527506b5b8381590760f796fd9c88ba5886399d71abc083c6dafa209060600160405180910390a1505050565b6007805460ff60a81b19169055601d80546001600160a01b03191690556040516200342390620034af565b604051809103906000f08015801562003440573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169190911790556040516200346f90620034bd565b604051809103906000f0801580156200348c573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055565b6105b48062003c0f83390190565b611ce280620041c383390190565b6001600160a01b038116811462000d2757600080fd5b60008060408385031215620034f557600080fd5b82356200350281620034cb565b915060208301356200351481620034cb565b809150509250929050565b600060208083528351808285015260005b818110156200354e5785810183015185820160400152820162003530565b8181111562003561576000604083870101525b50601f01601f1916929092016040019392505050565b600080604083850312156200358b57600080fd5b82356200359881620034cb565b946020939093013593505050565b600080600060608486031215620035bc57600080fd5b8335620035c981620034cb565b92506020840135620035db81620034cb565b91506040840135620035ed81620034cb565b809150509250925092565b6000602082840312156200360b57600080fd5b81356200361881620034cb565b9392505050565b6000806000606084860312156200363557600080fd5b83356200364281620034cb565b925060208401356200365481620034cb565b929592945050506040919091013590565b60008060008060008060008060006101208a8c0312156200368557600080fd5b505087359960208901359950604089013598606081013598506080810135975060a0810135965060c0810135955060e08101359450610100013592509050565b600080600060608486031215620036db57600080fd5b505081359360208301359350604090920135919050565b801515811462000d2757600080fd5b6000602082840312156200371457600080fd5b81356200361881620036f2565b6000602082840312156200373457600080fd5b5035919050565b6000806000606084860312156200375157600080fd5b83356200375e81620034cb565b95602085013595506040909401359392505050565b602080825282518282018190526000919060409081850190868401855b82811015620037c057815180516001600160a01b0316855286015186850152928401929085019060010162003790565b5091979650505050505050565b60008060408385031215620037e157600080fd5b8235620037ee81620034cb565b915060208301356200351481620036f2565b600080602083850312156200381457600080fd5b823567ffffffffffffffff808211156200382d57600080fd5b818501915085601f8301126200384257600080fd5b8135818111156200385257600080fd5b8660208260051b85010111156200386857600080fd5b60209290920196919550909350505050565b6000602082840312156200388d57600080fd5b5051919050565b600181811c90821680620038a957607f821691505b60208210811415620038cb57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526003908201526255544360e81b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200397a5781600019048211156200395e576200395e62003923565b808516156200396c57918102915b93841c93908002906200393e565b509250929050565b6000826200399357506001620009bb565b81620039a257506000620009bb565b8160018114620039bb5760028114620039c657620039e6565b6001915050620009bb565b60ff841115620039da57620039da62003923565b50506001821b620009bb565b5060208310610133831016604e8410600b841016171562003a0b575081810a620009bb565b62003a17838362003939565b806000190482111562003a2e5762003a2e62003923565b029392505050565b6000620009b860ff84168362003982565b600081600019048311821515161562003a645762003a6462003923565b500290565b6000821982111562003a7f5762003a7f62003923565b500190565b634e487b7160e01b600052601260045260246000fd5b60008262003aac5762003aac62003a84565b500490565b60006020828403121562003ac457600080fd5b81516200361881620036f2565b60008282101562003ae65762003ae662003923565b500390565b60008262003afd5762003afd62003a84565b500690565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060001982141562003b455762003b4562003923565b5060010190565b60006020828403121562003b5f57600080fd5b81516200361881620034cb565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101562003bbe5784516001600160a01b03168352938301939183019160010162003b97565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121562003bf557600080fd5b835192506020840151915060408401519050925092509256fe608060405234801561001057600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36105558061005f6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806376823bbc1161005b57806376823bbc146100d85780638da5cb5b146100eb5780639535cac114610106578063f2fde38b1461014257600080fd5b806307c5c6771461008d578063095eb548146100a8578063239f97c7146100bd578063715018a6146100d0575b600080fd5b610095610155565b6040519081526020015b60405180910390f35b6100bb6100b636600461048c565b610165565b005b6100bb6100cb3660046104ae565b6101ec565b6100bb610241565b6100bb6100e636600461048c565b6102b5565b6000546040516001600160a01b03909116815260200161009f565b61013261011436600461048c565b6001600160a01b031660009081526003602052604090205460ff1690565b604051901515815260200161009f565b6100bb61015036600461048c565b61032f565b600061016060025490565b905090565b6000546001600160a01b031633146101985760405162461bcd60e51b815260040161018f906104ea565b60405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff166101e9576001600160a01b0381166000908152600360205260409020805460ff191660011790556101e9600280546001019055565b50565b6000546001600160a01b031633146102165760405162461bcd60e51b815260040161018f906104ea565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461026b5760405162461bcd60e51b815260040161018f906104ea565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146102df5760405162461bcd60e51b815260040161018f906104ea565b6001600160a01b03811660009081526003602052604090205460ff161515600114156101e9576001600160a01b0381166000908152600360205260409020805460ff191690556101e96002610419565b6000546001600160a01b031633146103595760405162461bcd60e51b815260040161018f906104ea565b6001600160a01b0381166103be5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161018f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b8054806104685760405162461bcd60e51b815260206004820152601b60248201527f436f756e7465723a2064656372656d656e74206f766572666c6f770000000000604482015260640161018f565b600019019055565b80356001600160a01b038116811461048757600080fd5b919050565b60006020828403121561049e57600080fd5b6104a782610470565b9392505050565b600080604083850312156104c157600080fd5b6104ca83610470565b9150602083013580151581146104df57600080fd5b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea264697066735822122066585284d1650aceed043461a365686e5cebc659041138740f1d7f9848cd9c9b64736f6c634300080b003360806040526011805460ff191690553480156200001b57600080fd5b5060408051808201825260178082527f517569636b695f4469766964656e645f547261636b6572000000000000000000602080840182815285518087019096529285528401528151919291839183916200007891600391620000db565b5080516200008e906004906020840190620000db565b5050600a80546001600160a01b03191633908117909155604051909350600092507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091508290a3620001be565b828054620000e99062000181565b90600052602060002090601f0160209004810192826200010d576000855562000158565b82601f106200012857805160ff191683800117855562000158565b8280016001018555821562000158579182015b82811115620001585782518255916020019190600101906200013b565b50620001669291506200016a565b5090565b5b808211156200016657600081556001016200016b565b600181811c908216806200019657607f821691505b60208210811415620001b857634e487b7160e01b600052602260045260246000fd5b50919050565b611b1480620001ce6000396000f3fe60806040526004361061021e5760003560e01c806370a0823111610123578063a4dd8902116100ab578063dd62ed3e1161006f578063dd62ed3e14610644578063e30443bc1461068a578063e7225fdb146106aa578063f2fde38b146106ca578063fbcbc0f1146106ea57600080fd5b8063a4dd89021461058b578063a8b9d240146105b8578063a9059cbb146105d8578063aafd847a146105f8578063b9c7bbbc1461062e57600080fd5b806391b89fba116100f257806391b89fba1461050657806395d89b41146105265780639c6f0c2c1461053b578063a2f77a7c14610555578063a457c2d71461056b57600080fd5b806370a082311461047d578063715018a6146104b357806385a6b3ae146104c85780638da5cb5b146104de57600080fd5b806327ce0147116101a6578063395093511161017557806339509351146103d857806341046fbe146103f85780634e7b827f1461041857806352b5f81d146104485780636a4740021461046857600080fd5b806327ce01471461035c578063313ce5671461037c57806331e79db01461039857806336951356146103b857600080fd5b80630d919281116101ed5780630d919281146102c2578063173ab136146102d757806318160ddd1461030757806318c18adb1461031c57806323b872dd1461033c57600080fd5b806303c833021461023a57806306fdde0314610244578063095ea7b31461026f57806309bbedde1461029f57600080fd5b3661023557600854610230903461071f565b600855005b600080fd5b610242610734565b005b34801561025057600080fd5b5061025961085e565b60405161026691906117fe565b60405180910390f35b34801561027b57600080fd5b5061028f61028a36600461186b565b6108f0565b6040519015158152602001610266565b3480156102ab57600080fd5b506102b4610908565b604051908152602001610266565b3480156102ce57600080fd5b50610242610918565b3480156102e357600080fd5b5061028f6102f2366004611897565b600f6020526000908152604090205460ff1681565b34801561031357600080fd5b506002546102b4565b34801561032857600080fd5b5061024261033736600461186b565b610955565b34801561034857600080fd5b5061028f6103573660046118bb565b610a32565b34801561036857600080fd5b506102b4610377366004611897565b610a56565b34801561038857600080fd5b5060405160128152602001610266565b3480156103a457600080fd5b506102426103b3366004611897565b610ab2565b3480156103c457600080fd5b5061028f6103d3366004611897565b610b91565b3480156103e457600080fd5b5061028f6103f336600461186b565b610bdd565b34801561040457600080fd5b506102426104133660046118fc565b610c1c565b34801561042457600080fd5b5061028f610433366004611897565b600e6020526000908152604090205460ff1681565b34801561045457600080fd5b506102b461046336600461193a565b610c71565b34801561047457600080fd5b50610242610cce565b34801561048957600080fd5b506102b4610498366004611897565b6001600160a01b031660009081526020819052604090205490565b3480156104bf57600080fd5b50610242610d74565b3480156104d457600080fd5b506102b460095481565b3480156104ea57600080fd5b50600a546040516001600160a01b039091168152602001610266565b34801561051257600080fd5b506102b4610521366004611897565b610de8565b34801561053257600080fd5b50610259610df3565b34801561054757600080fd5b5060115461028f9060ff1681565b34801561056157600080fd5b506102b460125481565b34801561057757600080fd5b5061028f61058636600461186b565b610e02565b34801561059757600080fd5b506102b46105a6366004611897565b60106020526000908152604090205481565b3480156105c457600080fd5b506102b46105d3366004611897565b610e94565b3480156105e457600080fd5b5061028f6105f336600461186b565b610ec0565b34801561060457600080fd5b506102b4610613366004611897565b6001600160a01b031660009081526007602052604090205490565b34801561063a57600080fd5b506102b460085481565b34801561065057600080fd5b506102b461065f36600461193a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561069657600080fd5b506102426106a536600461186b565b610ece565b3480156106b657600080fd5b5061028f6106c5366004611897565b610f7c565b3480156106d657600080fd5b506102426106e5366004611897565b610fc8565b3480156106f657600080fd5b5061070a610705366004611897565b6110b3565b60408051928352602083019190915201610266565b600061072b828461197e565b90505b92915050565b600061073f60025490565b1161074957600080fd5b6000600854116107c65760405162461bcd60e51b815260206004820152603960248201527f546865726520617265206e6f206469766964656e64732063757272656e746c7960448201527f20617661696c61626c6520746f20646973747269627574652e0000000000000060648201526084015b60405180910390fd5b6008541561085c576107fe6107da60025490565b6008546107eb90600160801b6110e0565b6107f59190611996565b6005549061071f565b60055560085460405190815233907fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d784541165119060200160405180910390a26008546009546108489161071f565b60095560085461085890806110ec565b6008555b565b60606003805461086d906119b8565b80601f0160208091040260200160405190810160405280929190818152602001828054610899906119b8565b80156108e65780601f106108bb576101008083540402835291602001916108e6565b820191906000526020600020905b8154815290600101906020018083116108c957829003601f168201915b5050505050905090565b6000336108fe8185856110f8565b5060019392505050565b6000610913600c5490565b905090565b600a546001600160a01b031633146109425760405162461bcd60e51b81526004016107bd906119f3565b6011805460ff1916600117905542601255565b600a546001600160a01b0316331461097f5760405162461bcd60e51b81526004016107bd906119f3565b6001600160a01b0382166000908152600e60205260409020805460ff191690556109a9828261115b565b6001600160a01b0382166000908152600d602052604090205460ff166109fa576001600160a01b0382166000908152600d60205260409020805460ff191660011790556109fa600c80546001019055565b6040516001600160a01b038316907fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2590600090a25050565b600033610a408582856111ba565b610a4b858585611246565b506001949350505050565b6001600160a01b03811660009081526006602090815260408083205491839052822054600554600160801b92610aa892610aa392610a9d91610a9891906110e0565b6112a4565b90611312565b61131e565b61072e9190611996565b600a546001600160a01b03163314610adc5760405162461bcd60e51b81526004016107bd906119f3565b6001600160a01b0381166000908152600e60205260408120805460ff19166001179055610b0a90829061115b565b6001600160a01b0381166000908152600d602052604090205460ff16151560011415610b5a576001600160a01b0381166000908152600d60205260409020805460ff19169055610b5a600c611370565b6040516001600160a01b038216907fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2590600090a250565b600a546000906001600160a01b03163314610bbe5760405162461bcd60e51b81526004016107bd906119f3565b506001600160a01b03166000908152600e602052604090205460ff1690565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906108fe9082908690610c1790879061197e565b6110f8565b600a546001600160a01b03163314610c465760405162461bcd60e51b81526004016107bd906119f3565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b600a546000906001600160a01b03163314610c9e5760405162461bcd60e51b81526004016107bd906119f3565b6000610caa84846113c7565b6001600160a01b038516600090815260106020526040902042905591505092915050565b60405162461bcd60e51b815260206004820152606960248201527f517569636b695f4469766964656e645f547261636b65723a207769746864726160448201527f774469766964656e642064697361626c65642e20557365207468652027636c6160648201527f696d272066756e6374696f6e206f6e20746865206d61696e20517569636b692060848201526831b7b73a3930b1ba1760b91b60a482015260c4016107bd565b600a546001600160a01b03163314610d9e5760405162461bcd60e51b81526004016107bd906119f3565b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b600061072e82610e94565b60606004805461086d906119b8565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610e875760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107bd565b610a4b82868684036110f8565b6001600160a01b03811660009081526007602052604081205461072e90610eba84610a56565b906110ec565b6000336108fe818585611246565b600a546001600160a01b03163314610ef85760405162461bcd60e51b81526004016107bd906119f3565b6001600160a01b0382166000908152600e602052604090205460ff1615610f1d575050565b610f27828261115b565b6001600160a01b0382166000908152600d602052604090205460ff16610f78576001600160a01b0382166000908152600d60205260409020805460ff19166001179055610f78600c80546001019055565b5050565b600a546000906001600160a01b03163314610fa95760405162461bcd60e51b81526004016107bd906119f3565b506001600160a01b03166000908152600f602052604090205460ff1690565b600a546001600160a01b03163314610ff25760405162461bcd60e51b81526004016107bd906119f3565b6001600160a01b0381166110575760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107bd565b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000806110bf83610e94565b6001600160a01b039093166000908152600760205260409020549293915050565b600061072b8284611a28565b600061072b8284611a47565b60405162461bcd60e51b815260206004820152602d60248201527f517569636b695f4469766964656e645f547261636b65723a204e6f206170707260448201526c1bdd985b1cc8185b1b1bddd959609a1b60648201526084016107bd565b505050565b6001600160a01b0382166000908152602081905260409020548082111561119a57600061118883836110ec565b9050611194848261151d565b50505050565b808210156111565760006111ae82846110ec565b90506111948482611581565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461119457818110156112395760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107bd565b61119484848484036110f8565b60405162461bcd60e51b815260206004820152602d60248201527f517569636b695f4469766964656e645f547261636b65723a204e6f207472616e60448201526c1cd9995c9cc8185b1b1bddd959609a1b60648201526084016107bd565b60006001600160ff1b0382111561130e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016107bd565b5090565b600061072b8284611a5e565b60008082121561130e5760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f73697469766560448201526064016107bd565b8054806113bf5760405162461bcd60e51b815260206004820152601b60248201527f436f756e7465723a2064656372656d656e74206f766572666c6f77000000000060448201526064016107bd565b600019019055565b6000806113d384610e94565b90508015611513576001600160a01b0384166000908152600760205260409020546113fe908261071f565b6001600160a01b038516600081815260076020526040908190209290925590517feb063efb53b3790d2bc15284b59af7544466c8787c2883321ee27095647911b69061145f90849087909182526001600160a01b0316602082015260400190565b60405180910390a26000836001600160a01b03168260405160006040518083038185875af1925050503d80600081146114b4576040519150601f19603f3d011682016040523d82523d6000602084013e6114b9565b606091505b505090508061150b576001600160a01b0385166000908152600760205260409020546114e590836110ec565b6001600160a01b038616600090815260076020526040812091909155925061072e915050565b50905061072e565b5060009392505050565b61152782826115c5565b611561611542610a98836005546110e090919063ffffffff16565b6001600160a01b038416600090815260066020526040902054906116a4565b6001600160a01b0390921660009081526006602052604090209190915550565b61158b82826116b0565b6115616115a6610a98836005546110e090919063ffffffff16565b6001600160a01b03841660009081526006602052604090205490611312565b6001600160a01b03821661161b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107bd565b806002600082825461162d919061197e565b90915550506001600160a01b0382166000908152602081905260408120805483929061165a90849061197e565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600061072b8284611a9f565b6001600160a01b0382166117105760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107bd565b6001600160a01b038216600090815260208190526040902054818110156117845760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016107bd565b6001600160a01b03831660009081526020819052604081208383039055600280548492906117b3908490611a47565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600060208083528351808285015260005b8181101561182b5785810183015185820160400152820161180f565b8181111561183d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461186857600080fd5b50565b6000806040838503121561187e57600080fd5b823561188981611853565b946020939093013593505050565b6000602082840312156118a957600080fd5b81356118b481611853565b9392505050565b6000806000606084860312156118d057600080fd5b83356118db81611853565b925060208401356118eb81611853565b929592945050506040919091013590565b6000806040838503121561190f57600080fd5b823561191a81611853565b91506020830135801515811461192f57600080fd5b809150509250929050565b6000806040838503121561194d57600080fd5b823561195881611853565b9150602083013561192f81611853565b634e487b7160e01b600052601160045260246000fd5b6000821982111561199157611991611968565b500190565b6000826119b357634e487b7160e01b600052601260045260246000fd5b500490565b600181811c908216806119cc57607f821691505b602082108114156119ed57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000816000190483118215151615611a4257611a42611968565b500290565b600082821015611a5957611a59611968565b500390565b600080821280156001600160ff1b0384900385131615611a8057611a80611968565b600160ff1b8390038412811615611a9957611a99611968565b50500190565b60008083128015600160ff1b850184121615611abd57611abd611968565b6001600160ff1b0384018313811615611ad857611ad8611968565b5050039056fea26469706673582212209a33836eb07face48f5d6eb109d049c03b65c1d172ebb7bfdca08854b6ab3cb364736f6c634300080b0033a264697066735822122045f0146eb3ea3ef4d7080041c0df86a7e84e12dc7d71dc354087940d10555f6664736f6c634300080b0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000008bdfc93bc10f1efdab59244a64a1a77ab5dd3a4200000000000000000000000029d19f39f3413a665e937e8906baea25cd231aef000000000000000000000000dd3e7b495f222123e9b72634bc2f9e9d060b6ebc

-----Decoded View---------------
Arg [0] : _devWalletAddress (address): 0x8BdFC93bC10f1EfdaB59244A64A1a77aB5DD3A42
Arg [1] : _teamWalletAddress (address): 0x29D19F39f3413A665E937E8906bAea25cD231aEf
Arg [2] : _buyBackWalletAddress (address): 0xDd3E7b495f222123E9b72634Bc2F9E9D060B6Ebc

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000008bdfc93bc10f1efdab59244a64a1a77ab5dd3a42
Arg [1] : 00000000000000000000000029d19f39f3413a665e937e8906baea25cd231aef
Arg [2] : 000000000000000000000000dd3e7b495f222123e9b72634bc2f9e9d060b6ebc


Deployed ByteCode Sourcemap

497:21979:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9183:204;;;;;;;;;;-1:-1:-1;9183:204:12;;;;;:::i;:::-;;:::i;:::-;;;689:25:18;;;677:2;662:18;9183:204:12;;;;;;;;578:100:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;21261:124:12:-;;;;;;;;;;;;;:::i;1651:242:5:-;;;;;;;;;;-1:-1:-1;1651:242:5;;;;;:::i;:::-;;:::i;:::-;;;1812:14:18;;1805:22;1787:41;;1775:2;1760:18;1651:242:5;1647:187:18;7719:719:12;;;;;;;;;;-1:-1:-1;7719:719:12;;;;;:::i;:::-;;:::i;:::-;;899:108:5;;;;;;;;;;-1:-1:-1;987:12:5;;899:108;;8446:110:12;;;;;;;;;;-1:-1:-1;8446:110:12;;;;;:::i;:::-;;:::i;1901:295:5:-;;;;;;;;;;-1:-1:-1;1901:295:5;;;;;:::i;:::-;;:::i;20834:195:12:-;;;;;;;;;;;;;:::i;979:30::-;;;;;;;;;;-1:-1:-1;979:30:12;;;;-1:-1:-1;;;979:30:12;;;;;;2186:44;;;;;;;;;;-1:-1:-1;2186:44:12;;;;-1:-1:-1;;;;;2186:44:12;;;;;;-1:-1:-1;;;;;3304:32:18;;;3286:51;;3274:2;3259:18;2186:44:12;3102:241:18;10375:694:12;;;;;;;;;;-1:-1:-1;10375:694:12;;;;;:::i;:::-;;:::i;11077:414::-;;;;;;;;;;-1:-1:-1;11077:414:12;;;;;:::i;:::-;;:::i;798:93:5:-;;;;;;;;;;-1:-1:-1;798:93:5;;881:2;4546:36:18;;4534:2;4519:18;798:93:5;4404:184:18;4872:656:12;;;;;;;;;;-1:-1:-1;4872:656:12;;;;;:::i;:::-;;:::i;2204:272:5:-;;;;;;;;;;-1:-1:-1;2204:272:5;;;;;:::i;:::-;;:::i;2027:26:12:-;;;;;;;;;;-1:-1:-1;2027:26:12;;;;-1:-1:-1;;;;;2027:26:12;;;6641:248;;;;;;;;;;;;;:::i;1976:42::-;;;;;;;;;;;;;;;;10028:205;;;;;;;;;;-1:-1:-1;10028:205:12;;;;;:::i;:::-;;:::i;5632:262::-;;;;;;;;;;-1:-1:-1;5632:262:12;;;;;:::i;:::-;;:::i;1015:177:5:-;;;;;;;;;;-1:-1:-1;1015:177:5;;;;;:::i;:::-;;:::i;571:148:11:-;;;;;;;;;;;;;:::i;2290:37:12:-;;;;;;;;;;;;;;;;10241:126;;;;;;;;;;-1:-1:-1;10241:126:12;;;;;:::i;:::-;;:::i;359:79:11:-;;;;;;;;;;-1:-1:-1;424:6:11;;-1:-1:-1;;;;;424:6:11;359:79;;1196:48:12;;;;;;;;;;-1:-1:-1;1196:48:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;686:104:5;;;;;;;;;;;;;:::i;11831:290:12:-;;;;;;;;;;-1:-1:-1;11831:290:12;;;;;:::i;:::-;;:::i;2484:507:5:-;;;;;;;;;;-1:-1:-1;2484:507:5;;;;;:::i;:::-;;:::i;1200:234::-;;;;;;;;;;-1:-1:-1;1200:234:5;;;;;:::i;:::-;;:::i;1422:30:12:-;;;;;;;;;;;;;;;;21394:899;;;;;;;;;;-1:-1:-1;21394:899:12;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9644:160::-;;;;;;;;;;-1:-1:-1;9644:160:12;;;;;:::i;:::-;;:::i;21037:216::-;;;;;;;;;;;;;:::i;11499:324::-;;;;;;;;;;-1:-1:-1;11499:324:12;;;;;:::i;:::-;;:::i;20532:135::-;;;;;;;;;;-1:-1:-1;20532:135:12;;;;;:::i;:::-;;:::i;20675:151::-;;;;;;;;;;;;;:::i;1353:60::-;;;;;;;;;;-1:-1:-1;1353:60:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;5902:731;;;;;;;;;;;;;:::i;1442:201:5:-;;;;;;;;;;-1:-1:-1;1442:201:5;;;;;:::i;:::-;-1:-1:-1;;;;;1608:18:5;;;1576:7;1608:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;1442:201;1906:63:12;;;;;;;;;;;;;;;;22301:135;;;;;;;;;;-1:-1:-1;22301:135:12;;;;;:::i;:::-;-1:-1:-1;;;;;22401:20:12;22374:7;22401:20;;;:10;:20;;;;;:27;;22301:135;9812:208;;;;;;;;;;-1:-1:-1;9812:208:12;;;;;:::i;:::-;;:::i;2377:37::-;;;;;;;;;;;;;;;;727:244:11;;;;;;;;;;-1:-1:-1;727:244:11;;;;;:::i;:::-;;:::i;9183:204:12:-;9300:79;;-1:-1:-1;;;9300:79:12;;-1:-1:-1;;;;;3304:32:18;;;9300:79:12;;;3286:51:18;9273:7:12;;9300:69;;;;;;3259:18:18;;9300:79:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9293:86;;9183:204;;;;;:::o;578:100:5:-;632:13;665:5;658:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;578:100;:::o;21261:124:12:-;21345:7;;:32;;;-1:-1:-1;;;21345:32:12;;;;21318:7;;-1:-1:-1;;;;;21345:7:12;;:30;;:32;;;;;;;;;;;;;;:7;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21338:39;;21261:124;:::o;1651:242:5:-;1770:4;176:10:0;1831:32:5;176:10:0;1847:7:5;1856:6;1831:8;:32::i;:::-;-1:-1:-1;1881:4:5;;1651:242;-1:-1:-1;;;1651:242:5:o;7719:719:12:-;7874:10;7856:29;;;;:17;:29;;;;;;;;7848:45;;;;-1:-1:-1;;;7848:45:12;;;;;;;:::i;:::-;;;;;;;;;7904:14;:63;;-1:-1:-1;;;;;;7904:63:12;-1:-1:-1;;;;;7904:63:12;;;;;;;;;8017:56;;-1:-1:-1;;;8017:56:12;;3304:32:18;;;8017:56:12;;;3286:51:18;-1:-1:-1;;8017:37:12;;3259:18:18;;8017:56:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7988:85;;8113:1;8092:18;:22;8084:61;;;;-1:-1:-1;;;8084:61:12;;9656:2:18;8084:61:12;;;9638:21:18;9695:1;9675:18;;;9668:29;-1:-1:-1;;;9713:18:18;;;9706:33;9756:18;;8084:61:12;9454:326:18;8084:61:12;8200:14;;:58;;-1:-1:-1;;;8200:58:12;;-1:-1:-1;;;;;10031:15:18;;;8200:58:12;;;10013:34:18;10083:15;;;10063:18;;;10056:43;8158:17:12;;8200:14;;:29;;9948:18:18;;8200:58:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8188:70;-1:-1:-1;8275:13:12;;8271:160;;8305:14;;:47;;-1:-1:-1;;;8305:47:12;;-1:-1:-1;;;;;10326:32:18;;;8305:47:12;;;10308:51:18;8305:14:12;10375:18:18;;;10368:34;8305:14:12;;;;:25;;10281:18:18;;8305:47:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8374:45:12;;;10595:25:18;;;-1:-1:-1;;;;;10656:32:18;;10651:2;10636:18;;10629:60;8374:45:12;;-1:-1:-1;10568:18:18;;-1:-1:-1;8374:45:12;;;;;;;8271:160;7837:601;;7719:719;;;:::o;8446:110::-;8505:43;8512:14;8536:10;8505:6;:43::i;:::-;8446:110;:::o;1901:295:5:-;2032:4;176:10:0;2090:38:5;2106:4;176:10:0;2121:6:5;2090:15;:38::i;:::-;2139:27;2149:4;2155:2;2159:6;2139:9;:27::i;:::-;-1:-1:-1;2184:4:5;;1901:295;-1:-1:-1;;;;1901:295:5:o;20834:195:12:-;20899:11;;20876:7;;-1:-1:-1;;;20899:11:12;;;;20896:126;;;20949:10;;20934;;:26;;:14;:26::i;20896:126::-;-1:-1:-1;21000:10:12;;;20834:195::o;10375:694::-;486:6:11;;-1:-1:-1;;;;;486:6:11;496:10;486:20;478:65;;;;-1:-1:-1;;;478:65:11;;;;;;;:::i;:::-;10722:2:12::1;10707:11;:17;;:39;;;;;10744:2;10728:12;:18;;10707:39;10699:48;;;::::0;::::1;;10760:10;:24:::0;;;;10795:10:::1;:24:::0;;;;10830:11:::1;:26:::0;;;;10867:11:::1;:26:::0;;;;10904:18:::1;:40:::0;;;;10955:6:::1;:16:::0;10982:6:::1;:16:::0;11009:7:::1;:18:::0;11038:10:::1;:23:::0;10375:694::o;11077:414::-;11248:10;11230:29;;;;:17;:29;;;;;;;;11222:45;;;;-1:-1:-1;;;11222:45:12;;;;;;;:::i;:::-;11336:15;751:2;11336;:15;:::i;:::-;11304:47;;:29;:47;:::i;:::-;11278:23;:73;11362:22;:48;;;11468:15;751:2;11468;:15;:::i;:::-;11444:39;;:21;:39;:::i;:::-;11421:20;:62;-1:-1:-1;;;11077:414:12:o;4872:656::-;4961:10;4943:29;;;;:17;:29;;;;;;;;4935:45;;;;-1:-1:-1;;;4935:45:12;;;;;;;:::i;:::-;5087:16;;4991:12;;5036:10;;5061:43;;:21;;:25;:43::i;:::-;5028:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5014:120:12;;-1:-1:-1;;5147:374:12;;;;5204:1;5185:16;;:20;5177:36;;;;-1:-1:-1;;;5177:36:12;;13161:2:18;5177:36:12;;;13143:21:18;13200:1;13180:18;;;13173:29;-1:-1:-1;;;13218:18:18;;;13211:33;13261:18;;5177:36:12;12959:326:18;5177:36:12;5324:16;;5291:87;;5230:22;;5299:10;;5230:22;5291:87;5230:22;5291:87;5324:16;5299:10;5291:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5267:111:12;;-1:-1:-1;;5395:115:12;;;;5477:16;;5456:38;;5477:16;5456:20;:38::i;:::-;5437:16;:57;5395:115;5162:359;5147:374;4924:604;4872:656;:::o;2204:272:5:-;176:10:0;2319:4:5;2405:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;2405:27:5;;;;;;;;;;2319:4;;176:10:0;2380:66:5;;176:10:0;;2405:27:5;;:40;;2435:10;;2405:40;:::i;:::-;2380:8;:66::i;6641:248:12:-;6709:10;6691:29;;;;:17;:29;;;;;;;;6683:45;;;;-1:-1:-1;;;6683:45:12;;;;;;;:::i;:::-;6739:19;6761:76;6804:22;;6761:24;6779:4;6761:9;:24::i;:::-;:28;;:76::i;:::-;6739:98;;6850:29;6867:11;6850:16;:29::i;10028:205::-;486:6:11;;-1:-1:-1;;;;;486:6:11;496:10;486:20;478:65;;;;-1:-1:-1;;;478:65:11;;;;;;;:::i;:::-;10153:4:12::1;10147;10127:13;987:12:5::0;;;899:108;10127:13:12::1;:17;::::0;10143:1:::1;10127:17;:::i;:::-;:24;;;;:::i;:::-;10126:31;;;;:::i;:::-;10110:12;:47;;10102:64;;;;-1:-1:-1::0;;;10102:64:12::1;;;;;;13882:2:18::0;13864:21;;;13921:1;13901:18;;;13894:29;-1:-1:-1;;;13954:2:18;13939:18;;13932:34;13998:2;13983:18;;13680:327;10102:64:12::1;10211:13;751:2;10211;:13;:::i;:::-;10195:30;::::0;:12;:30:::1;:::i;:::-;10177:15;:48:::0;-1:-1:-1;10028:205:12:o;5632:262::-;5743:10;5725:29;;;;:17;:29;;;;;;;;5717:45;;;;-1:-1:-1;;;5717:45:12;;;;;;;:::i;:::-;5791:43;;-1:-1:-1;;;5791:43:12;;5828:4;5791:43;;;3286:51:18;5773:15:12;;-1:-1:-1;;;;;5791:28:12;;;;;3259:18:18;;5791:43:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5845:41;;-1:-1:-1;;;5845:41:12;;-1:-1:-1;;;;;10326:32:18;;;5845:41:12;;;10308:51:18;10375:18;;;10368:34;;;5773:61:12;;-1:-1:-1;5845:27:12;;;;;;10281:18:18;;5845:41:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5706:188;5632:262;;:::o;1015:177:5:-;-1:-1:-1;;;;;1166:18:5;1134:7;1166:18;;;;;;;;;;;;1015:177::o;571:148:11:-;486:6;;-1:-1:-1;;;;;486:6:11;496:10;486:20;478:65;;;;-1:-1:-1;;;478:65:11;;;;;;;:::i;:::-;662:6:::1;::::0;641:40:::1;::::0;678:1:::1;::::0;-1:-1:-1;;;;;662:6:11::1;::::0;641:40:::1;::::0;678:1;;641:40:::1;692:6;:19:::0;;-1:-1:-1;;;;;;692:19:11::1;::::0;;571:148::o;10241:126:12:-;10329:7;;:30;;-1:-1:-1;;;10329:30:12;;-1:-1:-1;;;;;3304:32:18;;;10329:30:12;;;3286:51:18;10305:4:12;;10329:7;;:20;;3259:18:18;;10329:30:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;686:104:5:-;742:13;775:7;768:14;;;;;:::i;11831:290:12:-;486:6:11;;-1:-1:-1;;;;;486:6:11;496:10;486:20;478:65;;;;-1:-1:-1;;;478:65:11;;;;;;;:::i;:::-;11973:16:12::1;:36:::0;;-1:-1:-1;;;;;11973:36:12;;::::1;-1:-1:-1::0;;;;;;11973:36:12;;::::1;;::::0;;;12020:17:::1;:38:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;12069:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;11831:290::o;2484:507:5:-;176:10:0;2604:4:5;2692:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;2692:27:5;;;;;;;;;;2604:4;;176:10:0;2752:35:5;;;;2730:122;;;;-1:-1:-1;;;2730:122:5;;14743:2:18;2730:122:5;;;14725:21:18;14782:2;14762:18;;;14755:30;14821:34;14801:18;;;14794:62;-1:-1:-1;;;14872:18:18;;;14865:35;14917:19;;2730:122:5;14541:401:18;2730:122:5;2888:60;2897:5;2904:7;2932:15;2913:16;:34;2888:8;:60::i;1200:234::-;1315:4;176:10:0;1376:28:5;176:10:0;1393:2:5;1397:6;1376:9;:28::i;21394:899:12:-;21533:17;21580:1;21571:6;:10;:29;;;;;21599:1;21585:11;:15;21571:29;21563:44;;;;-1:-1:-1;;;21563:44:12;;15149:2:18;21563:44:12;;;15131:21:18;15188:1;15168:18;;;15161:29;-1:-1:-1;;;15206:18:18;;;15199:32;15248:18;;21563:44:12;14947:325:18;21563:44:12;-1:-1:-1;;;;;21641:20:12;;21618;21641;;;:10;:20;;;;;:27;;21693:20;21707:6;21693:11;:20;:::i;:::-;21679:34;-1:-1:-1;21724:13:12;21740:12;21746:6;21679:34;21740:12;:::i;:::-;21724:28;;21779:12;21771:5;:20;21763:36;;;;-1:-1:-1;;;21763:36:12;;15609:2:18;21763:36:12;;;15591:21:18;15648:1;15628:18;;;15621:29;-1:-1:-1;;;15666:18:18;;;15659:33;15709:18;;21763:36:12;15407:326:18;21763:36:12;21826:6;21847:18;;;21843:113;;;21888:12;;-1:-1:-1;21923:21:12;21938:6;21888:12;21923:21;:::i;:::-;21915:29;;21843:113;21968:28;22014:5;21999:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;21999:21:12;;;;;;;;;;;;;;;-1:-1:-1;21968:52:12;-1:-1:-1;22031:20:12;22083:5;22066:192;22094:3;22090:1;:7;22066:192;;;-1:-1:-1;;;;;22133:20:12;;22119:11;22133:20;;;:10;:20;;;;;:23;;22154:1;;22133:23;;;;;;:::i;:::-;;;;;;;;;;;;;22198:16;;;:11;:16;;;;;;;22171:43;;;;;;;;;;-1:-1:-1;;;;;22171:43:12;;;;;;;;;;;;;:24;;22133:23;;-1:-1:-1;22171:10:12;;22182:12;;22171:24;;;;;;:::i;:::-;;;;;;;;;;:43;22229:17;22245:1;22229:17;;:::i;:::-;;;22104:154;22099:3;;;;;:::i;:::-;;;;22066:192;;;-1:-1:-1;22275:10:12;;21394:899;-1:-1:-1;;;;;;;;;21394:899:12:o;9644:160::-;486:6:11;;-1:-1:-1;;;;;486:6:11;496:10;486:20;478:65;;;;-1:-1:-1;;;478:65:11;;;;;;;:::i;:::-;-1:-1:-1;;;;;9751:26:12;;;::::1;;::::0;;;:16:::1;:26;::::0;;;;:45;;-1:-1:-1;;9751:45:12::1;::::0;::::1;;::::0;;;::::1;::::0;;9644:160::o;21037:216::-;21103:11;;21080:7;;-1:-1:-1;;;21103:11:12;;;;21100:146;;;21138:45;21171:11;;21138:28;21154:11;;21138;;:15;;:28;;;;:::i;:::-;:32;;:45::i;21100:146::-;-1:-1:-1;21223:11:12;;;21037:216::o;11499:324::-;486:6:11;;-1:-1:-1;;;;;486:6:11;496:10;486:20;478:65;;;;-1:-1:-1;;;478:65:11;;;;;;;:::i;:::-;11575:9:12::1;11570:246;11590:16:::0;;::::1;11570:246;;;11662:13;::::0;-1:-1:-1;;;;;11662:13:12::1;11650:5:::0;;11656:1;11650:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11650:25:12::1;;;:82;;;;-1:-1:-1::0;11716:15:12::1;::::0;-1:-1:-1;;;;;11716:15:12::1;11696:5:::0;;11702:1;11696:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11696:36:12::1;;;11650:82;11628:177;;;11785:4;11767:5;:15;11773:5;;11779:1;11773:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11767:15:12::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11767:15:12;:22;;-1:-1:-1;;11767:22:12::1;::::0;::::1;;::::0;;;::::1;::::0;;11628:177:::1;11608:3:::0;::::1;::::0;::::1;:::i;:::-;;;;11570:246;;20532:135:::0;20610:10;20592:29;;;;:17;:29;;;;;;;;20584:45;;;;-1:-1:-1;;;20584:45:12;;;;;;;:::i;:::-;20640:11;:19;;;;;-1:-1:-1;;;20640:19:12;-1:-1:-1;;;;20640:19:12;;;;;;;;;20532:135::o;20675:151::-;20739:7;20766:52;20795:22;;20766:24;20784:4;20766:9;:24::i;5902:731::-;486:6:11;;-1:-1:-1;;;;;486:6:11;496:10;486:20;478:65;;;;-1:-1:-1;;;478:65:11;;;;;;;:::i;:::-;5969:11:12::1;::::0;-1:-1:-1;;;5969:11:12;::::1;;;5968:12;5960:29;;;;-1:-1:-1::0;;;5960:29:12::1;;;;;;16461:2:18::0;16443:21;;;16500:1;16480:18;;;16473:29;-1:-1:-1;;;16533:2:18;16518:18;;16511:34;16577:2;16562:18;;16259:327;5960:29:12::1;6044:15;;;;;;;;;-1:-1:-1::0;;;;;6044:15:12::1;-1:-1:-1::0;;;;;6044:23:12::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6026:55:12::1;;6108:4;6132:15;;;;;;;;;-1:-1:-1::0;;;;;6132:15:12::1;-1:-1:-1::0;;;;;6132:20:12::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6026:143;::::0;-1:-1:-1;;;;;;6026:143:12::1;::::0;;;;;;-1:-1:-1;;;;;10031:15:18;;;6026:143:12::1;::::0;::::1;10013:34:18::0;10083:15;;10063:18;;;10056:43;9948:18;;6026:143:12::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6010:13;:159:::0;;-1:-1:-1;;;;;;6010:159:12::1;-1:-1:-1::0;;;;;6010:159:12;;::::1;::::0;;::::1;::::0;;-1:-1:-1;6180:52:12;;;:28:::1;:52;::::0;;;;;;;:59;;-1:-1:-1;;6180:59:12;;::::1;-1:-1:-1::0;6180:59:12;;::::1;::::0;;;6278:13;;;::::1;6252:40:::0;;:25:::1;:40:::0;;;;;;;:47;;;;::::1;::::0;;::::1;::::0;;6310:15:::1;::::0;6347:13;;6310:51;;-1:-1:-1;;;6310:51:12;;6347:13;;::::1;6310:51;::::0;::::1;3286::18::0;6310:15:12;::::1;::::0;:36:::1;::::0;3259:18:18;;6310:51:12::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6374:61;6387:24;6405:4;6387:9;:24::i;:::-;6413:21;6374:12;:61::i;:::-;6453:13;::::0;6498:15:::1;::::0;6446:111:::1;::::0;-1:-1:-1;;;6446:111:12;;-1:-1:-1;;;;;6498:15:12;;::::1;6446:111;::::0;::::1;10308:51:18::0;-1:-1:-1;;10375:18:18;;;10368:34;6453:13:12;::::1;::::0;6446:29:::1;::::0;10281:18:18;;6446:111:12::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;6570:11:12::1;:18:::0;;-1:-1:-1;;;;6570:18:12::1;-1:-1:-1::0;;;6570:18:12::1;::::0;;6613:12:::1;6599:11;:26:::0;5902:731::o;9812:208::-;486:6:11;;-1:-1:-1;;;;;486:6:11;496:10;486:20;478:65;;;;-1:-1:-1;;;478:65:11;;;;;;;:::i;:::-;-1:-1:-1;;;;;9943:38:12;;;::::1;;::::0;;;:28:::1;:38;::::0;;;;:69;;-1:-1:-1;;9943:69:12::1;::::0;::::1;;::::0;;;::::1;::::0;;9812:208::o;727:244:11:-;486:6;;-1:-1:-1;;;;;486:6:11;496:10;486:20;478:65;;;;-1:-1:-1;;;478:65:11;;;;;;;:::i;:::-;-1:-1:-1;;;;;816:22:11;::::1;808:73;;;::::0;-1:-1:-1;;;808:73:11;;17358:2:18;808:73:11::1;::::0;::::1;17340:21:18::0;17397:2;17377:18;;;17370:30;17436:34;17416:18;;;17409:62;-1:-1:-1;;;17487:18:18;;;17480:36;17533:19;;808:73:11::1;17156:402:18::0;808:73:11::1;918:6;::::0;897:38:::1;::::0;-1:-1:-1;;;;;897:38:11;;::::1;::::0;918:6:::1;::::0;897:38:::1;::::0;918:6:::1;::::0;897:38:::1;946:6;:17:::0;;-1:-1:-1;;;;;;946:17:11::1;-1:-1:-1::0;;;;;946:17:11;;;::::1;::::0;;;::::1;::::0;;727:244::o;4721:380:5:-;-1:-1:-1;;;;;4857:19:5;;4849:68;;;;-1:-1:-1;;;4849:68:5;;17765:2:18;4849:68:5;;;17747:21:18;17804:2;17784:18;;;17777:30;17843:34;17823:18;;;17816:62;-1:-1:-1;;;17894:18:18;;;17887:34;17938:19;;4849:68:5;17563:400:18;4849:68:5;-1:-1:-1;;;;;4936:21:5;;4928:68;;;;-1:-1:-1;;;4928:68:5;;18170:2:18;4928:68:5;;;18152:21:18;18209:2;18189:18;;;18182:30;18248:34;18228:18;;;18221:62;-1:-1:-1;;;18299:18:18;;;18292:32;18341:19;;4928:68:5;17968:398:18;4928:68:5;-1:-1:-1;;;;;5009:18:5;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5061:32;;689:25:18;;;5061:32:5;;662:18:18;5061:32:5;;;;;;;4721:380;;;:::o;8564:611:12:-;8649:14;:63;;-1:-1:-1;;;;;;8649:63:12;-1:-1:-1;;;;;8649:63:12;;;;;;;;;8754:71;;-1:-1:-1;;;8754:71:12;;3304:32:18;;;8754:71:12;;;3286:51:18;-1:-1:-1;;8754:37:12;;3259:18:18;;8754:71:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8725:100;;8879:1;8858:18;:22;8836:75;;;;-1:-1:-1;;;8836:75:12;;9656:2:18;8836:75:12;;;9638:21:18;9695:1;9675:18;;;9668:29;-1:-1:-1;;;9713:18:18;;;9706:33;9756:18;;8836:75:12;9454:326:18;8836:75:12;8964:14;;:49;;-1:-1:-1;;;8964:49:12;;-1:-1:-1;;;;;10031:15:18;;;8964:49:12;;;10013:34:18;;;10063:18;;;10056:43;8922:17:12;;8964:14;;:29;;9948:18:18;;8964:49:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8952:61;-1:-1:-1;9030:13:12;;9026:142;;9060:14;;:38;;-1:-1:-1;;;9060:38:12;;-1:-1:-1;;;;;10326:32:18;;;9060:38:12;;;10308:51:18;9060:14:12;10375:18:18;;;10368:34;9060:14:12;;;;:25;;10281:18:18;;9060:38:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9120:36:12;;;10595:25:18;;;-1:-1:-1;;;;;10656:32:18;;10651:2;10636:18;;10629:60;9120:36:12;;-1:-1:-1;10568:18:18;;-1:-1:-1;9120:36:12;;;;;;;8638:537;;8564:611;;:::o;5109:502:5:-;-1:-1:-1;;;;;1608:18:5;;;5244:24;1608:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;5311:37:5;;5307:297;;5411:6;5391:16;:26;;5365:117;;;;-1:-1:-1;;;5365:117:5;;18573:2:18;5365:117:5;;;18555:21:18;18612:2;18592:18;;;18585:30;18651:31;18631:18;;;18624:59;18700:18;;5365:117:5;18371:353:18;5365:117:5;5526:51;5535:5;5542:7;5570:6;5551:16;:25;5526:8;:51::i;6897:814:12:-;-1:-1:-1;;;;;7041:12:12;;;;;;:5;:12;;;;;;;;7040:13;:28;;;;-1:-1:-1;;;;;;7058:10:12;;;;;;:5;:10;;;;;;;;7057:11;7040:28;7032:37;;;;;;7143:11;;7107:7;;-1:-1:-1;;;7143:11:12;;;;:113;;;;-1:-1:-1;;;;;;7172:32:12;;;;;;:25;:32;;;;;;;;;:83;;-1:-1:-1;;;;;;7225:30:12;;;;;;:25;:30;;;;;;;;7172:83;7143:154;;;;-1:-1:-1;;;;;;7274:23:12;;;;;;:16;:23;;;;;;;;7273:24;7143:154;:193;;;;-1:-1:-1;;;;;;7315:21:12;;;;;;:16;:21;;;;;;;;7314:22;7143:193;7125:310;;;7394:29;7403:5;7410:3;7415:7;7394:8;:29::i;:::-;7377:46;;7125:310;-1:-1:-1;;;;;7452:30:12;;;;;;:25;:30;;;;;;;;7451:31;:69;;;;-1:-1:-1;;;;;;7487:33:12;;;;;;:28;:33;;;;;;;;7486:34;7451:69;7447:199;;;7580:15;;7562:14;7545;7555:3;7545:9;:14::i;:::-;:31;;;;:::i;:::-;:50;;7537:97;;;;-1:-1:-1;;;7537:97:12;;18931:2:18;7537:97:12;;;18913:21:18;18970:1;18950:18;;;18943:29;-1:-1:-1;;;18988:18:18;;;18981:33;19031:18;;7537:97:12;18729:326:18;7537:97:12;7658:43;7674:5;7681:3;7686:14;7658:15;:43::i;1363:98:15:-;1421:7;1448:5;1452:1;1448;:5;:::i;1469:98::-;1527:7;1554:5;1558:1;1554;:5;:::i;17881:721:12:-;18050:16;;;18064:1;18050:16;;;;;;;;17946:7;;17994:21;;17946:7;;18050:16;;;;;;;;;;;;-1:-1:-1;18050:16:12;18026:40;;18095:4;18077;18082:1;18077:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18077:23:12;;;:7;;;;;;;;;;:23;;;;18121:15;;:22;;;-1:-1:-1;;;18121:22:12;;;;:15;;;;;:20;;:22;;;;;18077:7;;18121:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18111:4;18116:1;18111:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18111:32:12;;;:7;;;;;;;;;:32;18186:15;;18154:63;;18171:4;;18186:15;18204:12;18154:8;:63::i;:::-;18228:15;;:197;;-1:-1:-1;;;18228:197:12;;-1:-1:-1;;;;;18228:15:12;;;;:66;;:197;;18309:12;;18228:15;;18352:4;;18379;;18399:15;;18228:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18438:19;18460:44;18486:17;18460:21;:25;;:44;;;;:::i;:::-;18522:43;;;20219:25:18;;;20275:2;20260:18;;20253:34;;;18438:66:12;;-1:-1:-1;18522:43:12;;20192:18:18;18522:43:12;;;;;;;18583:11;17881:721;-1:-1:-1;;;;17881:721:12:o;19262:419::-;19377:15;;19345:63;;19362:4;;-1:-1:-1;;;;;19377:15:12;19395:12;19345:8;:63::i;:::-;19419:15;;-1:-1:-1;;;;;19419:15:12;:31;19458:10;19492:4;19512:12;19419:15;;19571:7;424:6:11;;-1:-1:-1;;;;;424:6:11;;359:79;19571:7:12;19419:200;;;;;;-1:-1:-1;;;;;;19419:200:12;;;-1:-1:-1;;;;;20657:15:18;;;19419:200:12;;;20639:34:18;20689:18;;;20682:34;;;;20732:18;;;20725:34;;;;20775:18;;;20768:34;20839:15;;;20818:19;;;20811:44;19593:15:12;20871:19:18;;;20864:35;20573:19;;19419:200:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;19635:38:12;;;20219:25:18;;;20275:2;20260:18;;20253:34;;;19635:38:12;;-1:-1:-1;20192:18:18;19635:38:12;;;;;;;19262:419;;:::o;12129:3636::-;-1:-1:-1;;;;;12342:32:12;;12243:7;12342:32;;;:25;:32;;;;;;12243:7;;;;12342:32;;;:66;;-1:-1:-1;;;;;;12378:30:12;;;;;;:25;:30;;;;;;;;12342:66;12320:119;;;;-1:-1:-1;;;12320:119:12;;21423:2:18;12320:119:12;;;21405:21:18;21462:1;21442:18;;;21435:29;-1:-1:-1;;;21480:18:18;;;21473:33;21523:18;;12320:119:12;21221:326:18;12320:119:12;-1:-1:-1;;;;;12456:32:12;;;;;;:25;:32;;;;;;;;12452:3271;;;12544:11;;12505:19;;-1:-1:-1;;;12544:11:12;;;;12541:156;;;12605:10;;12590;;:26;;:14;:26::i;:::-;12576:40;;12541:156;;;-1:-1:-1;12671:10:12;;12541:156;12720:33;12749:3;12720:24;:7;12732:11;12720;:24::i;:::-;:28;;:33::i;:::-;12775:11;;12713:40;;-1:-1:-1;;;;12775:11:12;;;;12772:192;;;12807:20;12830:32;12858:3;12830:23;12842:10;;12830:7;:11;;:23;;;;:::i;:32::-;12908:22;;12807:55;;-1:-1:-1;12908:40:12;;12807:55;12908:26;:40::i;:::-;12883:22;:65;-1:-1:-1;12772:192:12;12998:17;:7;13010:4;12998:11;:17::i;:::-;12980:35;;13032:43;13048:5;13063:4;13070;13032:15;:43::i;:::-;13108:11;;-1:-1:-1;;;13108:11:12;;;;:46;;;;;13134:20;;13123:7;:31;;13108:46;13104:680;;;13179:10;;-1:-1:-1;;;13179:10:12;;;;13175:74;;13228:1;13214:11;:15;13175:74;13274:7;;:25;;-1:-1:-1;;;13274:25:12;;-1:-1:-1;;;;;3304:32:18;;;13274:25:12;;;3286:51:18;13274:7:12;;;;:20;;3259:18:18;;13274:25:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13269:299;;13342:7;;:29;;-1:-1:-1;;;13342:29:12;;-1:-1:-1;;;;;3304:32:18;;;13342:29:12;;;3286:51:18;13342:7:12;;;;:24;;3259:18:18;;13342:29:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13401:15:12;;:37;;-1:-1:-1;;;13401:37:12;;-1:-1:-1;;;;;3304:32:18;;;13401:37:12;;;3286:51:18;13401:15:12;;;;-1:-1:-1;13401:32:12;;-1:-1:-1;3259:18:18;;13401:37:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13396:151;;13506:15;;13467:56;;13493:3;;-1:-1:-1;;;;;13506:15:12;13467:25;:56::i;:::-;13588:15;;-1:-1:-1;;;;;13588:15:12;:36;13625:3;13630:35;13649:15;13630:14;13625:3;13630:9;:14::i;:35::-;13588:78;;-1:-1:-1;;;;;;13588:78:12;;;;;;;-1:-1:-1;;;;;10326:32:18;;;13588:78:12;;;10308:51:18;10375:18;;;10368:34;10281:18;;13588:78:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13707:15:12;;:43;;-1:-1:-1;;;13707:43:12;;-1:-1:-1;;;;;21738:32:18;;;13707:43:12;;;21720:51:18;13707:15:12;21787:18:18;;;21780:50;13707:15:12;;;;-1:-1:-1;13707:31:12;;-1:-1:-1;21693:18:18;;13707:43:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13104:680;13840:22;;13804:7;;;;;;;;;-1:-1:-1;;;;;13804:7:12;-1:-1:-1;;;;;13804:30:12;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:58;13800:169;;13883:10;:17;;-1:-1:-1;;;;13883:17:12;-1:-1:-1;;;13883:17:12;;;:10;13935:18;13921:11;:32;13800:169;13990:35;;;-1:-1:-1;;;;;22099:15:18;;22081:34;;14013:4:12;22146:2:18;22131:18;;22124:43;22183:18;;;22176:34;;;13990:35:12;;22031:2:18;22016:18;13990:35:12;;;;;;;12490:1547;12452:3271;;;14110:11;;14058:20;;-1:-1:-1;;;14110:11:12;;;;14107:688;;;14157:45;14190:11;;14157:28;14173:11;;14157;;:15;;:28;;;;:::i;:45::-;14226:11;;14142:60;;-1:-1:-1;14226:15:12;14223:490;;14289:11;;14266:20;;14289:18;;14305:1;14289:15;:18::i;:::-;14266:41;;14332:20;14355:51;14402:3;14355:42;14367:29;14383:12;14367:11;;:15;;:29;;;;:::i;:::-;14355:7;;:11;:42::i;:51::-;14456:22;;14332:74;;-1:-1:-1;14456:40:12;;14332:74;14456:26;:40::i;:::-;14431:22;:65;-1:-1:-1;14107:688:12;;-1:-1:-1;14107:688:12;14223:490;14547:20;14570:33;14599:3;14570:24;14582:11;;14570:7;:11;;:24;;;;:::i;:33::-;14653:22;;14547:56;;-1:-1:-1;14653:40:12;;14547:56;14653:26;:40::i;:::-;14628:22;:65;-1:-1:-1;14107:688:12;;;-1:-1:-1;14768:11:12;;14107:688;14829:2;14814:12;:17;14811:74;;;-1:-1:-1;14867:2:12;14811:74;14908:34;14938:3;14908:25;:7;14920:12;14908:11;:25::i;:34::-;14901:41;-1:-1:-1;14977:17:12;:7;14901:41;14977:11;:17::i;:::-;14959:35;;15011:43;15027:5;15042:4;15049;15011:15;:43::i;:::-;15074:11;;-1:-1:-1;;;15074:11:12;;;;15071:215;;;15108:7;;:31;;-1:-1:-1;;;15108:31:12;;-1:-1:-1;;;;;3304:32:18;;;15108:31:12;;;3286:51:18;15108:7:12;;;;:24;;3259:18:18;;15108:31:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15160:15:12;;:45;;-1:-1:-1;;;15160:45:12;;-1:-1:-1;;;;;10326:32:18;;;15160:45:12;;;10308:51:18;15160:15:12;10375:18:18;;;10368:34;15160:15:12;;;;-1:-1:-1;15160:26:12;;-1:-1:-1;10281:18:18;;15160:45:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15226:15:12;;:44;;-1:-1:-1;;;15226:44:12;;-1:-1:-1;;;;;21738:32:18;;;15226:44:12;;;21720:51:18;15226:15:12;21787:18:18;;;21780:50;15226:15:12;;;;-1:-1:-1;15226:31:12;;-1:-1:-1;21693:18:18;;15226:44:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15071:215;15302:20;15325:70;15372:22;;15325:24;15343:4;15325:9;:24::i;:70::-;15302:93;;15431:23;;15416:12;:38;:53;;;;-1:-1:-1;15459:10:12;;-1:-1:-1;;;15459:10:12;;;;15458:11;15416:53;15412:127;;;15490:33;15510:12;15490:19;:33::i;:::-;15559:10;;-1:-1:-1;;;15559:10:12;;;;15555:99;;;15590:48;15615:22;;15590:24;:48::i;:::-;15675:36;;;-1:-1:-1;;;;;22099:15:18;;22081:34;;15699:4:12;22146:2:18;22131:18;;22124:43;22183:18;;;22176:34;;;15675:36:12;;22031:2:18;22016:18;15675:36:12;;;;;;;14043:1680;;12452:3271;15742:15;12129:3636;-1:-1:-1;;;;;12129:3636:12:o;2999:708:5:-;-1:-1:-1;;;;;3130:18:5;;3122:68;;;;-1:-1:-1;;;3122:68:5;;22423:2:18;3122:68:5;;;22405:21:18;22462:2;22442:18;;;22435:30;22501:34;22481:18;;;22474:62;-1:-1:-1;;;22552:18:18;;;22545:35;22597:19;;3122:68:5;22221:401:18;3122:68:5;-1:-1:-1;;;;;3209:16:5;;3201:64;;;;-1:-1:-1;;;3201:64:5;;22829:2:18;3201:64:5;;;22811:21:18;22868:2;22848:18;;;22841:30;22907:34;22887:18;;;22880:62;-1:-1:-1;;;22958:18:18;;;22951:33;23001:19;;3201:64:5;22627:399:18;3201:64:5;3278:38;3299:4;3305:2;3309:6;3278:20;:38::i;:::-;-1:-1:-1;;;;;3351:15:5;;3329:19;3351:15;;;;;;;;;;;3399:21;;;;3377:109;;;;-1:-1:-1;;;3377:109:5;;23233:2:18;3377:109:5;;;23215:21:18;23272:2;23252:18;;;23245:30;23311:34;23291:18;;;23284:62;-1:-1:-1;;;23362:18:18;;;23355:36;23408:19;;3377:109:5;23031:402:18;3377:109:5;-1:-1:-1;;;;;3522:15:5;;;:9;:15;;;;;;;;;;;3540:20;;;3522:38;;3582:13;;;;;;;;:23;;3554:6;;3522:9;3582:23;;3554:6;;3582:23;:::i;:::-;;;;;;;;3638:2;-1:-1:-1;;;;;3623:26:5;3632:4;-1:-1:-1;;;;;3623:26:5;;3642:6;3623:26;;;;689:25:18;;677:2;662:18;;543:177;3623:26:5;;;;;;;;3662:37;3682:4;3688:2;3692:6;3662:19;:37::i;1575:98:15:-;1633:7;1660:5;1664:1;1660;:5;:::i;1681:98::-;1739:7;1766:5;1770:1;1766;:5;:::i;15970:363:12:-;16067:39;:27;354:19:1;;372:1;354:19;;;265:127;16067:39:12;16117:11;16131:37;:27;235:14:1;;143:114;16131:37:12;16179:16;;;;:11;:16;;;;;;;;:48;;-1:-1:-1;;;;;;16179:48:12;-1:-1:-1;;;;;16179:48:12;;;;;;16267:15;-1:-1:-1;16238:26:12;;;:44;16295:20;;;;;;:10;:20;;;;;:30;;;;;;;;;;;;;;;;;-1:-1:-1;15970:363:12:o;16341:1046::-;16411:26;16440:33;16469:3;16440:24;16457:6;;16440:12;:16;;:24;;;;:::i;:33::-;16411:62;-1:-1:-1;16486:21:12;16510:25;16411:62;16533:1;16510:22;:25::i;:::-;16486:49;-1:-1:-1;16546:21:12;16570:31;:12;16486:49;16570:16;:31::i;:::-;16546:55;;16614:16;16633:31;16650:13;16633:16;:31::i;:::-;16614:50;;16677:19;16699:29;16724:3;16699:20;16712:6;;16699:8;:12;;:20;;;;:::i;:29::-;16677:51;;16739:21;16763:29;16788:3;16763:20;16776:6;;16763:8;:12;;:20;;;;:::i;:29::-;16739:53;;16803:22;16828:30;16854:3;16828:21;16841:7;;16828:8;:12;;:21;;;;:::i;:30::-;16803:55;;16869:25;16897:33;16926:3;16897:24;16910:10;;16897:8;:12;;:24;;;;:::i;:33::-;16869:61;-1:-1:-1;16941:27:12;16971:143;16869:61;16971:106;17062:14;16971:106;17029:13;16971:106;:8;16998:11;16971:26;:39::i;:143::-;16941:173;-1:-1:-1;17141:38:12;:13;16941:173;17141:17;:38::i;:::-;17125:54;;17192:66;17209:13;17224:14;17240:17;17192:16;:66::i;:::-;17291:1;17275:13;:17;:36;;;;;17310:1;17296:11;:15;17275:36;17271:109;;;17328:40;17341:13;17356:11;17328:12;:40::i;:::-;16400:987;;;;;;;;;16341:1046;:::o;19689:835::-;19813:15;;19764:66;;19798:4;;-1:-1:-1;;;;;19813:15:12;19764:25;:66::i;:::-;19843:25;19871:30;19888:12;19871:16;:30::i;:::-;19939:22;;19843:58;;-1:-1:-1;19939:40:12;;19966:12;19939:26;:40::i;:::-;19914:22;:65;20019:15;;20011:83;;19993:12;;-1:-1:-1;;;;;20019:15:12;;20048:17;;19993:12;20011:83;19993:12;20011:83;20048:17;20019:15;20011:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19992:102;;;20111:7;20107:325;;;20140:36;;689:25:18;;;20140:36:12;;677:2:18;662:18;20140:36:12;;;;;;;20193:15;;;;;;;;;-1:-1:-1;;;;;20193:15:12;-1:-1:-1;;;;;20193:35:12;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20247:15;;;;;;;;;-1:-1:-1;;;;;20247:15:12;-1:-1:-1;;;;;20247:28:12;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20294:9;:7;:9::i;:::-;20107:325;;;20355:16;;:39;;20376:17;20355:20;:39::i;:::-;20336:16;:58;20411:9;:7;:9::i;:::-;20469:22;;:45;;20496:17;20469:26;:45::i;:::-;20444:22;:70;-1:-1:-1;;;19689:835:12:o;17395:478::-;17503:12;;17499:89;;17540:16;;17532:44;;-1:-1:-1;;;;;17540:16:12;;;;17532:44;;;;;17567:8;;17540:16;17532:44;17540:16;17532:44;17567:8;17540:16;17532:44;;;;;;;;;;;;;;;;;;;;;17499:89;17602:13;;17598:92;;17640:17;;17632:46;;-1:-1:-1;;;;;17640:17:12;;;;17632:46;;;;;17668:9;;17640:17;17632:46;17640:17;17632:46;17668:9;17640:17;17632:46;;;;;;;;;;;;;;;;;;;;;17598:92;17704:16;;17700:101;;17745:20;;17737:52;;-1:-1:-1;;;;;17745:20:12;;;;17737:52;;;;;17776:12;;17745:20;17737:52;17745:20;17737:52;17776:12;17745:20;17737:52;;;;;;;;;;;;;;;;;;;;;17700:101;17816:49;;;23640:25:18;;;23696:2;23681:18;;23674:34;;;23724:18;;;23717:34;;;17816:49:12;;23628:2:18;23613:18;17816:49:12;;;;;;;17395:478;;;:::o;15773:189::-;15811:10;:18;;-1:-1:-1;;;;15811:18:12;;;15849:7;15842:14;;-1:-1:-1;;;;;;15842:14:12;;;15879:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15869:7:12;:27;;-1:-1:-1;;;;;;15869:27:12;-1:-1:-1;;;;;15869:27:12;;;;;;;;;;15927;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15909:15:12;:45;;-1:-1:-1;;;;;;15909:45:12;-1:-1:-1;;;;;15909:45:12;;;;;;;;;;15773:189::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:131:18:-;-1:-1:-1;;;;;89:31:18;;79:42;;69:70;;135:1;132;125:12;150:388;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;-1:-1:-1;460:2:18;445:18;;432:32;473:33;432:32;473:33;:::i;:::-;525:7;515:17;;;150:388;;;;;:::o;725:597::-;837:4;866:2;895;884:9;877:21;927:6;921:13;970:6;965:2;954:9;950:18;943:34;995:1;1005:140;1019:6;1016:1;1013:13;1005:140;;;1114:14;;;1110:23;;1104:30;1080:17;;;1099:2;1076:26;1069:66;1034:10;;1005:140;;;1163:6;1160:1;1157:13;1154:91;;;1233:1;1228:2;1219:6;1208:9;1204:22;1200:31;1193:42;1154:91;-1:-1:-1;1306:2:18;1285:15;-1:-1:-1;;1281:29:18;1266:45;;;;1313:2;1262:54;;725:597;-1:-1:-1;;;725:597:18:o;1327:315::-;1395:6;1403;1456:2;1444:9;1435:7;1431:23;1427:32;1424:52;;;1472:1;1469;1462:12;1424:52;1511:9;1498:23;1530:31;1555:5;1530:31;:::i;:::-;1580:5;1632:2;1617:18;;;;1604:32;;-1:-1:-1;;;1327:315:18:o;1839:545::-;1932:6;1940;1948;2001:2;1989:9;1980:7;1976:23;1972:32;1969:52;;;2017:1;2014;2007:12;1969:52;2056:9;2043:23;2075:31;2100:5;2075:31;:::i;:::-;2125:5;-1:-1:-1;2182:2:18;2167:18;;2154:32;2195:33;2154:32;2195:33;:::i;:::-;2247:7;-1:-1:-1;2306:2:18;2291:18;;2278:32;2319:33;2278:32;2319:33;:::i;:::-;2371:7;2361:17;;;1839:545;;;;;:::o;2389:247::-;2448:6;2501:2;2489:9;2480:7;2476:23;2472:32;2469:52;;;2517:1;2514;2507:12;2469:52;2556:9;2543:23;2575:31;2600:5;2575:31;:::i;:::-;2625:5;2389:247;-1:-1:-1;;;2389:247:18:o;2641:456::-;2718:6;2726;2734;2787:2;2775:9;2766:7;2762:23;2758:32;2755:52;;;2803:1;2800;2793:12;2755:52;2842:9;2829:23;2861:31;2886:5;2861:31;:::i;:::-;2911:5;-1:-1:-1;2968:2:18;2953:18;;2940:32;2981:33;2940:32;2981:33;:::i;:::-;2641:456;;3033:7;;-1:-1:-1;;;3087:2:18;3072:18;;;;3059:32;;2641:456::o;3348:730::-;3479:6;3487;3495;3503;3511;3519;3527;3535;3543;3596:3;3584:9;3575:7;3571:23;3567:33;3564:53;;;3613:1;3610;3603:12;3564:53;-1:-1:-1;;3636:23:18;;;3706:2;3691:18;;3678:32;;-1:-1:-1;3757:2:18;3742:18;;3729:32;;3808:2;3793:18;;3780:32;;-1:-1:-1;3859:3:18;3844:19;;3831:33;;-1:-1:-1;3911:3:18;3896:19;;3883:33;;-1:-1:-1;3963:3:18;3948:19;;3935:33;;-1:-1:-1;4015:3:18;4000:19;;3987:33;;-1:-1:-1;4067:3:18;4052:19;4039:33;;-1:-1:-1;3348:730:18;-1:-1:-1;3348:730:18:o;4083:316::-;4160:6;4168;4176;4229:2;4217:9;4208:7;4204:23;4200:32;4197:52;;;4245:1;4242;4235:12;4197:52;-1:-1:-1;;4268:23:18;;;4338:2;4323:18;;4310:32;;-1:-1:-1;4389:2:18;4374:18;;;4361:32;;4083:316;-1:-1:-1;4083:316:18:o;4593:118::-;4679:5;4672:13;4665:21;4658:5;4655:32;4645:60;;4701:1;4698;4691:12;4716:241;4772:6;4825:2;4813:9;4804:7;4800:23;4796:32;4793:52;;;4841:1;4838;4831:12;4793:52;4880:9;4867:23;4899:28;4921:5;4899:28;:::i;5190:180::-;5249:6;5302:2;5290:9;5281:7;5277:23;5273:32;5270:52;;;5318:1;5315;5308:12;5270:52;-1:-1:-1;5341:23:18;;5190:180;-1:-1:-1;5190:180:18:o;6117:383::-;6194:6;6202;6210;6263:2;6251:9;6242:7;6238:23;6234:32;6231:52;;;6279:1;6276;6269:12;6231:52;6318:9;6305:23;6337:31;6362:5;6337:31;:::i;:::-;6387:5;6439:2;6424:18;;6411:32;;-1:-1:-1;6490:2:18;6475:18;;;6462:32;;6117:383;-1:-1:-1;;;6117:383:18:o;6505:816::-;6728:2;6780:21;;;6850:13;;6753:18;;;6872:22;;;6699:4;;6728:2;6913;;6931:18;;;;6972:15;;;6699:4;7015:280;7029:6;7026:1;7023:13;7015:280;;;7088:13;;7130:9;;-1:-1:-1;;;;;7126:35:18;7114:48;;7202:11;;7196:18;7182:12;;;7175:40;7235:12;;;;7270:15;;;;7158:1;7044:9;7015:280;;;-1:-1:-1;7312:3:18;;6505:816;-1:-1:-1;;;;;;;6505:816:18:o;7326:382::-;7391:6;7399;7452:2;7440:9;7431:7;7427:23;7423:32;7420:52;;;7468:1;7465;7458:12;7420:52;7507:9;7494:23;7526:31;7551:5;7526:31;:::i;:::-;7576:5;-1:-1:-1;7633:2:18;7618:18;;7605:32;7646:30;7605:32;7646:30;:::i;7713:615::-;7799:6;7807;7860:2;7848:9;7839:7;7835:23;7831:32;7828:52;;;7876:1;7873;7866:12;7828:52;7916:9;7903:23;7945:18;7986:2;7978:6;7975:14;7972:34;;;8002:1;7999;7992:12;7972:34;8040:6;8029:9;8025:22;8015:32;;8085:7;8078:4;8074:2;8070:13;8066:27;8056:55;;8107:1;8104;8097:12;8056:55;8147:2;8134:16;8173:2;8165:6;8162:14;8159:34;;;8189:1;8186;8179:12;8159:34;8242:7;8237:2;8227:6;8224:1;8220:14;8216:2;8212:23;8208:32;8205:45;8202:65;;;8263:1;8260;8253:12;8202:65;8294:2;8286:11;;;;;8316:6;;-1:-1:-1;7713:615:18;;-1:-1:-1;;;;7713:615:18:o;8333:184::-;8403:6;8456:2;8444:9;8435:7;8431:23;8427:32;8424:52;;;8472:1;8469;8462:12;8424:52;-1:-1:-1;8495:16:18;;8333:184;-1:-1:-1;8333:184:18:o;8522:380::-;8601:1;8597:12;;;;8644;;;8665:61;;8719:4;8711:6;8707:17;8697:27;;8665:61;8772:2;8764:6;8761:14;8741:18;8738:38;8735:161;;;8818:10;8813:3;8809:20;8806:1;8799:31;8853:4;8850:1;8843:15;8881:4;8878:1;8871:15;8735:161;;8522:380;;;:::o;8907:326::-;9109:2;9091:21;;;9148:1;9128:18;;;9121:29;-1:-1:-1;;;9181:2:18;9166:18;;9159:33;9224:2;9209:18;;8907:326::o;10700:356::-;10902:2;10884:21;;;10921:18;;;10914:30;10980:34;10975:2;10960:18;;10953:62;11047:2;11032:18;;10700:356::o;11061:127::-;11122:10;11117:3;11113:20;11110:1;11103:31;11153:4;11150:1;11143:15;11177:4;11174:1;11167:15;11193:422;11282:1;11325:5;11282:1;11339:270;11360:7;11350:8;11347:21;11339:270;;;11419:4;11415:1;11411:6;11407:17;11401:4;11398:27;11395:53;;;11428:18;;:::i;:::-;11478:7;11468:8;11464:22;11461:55;;;11498:16;;;;11461:55;11577:22;;;;11537:15;;;;11339:270;;;11343:3;11193:422;;;;;:::o;11620:806::-;11669:5;11699:8;11689:80;;-1:-1:-1;11740:1:18;11754:5;;11689:80;11788:4;11778:76;;-1:-1:-1;11825:1:18;11839:5;;11778:76;11870:4;11888:1;11883:59;;;;11956:1;11951:130;;;;11863:218;;11883:59;11913:1;11904:10;;11927:5;;;11951:130;11988:3;11978:8;11975:17;11972:43;;;11995:18;;:::i;:::-;-1:-1:-1;;12051:1:18;12037:16;;12066:5;;11863:218;;12165:2;12155:8;12152:16;12146:3;12140:4;12137:13;12133:36;12127:2;12117:8;12114:16;12109:2;12103:4;12100:12;12096:35;12093:77;12090:159;;;-1:-1:-1;12202:19:18;;;12234:5;;12090:159;12281:34;12306:8;12300:4;12281:34;:::i;:::-;12351:6;12347:1;12343:6;12339:19;12330:7;12327:32;12324:58;;;12362:18;;:::i;:::-;12400:20;;11620:806;-1:-1:-1;;;11620:806:18:o;12431:140::-;12489:5;12518:47;12559:4;12549:8;12545:19;12539:4;12518:47;:::i;12576:168::-;12616:7;12682:1;12678;12674:6;12670:14;12667:1;12664:21;12659:1;12652:9;12645:17;12641:45;12638:71;;;12689:18;;:::i;:::-;-1:-1:-1;12729:9:18;;12576:168::o;13290:128::-;13330:3;13361:1;13357:6;13354:1;13351:13;13348:39;;;13367:18;;:::i;:::-;-1:-1:-1;13403:9:18;;13290:128::o;13423:127::-;13484:10;13479:3;13475:20;13472:1;13465:31;13515:4;13512:1;13505:15;13539:4;13536:1;13529:15;13555:120;13595:1;13621;13611:35;;13626:18;;:::i;:::-;-1:-1:-1;13660:9:18;;13555:120::o;14291:245::-;14358:6;14411:2;14399:9;14390:7;14386:23;14382:32;14379:52;;;14427:1;14424;14417:12;14379:52;14459:9;14453:16;14478:28;14500:5;14478:28;:::i;15277:125::-;15317:4;15345:1;15342;15339:8;15336:34;;;15350:18;;:::i;:::-;-1:-1:-1;15387:9:18;;15277:125::o;15738:112::-;15770:1;15796;15786:35;;15801:18;;:::i;:::-;-1:-1:-1;15835:9:18;;15738:112::o;15855:127::-;15916:10;15911:3;15907:20;15904:1;15897:31;15947:4;15944:1;15937:15;15971:4;15968:1;15961:15;15987:127;16048:10;16043:3;16039:20;16036:1;16029:31;16079:4;16076:1;16069:15;16103:4;16100:1;16093:15;16119:135;16158:3;-1:-1:-1;;16179:17:18;;16176:43;;;16199:18;;:::i;:::-;-1:-1:-1;16246:1:18;16235:13;;16119:135::o;16591:251::-;16661:6;16714:2;16702:9;16693:7;16689:23;16685:32;16682:52;;;16730:1;16727;16720:12;16682:52;16762:9;16756:16;16781:31;16806:5;16781:31;:::i;19060:980::-;19322:4;19370:3;19359:9;19355:19;19401:6;19390:9;19383:25;19427:2;19465:6;19460:2;19449:9;19445:18;19438:34;19508:3;19503:2;19492:9;19488:18;19481:31;19532:6;19567;19561:13;19598:6;19590;19583:22;19636:3;19625:9;19621:19;19614:26;;19675:2;19667:6;19663:15;19649:29;;19696:1;19706:195;19720:6;19717:1;19714:13;19706:195;;;19785:13;;-1:-1:-1;;;;;19781:39:18;19769:52;;19876:15;;;;19841:12;;;;19817:1;19735:9;19706:195;;;-1:-1:-1;;;;;;;19957:32:18;;;;19952:2;19937:18;;19930:60;-1:-1:-1;;;20021:3:18;20006:19;19999:35;19918:3;19060:980;-1:-1:-1;;;19060:980:18:o;20910:306::-;20998:6;21006;21014;21067:2;21055:9;21046:7;21042:23;21038:32;21035:52;;;21083:1;21080;21073:12;21035:52;21112:9;21106:16;21096:26;;21162:2;21151:9;21147:18;21141:25;21131:35;;21206:2;21195:9;21191:18;21185:25;21175:35;;20910:306;;;;;:::o

Metadata Hash

ipfs://9a33836eb07face48f5d6eb109d049c03b65c1d172ebb7bfdca08854b6ab3cb3
Loading