ETH Price: $3,503.59 (+0.01%)
Gas: 2 Gwei

Token

Third Degree Burn (3DB)
 

Overview

Max Total Supply

333,333,333,333 3DB

Holders

93

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.857436349708542934 3DB

Value
$0.00
0xE5B0B92d08293E0B2CFB6743d76Fb13dC4B5Ae53
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Third_Degree_Burn

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-14
*/

// SPDX-License-Identifier: UNLICENSED


pragma solidity =0.8.15;

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

interface IDexFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDexRouter {
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

}

interface IDexPair {
    event Sync(uint112 reserve0, uint112 reserve1);
    function sync() external;
}

abstract contract Ownable {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() external onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

pragma solidity =0.8.15;
contract Third_Degree_Burn is IERC20, Ownable //clientchange
{
    mapping (address => uint) private _balances;
    mapping (address => mapping (address => uint)) private _allowances;
    mapping(address => bool) private excludedFromLimits;
    mapping(address => bool) public excludedFromFees;
    mapping(address=>bool) public isAMM;
    mapping (address => bool) public isBlacklisted;
    mapping(address => User) user;
    mapping(address =>bool) public floorHolder;

    struct User {
        uint256 sold;
        uint256 sellStamp;
        uint256 dailyLimit;
    }
    string private constant _name = 'Third Degree Burn';
    string private constant _symbol = '3DB';
    uint8 private constant _decimals=18;

      uint private constant InitialSupply=333333333333* 10**_decimals;
   uint public buyTax = 40; //10=1% 
    uint public sellTax = 50;
    uint public floorSellerTax = 99;
    uint public transferTax = 0;
    uint public burnTax=249; //burn+liquidity+project must = 1000
    uint public liquidityTax=1;
    uint public projectTax=750;
    uint public swapTreshold=2; //Dynamic Swap Threshold based on price impact. 1=0.1% max 10
    uint public overLiquifyTreshold=100;
    uint public LaunchTimestamp;
    uint public devShare=15; //devShare+buybackShare+marketingShare must = 100
    uint public buybackShare=65;
    uint public marketingShare=20;
    uint constant TAX_DENOMINATOR=1000;
    uint constant MAXTAXDENOMINATOR=10;

    uint256 public maxWalletBalance;
    uint256 public maxTransactionAmount;
    uint256 public percentForLPBurn = 50; // 25 = .25%
    uint256 public lpBurnFrequency = 1 seconds;
    uint256 public lastLpBurnTime;
    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;
    uint256 public dailySellPercent = 1000;
    uint256 public dailySellCooldown = 24 hours;


    bool private _isSwappingContractModifier;
    bool public manualSwap;
    bool public blacklistMode = true;
    bool public lpBurnEnabled = true;
    bool public floorMode = true;
    bool public floorBuyerRound = true;

    IDexRouter private  _DexRouter;

    address private _PairAddress;
    address public marketingWallet;
    address public devWallet;
    address public constant burnWallet = address(0xdead);
    address private constant DexRouter=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ; //

    event ManualNukeLP();
    event AutoNukeLP();
    event BlacklistStatusChange(bool status);
    event MaxWalletBalanceUpdated(uint256 percent);
    event OnSetTaxes(uint buy, uint sell, uint transfer_, uint burn, uint project,uint liquidity,uint FloorSellTax);
    event ExcludeAccount(address account, bool exclude);
    event OnEnableTrading();
    event OnReleaseLP();
    event ExcludeFromLimits(address account, bool exclude);
    event MarketingWalletChange(address newWallet);
    event DevWalletChange(address newWallet);
    event SharesUpdated(uint _devShare, uint _marketingShare, uint _buybackShare);
    event AMMadded(address AMM);
    event ManualSwapOn(bool manual);
    event ManualSwapPerformed();
    event MaxTransactionAmountUpdated(uint256 percent);
    event SwapThresholdChange(uint newSwapTresholdPermille);
    event BlacklistUpdated();
    event OverLiquifiedThresholdChange(uint newOverLiquifyTresholdPermille);


    modifier lockTheSwap {
        _isSwappingContractModifier = true;
        _;
        _isSwappingContractModifier = false;
    }

    constructor () {
        uint ownerBalance=InitialSupply;
        _balances[msg.sender] = ownerBalance;
        emit Transfer(address(0), msg.sender, ownerBalance);

        _DexRouter = IDexRouter(DexRouter);
        _PairAddress = IDexFactory(_DexRouter.factory()).createPair(address(this), _DexRouter.WETH());
        isAMM[_PairAddress]=true;
        
        marketingWallet=0x36385DAA46Aa351E6Cc2533bb76e9cFcC1F40132; //
        devWallet=0x36385DAA46Aa351E6Cc2533bb76e9cFcC1F40132; //

        excludedFromFees[msg.sender]=true;
        excludedFromFees[DexRouter]=true;
        excludedFromFees[address(this)]=true;
        excludedFromLimits[burnWallet] = true;
        excludedFromLimits[address(this)] = true;
    }
     function BlacklistStatus(bool _status) external onlyOwner {
        blacklistMode = _status;
        emit BlacklistStatusChange (_status);
    }
    function ManageBlacklist(address[] calldata addresses, bool status) external onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }
        emit BlacklistUpdated();
    }
    function ManageFloorHolders(address[] calldata addresses, bool status) external onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            floorHolder[addresses[i]] = status;
        }
    }
    function ChangeMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet=newWallet;
        emit MarketingWalletChange(newWallet);
    }
    function ChangeDevWallet(address newWallet) external onlyOwner{
        devWallet=newWallet;
        emit DevWalletChange(newWallet);
    }
    function SetFeeShares(uint _devShare, uint _marketingShare, uint _buybackShare, uint _charityShare) external onlyOwner{
        require(_devShare+_marketingShare+_buybackShare+_charityShare<=100);
        devShare=_devShare;
        marketingShare=_marketingShare;
        buybackShare=_buybackShare;
        emit SharesUpdated(_devShare, _marketingShare, _buybackShare);
    }
    function setMaxWalletBalancePercent(uint256 percent) external onlyOwner {
        require(percent >= 10, "min 1%");
        require(percent <= 1000, "max 100%");
        maxWalletBalance = InitialSupply * percent / 1000;
        emit MaxWalletBalanceUpdated(percent);
    }
    function setMaxTransactionAmount(uint256 percent) external onlyOwner {
        require(percent >= 25, "min 0.25%");
        require(percent <= 10000, "max 100%");
        maxTransactionAmount = InitialSupply * percent / 10000;
        emit MaxTransactionAmountUpdated(percent);
    }
    function ToggleFloorMode(bool onOff) external onlyOwner {
        floorMode=onOff;
    }
    function ToggleFloorBuyerPeriod(bool onOff) external onlyOwner {
        floorBuyerRound=onOff;
    }
    function setDailySellPercent(uint256 percentInHundreds) external onlyOwner {
        require(percentInHundreds >= 100, "Cannot set below 1%.");
        dailySellPercent = percentInHundreds;
    }
    function setDailySellCooldown(uint256 timeInSeconds) external onlyOwner {
        require(timeInSeconds <= 24 hours, "Cannot set above 24 hours.");
        dailySellCooldown = timeInSeconds;
    }
    function getUserInfo(address account) external view returns(uint256, uint256, uint256) {
        User memory _user = user[account];
        return(_user.sold, _user.dailyLimit, _user.sellStamp);
    }
    function getSecondsToNextSellReset(address account) external view returns(uint256) {
        uint256 time = user[account].sellStamp + dailySellCooldown;
        if (time > block.timestamp) {
            return(time - block.timestamp);
        } else {
            return 0;
        }
    }
    function _transfer(address sender, address recipient, uint amount) private{
        require(sender != address(0), "Transfer from zero");
        require(recipient != address(0), "Transfer to zero");
        if(blacklistMode){
            require(!isBlacklisted[sender] && !isBlacklisted[recipient],"Blacklisted");    
        }
        if(excludedFromFees[sender] || excludedFromFees[recipient])
            _feelessTransfer(sender, recipient, amount);
        else { 
            require(LaunchTimestamp>0,"trading not yet enabled");
            _taxedTransfer(sender,recipient,amount);                  
        }
    }
    
    function _taxedTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        bool excludedAccount = excludedFromLimits[sender] || excludedFromLimits[recipient];
        if (isAMM[sender] &&
            !excludedAccount) {
            require(
                amount <= maxTransactionAmount,
                "Transfer amount exceeds the maxTxAmount."
            );
            uint256 contractBalanceRecepient = balanceOf(recipient);
            require(
                contractBalanceRecepient + amount <= maxWalletBalance,
                "Exceeds maximum wallet token amount."
            );
        } else if (
            isAMM[recipient] &&
            !excludedAccount
        ) {
            require(amount <= maxTransactionAmount, "Transfer amount exceeds the maxTxAmount.");
        }

        bool isBuy=isAMM[sender];
        bool isSell=isAMM[recipient];
        uint tax;
        if(isSell){  
            uint SellTaxDuration=1 seconds;      
            if(block.timestamp<LaunchTimestamp+SellTaxDuration){
                tax=_getStartTax(SellTaxDuration,200);
                }
            if(floorMode && floorHolder[sender]){
                        tax=floorSellerTax;
                        if(user[sender].sellStamp + dailySellCooldown > block.timestamp) {
                            uint256 addition = user[sender].sold + amount;
                            require(addition <= user[sender].dailyLimit, "Sell amount exceeds daily limit.");
                            user[sender].sold = addition;
                        } else {
                            user[sender].dailyLimit = (balanceOf(sender) * dailySellPercent) / 10000;
                            require(amount <= user[sender].dailyLimit, "Sell amount exceeds daily limit.");
                            user[sender].sold = amount;
                            user[sender].sellStamp = block.timestamp;
                        }
            }else tax=sellTax;}
        else if(isBuy){
            if(floorBuyerRound){
                require(floorHolder[recipient]);
            }
            uint BuyTaxDuration=1 seconds;
            if(block.timestamp<LaunchTimestamp+BuyTaxDuration){
                tax=_getStartTax(BuyTaxDuration,999);
            }else tax=buyTax;
        }else{ 
            require(!floorMode || !floorHolder[recipient] && !floorHolder[sender], "Cannot send tokens to a floor holder"); 
            tax=transferTax;
        }

        if((sender!=_PairAddress)&&(!manualSwap)&&(!_isSwappingContractModifier))
            _swapContractToken(false);

        if(!_isSwappingContractModifier && isAMM[recipient] && lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency){
            autoBurnLPTokens();
        }

        uint tokensToBeSentToBurn=_calculateFee(amount, tax, burnTax);
        uint contractToken=_calculateFee(amount, tax, projectTax+liquidityTax);
        uint taxedAmount=amount-(tokensToBeSentToBurn + contractToken);

        _balances[sender]-=amount;
        _balances[address(this)] += contractToken;
        _balances[burnWallet]+=tokensToBeSentToBurn;
        _balances[recipient]+=taxedAmount;
        emit Transfer(sender,burnWallet,tokensToBeSentToBurn);
        emit Transfer(sender,recipient,taxedAmount);
    }
    function _getStartTax(uint duration, uint maxTax) private view returns (uint){
        uint timeSinceLaunch=block.timestamp-LaunchTimestamp;
        return maxTax-((maxTax-50)*timeSinceLaunch/duration);
    }
    function _calculateFee(uint amount, uint tax, uint taxPercent) private pure returns (uint) {
        return (amount*tax*taxPercent) / (TAX_DENOMINATOR*TAX_DENOMINATOR);
    }
    function _feelessTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        _balances[sender]-=amount;
        _balances[recipient]+=amount;      
        emit Transfer(sender,recipient,amount);
    }
    function setSwapTreshold(uint newSwapTresholdPermille) external onlyOwner{
        require(newSwapTresholdPermille<=10);//MaxTreshold= 1%
        swapTreshold=newSwapTresholdPermille;
        emit SwapThresholdChange(newSwapTresholdPermille);
    }
    function SetOverLiquifiedTreshold(uint newOverLiquifyTresholdPermille) external onlyOwner{
        require(newOverLiquifyTresholdPermille<=1000);
        overLiquifyTreshold=newOverLiquifyTresholdPermille;
        emit OverLiquifiedThresholdChange(newOverLiquifyTresholdPermille);
    }
    function SetTaxes(uint buy, uint sell, uint transfer_, uint burn, uint project,uint liquidity, uint FloorSellTax) external onlyOwner{
        uint maxTax=TAX_DENOMINATOR/MAXTAXDENOMINATOR;
        require(buy<=maxTax&&sell<=maxTax&&transfer_<=maxTax&&FloorSellTax<=maxTax,"Tax exceeds maxTax");
        require(burn+project+liquidity==TAX_DENOMINATOR,"Taxes don't add up to denominator");
        buyTax=buy;
        sellTax=sell;
        floorSellerTax=FloorSellTax;
        transferTax=transfer_;
        projectTax=project;
        liquidityTax=liquidity;
        burnTax=burn;
        emit OnSetTaxes(buy, sell, transfer_, burn, project, liquidity, FloorSellTax);
    }
    function isOverLiquified() public view returns(bool){
        return _balances[_PairAddress]>getCirculatingSupply()*overLiquifyTreshold/1000;
    }
    function _swapContractToken(bool ignoreLimits) private lockTheSwap{
        uint contractBalance=_balances[address(this)];
        uint totalTax=liquidityTax+projectTax;
        uint tokenToSwap=_balances[_PairAddress]*swapTreshold/1000;
        if(totalTax==0)return;
        if(ignoreLimits)
            tokenToSwap=_balances[address(this)];
        else if(contractBalance<tokenToSwap)
            return;

        uint tokenForLiquidity=
        isOverLiquified()?0
        :(tokenToSwap*liquidityTax)/totalTax;

        uint tokenForProject= tokenToSwap-tokenForLiquidity;

        uint LiqHalf=tokenForLiquidity/2;
        uint swapToken=LiqHalf+tokenForProject;
        uint initialETHBalance=address(this).balance;
        _swapTokenForETH(swapToken);
        uint newETH=(address(this).balance - initialETHBalance);

        if(tokenForLiquidity>0){
            uint liqETH = (newETH*LiqHalf)/swapToken;
            _addLiquidity(LiqHalf, liqETH);
        }
        uint marketbalance=address(this).balance * marketingShare/100;
        uint devbalance=address(this).balance * devShare/100;
        uint buybackbalance=address(this).balance * buybackShare/100;
        if(marketbalance>0){
        (bool marketing,)=marketingWallet.call{value:marketbalance}("");
        marketing=true;
        }
        if(devbalance>0){
        (bool dev,)=devWallet.call{value:devbalance}("");
        dev=true;
        }
        if(buybackbalance>0){
            _buybackBurn(buybackbalance);
        }
    }
    function _buybackBurn(uint amount) private {
        address[] memory path = new address[](2);
        path[0] = _DexRouter.WETH();
        path[1] = address(this);
        
        try _DexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            burnWallet,
            block.timestamp
        ){}
        catch{}
    }
    function _swapTokenForETH(uint amount) private {
        _approve(address(this), address(_DexRouter), amount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _DexRouter.WETH();

        try _DexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        ){}
        catch{}
    }
    function _addLiquidity(uint tokenamount, uint ethamount) private {
        _approve(address(this), address(_DexRouter), tokenamount);
        _DexRouter.addLiquidityETH{value: ethamount}(
            address(this),
            tokenamount,
            0,
            0,
            address(this),
            block.timestamp
        );
    }
    function getBurnedTokens() external view returns(uint){
        return _balances[address(0xdead)];
    }
    function getCirculatingSupply() public view returns(uint){
        return InitialSupply-_balances[address(0xdead)];
    }
    function SetAMM(address AMM, bool Add) external onlyOwner{
        require(AMM!=_PairAddress,"can't change pancake");
        isAMM[AMM]=Add;
        emit AMMadded(AMM);
    }
    function SwitchManualSwap(bool manual) external onlyOwner{
        manualSwap=manual;
        emit ManualSwapOn(manual);
    }
    function SwapContractToken() external onlyOwner{
        _swapContractToken(true);
        emit ManualSwapPerformed();
    }
    function ExcludeAccountFromFees(address account, bool exclude) external onlyOwner{
        require(account!=address(this),"can't Include the contract");
        excludedFromFees[account]=exclude;
        emit ExcludeAccount(account,exclude);
    }
    function setExcludedAccountFromLimits(address account, bool exclude) external onlyOwner{
        excludedFromLimits[account]=exclude;
        emit ExcludeFromLimits(account,exclude);
    }
    function isExcludedFromLimits(address account) external view returns(bool) {
        return excludedFromLimits[account];
    }
    function EnableTrading() external onlyOwner{
        require(LaunchTimestamp==0,"AlreadyLaunched");
        LaunchTimestamp=block.timestamp;
        maxWalletBalance = InitialSupply * 10 / 1000;
        maxTransactionAmount = InitialSupply * 100 / 10000;
        emit OnEnableTrading();
    }
    function ReleaseLP() external onlyOwner {
        IERC20 liquidityToken = IERC20(_PairAddress);
        uint amount = liquidityToken.balanceOf(address(this));
        liquidityToken.transfer(msg.sender, amount);
        emit OnReleaseLP();
    }
    function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner {
        require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes");
        require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%");
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }
    
    function autoBurnLPTokens() internal returns (bool){
        lastLpBurnTime = block.timestamp;
        uint256 liquidityPairBalance = this.balanceOf(_PairAddress);
        uint256 amountToBurn = liquidityPairBalance * percentForLPBurn/10000;
        if (amountToBurn > 0){
            _balances[burnWallet]+=amountToBurn;
            emit Transfer(_PairAddress,burnWallet,amountToBurn);
        }
        IDexPair pair = IDexPair(_PairAddress);
        pair.sync();
        emit AutoNukeLP();
        return true;
    }

    function manualBurnLPTokens(uint256 percent) external onlyOwner returns (bool){
        require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish");
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;
        uint256 liquidityPairBalance = this.balanceOf(_PairAddress);
        uint256 amountToBurn = liquidityPairBalance * percent/10000;
        if (amountToBurn > 0){
            _balances[burnWallet]+=amountToBurn;
            emit Transfer(_PairAddress,burnWallet,amountToBurn);
        }
        IDexPair pair = IDexPair(_PairAddress);
        pair.sync();
        emit ManualNukeLP();
        return true;
    }

    function getOwner() external view override returns (address) {return owner();}
    function name() external pure override returns (string memory) {return _name;}
    function symbol() external pure override returns (string memory) {return _symbol;}
    function decimals() external pure override returns (uint8) {return _decimals;}
    function totalSupply() external pure override returns (uint) {return InitialSupply;}
    function balanceOf(address account) public view override returns (uint) {return _balances[account];}
    function allowance(address _owner, address spender) external view override returns (uint) {return _allowances[_owner][spender];}
    function transfer(address recipient, uint amount) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }
    function approve(address spender, uint amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    function _approve(address owner, address spender, uint amount) private {
        require(owner != address(0), "Approve from zero");
        require(spender != address(0), "Approve to zero");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function transferFrom(address sender, address recipient, uint amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        uint currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Transfer > allowance");
        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }
    function increaseAllowance(address spender, uint addedValue) external returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }
    function decreaseAllowance(address spender, uint subtractedValue) external returns (bool) {
        uint currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "<0 allowance");
        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        return true;
    }
    receive() external payable {}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"AMM","type":"address"}],"name":"AMMadded","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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"BlacklistStatusChange","type":"event"},{"anonymous":false,"inputs":[],"name":"BlacklistUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newWallet","type":"address"}],"name":"DevWalletChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeFromLimits","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"manual","type":"bool"}],"name":"ManualSwapOn","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualSwapPerformed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newWallet","type":"address"}],"name":"MarketingWalletChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"MaxTransactionAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"MaxWalletBalanceUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"OnEnableTrading","type":"event"},{"anonymous":false,"inputs":[],"name":"OnReleaseLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transfer_","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"project","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"FloorSellTax","type":"uint256"}],"name":"OnSetTaxes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newOverLiquifyTresholdPermille","type":"uint256"}],"name":"OverLiquifiedThresholdChange","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":"uint256","name":"_devShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_marketingShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_buybackShare","type":"uint256"}],"name":"SharesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newSwapTresholdPermille","type":"uint256"}],"name":"SwapThresholdChange","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":"bool","name":"_status","type":"bool"}],"name":"BlacklistStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"ChangeDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"ChangeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LaunchTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"ManageBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"ManageFloorHolders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ReleaseLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"AMM","type":"address"},{"internalType":"bool","name":"Add","type":"bool"}],"name":"SetAMM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devShare","type":"uint256"},{"internalType":"uint256","name":"_marketingShare","type":"uint256"},{"internalType":"uint256","name":"_buybackShare","type":"uint256"},{"internalType":"uint256","name":"_charityShare","type":"uint256"}],"name":"SetFeeShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newOverLiquifyTresholdPermille","type":"uint256"}],"name":"SetOverLiquifiedTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"transfer_","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"project","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"FloorSellTax","type":"uint256"}],"name":"SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SwapContractToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"SwitchManualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onOff","type":"bool"}],"name":"ToggleFloorBuyerPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onOff","type":"bool"}],"name":"ToggleFloorMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dailySellCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dailySellPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"devShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"floorBuyerRound","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"floorHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"floorMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"floorSellerTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBurnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getSecondsToNextSellReset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getUserInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"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":"isAMM","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLPTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"overLiquifyTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timeInSeconds","type":"uint256"}],"name":"setDailySellCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentInHundreds","type":"uint256"}],"name":"setDailySellPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludedAccountFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxWalletBalancePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapTresholdPermille","type":"uint256"}],"name":"setSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260286009556032600a8190556063600b556000600c5560f9600d556001600e8190556102ee600f9081556002601055606460115560135560416014908155601555601891909155601955610708601b556103e8601d5562015180601e55601f805465ffffffff00001916650101010100001790553480156200008557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000620000d76012600a620004e7565b620000e890644d9c370555620004ff565b336000818152600160205260408082208490555192935090917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620001319085815260200190565b60405180910390a3601f8054797a250d5630b4cf539739df2c5dacb4c659f2488d000000000000600160301b600160d01b031990911617908190556040805163c45a015560e01b8152905166010000000000009092046001600160a01b03169163c45a0155916004808201926020929091908290030181865afa158015620001bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e3919062000521565b6001600160a01b031663c9c6539630601f60069054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000246573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026c919062000521565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e0919062000521565b602080546001600160a01b03929092166001600160a01b0319928316811782556000908152600582526040808220805460ff1990811660019081179092556021805487167336385daa46aa351e6cc2533bb76e9cfcc1f4013290811790915560228054909716179095553383526004845281832080548616821790557f1fc5acd025f7cc5cf2691b667dba808b5a149bf27192c208fc66f1f0ec4222d78054861682179055308352818320805486168217905560039093527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c805485168417905590208054909216179055506200054c565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004295781600019048211156200040d576200040d620003d2565b808516156200041b57918102915b93841c9390800290620003ed565b509250929050565b6000826200044257506001620004e1565b816200045157506000620004e1565b81600181146200046a5760028114620004755762000495565b6001915050620004e1565b60ff841115620004895762000489620003d2565b50506001821b620004e1565b5060208310610133831016604e8410600b8410161715620004ba575081810a620004e1565b620004c68383620003e8565b8060001904821115620004dd57620004dd620003d2565b0290505b92915050565b6000620004f860ff84168362000431565b9392505050565b60008160001904831182151516156200051c576200051c620003d2565b500290565b6000602082840312156200053457600080fd5b81516001600160a01b0381168114620004f857600080fd5b61405d806200055c6000396000f3fe60806040526004361061046c5760003560e01c806375f0a8741161024a578063bbde77c111610139578063dbe66ca0116100b6578063e9d9e4fc1161007a578063e9d9e4fc14610db9578063f2fde38b14610dd9578063f7942b6314610df9578063fe575a8714610e19578063ff90061214610e4957600080fd5b8063dbe66ca014610cf7578063dd62ed3e14610d27578063df10b50814610d6d578063e0d2f9eb14610d83578063e52fb9ec14610da357600080fd5b8063c8c8ebe4116100fd578063c8c8ebe414610c65578063cc1776d314610c7b578063cfd1940e14610c91578063d24cd3ec14610cb1578063d46b6a3014610cc757600080fd5b8063bbde77c114610bcc578063bc43d84914610be2578063be617fa014610c02578063bfd8a75614610c18578063c3f4f54f14610c3857600080fd5b806395d89b41116101c7578063a9059cbb1161018b578063a9059cbb14610b30578063addc6c4814610b50578063aed04fae14610b80578063b40d09e214610b96578063b8668fbe14610bac57600080fd5b806395d89b4114610a9857806398d7e72114610ac45780639ec22c0e14610ae4578063a457c2d714610afa578063a4c82a0014610b1a57600080fd5b8063893d20e81161020e578063893d20e814610a1a578063896648c114610a3857806389ce89f914610a585780638da5cb5b14610a1a5780638ea5220f14610a7857600080fd5b806375f0a8741461098e5780637e47be79146109ae5780638124f7ac146109c4578063817d4bff146109da578063868b0141146109fa57600080fd5b80632c92293c1161036657806354bdc753116102e35780636c933f74116102a75780636c933f74146108ee57806370a082311461090e5780637115d00e14610944578063715018a614610959578063730c18881461096e57600080fd5b806354bdc753146107e857806358b6b904146108085780635cce86cd146108285780635cd0a874146108615780636386c1c71461087757600080fd5b806341aec3571161032a57806341aec3571461076957806346e35f031461077e5780634f7041a5146107935780635149f984146107a957806351bc3c85146107c957600080fd5b80632c92293c146106d65780632e82f1a0146106f6578063313ce5671461071757806333d6867814610733578063395093511461074957600080fd5b8063199ffc72116103f45780631f3d14f2116103b85780631f3d14f21461064957806323b872dd1461066b57806326254a861461068b5780632b112e49146106ab5780632c3e486c146106c057600080fd5b8063199ffc72146105c85780631a80029d146105de5780631d4eaead146105fe5780631d97b7cd146106145780631e293c101461062957600080fd5b80630c305c2c1161043b5780630c305c2c146105425780630eff4c6414610565578063114cfaf61461057b57806318160ddd1461059d578063184c16c5146105b257600080fd5b8063062287491461047857806306fdde03146104ab57806309218ee7146104ee578063095ea7b31461051257600080fd5b3661047357005b600080fd5b34801561048457600080fd5b5061048e61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156104b757600080fd5b506040805180820190915260118152702a3434b932102232b3b932b290213ab93760791b60208201525b6040516104a291906139b8565b3480156104fa57600080fd5b5061050460155481565b6040519081526020016104a2565b34801561051e57600080fd5b5061053261052d366004613a25565b610e69565b60405190151581526020016104a2565b34801561054e57600080fd5b50601f546105329065010000000000900460ff1681565b34801561057157600080fd5b5061050460115481565b34801561058757600080fd5b5061059b610596366004613a51565b610e80565b005b3480156105a957600080fd5b50610504610f0f565b3480156105be57600080fd5b50610504601b5481565b3480156105d457600080fd5b5061050460185481565b3480156105ea57600080fd5b5061059b6105f9366004613a78565b610f31565b34801561060a57600080fd5b50610504600d5481565b34801561062057600080fd5b5061059b610fc0565b34801561063557600080fd5b5061059b610644366004613a51565b6110d8565b34801561065557600080fd5b50601f5461053290640100000000900460ff1681565b34801561067757600080fd5b50610532610686366004613a95565b6111f1565b34801561069757600080fd5b506105046106a6366004613ad6565b611288565b3480156106b757600080fd5b506105046112d9565b3480156106cc57600080fd5b5061050460195481565b3480156106e257600080fd5b5061059b6106f1366004613a51565b61131b565b34801561070257600080fd5b50601f54610532906301000000900460ff1681565b34801561072357600080fd5b50604051601281526020016104a2565b34801561073f57600080fd5b50610504601e5481565b34801561075557600080fd5b50610532610764366004613a25565b611431565b34801561077557600080fd5b5061059b611468565b34801561078a57600080fd5b506105326114d6565b34801561079f57600080fd5b5061050460095481565b3480156107b557600080fd5b5061059b6107c4366004613af3565b61151c565b3480156107d557600080fd5b50601f5461053290610100900460ff1681565b3480156107f457600080fd5b5061059b610803366004613a78565b611607565b34801561081457600080fd5b5061059b610823366004613b2c565b611660565b34801561083457600080fd5b50610532610843366004613ad6565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561086d57600080fd5b50610504601d5481565b34801561088357600080fd5b506108d3610892366004613ad6565b6001600160a01b0316600090815260076020908152604091829020825160608101845281548082526001830154938201849052600290920154930183905292565b604080519384526020840192909252908201526060016104a2565b3480156108fa57600080fd5b5061059b610909366004613a51565b61171c565b34801561091a57600080fd5b50610504610929366004613ad6565b6001600160a01b031660009081526001602052604090205490565b34801561095057600080fd5b5061059b6117ad565b34801561096557600080fd5b5061059b6118f9565b34801561097a57600080fd5b5061059b610989366004613b5e565b61197c565b34801561099a57600080fd5b5060215461048e906001600160a01b031681565b3480156109ba57600080fd5b50610504600b5481565b3480156109d057600080fd5b50610504600c5481565b3480156109e657600080fd5b5061059b6109f5366004613ad6565b611abf565b348015610a0657600080fd5b5061059b610a15366004613a78565b611b46565b348015610a2657600080fd5b506000546001600160a01b031661048e565b348015610a4457600080fd5b50601f546105329062010000900460ff1681565b348015610a6457600080fd5b5061059b610a73366004613b97565b611bc8565b348015610a8457600080fd5b5060225461048e906001600160a01b031681565b348015610aa457600080fd5b5060408051808201909152600381526219a22160e91b60208201526104e1565b348015610ad057600080fd5b50610532610adf366004613a51565b611c9f565b348015610af057600080fd5b50610504601c5481565b348015610b0657600080fd5b50610532610b15366004613a25565b611f34565b348015610b2657600080fd5b50610504601a5481565b348015610b3c57600080fd5b50610532610b4b366004613a25565b611fb0565b348015610b5c57600080fd5b50610532610b6b366004613ad6565b60086020526000908152604090205460ff1681565b348015610b8c57600080fd5b5061050460135481565b348015610ba257600080fd5b5061050460125481565b348015610bb857600080fd5b5061059b610bc7366004613c12565b611fbd565b348015610bd857600080fd5b5061050460165481565b348015610bee57600080fd5b5061059b610bfd366004613a51565b612169565b348015610c0e57600080fd5b50610504600e5481565b348015610c2457600080fd5b5061059b610c33366004613a78565b6121e6565b348015610c4457600080fd5b5061dead6000526001602052600080516020613fe883398151915254610504565b348015610c7157600080fd5b5061050460175481565b348015610c8757600080fd5b50610504600a5481565b348015610c9d57600080fd5b5061059b610cac366004613a51565b612241565b348015610cbd57600080fd5b50610504600f5481565b348015610cd357600080fd5b50610532610ce2366004613ad6565b60056020526000908152604090205460ff1681565b348015610d0357600080fd5b50610532610d12366004613ad6565b60046020526000908152604090205460ff1681565b348015610d3357600080fd5b50610504610d42366004613c5e565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610d7957600080fd5b5061050460145481565b348015610d8f57600080fd5b5061059b610d9e366004613af3565b6122bd565b348015610daf57600080fd5b5061050460105481565b348015610dc557600080fd5b5061059b610dd4366004613b97565b6123aa565b348015610de557600080fd5b5061059b610df4366004613ad6565b612458565b348015610e0557600080fd5b5061059b610e14366004613af3565b612551565b348015610e2557600080fd5b50610532610e34366004613ad6565b60066020526000908152604090205460ff1681565b348015610e5557600080fd5b5061059b610e64366004613ad6565b6125e6565b6000610e7633848461266d565b5060015b92915050565b33610e936000546001600160a01b031690565b6001600160a01b031614610ec25760405162461bcd60e51b8152600401610eb990613c8c565b60405180910390fd5b6064811015610f0a5760405162461bcd60e51b815260206004820152601460248201527321b0b73737ba1039b2ba103132b637bb9018929760611b6044820152606401610eb9565b601d55565b6000610f1d6012600a613dbb565b610f2c90644d9c370555613dca565b905090565b33610f446000546001600160a01b031690565b6001600160a01b031614610f6a5760405162461bcd60e51b8152600401610eb990613c8c565b601f8054821515620100000262ff0000199091161790556040517fecfaacf5e291e532c372363b39be86acbee05e57acb4ff67acceb0c7110a7bc090610fb590831515815260200190565b60405180910390a150565b33610fd36000546001600160a01b031690565b6001600160a01b031614610ff95760405162461bcd60e51b8152600401610eb990613c8c565b6012541561103b5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b6044820152606401610eb9565b4260129081556103e89061105090600a613dbb565b61105f90644d9c370555613dca565b61106a90600a613dca565b6110749190613de9565b6016556127106110866012600a613dbb565b61109590644d9c370555613dca565b6110a0906064613dca565b6110aa9190613de9565b6017556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b336110eb6000546001600160a01b031690565b6001600160a01b0316146111115760405162461bcd60e51b8152600401610eb990613c8c565b601981101561114e5760405162461bcd60e51b81526020600482015260096024820152686d696e20302e32352560b81b6044820152606401610eb9565b61271081111561118b5760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610eb9565b6127108161119b6012600a613dbb565b6111aa90644d9c370555613dca565b6111b49190613dca565b6111be9190613de9565b6017556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac90602001610fb5565b60006111fe848484612760565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156112695760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401610eb9565b61127d85336112788685613e0b565b61266d565b506001949350505050565b601e546001600160a01b038216600090815260076020526040812060010154909182916112b59190613e22565b9050428111156112d0576112c94282613e0b565b9392505050565b50600092915050565b61dead60009081526001602052600080516020613fe8833981519152546113026012600a613dbb565b61131190644d9c370555613dca565b610f2c9190613e0b565b3361132e6000546001600160a01b031690565b6001600160a01b0316146113545760405162461bcd60e51b8152600401610eb990613c8c565b600a81101561138e5760405162461bcd60e51b81526020600482015260066024820152656d696e20312560d01b6044820152606401610eb9565b6103e88111156113cb5760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610eb9565b6103e8816113db6012600a613dbb565b6113ea90644d9c370555613dca565b6113f49190613dca565b6113fe9190613de9565b6016556040518181527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a9990602001610fb5565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610e76918590611278908690613e22565b3361147b6000546001600160a01b031690565b6001600160a01b0316146114a15760405162461bcd60e51b8152600401610eb990613c8c565b6114ab6001612932565b6040517f50d9f00a1465121b958cf0aef21a53ed0bbe36c5a415abb27350d22b247a258f90600090a1565b60006103e86011546114e66112d9565b6114f09190613dca565b6114fa9190613de9565b602080546001600160a01b031660009081526001909152604090205411919050565b3361152f6000546001600160a01b031690565b6001600160a01b0316146115555760405162461bcd60e51b8152600401610eb990613c8c565b6020546001600160a01b03908116908316036115aa5760405162461bcd60e51b815260206004820152601460248201527363616e2774206368616e67652070616e63616b6560601b6044820152606401610eb9565b6001600160a01b038216600081815260056020908152604091829020805460ff191685151517905590519182527fa5d0a2d9a2487cd749dbfa34962704a9f4ed5ff3fd9c6586c86d954070b552f091015b60405180910390a15050565b3361161a6000546001600160a01b031690565b6001600160a01b0316146116405760405162461bcd60e51b8152600401610eb990613c8c565b601f80549115156401000000000264ff0000000019909216919091179055565b336116736000546001600160a01b031690565b6001600160a01b0316146116995760405162461bcd60e51b8152600401610eb990613c8c565b606481836116a78688613e22565b6116b19190613e22565b6116bb9190613e22565b11156116c657600080fd5b60138490556015839055601482905560408051858152602081018590529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc9060600160405180910390a150505050565b3361172f6000546001600160a01b031690565b6001600160a01b0316146117555760405162461bcd60e51b8152600401610eb990613c8c565b620151808111156117a85760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f74207365742061626f766520323420686f7572732e0000000000006044820152606401610eb9565b601e55565b336117c06000546001600160a01b031690565b6001600160a01b0316146117e65760405162461bcd60e51b8152600401610eb990613c8c565b6020546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa158015611833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118579190613e3a565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156118a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118cb9190613e53565b506040517f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67590600090a15050565b3361190c6000546001600160a01b031690565b6001600160a01b0316146119325760405162461bcd60e51b8152600401610eb990613c8c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3361198f6000546001600160a01b031690565b6001600160a01b0316146119b55760405162461bcd60e51b8152600401610eb990613c8c565b610258831015611a235760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152608401610eb9565b6103e88211158015611a33575060015b611a985760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152608401610eb9565b601992909255601855601f805491151563010000000263ff00000019909216919091179055565b33611ad26000546001600160a01b031690565b6001600160a01b031614611af85760405162461bcd60e51b8152600401610eb990613c8c565b602180546001600160a01b0319166001600160a01b0383169081179091556040519081527f9e42de18c651175b949c09ca698a4cf63aa023f4038a9ed83bd882c7d6f8fb6490602001610fb5565b33611b596000546001600160a01b031690565b6001600160a01b031614611b7f5760405162461bcd60e51b8152600401610eb990613c8c565b601f80548215156101000261ff00199091161790556040517faffc63374f6f6c07a9f4b158efd5668a3684e1711b1c8e9ed9b848e11507082190610fb590831515815260200190565b33611bdb6000546001600160a01b031690565b6001600160a01b031614611c015760405162461bcd60e51b8152600401610eb990613c8c565b60005b82811015611c70578160066000868685818110611c2357611c23613e70565b9050602002016020810190611c389190613ad6565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611c6981613e86565b9050611c04565b506040517f890e6981f892b367aea9f0b31589753714df5ee88d6dde2c0ddaffce7b9915d990600090a1505050565b600033611cb46000546001600160a01b031690565b6001600160a01b031614611cda5760405162461bcd60e51b8152600401610eb990613c8c565b601b54601c54611cea9190613e22565b4211611d385760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610eb9565b6103e8821115611d9d5760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610eb9565b42601c556020546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a0823190602401602060405180830381865afa158015611dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e109190613e3a565b90506000612710611e218584613dca565b611e2b9190613de9565b90508015611e9e5761dead60009081526001602052600080516020613fe88339815191528054839290611e5f908490613e22565b909155505060205460405161dead916001600160a01b03169060008051602061400883398151915290611e959085815260200190565b60405180910390a35b6020546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b158015611ee857600080fd5b505af1158015611efc573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015611f975760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610eb9565b611fa633856112788685613e0b565b5060019392505050565b6000610e76338484612760565b33611fd06000546001600160a01b031690565b6001600160a01b031614611ff65760405162461bcd60e51b8152600401610eb990613c8c565b6000612005600a6103e8613de9565b90508088111580156120175750808711155b80156120235750808611155b801561202f5750808211155b6120705760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b6044820152606401610eb9565b6103e88361207e8688613e22565b6120889190613e22565b146120df5760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b6064820152608401610eb9565b6009889055600a879055600b829055600c869055600f849055600e839055600d8590556040805189815260208101899052908101879052606081018690526080810185905260a0810184905260c081018390527f6cdd0b254c12e6e079483ac4d60596517e9d8df83e5b35a3f23ad869581c44229060e00160405180910390a15050505050505050565b3361217c6000546001600160a01b031690565b6001600160a01b0316146121a25760405162461bcd60e51b8152600401610eb990613c8c565b6103e88111156121b157600080fd5b60118190556040518181527fa072eee57b8e01913ba01eab29d8a81117cf780e6c8984a3494477ce9cee846d90602001610fb5565b336121f96000546001600160a01b031690565b6001600160a01b03161461221f5760405162461bcd60e51b8152600401610eb990613c8c565b601f8054911515650100000000000265ff000000000019909216919091179055565b336122546000546001600160a01b031690565b6001600160a01b03161461227a5760405162461bcd60e51b8152600401610eb990613c8c565b600a81111561228857600080fd5b60108190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc90602001610fb5565b336122d06000546001600160a01b031690565b6001600160a01b0316146122f65760405162461bcd60e51b8152600401610eb990613c8c565b306001600160a01b0383160361234e5760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e74726163740000000000006044820152606401610eb9565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed491016115fb565b336123bd6000546001600160a01b031690565b6001600160a01b0316146123e35760405162461bcd60e51b8152600401610eb990613c8c565b60005b8281101561245257816008600086868581811061240557612405613e70565b905060200201602081019061241a9190613ad6565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561244b81613e86565b90506123e6565b50505050565b3361246b6000546001600160a01b031690565b6001600160a01b0316146124915760405162461bcd60e51b8152600401610eb990613c8c565b6001600160a01b0381166124f65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610eb9565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b336125646000546001600160a01b031690565b6001600160a01b03161461258a5760405162461bcd60e51b8152600401610eb990613c8c565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9291016115fb565b336125f96000546001600160a01b031690565b6001600160a01b03161461261f5760405162461bcd60e51b8152600401610eb990613c8c565b602280546001600160a01b0319166001600160a01b0383169081179091556040519081527f1a806adf87d2b694e80e69bda66ee145c65fb0ef3615fec509da7adc260316af90602001610fb5565b6001600160a01b0383166126b75760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610eb9565b6001600160a01b0382166126ff5760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610eb9565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166127ab5760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610eb9565b6001600160a01b0382166127f45760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610eb9565b601f5462010000900460ff1615612881576001600160a01b03831660009081526006602052604090205460ff1615801561284757506001600160a01b03821660009081526006602052604090205460ff16155b6128815760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610eb9565b6001600160a01b03831660009081526004602052604090205460ff16806128c057506001600160a01b03821660009081526004602052604090205460ff165b156128d5576128d0838383612bba565b505050565b6000601254116129275760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610eb9565b6128d0838383612cbb565b601f805460ff191660019081179091553060009081526020919091526040812054600f54600e549192916129669190613e22565b601054602080546001600160a01b0316600090815260019091526040812054929350916103e89161299691613dca565b6129a09190613de9565b9050816000036129b257505050612bad565b83156129ce5750306000908152600160205260409020546129de565b808310156129de57505050612bad565b60006129e86114d6565b612a0a5782600e54836129fb9190613dca565b612a059190613de9565b612a0d565b60005b90506000612a1b8284613e0b565b90506000612a2a600284613de9565b90506000612a388383613e22565b905047612a4482613416565b6000612a508247613e0b565b90508515612a7d57600083612a658684613dca565b612a6f9190613de9565b9050612a7b858261358f565b505b6000606460155447612a8f9190613dca565b612a999190613de9565b90506000606460135447612aad9190613dca565b612ab79190613de9565b90506000606460145447612acb9190613dca565b612ad59190613de9565b90508215612b34576021546040516000916001600160a01b03169085908381818185875af1925050503d8060008114612b2a576040519150601f19603f3d011682016040523d82523d6000602084013e612b2f565b606091505b505050505b8115612b91576022546040516000916001600160a01b03169084908381818185875af1925050503d8060008114612b87576040519150601f19603f3d011682016040523d82523d6000602084013e612b8c565b606091505b505050505b8015612ba057612ba08161364d565b5050505050505050505050505b50601f805460ff19169055565b6001600160a01b03831660009081526001602052604090205481811015612c1e5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610eb9565b6001600160a01b03841660009081526001602052604081208054849290612c46908490613e0b565b90915550506001600160a01b03831660009081526001602052604081208054849290612c73908490613e22565b92505081905550826001600160a01b0316846001600160a01b031660008051602061400883398151915284604051612cad91815260200190565b60405180910390a350505050565b6001600160a01b03831660009081526001602052604090205481811015612d1f5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610eb9565b6001600160a01b03841660009081526003602052604081205460ff1680612d5e57506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b03861660009081526005602052604090205490915060ff168015612d87575080155b15612e3457601754831115612dae5760405162461bcd60e51b8152600401610eb990613e9f565b6001600160a01b038416600090815260016020526040902054601654612dd48583613e22565b1115612e2e5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610eb9565b50612e81565b6001600160a01b03841660009081526005602052604090205460ff168015612e5a575080155b15612e8157601754831115612e815760405162461bcd60e51b8152600401610eb990613e9f565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff92831692169081156130cf57601254600190612ec3908290613e22565b421015612ed857612ed58160c86137a9565b91505b601f54640100000000900460ff168015612f0a57506001600160a01b03891660009081526008602052604090205460ff165b156130c357600b54601e546001600160a01b038b166000908152600760205260409020600101549193504291612f409190613e22565b1115612ff6576001600160a01b038916600090815260076020526040812054612f6a908990613e22565b6001600160a01b038b16600090815260076020526040902060020154909150811115612fd85760405162461bcd60e51b815260206004820181905260248201527f53656c6c20616d6f756e742065786365656473206461696c79206c696d69742e6044820152606401610eb9565b6001600160a01b038a166000908152600760205260409020556130c9565b612710601d5461301b8b6001600160a01b031660009081526001602052604090205490565b6130259190613dca565b61302f9190613de9565b6001600160a01b038a16600090815260076020526040902060020181905587111561309c5760405162461bcd60e51b815260206004820181905260248201527f53656c6c20616d6f756e742065786365656473206461696c79206c696d69742e6044820152606401610eb9565b6001600160a01b0389166000908152600760205260409020878155426001909101556130c9565b600a5491505b506131f7565b821561314357601f5465010000000000900460ff161561310e576001600160a01b03871660009081526008602052604090205460ff1661310e57600080fd5b60125460019061311f908290613e22565b42101561313957613132816103e76137a9565b91506130c9565b50506009546131f7565b601f54640100000000900460ff16158061319a57506001600160a01b03871660009081526008602052604090205460ff1615801561319a57506001600160a01b03881660009081526008602052604090205460ff16155b6131f25760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f742073656e6420746f6b656e7320746f206120666c6f6f7220686f604482015263363232b960e11b6064820152608401610eb9565b50600c545b6020546001600160a01b0389811691161480159061321d5750601f54610100900460ff16155b801561322c5750601f5460ff16155b1561323b5761323b6000612932565b601f5460ff1615801561326657506001600160a01b03871660009081526005602052604090205460ff165b801561327b5750601f546301000000900460ff165b80156132965750601954601a546132929190613e22565b4210155b156132a5576132a36137ef565b505b60006132b48783600d5461398b565b905060006132d28884600e54600f546132cd9190613e22565b61398b565b905060006132e08284613e22565b6132ea908a613e0b565b6001600160a01b038c16600090815260016020526040812080549293508b92909190613317908490613e0b565b9091555050306000908152600160205260408120805484929061333b908490613e22565b909155505061dead60009081526001602052600080516020613fe8833981519152805485929061336c908490613e22565b90915550506001600160a01b038a1660009081526001602052604081208054839290613399908490613e22565b909155505060405183815261dead906001600160a01b038d16906000805160206140088339815191529060200160405180910390a3896001600160a01b03168b6001600160a01b03166000805160206140088339815191528360405161340191815260200190565b60405180910390a35050505050505050505050565b601f54613435903090600160301b90046001600160a01b03168361266d565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061346a5761346a613e70565b60200260200101906001600160a01b031690816001600160a01b031681525050601f60069054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135019190613ee7565b8160018151811061351457613514613e70565b6001600160a01b039283166020918202929092010152601f5460405163791ac94760e01b8152600160301b9091049091169063791ac94790613563908590600090869030904290600401613f48565b600060405180830381600087803b15801561357d57600080fd5b505af19250505080156128d057505050565b601f546135ae903090600160301b90046001600160a01b03168461266d565b601f5460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a4820152600160301b9091046001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015613621573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906136469190613f84565b5050505050565b604080516002808252606082018352600092602083019080368337019050509050601f60069054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136e59190613ee7565b816000815181106136f8576136f8613e70565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061372c5761372c613e70565b6001600160a01b039283166020918202929092010152601f5460405163b6f9de9560e01b8152600160301b9091049091169063b6f9de9590849061377d90600090869061dead904290600401613fb2565b6000604051808303818588803b15801561379657600080fd5b505af1935050505080156128d057505050565b600080601254426137ba9190613e0b565b905083816137c9603286613e0b565b6137d39190613dca565b6137dd9190613de9565b6137e79084613e0b565b949350505050565b42601a556020546040516370a0823160e01b81526001600160a01b039091166004820152600090819030906370a0823190602401602060405180830381865afa158015613840573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138649190613e3a565b90506000612710601854836138799190613dca565b6138839190613de9565b905080156138f65761dead60009081526001602052600080516020613fe883398151915280548392906138b7908490613e22565b909155505060205460405161dead916001600160a01b031690600080516020614008833981519152906138ed9085815260200190565b60405180910390a35b6020546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b15801561394057600080fd5b505af1158015613954573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b60006139996103e880613dca565b826139a48587613dca565b6139ae9190613dca565b6137e79190613de9565b600060208083528351808285015260005b818110156139e5578581018301518582016040015282016139c9565b818111156139f7576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114613a2257600080fd5b50565b60008060408385031215613a3857600080fd5b8235613a4381613a0d565b946020939093013593505050565b600060208284031215613a6357600080fd5b5035919050565b8015158114613a2257600080fd5b600060208284031215613a8a57600080fd5b81356112c981613a6a565b600080600060608486031215613aaa57600080fd5b8335613ab581613a0d565b92506020840135613ac581613a0d565b929592945050506040919091013590565b600060208284031215613ae857600080fd5b81356112c981613a0d565b60008060408385031215613b0657600080fd5b8235613b1181613a0d565b91506020830135613b2181613a6a565b809150509250929050565b60008060008060808587031215613b4257600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215613b7357600080fd5b83359250602084013591506040840135613b8c81613a6a565b809150509250925092565b600080600060408486031215613bac57600080fd5b833567ffffffffffffffff80821115613bc457600080fd5b818601915086601f830112613bd857600080fd5b813581811115613be757600080fd5b8760208260051b8501011115613bfc57600080fd5b60209283019550935050840135613b8c81613a6a565b600080600080600080600060e0888a031215613c2d57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b60008060408385031215613c7157600080fd5b8235613c7c81613a0d565b91506020830135613b2181613a0d565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613d12578160001904821115613cf857613cf8613cc1565b80851615613d0557918102915b93841c9390800290613cdc565b509250929050565b600082613d2957506001610e7a565b81613d3657506000610e7a565b8160018114613d4c5760028114613d5657613d72565b6001915050610e7a565b60ff841115613d6757613d67613cc1565b50506001821b610e7a565b5060208310610133831016604e8410600b8410161715613d95575081810a610e7a565b613d9f8383613cd7565b8060001904821115613db357613db3613cc1565b029392505050565b60006112c960ff841683613d1a565b6000816000190483118215151615613de457613de4613cc1565b500290565b600082613e0657634e487b7160e01b600052601260045260246000fd5b500490565b600082821015613e1d57613e1d613cc1565b500390565b60008219821115613e3557613e35613cc1565b500190565b600060208284031215613e4c57600080fd5b5051919050565b600060208284031215613e6557600080fd5b81516112c981613a6a565b634e487b7160e01b600052603260045260246000fd5b600060018201613e9857613e98613cc1565b5060010190565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b600060208284031215613ef957600080fd5b81516112c981613a0d565b600081518084526020808501945080840160005b83811015613f3d5781516001600160a01b031687529582019590820190600101613f18565b509495945050505050565b85815284602082015260a060408201526000613f6760a0830186613f04565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215613f9957600080fd5b8351925060208401519150604084015190509250925092565b848152608060208201526000613fcb6080830186613f04565b6001600160a01b0394909416604083015250606001529291505056feb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164dddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204eb8c6a4040b8fcea8c94c300e77a8f0523e09abd0e6815841174340b7c2cde964736f6c634300080f0033

Deployed Bytecode

0x60806040526004361061046c5760003560e01c806375f0a8741161024a578063bbde77c111610139578063dbe66ca0116100b6578063e9d9e4fc1161007a578063e9d9e4fc14610db9578063f2fde38b14610dd9578063f7942b6314610df9578063fe575a8714610e19578063ff90061214610e4957600080fd5b8063dbe66ca014610cf7578063dd62ed3e14610d27578063df10b50814610d6d578063e0d2f9eb14610d83578063e52fb9ec14610da357600080fd5b8063c8c8ebe4116100fd578063c8c8ebe414610c65578063cc1776d314610c7b578063cfd1940e14610c91578063d24cd3ec14610cb1578063d46b6a3014610cc757600080fd5b8063bbde77c114610bcc578063bc43d84914610be2578063be617fa014610c02578063bfd8a75614610c18578063c3f4f54f14610c3857600080fd5b806395d89b41116101c7578063a9059cbb1161018b578063a9059cbb14610b30578063addc6c4814610b50578063aed04fae14610b80578063b40d09e214610b96578063b8668fbe14610bac57600080fd5b806395d89b4114610a9857806398d7e72114610ac45780639ec22c0e14610ae4578063a457c2d714610afa578063a4c82a0014610b1a57600080fd5b8063893d20e81161020e578063893d20e814610a1a578063896648c114610a3857806389ce89f914610a585780638da5cb5b14610a1a5780638ea5220f14610a7857600080fd5b806375f0a8741461098e5780637e47be79146109ae5780638124f7ac146109c4578063817d4bff146109da578063868b0141146109fa57600080fd5b80632c92293c1161036657806354bdc753116102e35780636c933f74116102a75780636c933f74146108ee57806370a082311461090e5780637115d00e14610944578063715018a614610959578063730c18881461096e57600080fd5b806354bdc753146107e857806358b6b904146108085780635cce86cd146108285780635cd0a874146108615780636386c1c71461087757600080fd5b806341aec3571161032a57806341aec3571461076957806346e35f031461077e5780634f7041a5146107935780635149f984146107a957806351bc3c85146107c957600080fd5b80632c92293c146106d65780632e82f1a0146106f6578063313ce5671461071757806333d6867814610733578063395093511461074957600080fd5b8063199ffc72116103f45780631f3d14f2116103b85780631f3d14f21461064957806323b872dd1461066b57806326254a861461068b5780632b112e49146106ab5780632c3e486c146106c057600080fd5b8063199ffc72146105c85780631a80029d146105de5780631d4eaead146105fe5780631d97b7cd146106145780631e293c101461062957600080fd5b80630c305c2c1161043b5780630c305c2c146105425780630eff4c6414610565578063114cfaf61461057b57806318160ddd1461059d578063184c16c5146105b257600080fd5b8063062287491461047857806306fdde03146104ab57806309218ee7146104ee578063095ea7b31461051257600080fd5b3661047357005b600080fd5b34801561048457600080fd5b5061048e61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156104b757600080fd5b506040805180820190915260118152702a3434b932102232b3b932b290213ab93760791b60208201525b6040516104a291906139b8565b3480156104fa57600080fd5b5061050460155481565b6040519081526020016104a2565b34801561051e57600080fd5b5061053261052d366004613a25565b610e69565b60405190151581526020016104a2565b34801561054e57600080fd5b50601f546105329065010000000000900460ff1681565b34801561057157600080fd5b5061050460115481565b34801561058757600080fd5b5061059b610596366004613a51565b610e80565b005b3480156105a957600080fd5b50610504610f0f565b3480156105be57600080fd5b50610504601b5481565b3480156105d457600080fd5b5061050460185481565b3480156105ea57600080fd5b5061059b6105f9366004613a78565b610f31565b34801561060a57600080fd5b50610504600d5481565b34801561062057600080fd5b5061059b610fc0565b34801561063557600080fd5b5061059b610644366004613a51565b6110d8565b34801561065557600080fd5b50601f5461053290640100000000900460ff1681565b34801561067757600080fd5b50610532610686366004613a95565b6111f1565b34801561069757600080fd5b506105046106a6366004613ad6565b611288565b3480156106b757600080fd5b506105046112d9565b3480156106cc57600080fd5b5061050460195481565b3480156106e257600080fd5b5061059b6106f1366004613a51565b61131b565b34801561070257600080fd5b50601f54610532906301000000900460ff1681565b34801561072357600080fd5b50604051601281526020016104a2565b34801561073f57600080fd5b50610504601e5481565b34801561075557600080fd5b50610532610764366004613a25565b611431565b34801561077557600080fd5b5061059b611468565b34801561078a57600080fd5b506105326114d6565b34801561079f57600080fd5b5061050460095481565b3480156107b557600080fd5b5061059b6107c4366004613af3565b61151c565b3480156107d557600080fd5b50601f5461053290610100900460ff1681565b3480156107f457600080fd5b5061059b610803366004613a78565b611607565b34801561081457600080fd5b5061059b610823366004613b2c565b611660565b34801561083457600080fd5b50610532610843366004613ad6565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561086d57600080fd5b50610504601d5481565b34801561088357600080fd5b506108d3610892366004613ad6565b6001600160a01b0316600090815260076020908152604091829020825160608101845281548082526001830154938201849052600290920154930183905292565b604080519384526020840192909252908201526060016104a2565b3480156108fa57600080fd5b5061059b610909366004613a51565b61171c565b34801561091a57600080fd5b50610504610929366004613ad6565b6001600160a01b031660009081526001602052604090205490565b34801561095057600080fd5b5061059b6117ad565b34801561096557600080fd5b5061059b6118f9565b34801561097a57600080fd5b5061059b610989366004613b5e565b61197c565b34801561099a57600080fd5b5060215461048e906001600160a01b031681565b3480156109ba57600080fd5b50610504600b5481565b3480156109d057600080fd5b50610504600c5481565b3480156109e657600080fd5b5061059b6109f5366004613ad6565b611abf565b348015610a0657600080fd5b5061059b610a15366004613a78565b611b46565b348015610a2657600080fd5b506000546001600160a01b031661048e565b348015610a4457600080fd5b50601f546105329062010000900460ff1681565b348015610a6457600080fd5b5061059b610a73366004613b97565b611bc8565b348015610a8457600080fd5b5060225461048e906001600160a01b031681565b348015610aa457600080fd5b5060408051808201909152600381526219a22160e91b60208201526104e1565b348015610ad057600080fd5b50610532610adf366004613a51565b611c9f565b348015610af057600080fd5b50610504601c5481565b348015610b0657600080fd5b50610532610b15366004613a25565b611f34565b348015610b2657600080fd5b50610504601a5481565b348015610b3c57600080fd5b50610532610b4b366004613a25565b611fb0565b348015610b5c57600080fd5b50610532610b6b366004613ad6565b60086020526000908152604090205460ff1681565b348015610b8c57600080fd5b5061050460135481565b348015610ba257600080fd5b5061050460125481565b348015610bb857600080fd5b5061059b610bc7366004613c12565b611fbd565b348015610bd857600080fd5b5061050460165481565b348015610bee57600080fd5b5061059b610bfd366004613a51565b612169565b348015610c0e57600080fd5b50610504600e5481565b348015610c2457600080fd5b5061059b610c33366004613a78565b6121e6565b348015610c4457600080fd5b5061dead6000526001602052600080516020613fe883398151915254610504565b348015610c7157600080fd5b5061050460175481565b348015610c8757600080fd5b50610504600a5481565b348015610c9d57600080fd5b5061059b610cac366004613a51565b612241565b348015610cbd57600080fd5b50610504600f5481565b348015610cd357600080fd5b50610532610ce2366004613ad6565b60056020526000908152604090205460ff1681565b348015610d0357600080fd5b50610532610d12366004613ad6565b60046020526000908152604090205460ff1681565b348015610d3357600080fd5b50610504610d42366004613c5e565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610d7957600080fd5b5061050460145481565b348015610d8f57600080fd5b5061059b610d9e366004613af3565b6122bd565b348015610daf57600080fd5b5061050460105481565b348015610dc557600080fd5b5061059b610dd4366004613b97565b6123aa565b348015610de557600080fd5b5061059b610df4366004613ad6565b612458565b348015610e0557600080fd5b5061059b610e14366004613af3565b612551565b348015610e2557600080fd5b50610532610e34366004613ad6565b60066020526000908152604090205460ff1681565b348015610e5557600080fd5b5061059b610e64366004613ad6565b6125e6565b6000610e7633848461266d565b5060015b92915050565b33610e936000546001600160a01b031690565b6001600160a01b031614610ec25760405162461bcd60e51b8152600401610eb990613c8c565b60405180910390fd5b6064811015610f0a5760405162461bcd60e51b815260206004820152601460248201527321b0b73737ba1039b2ba103132b637bb9018929760611b6044820152606401610eb9565b601d55565b6000610f1d6012600a613dbb565b610f2c90644d9c370555613dca565b905090565b33610f446000546001600160a01b031690565b6001600160a01b031614610f6a5760405162461bcd60e51b8152600401610eb990613c8c565b601f8054821515620100000262ff0000199091161790556040517fecfaacf5e291e532c372363b39be86acbee05e57acb4ff67acceb0c7110a7bc090610fb590831515815260200190565b60405180910390a150565b33610fd36000546001600160a01b031690565b6001600160a01b031614610ff95760405162461bcd60e51b8152600401610eb990613c8c565b6012541561103b5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b6044820152606401610eb9565b4260129081556103e89061105090600a613dbb565b61105f90644d9c370555613dca565b61106a90600a613dca565b6110749190613de9565b6016556127106110866012600a613dbb565b61109590644d9c370555613dca565b6110a0906064613dca565b6110aa9190613de9565b6017556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b336110eb6000546001600160a01b031690565b6001600160a01b0316146111115760405162461bcd60e51b8152600401610eb990613c8c565b601981101561114e5760405162461bcd60e51b81526020600482015260096024820152686d696e20302e32352560b81b6044820152606401610eb9565b61271081111561118b5760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610eb9565b6127108161119b6012600a613dbb565b6111aa90644d9c370555613dca565b6111b49190613dca565b6111be9190613de9565b6017556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac90602001610fb5565b60006111fe848484612760565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156112695760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401610eb9565b61127d85336112788685613e0b565b61266d565b506001949350505050565b601e546001600160a01b038216600090815260076020526040812060010154909182916112b59190613e22565b9050428111156112d0576112c94282613e0b565b9392505050565b50600092915050565b61dead60009081526001602052600080516020613fe8833981519152546113026012600a613dbb565b61131190644d9c370555613dca565b610f2c9190613e0b565b3361132e6000546001600160a01b031690565b6001600160a01b0316146113545760405162461bcd60e51b8152600401610eb990613c8c565b600a81101561138e5760405162461bcd60e51b81526020600482015260066024820152656d696e20312560d01b6044820152606401610eb9565b6103e88111156113cb5760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610eb9565b6103e8816113db6012600a613dbb565b6113ea90644d9c370555613dca565b6113f49190613dca565b6113fe9190613de9565b6016556040518181527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a9990602001610fb5565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610e76918590611278908690613e22565b3361147b6000546001600160a01b031690565b6001600160a01b0316146114a15760405162461bcd60e51b8152600401610eb990613c8c565b6114ab6001612932565b6040517f50d9f00a1465121b958cf0aef21a53ed0bbe36c5a415abb27350d22b247a258f90600090a1565b60006103e86011546114e66112d9565b6114f09190613dca565b6114fa9190613de9565b602080546001600160a01b031660009081526001909152604090205411919050565b3361152f6000546001600160a01b031690565b6001600160a01b0316146115555760405162461bcd60e51b8152600401610eb990613c8c565b6020546001600160a01b03908116908316036115aa5760405162461bcd60e51b815260206004820152601460248201527363616e2774206368616e67652070616e63616b6560601b6044820152606401610eb9565b6001600160a01b038216600081815260056020908152604091829020805460ff191685151517905590519182527fa5d0a2d9a2487cd749dbfa34962704a9f4ed5ff3fd9c6586c86d954070b552f091015b60405180910390a15050565b3361161a6000546001600160a01b031690565b6001600160a01b0316146116405760405162461bcd60e51b8152600401610eb990613c8c565b601f80549115156401000000000264ff0000000019909216919091179055565b336116736000546001600160a01b031690565b6001600160a01b0316146116995760405162461bcd60e51b8152600401610eb990613c8c565b606481836116a78688613e22565b6116b19190613e22565b6116bb9190613e22565b11156116c657600080fd5b60138490556015839055601482905560408051858152602081018590529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc9060600160405180910390a150505050565b3361172f6000546001600160a01b031690565b6001600160a01b0316146117555760405162461bcd60e51b8152600401610eb990613c8c565b620151808111156117a85760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f74207365742061626f766520323420686f7572732e0000000000006044820152606401610eb9565b601e55565b336117c06000546001600160a01b031690565b6001600160a01b0316146117e65760405162461bcd60e51b8152600401610eb990613c8c565b6020546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa158015611833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118579190613e3a565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156118a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118cb9190613e53565b506040517f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67590600090a15050565b3361190c6000546001600160a01b031690565b6001600160a01b0316146119325760405162461bcd60e51b8152600401610eb990613c8c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3361198f6000546001600160a01b031690565b6001600160a01b0316146119b55760405162461bcd60e51b8152600401610eb990613c8c565b610258831015611a235760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152608401610eb9565b6103e88211158015611a33575060015b611a985760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152608401610eb9565b601992909255601855601f805491151563010000000263ff00000019909216919091179055565b33611ad26000546001600160a01b031690565b6001600160a01b031614611af85760405162461bcd60e51b8152600401610eb990613c8c565b602180546001600160a01b0319166001600160a01b0383169081179091556040519081527f9e42de18c651175b949c09ca698a4cf63aa023f4038a9ed83bd882c7d6f8fb6490602001610fb5565b33611b596000546001600160a01b031690565b6001600160a01b031614611b7f5760405162461bcd60e51b8152600401610eb990613c8c565b601f80548215156101000261ff00199091161790556040517faffc63374f6f6c07a9f4b158efd5668a3684e1711b1c8e9ed9b848e11507082190610fb590831515815260200190565b33611bdb6000546001600160a01b031690565b6001600160a01b031614611c015760405162461bcd60e51b8152600401610eb990613c8c565b60005b82811015611c70578160066000868685818110611c2357611c23613e70565b9050602002016020810190611c389190613ad6565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611c6981613e86565b9050611c04565b506040517f890e6981f892b367aea9f0b31589753714df5ee88d6dde2c0ddaffce7b9915d990600090a1505050565b600033611cb46000546001600160a01b031690565b6001600160a01b031614611cda5760405162461bcd60e51b8152600401610eb990613c8c565b601b54601c54611cea9190613e22565b4211611d385760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610eb9565b6103e8821115611d9d5760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610eb9565b42601c556020546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a0823190602401602060405180830381865afa158015611dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e109190613e3a565b90506000612710611e218584613dca565b611e2b9190613de9565b90508015611e9e5761dead60009081526001602052600080516020613fe88339815191528054839290611e5f908490613e22565b909155505060205460405161dead916001600160a01b03169060008051602061400883398151915290611e959085815260200190565b60405180910390a35b6020546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b158015611ee857600080fd5b505af1158015611efc573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015611f975760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610eb9565b611fa633856112788685613e0b565b5060019392505050565b6000610e76338484612760565b33611fd06000546001600160a01b031690565b6001600160a01b031614611ff65760405162461bcd60e51b8152600401610eb990613c8c565b6000612005600a6103e8613de9565b90508088111580156120175750808711155b80156120235750808611155b801561202f5750808211155b6120705760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b6044820152606401610eb9565b6103e88361207e8688613e22565b6120889190613e22565b146120df5760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b6064820152608401610eb9565b6009889055600a879055600b829055600c869055600f849055600e839055600d8590556040805189815260208101899052908101879052606081018690526080810185905260a0810184905260c081018390527f6cdd0b254c12e6e079483ac4d60596517e9d8df83e5b35a3f23ad869581c44229060e00160405180910390a15050505050505050565b3361217c6000546001600160a01b031690565b6001600160a01b0316146121a25760405162461bcd60e51b8152600401610eb990613c8c565b6103e88111156121b157600080fd5b60118190556040518181527fa072eee57b8e01913ba01eab29d8a81117cf780e6c8984a3494477ce9cee846d90602001610fb5565b336121f96000546001600160a01b031690565b6001600160a01b03161461221f5760405162461bcd60e51b8152600401610eb990613c8c565b601f8054911515650100000000000265ff000000000019909216919091179055565b336122546000546001600160a01b031690565b6001600160a01b03161461227a5760405162461bcd60e51b8152600401610eb990613c8c565b600a81111561228857600080fd5b60108190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc90602001610fb5565b336122d06000546001600160a01b031690565b6001600160a01b0316146122f65760405162461bcd60e51b8152600401610eb990613c8c565b306001600160a01b0383160361234e5760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e74726163740000000000006044820152606401610eb9565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed491016115fb565b336123bd6000546001600160a01b031690565b6001600160a01b0316146123e35760405162461bcd60e51b8152600401610eb990613c8c565b60005b8281101561245257816008600086868581811061240557612405613e70565b905060200201602081019061241a9190613ad6565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561244b81613e86565b90506123e6565b50505050565b3361246b6000546001600160a01b031690565b6001600160a01b0316146124915760405162461bcd60e51b8152600401610eb990613c8c565b6001600160a01b0381166124f65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610eb9565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b336125646000546001600160a01b031690565b6001600160a01b03161461258a5760405162461bcd60e51b8152600401610eb990613c8c565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9291016115fb565b336125f96000546001600160a01b031690565b6001600160a01b03161461261f5760405162461bcd60e51b8152600401610eb990613c8c565b602280546001600160a01b0319166001600160a01b0383169081179091556040519081527f1a806adf87d2b694e80e69bda66ee145c65fb0ef3615fec509da7adc260316af90602001610fb5565b6001600160a01b0383166126b75760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610eb9565b6001600160a01b0382166126ff5760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610eb9565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166127ab5760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610eb9565b6001600160a01b0382166127f45760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610eb9565b601f5462010000900460ff1615612881576001600160a01b03831660009081526006602052604090205460ff1615801561284757506001600160a01b03821660009081526006602052604090205460ff16155b6128815760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610eb9565b6001600160a01b03831660009081526004602052604090205460ff16806128c057506001600160a01b03821660009081526004602052604090205460ff165b156128d5576128d0838383612bba565b505050565b6000601254116129275760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610eb9565b6128d0838383612cbb565b601f805460ff191660019081179091553060009081526020919091526040812054600f54600e549192916129669190613e22565b601054602080546001600160a01b0316600090815260019091526040812054929350916103e89161299691613dca565b6129a09190613de9565b9050816000036129b257505050612bad565b83156129ce5750306000908152600160205260409020546129de565b808310156129de57505050612bad565b60006129e86114d6565b612a0a5782600e54836129fb9190613dca565b612a059190613de9565b612a0d565b60005b90506000612a1b8284613e0b565b90506000612a2a600284613de9565b90506000612a388383613e22565b905047612a4482613416565b6000612a508247613e0b565b90508515612a7d57600083612a658684613dca565b612a6f9190613de9565b9050612a7b858261358f565b505b6000606460155447612a8f9190613dca565b612a999190613de9565b90506000606460135447612aad9190613dca565b612ab79190613de9565b90506000606460145447612acb9190613dca565b612ad59190613de9565b90508215612b34576021546040516000916001600160a01b03169085908381818185875af1925050503d8060008114612b2a576040519150601f19603f3d011682016040523d82523d6000602084013e612b2f565b606091505b505050505b8115612b91576022546040516000916001600160a01b03169084908381818185875af1925050503d8060008114612b87576040519150601f19603f3d011682016040523d82523d6000602084013e612b8c565b606091505b505050505b8015612ba057612ba08161364d565b5050505050505050505050505b50601f805460ff19169055565b6001600160a01b03831660009081526001602052604090205481811015612c1e5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610eb9565b6001600160a01b03841660009081526001602052604081208054849290612c46908490613e0b565b90915550506001600160a01b03831660009081526001602052604081208054849290612c73908490613e22565b92505081905550826001600160a01b0316846001600160a01b031660008051602061400883398151915284604051612cad91815260200190565b60405180910390a350505050565b6001600160a01b03831660009081526001602052604090205481811015612d1f5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610eb9565b6001600160a01b03841660009081526003602052604081205460ff1680612d5e57506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b03861660009081526005602052604090205490915060ff168015612d87575080155b15612e3457601754831115612dae5760405162461bcd60e51b8152600401610eb990613e9f565b6001600160a01b038416600090815260016020526040902054601654612dd48583613e22565b1115612e2e5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610eb9565b50612e81565b6001600160a01b03841660009081526005602052604090205460ff168015612e5a575080155b15612e8157601754831115612e815760405162461bcd60e51b8152600401610eb990613e9f565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff92831692169081156130cf57601254600190612ec3908290613e22565b421015612ed857612ed58160c86137a9565b91505b601f54640100000000900460ff168015612f0a57506001600160a01b03891660009081526008602052604090205460ff165b156130c357600b54601e546001600160a01b038b166000908152600760205260409020600101549193504291612f409190613e22565b1115612ff6576001600160a01b038916600090815260076020526040812054612f6a908990613e22565b6001600160a01b038b16600090815260076020526040902060020154909150811115612fd85760405162461bcd60e51b815260206004820181905260248201527f53656c6c20616d6f756e742065786365656473206461696c79206c696d69742e6044820152606401610eb9565b6001600160a01b038a166000908152600760205260409020556130c9565b612710601d5461301b8b6001600160a01b031660009081526001602052604090205490565b6130259190613dca565b61302f9190613de9565b6001600160a01b038a16600090815260076020526040902060020181905587111561309c5760405162461bcd60e51b815260206004820181905260248201527f53656c6c20616d6f756e742065786365656473206461696c79206c696d69742e6044820152606401610eb9565b6001600160a01b0389166000908152600760205260409020878155426001909101556130c9565b600a5491505b506131f7565b821561314357601f5465010000000000900460ff161561310e576001600160a01b03871660009081526008602052604090205460ff1661310e57600080fd5b60125460019061311f908290613e22565b42101561313957613132816103e76137a9565b91506130c9565b50506009546131f7565b601f54640100000000900460ff16158061319a57506001600160a01b03871660009081526008602052604090205460ff1615801561319a57506001600160a01b03881660009081526008602052604090205460ff16155b6131f25760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f742073656e6420746f6b656e7320746f206120666c6f6f7220686f604482015263363232b960e11b6064820152608401610eb9565b50600c545b6020546001600160a01b0389811691161480159061321d5750601f54610100900460ff16155b801561322c5750601f5460ff16155b1561323b5761323b6000612932565b601f5460ff1615801561326657506001600160a01b03871660009081526005602052604090205460ff165b801561327b5750601f546301000000900460ff165b80156132965750601954601a546132929190613e22565b4210155b156132a5576132a36137ef565b505b60006132b48783600d5461398b565b905060006132d28884600e54600f546132cd9190613e22565b61398b565b905060006132e08284613e22565b6132ea908a613e0b565b6001600160a01b038c16600090815260016020526040812080549293508b92909190613317908490613e0b565b9091555050306000908152600160205260408120805484929061333b908490613e22565b909155505061dead60009081526001602052600080516020613fe8833981519152805485929061336c908490613e22565b90915550506001600160a01b038a1660009081526001602052604081208054839290613399908490613e22565b909155505060405183815261dead906001600160a01b038d16906000805160206140088339815191529060200160405180910390a3896001600160a01b03168b6001600160a01b03166000805160206140088339815191528360405161340191815260200190565b60405180910390a35050505050505050505050565b601f54613435903090600160301b90046001600160a01b03168361266d565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061346a5761346a613e70565b60200260200101906001600160a01b031690816001600160a01b031681525050601f60069054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135019190613ee7565b8160018151811061351457613514613e70565b6001600160a01b039283166020918202929092010152601f5460405163791ac94760e01b8152600160301b9091049091169063791ac94790613563908590600090869030904290600401613f48565b600060405180830381600087803b15801561357d57600080fd5b505af19250505080156128d057505050565b601f546135ae903090600160301b90046001600160a01b03168461266d565b601f5460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a4820152600160301b9091046001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015613621573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906136469190613f84565b5050505050565b604080516002808252606082018352600092602083019080368337019050509050601f60069054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136e59190613ee7565b816000815181106136f8576136f8613e70565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061372c5761372c613e70565b6001600160a01b039283166020918202929092010152601f5460405163b6f9de9560e01b8152600160301b9091049091169063b6f9de9590849061377d90600090869061dead904290600401613fb2565b6000604051808303818588803b15801561379657600080fd5b505af1935050505080156128d057505050565b600080601254426137ba9190613e0b565b905083816137c9603286613e0b565b6137d39190613dca565b6137dd9190613de9565b6137e79084613e0b565b949350505050565b42601a556020546040516370a0823160e01b81526001600160a01b039091166004820152600090819030906370a0823190602401602060405180830381865afa158015613840573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138649190613e3a565b90506000612710601854836138799190613dca565b6138839190613de9565b905080156138f65761dead60009081526001602052600080516020613fe883398151915280548392906138b7908490613e22565b909155505060205460405161dead916001600160a01b031690600080516020614008833981519152906138ed9085815260200190565b60405180910390a35b6020546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b15801561394057600080fd5b505af1158015613954573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b60006139996103e880613dca565b826139a48587613dca565b6139ae9190613dca565b6137e79190613de9565b600060208083528351808285015260005b818110156139e5578581018301518582016040015282016139c9565b818111156139f7576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114613a2257600080fd5b50565b60008060408385031215613a3857600080fd5b8235613a4381613a0d565b946020939093013593505050565b600060208284031215613a6357600080fd5b5035919050565b8015158114613a2257600080fd5b600060208284031215613a8a57600080fd5b81356112c981613a6a565b600080600060608486031215613aaa57600080fd5b8335613ab581613a0d565b92506020840135613ac581613a0d565b929592945050506040919091013590565b600060208284031215613ae857600080fd5b81356112c981613a0d565b60008060408385031215613b0657600080fd5b8235613b1181613a0d565b91506020830135613b2181613a6a565b809150509250929050565b60008060008060808587031215613b4257600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215613b7357600080fd5b83359250602084013591506040840135613b8c81613a6a565b809150509250925092565b600080600060408486031215613bac57600080fd5b833567ffffffffffffffff80821115613bc457600080fd5b818601915086601f830112613bd857600080fd5b813581811115613be757600080fd5b8760208260051b8501011115613bfc57600080fd5b60209283019550935050840135613b8c81613a6a565b600080600080600080600060e0888a031215613c2d57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b60008060408385031215613c7157600080fd5b8235613c7c81613a0d565b91506020830135613b2181613a0d565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613d12578160001904821115613cf857613cf8613cc1565b80851615613d0557918102915b93841c9390800290613cdc565b509250929050565b600082613d2957506001610e7a565b81613d3657506000610e7a565b8160018114613d4c5760028114613d5657613d72565b6001915050610e7a565b60ff841115613d6757613d67613cc1565b50506001821b610e7a565b5060208310610133831016604e8410600b8410161715613d95575081810a610e7a565b613d9f8383613cd7565b8060001904821115613db357613db3613cc1565b029392505050565b60006112c960ff841683613d1a565b6000816000190483118215151615613de457613de4613cc1565b500290565b600082613e0657634e487b7160e01b600052601260045260246000fd5b500490565b600082821015613e1d57613e1d613cc1565b500390565b60008219821115613e3557613e35613cc1565b500190565b600060208284031215613e4c57600080fd5b5051919050565b600060208284031215613e6557600080fd5b81516112c981613a6a565b634e487b7160e01b600052603260045260246000fd5b600060018201613e9857613e98613cc1565b5060010190565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b600060208284031215613ef957600080fd5b81516112c981613a0d565b600081518084526020808501945080840160005b83811015613f3d5781516001600160a01b031687529582019590820190600101613f18565b509495945050505050565b85815284602082015260a060408201526000613f6760a0830186613f04565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215613f9957600080fd5b8351925060208401519150604084015190509250925092565b848152608060208201526000613fcb6080830186613f04565b6001600160a01b0394909416604083015250606001529291505056feb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164dddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204eb8c6a4040b8fcea8c94c300e77a8f0523e09abd0e6815841174340b7c2cde964736f6c634300080f0033

Deployed Bytecode Sourcemap

2956:22237:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5238:52;;;;;;;;;;;;5283:6;5238:52;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5238:52:0;;;;;;;;23003:78;;;;;;;;;;-1:-1:-1;23074:5:0;;;;;;;;;;;;-1:-1:-1;;;23074:5:0;;;;23003:78;;;;;;;:::i;4328:29::-;;;;;;;;;;;;;;;;;;;970:25:1;;;958:2;943:18;4328:29:0;824:177:1;23759:158:0;;;;;;;;;;-1:-1:-1;23759:158:0;;;;;:::i;:::-;;:::i;:::-;;;1627:14:1;;1620:22;1602:41;;1590:2;1575:18;23759:158:0;1462:187:1;5053:34:0;;;;;;;;;;-1:-1:-1;5053:34:0;;;;;;;;;;;4138:35;;;;;;;;;;;;;;;;9352:198;;;;;;;;;;-1:-1:-1;9352:198:0;;;;;:::i;:::-;;:::i;:::-;;23259:84;;;;;;;;;;;;;:::i;4669:47::-;;;;;;;;;;;;;;;;4528:36;;;;;;;;;;;;;;;;7244:147;;;;;;;;;;-1:-1:-1;7244:147:0;;;;;:::i;:::-;;:::i;3910:23::-;;;;;;;;;;;;;;;;20598:298;;;;;;;;;;;;;:::i;8853:288::-;;;;;;;;;;-1:-1:-1;8853:288:0;;;;;:::i;:::-;;:::i;5018:28::-;;;;;;;;;;-1:-1:-1;5018:28:0;;;;;;;;;;;24223:382;;;;;;;;;;-1:-1:-1;24223:382:0;;;;;:::i;:::-;;:::i;9970:296::-;;;;;;;;;;-1:-1:-1;9970:296:0;;;;;:::i;:::-;;:::i;19428:123::-;;;;;;;;;;;;;:::i;4584:42::-;;;;;;;;;;;;;;;;8569:278;;;;;;;;;;-1:-1:-1;8569:278:0;;;;;:::i;:::-;;:::i;4979:32::-;;;;;;;;;;-1:-1:-1;4979:32:0;;;;;;;;;;;23175:78;;;;;;;;;;-1:-1:-1;23175:78:0;;3686:2;3063:36:1;;3051:2;3036:18;23175:78:0;2921:184:1;4810:43:0;;;;;;;;;;;;;;;;24611:202;;;;;;;;;;-1:-1:-1;24611:202:0;;;;;:::i;:::-;;:::i;19877:127::-;;;;;;;;;;;;;:::i;16385:149::-;;;;;;;;;;;;;:::i;3768:23::-;;;;;;;;;;;;;;;;19557:179;;;;;;;;;;-1:-1:-1;19557:179:0;;;;;:::i;:::-;;:::i;4911:22::-;;;;;;;;;;-1:-1:-1;4911:22:0;;;;;;;;;;;9147:90;;;;;;;;;;-1:-1:-1;9147:90:0;;;;;:::i;:::-;;:::i;8180:383::-;;;;;;;;;;-1:-1:-1;8180:383:0;;;;;:::i;:::-;;:::i;20464:128::-;;;;;;;;;;-1:-1:-1;20464:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;20557:27:0;20533:4;20557:27;;;:18;:27;;;;;;;;;20464:128;4765:38;;;;;;;;;;;;;;;;9761:203;;;;;;;;;;-1:-1:-1;9761:203:0;;;;;:::i;:::-;-1:-1:-1;;;;;9879:13:0;9821:7;9879:13;;;:4;:13;;;;;;;;;9859:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9761:203;;;;;4089:25:1;;;4145:2;4130:18;;4123:34;;;;4173:18;;;4166:34;4077:2;4062:18;9761:203:0;3887:319:1;9556:199:0;;;;;;;;;;-1:-1:-1;9556:199:0;;;;;:::i;:::-;;:::i;23349:100::-;;;;;;;;;;-1:-1:-1;23349:100:0;;;;;:::i;:::-;-1:-1:-1;;;;;23429:18:0;23415:4;23429:18;;;:9;:18;;;;;;;23349:100;20902:250;;;;;;;;;;;;;:::i;2539:142::-;;;;;;;;;;;;;:::i;21158:447::-;;;;;;;;;;-1:-1:-1;21158:447:0;;;;;:::i;:::-;;:::i;5170:30::-;;;;;;;;;;-1:-1:-1;5170:30:0;;;;-1:-1:-1;;;;;5170:30:0;;;3838:31;;;;;;;;;;;;;;;;3876:27;;;;;;;;;;;;;;;;7866:160;;;;;;;;;;-1:-1:-1;7866:160:0;;;;;:::i;:::-;;:::i;19742:129::-;;;;;;;;;;-1:-1:-1;19742:129:0;;;;;:::i;:::-;;:::i;22919:78::-;;;;;;;;;;-1:-1:-1;22971:7:0;2395:6;-1:-1:-1;;;;;2395:6:0;22919:78;23259:84;4940:32;;;;;;;;;;-1:-1:-1;4940:32:0;;;;;;;;;;;7397:245;;;;;;;;;;-1:-1:-1;7397:245:0;;;;;:::i;:::-;;:::i;5207:24::-;;;;;;;;;;-1:-1:-1;5207:24:0;;;;-1:-1:-1;;;;;5207:24:0;;;23087:82;;;;;;;;;;-1:-1:-1;23160:7:0;;;;;;;;;;;;-1:-1:-1;;;23160:7:0;;;;23087:82;;22156:755;;;;;;;;;;-1:-1:-1;22156:755:0;;;;;:::i;:::-;;:::i;4723:35::-;;;;;;;;;;;;;;;;24819:334;;;;;;;;;;-1:-1:-1;24819:334:0;;;;;:::i;:::-;;:::i;4633:29::-;;;;;;;;;;;;;;;;23589:164;;;;;;;;;;-1:-1:-1;23589:164:0;;;;;:::i;:::-;;:::i;3392:42::-;;;;;;;;;;-1:-1:-1;3392:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4214:23;;;;;;;;;;;;;;;;4180:27;;;;;;;;;;;;;;;;15694:685;;;;;;;;;;-1:-1:-1;15694:685:0;;;;;:::i;:::-;;:::i;4448:31::-;;;;;;;;;;;;;;;;15398:290;;;;;;;;;;-1:-1:-1;15398:290:0;;;;;:::i;:::-;;:::i;3977:26::-;;;;;;;;;;;;;;;;9243:103;;;;;;;;;;-1:-1:-1;9243:103:0;;;;;:::i;:::-;;:::i;19316:106::-;;;;;;;;;;-1:-1:-1;19406:6:0;19365:4;19388:26;:9;:26;;-1:-1:-1;;;;;;;;;;;19388:26:0;19316:106;;4486:35;;;;;;;;;;;;;;;;3807:24;;;;;;;;;;;;;;;;15140:252;;;;;;;;;;-1:-1:-1;15140:252:0;;;;;:::i;:::-;;:::i;4010:26::-;;;;;;;;;;;;;;;;3261:35;;;;;;;;;;-1:-1:-1;3261:35:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3206:48;;;;;;;;;;-1:-1:-1;3206:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;23455:128;;;;;;;;;;-1:-1:-1;23455:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;23553:19:0;;;23539:4;23553:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;23455:128;4294:27;;;;;;;;;;;;;;;;20010:251;;;;;;;;;;-1:-1:-1;20010:251:0;;;;;:::i;:::-;;:::i;4043:26::-;;;;;;;;;;;;;;;;7648:212;;;;;;;;;;-1:-1:-1;7648:212:0;;;;;:::i;:::-;;:::i;2687:236::-;;;;;;;;;;-1:-1:-1;2687:236:0;;;;;:::i;:::-;;:::i;20267:191::-;;;;;;;;;;-1:-1:-1;20267:191:0;;;;;:::i;:::-;;:::i;3303:46::-;;;;;;;;;;-1:-1:-1;3303:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8032:142;;;;;;;;;;-1:-1:-1;8032:142:0;;;;;:::i;:::-;;:::i;23759:158::-;23833:4;23850:37;23859:10;23871:7;23880:6;23850:8;:37::i;:::-;-1:-1:-1;23905:4:0;23759:158;;;;;:::o;9352:198::-;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;;;;;;;;;9467:3:::1;9446:17;:24;;9438:57;;;::::0;-1:-1:-1;;;9438:57:0;;6901:2:1;9438:57:0::1;::::0;::::1;6883:21:1::0;6940:2;6920:18;;;6913:30;-1:-1:-1;;;6959:18:1;;;6952:50;7019:18;;9438:57:0::1;6699:344:1::0;9438:57:0::1;9506:16;:36:::0;9352:198::o;23259:84::-;23314:4;3749:13;3686:2;3749;:13;:::i;:::-;3735:27;;:12;:27;:::i;:::-;23321:20;;23259:84;:::o;7244:147::-;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;7313:13:::1;:23:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;7313:23:0;;::::1;;::::0;;7352:31:::1;::::0;::::1;::::0;::::1;::::0;7329:7;1627:14:1;1620:22;1602:41;;1590:2;1575:18;;1462:187;7352:31:0::1;;;;;;;;7244:147:::0;:::o;20598:298::-;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;20660:15:::1;::::0;:18;20652:45:::1;;;::::0;-1:-1:-1;;;20652:45:0;;8938:2:1;20652:45:0::1;::::0;::::1;8920:21:1::0;8977:2;8957:18;;;8950:30;-1:-1:-1;;;8996:18:1;;;8989:45;9051:18;;20652:45:0::1;8736:339:1::0;20652:45:0::1;20724:15;20708;:31:::0;;;20790:4:::1;::::0;3749:13:::1;::::0;:2:::1;:13;:::i;:::-;3735:27;::::0;:12:::1;:27;:::i;:::-;20769:18;::::0;20785:2:::1;20769:18;:::i;:::-;:25;;;;:::i;:::-;20750:16;:44:::0;20850:5:::1;3749:13;3686:2;3749;:13;:::i;:::-;3735:27;::::0;:12:::1;:27;:::i;:::-;20828:19;::::0;20844:3:::1;20828:19;:::i;:::-;:27;;;;:::i;:::-;20805:20;:50:::0;20871:17:::1;::::0;::::1;::::0;;;::::1;20598:298::o:0;8853:288::-;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;8952:2:::1;8941:7;:13;;8933:35;;;::::0;-1:-1:-1;;;8933:35:0;;9504:2:1;8933:35:0::1;::::0;::::1;9486:21:1::0;9543:1;9523:18;;;9516:29;-1:-1:-1;;;9561:18:1;;;9554:39;9610:18;;8933:35:0::1;9302:332:1::0;8933:35:0::1;8998:5;8987:7;:16;;8979:37;;;::::0;-1:-1:-1;;;8979:37:0;;9841:2:1;8979:37:0::1;::::0;::::1;9823:21:1::0;9880:1;9860:18;;;9853:29;-1:-1:-1;;;9898:18:1;;;9891:38;9946:18;;8979:37:0::1;9639:331:1::0;8979:37:0::1;9076:5;9066:7:::0;3749:13:::1;3686:2;3749;:13;:::i;:::-;3735:27;::::0;:12:::1;:27;:::i;:::-;9050:23;;;;:::i;:::-;:31;;;;:::i;:::-;9027:20;:54:::0;9097:36:::1;::::0;970:25:1;;;9097:36:0::1;::::0;958:2:1;943:18;9097:36:0::1;824:177:1::0;24223:382:0;24320:4;24337:36;24347:6;24355:9;24366:6;24337:9;:36::i;:::-;-1:-1:-1;;;;;24408:19:0;;24384:21;24408:19;;;:11;:19;;;;;;;;24428:10;24408:31;;;;;;;;24458:26;;;;24450:59;;;;-1:-1:-1;;;24450:59:0;;10177:2:1;24450:59:0;;;10159:21:1;10216:2;10196:18;;;10189:30;-1:-1:-1;;;10235:18:1;;;10228:50;10295:18;;24450:59:0;9975:344:1;24450:59:0;24520:55;24529:6;24537:10;24549:25;24568:6;24549:16;:25;:::i;:::-;24520:8;:55::i;:::-;-1:-1:-1;24593:4:0;;24223:382;-1:-1:-1;;;;24223:382:0:o;9970:296::-;10105:17;;-1:-1:-1;;;;;10079:13:0;;10044:7;10079:13;;;:4;:13;;;;;:23;;;10044:7;;;;10079:43;;10105:17;10079:43;:::i;:::-;10064:58;;10144:15;10137:4;:22;10133:126;;;10183:22;10190:15;10183:4;:22;:::i;:::-;10176:30;9970:296;-1:-1:-1;;;9970:296:0:o;10133:126::-;-1:-1:-1;10246:1:0;;9970:296;-1:-1:-1;;9970:296:0:o;19428:123::-;19535:6;19480:4;19517:26;;;:9;:26;;-1:-1:-1;;;;;;;;;;;19517:26:0;3749:13;3686:2;3749;:13;:::i;:::-;3735:27;;:12;:27;:::i;:::-;19503:40;;;;:::i;8569:278::-;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;8671:2:::1;8660:7;:13;;8652:32;;;::::0;-1:-1:-1;;;8652:32:0;;10789:2:1;8652:32:0::1;::::0;::::1;10771:21:1::0;10828:1;10808:18;;;10801:29;-1:-1:-1;;;10846:18:1;;;10839:36;10892:18;;8652:32:0::1;10587:329:1::0;8652:32:0::1;8714:4;8703:7;:15;;8695:36;;;::::0;-1:-1:-1;;;8695:36:0;;9841:2:1;8695:36:0::1;::::0;::::1;9823:21:1::0;9880:1;9860:18;;;9853:29;-1:-1:-1;;;9898:18:1;;;9891:38;9946:18;;8695:36:0::1;9639:331:1::0;8695:36:0::1;8787:4;8777:7:::0;3749:13:::1;3686:2;3749;:13;:::i;:::-;3735:27;::::0;:12:::1;:27;:::i;:::-;8761:23;;;;:::i;:::-;:30;;;;:::i;:::-;8742:16;:49:::0;8807:32:::1;::::0;970:25:1;;;8807:32:0::1;::::0;958:2:1;943:18;8807:32:0::1;824:177:1::0;24611:202:0;24716:10;24690:4;24737:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;24737:32:0;;;;;;;;;;24690:4;;24707:76;;24728:7;;24737:45;;24772:10;;24737:45;:::i;19877:127::-;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;19935:24:::1;19954:4;19935:18;:24::i;:::-;19975:21;::::0;::::1;::::0;;;::::1;19877:127::o:0;16385:149::-;16432:4;16522;16502:19;;16479:22;:20;:22::i;:::-;:42;;;;:::i;:::-;:47;;;;:::i;:::-;16465:12;;;-1:-1:-1;;;;;16465:12:0;16455:23;;;;:9;:23;;;;;;;:71;;16385:149;-1:-1:-1;16385:149:0:o;19557:179::-;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;19638:12:::1;::::0;-1:-1:-1;;;;;19638:12:0;;::::1;19633:17:::0;;::::1;::::0;19625:49:::1;;;::::0;-1:-1:-1;;;19625:49:0;;11123:2:1;19625:49:0::1;::::0;::::1;11105:21:1::0;11162:2;11142:18;;;11135:30;-1:-1:-1;;;11181:18:1;;;11174:50;11241:18;;19625:49:0::1;10921:344:1::0;19625:49:0::1;-1:-1:-1::0;;;;;19685:10:0;::::1;;::::0;;;:5:::1;:10;::::0;;;;;;;;:14;;-1:-1:-1;;19685:14:0::1;::::0;::::1;;;::::0;;19715:13;;160:51:1;;;19715:13:0::1;::::0;133:18:1;19715:13:0::1;;;;;;;;19557:179:::0;;:::o;9147:90::-;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;9214:9:::1;:15:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;9214:15:0;;::::1;::::0;;;::::1;::::0;;9147:90::o;8180:383::-;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;8372:3:::1;8357:13:::0;8343;8317:25:::1;8327:15:::0;8317:9;:25:::1;:::i;:::-;:39;;;;:::i;:::-;:53;;;;:::i;:::-;:58;;8309:67;;;::::0;::::1;;8387:8;:18:::0;;;8416:14:::1;:30:::0;;;8457:12:::1;:26:::0;;;8499:56:::1;::::0;;4089:25:1;;;4145:2;4130:18;;4123:34;;;4173:18;;;4166:34;;;8499:56:0::1;::::0;4077:2:1;4062:18;8499:56:0::1;;;;;;;8180:383:::0;;;;:::o;9556:199::-;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;9664:8:::1;9647:13;:25;;9639:64;;;::::0;-1:-1:-1;;;9639:64:0;;11472:2:1;9639:64:0::1;::::0;::::1;11454:21:1::0;11511:2;11491:18;;;11484:30;11550:28;11530:18;;;11523:56;11596:18;;9639:64:0::1;11270:350:1::0;9639:64:0::1;9714:17;:33:::0;9556:199::o;20902:250::-;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;20984:12:::1;::::0;21022:39:::1;::::0;-1:-1:-1;;;21022:39:0;;21055:4:::1;21022:39;::::0;::::1;160:51:1::0;-1:-1:-1;;;;;20984:12:0;;::::1;::::0;20953:21:::1;::::0;20984:12;;21022:24:::1;::::0;133:18:1;;21022:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21072:43;::::0;-1:-1:-1;;;21072:43:0;;21096:10:::1;21072:43;::::0;::::1;11988:51:1::0;12055:18;;;12048:34;;;21008:53:0;;-1:-1:-1;;;;;;21072:23:0;::::1;::::0;::::1;::::0;11961:18:1;;21072:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;21131:13:0::1;::::0;::::1;::::0;;;::::1;20942:210;;20902:250::o:0;2539:142::-;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;2640:1:::1;2624:6:::0;;2603:40:::1;::::0;-1:-1:-1;;;;;2624:6:0;;::::1;::::0;2603:40:::1;::::0;2640:1;;2603:40:::1;2671:1;2654:19:::0;;-1:-1:-1;;;;;;2654:19:0::1;::::0;;2539:142::o;21158:447::-;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;21312:3:::1;21289:19;:26;;21281:90;;;::::0;-1:-1:-1;;;21281:90:0;;12545:2:1;21281:90:0::1;::::0;::::1;12527:21:1::0;12584:2;12564:18;;;12557:30;12623:34;12603:18;;;12596:62;-1:-1:-1;;;12674:18:1;;;12667:49;12733:19;;21281:90:0::1;12343:415:1::0;21281:90:0::1;21402:4;21390:8;:16;;:33;;;;-1:-1:-1::0;21410:13:0;21390:33:::1;21382:94;;;::::0;-1:-1:-1;;;21382:94:0;;12965:2:1;21382:94:0::1;::::0;::::1;12947:21:1::0;13004:2;12984:18;;;12977:30;13043:34;13023:18;;;13016:62;-1:-1:-1;;;13094:18:1;;;13087:46;13150:19;;21382:94:0::1;12763:412:1::0;21382:94:0::1;21487:15;:37:::0;;;;21535:16:::1;:27:::0;21573:13:::1;:24:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;21573:24:0;;::::1;::::0;;;::::1;::::0;;21158:447::o;7866:160::-;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;7945:15:::1;:25:::0;;-1:-1:-1;;;;;;7945:25:0::1;-1:-1:-1::0;;;;;7945:25:0;::::1;::::0;;::::1;::::0;;;7986:32:::1;::::0;160:51:1;;;7986:32:0::1;::::0;148:2:1;133:18;7986:32:0::1;14:203:1::0;19742:129:0;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;19810:10:::1;:17:::0;;;::::1;;;;-1:-1:-1::0;;19810:17:0;;::::1;;::::0;;19843:20:::1;::::0;::::1;::::0;::::1;::::0;19821:6;1627:14:1;1620:22;1602:41;;1590:2;1575:18;;1462:187;7397:245:0;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;7500:9:::1;7495:106;7511:20:::0;;::::1;7495:106;;;7583:6;7553:13;:27;7567:9;;7577:1;7567:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7553:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;7553:27:0;:36;;-1:-1:-1;;7553:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7533:3:::1;::::0;::::1;:::i;:::-;;;7495:106;;;-1:-1:-1::0;7616:18:0::1;::::0;::::1;::::0;;;::::1;7397:245:::0;;;:::o;22156:755::-;22229:4;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;22294:19:::1;;22271:20;;:42;;;;:::i;:::-;22253:15;:60;22245:106;;;::::0;-1:-1:-1;;;22245:106:0;;13654:2:1;22245:106:0::1;::::0;::::1;13636:21:1::0;;;13673:18;;;13666:30;13732:34;13712:18;;;13705:62;13784:18;;22245:106:0::1;13452:356:1::0;22245:106:0::1;22381:4;22370:7;:15;;22362:70;;;::::0;-1:-1:-1;;;22362:70:0;;14015:2:1;22362:70:0::1;::::0;::::1;13997:21:1::0;14054:2;14034:18;;;14027:30;14093:34;14073:18;;;14066:62;-1:-1:-1;;;14144:18:1;;;14137:40;14194:19;;22362:70:0::1;13813:406:1::0;22362:70:0::1;22466:15;22443:20;:38:::0;22538:12:::1;::::0;22523:28:::1;::::0;-1:-1:-1;;;22523:28:0;;-1:-1:-1;;;;;22538:12:0;;::::1;22523:28;::::0;::::1;160:51:1::0;22492:28:0::1;::::0;22523:4:::1;::::0;:14:::1;::::0;133:18:1;;22523:28:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22492:59:::0;-1:-1:-1;22562:20:0::1;22616:5;22585:30;22608:7:::0;22492:59;22585:30:::1;:::i;:::-;:36;;;;:::i;:::-;22562:59:::0;-1:-1:-1;22636:16:0;;22632:149:::1;;5283:6;22668:21;::::0;;;:9:::1;:21;::::0;-1:-1:-1;;;;;;;;;;;22668:35:0;;22691:12;;22668:21;:35:::1;::::0;22691:12;;22668:35:::1;:::i;:::-;::::0;;;-1:-1:-1;;22732:12:0::1;::::0;22723:46:::1;::::0;5283:6:::1;::::0;-1:-1:-1;;;;;22732:12:0::1;::::0;-1:-1:-1;;;;;;;;;;;22723:46:0;::::1;::::0;22756:12;970:25:1;;958:2;943:18;;824:177;22723:46:0::1;;;;;;;;22632:149;22816:12;::::0;22840:11:::1;::::0;;-1:-1:-1;;;;;;22840:11:0;;;;-1:-1:-1;;;;;22816:12:0;;::::1;::::0;;;22840:9:::1;::::0;:11:::1;::::0;;::::1;::::0;22791:13:::1;::::0;22840:11;;;;;;;22791:13;22816:12;22840:11;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;22867:14:0::1;::::0;::::1;::::0;-1:-1:-1;22867:14:0;;-1:-1:-1;22867:14:0::1;-1:-1:-1::0;22899:4:0::1;::::0;22156:755;-1:-1:-1;;;;22156:755:0:o;24819:334::-;24956:10;24903:4;24944:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;24944:32:0;;;;;;;;;;24995:35;;;;24987:60;;;;-1:-1:-1;;;24987:60:0;;14426:2:1;24987:60:0;;;14408:21:1;14465:2;14445:18;;;14438:30;-1:-1:-1;;;14484:18:1;;;14477:42;14536:18;;24987:60:0;14224:336:1;24987:60:0;25058:65;25067:10;25079:7;25088:34;25107:15;25088:16;:34;:::i;25058:65::-;-1:-1:-1;25141:4:0;;24819:334;-1:-1:-1;;;24819:334:0:o;23589:164::-;23666:4;23683:40;23693:10;23705:9;23716:6;23683:9;:40::i;15694:685::-;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;15837:11:::1;15849:33;4437:2;4394:4;15849:33;:::i;:::-;15837:45;;15906:6;15901:3;:11;;:25;;;;;15920:6;15914:4;:12;;15901:25;:44;;;;;15939:6;15928:9;:17;;15901:44;:66;;;;;15961:6;15947:12;:20;;15901:66;15893:96;;;::::0;-1:-1:-1;;;15893:96:0;;14767:2:1;15893:96:0::1;::::0;::::1;14749:21:1::0;14806:2;14786:18;;;14779:30;-1:-1:-1;;;14825:18:1;;;14818:48;14883:18;;15893:96:0::1;14565:342:1::0;15893:96:0::1;4394:4;16021:9:::0;16008:12:::1;16013:7:::0;16008:4;:12:::1;:::i;:::-;:22;;;;:::i;:::-;:39;16000:84;;;::::0;-1:-1:-1;;;16000:84:0;;15114:2:1;16000:84:0::1;::::0;::::1;15096:21:1::0;15153:2;15133:18;;;15126:30;15192:34;15172:18;;;15165:62;-1:-1:-1;;;15243:18:1;;;15236:31;15284:19;;16000:84:0::1;14912:397:1::0;16000:84:0::1;16095:6;:10:::0;;;16116:7:::1;:12:::0;;;16139:14:::1;:27:::0;;;16177:11:::1;:21:::0;;;16209:10:::1;:18:::0;;;16238:12:::1;:22:::0;;;16271:7:::1;:12:::0;;;16299:72:::1;::::0;;15629:25:1;;;15685:2;15670:18;;15663:34;;;15713:18;;;15706:34;;;15771:2;15756:18;;15749:34;;;15814:3;15799:19;;15792:35;;;15858:3;15843:19;;15836:35;;;15902:3;15887:19;;15880:35;;;16299:72:0::1;::::0;15616:3:1;15601:19;16299:72:0::1;;;;;;;15826:553;15694:685:::0;;;;;;;:::o;15398:290::-;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;15538:4:::1;15506:30;:36;;15498:45;;;::::0;::::1;;15554:19;:50:::0;;;15620:60:::1;::::0;970:25:1;;;15620:60:0::1;::::0;958:2:1;943:18;15620:60:0::1;824:177:1::0;9243:103:0;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;9317:15:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;9317:21:0;;::::1;::::0;;;::::1;::::0;;9243:103::o;15140:252::-;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;15257:2:::1;15232:23;:27;;15224:36;;;::::0;::::1;;15288:12;:36:::0;;;15340:44:::1;::::0;970:25:1;;;15340:44:0::1;::::0;958:2:1;943:18;15340:44:0::1;824:177:1::0;20010:251:0;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;20127:4:::1;-1:-1:-1::0;;;;;20110:22:0;::::1;::::0;20102:60:::1;;;::::0;-1:-1:-1;;;20102:60:0;;16128:2:1;20102:60:0::1;::::0;::::1;16110:21:1::0;16167:2;16147:18;;;16140:30;16206:28;16186:18;;;16179:56;16252:18;;20102:60:0::1;15926:350:1::0;20102:60:0::1;-1:-1:-1::0;;;;;20173:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;;;;:33;;-1:-1:-1;;20173:33:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20222:31;;16449:51:1;;;16516:18;;;16509:50;20222:31:0::1;::::0;16422:18:1;20222:31:0::1;16281:284:1::0;7648:212:0;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;7754:9:::1;7749:104;7765:20:::0;;::::1;7749:104;;;7835:6;7807:11;:25;7819:9;;7829:1;7819:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7807:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;7807:25:0;:34;;-1:-1:-1;;7807:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7787:3:::1;::::0;::::1;:::i;:::-;;;7749:104;;;;7648:212:::0;;;:::o;2687:236::-;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2768:22:0;::::1;2760:73;;;::::0;-1:-1:-1;;;2760:73:0;;16772:2:1;2760:73:0::1;::::0;::::1;16754:21:1::0;16811:2;16791:18;;;16784:30;16850:34;16830:18;;;16823:62;-1:-1:-1;;;16901:18:1;;;16894:36;16947:19;;2760:73:0::1;16570:402:1::0;2760:73:0::1;2870:6;::::0;;2849:38:::1;::::0;-1:-1:-1;;;;;2849:38:0;;::::1;::::0;2870:6;::::1;::::0;2849:38:::1;::::0;::::1;2898:6;:17:::0;;-1:-1:-1;;;;;;2898:17:0::1;-1:-1:-1::0;;;;;2898:17:0;;;::::1;::::0;;;::::1;::::0;;2687:236::o;20267:191::-;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20365:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:35;;-1:-1:-1;;20365:35:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20416:34;;16449:51:1;;;16516:18;;;16509:50;20416:34:0::1;::::0;16422:18:1;20416:34:0::1;16281:284:1::0;8032:142:0;2466:10;2455:7;2368;2395:6;-1:-1:-1;;;;;2395:6:0;;2330:79;2455:7;-1:-1:-1;;;;;2455:21:0;;2447:66;;;;-1:-1:-1;;;2447:66:0;;;;;;;:::i;:::-;8105:9:::1;:19:::0;;-1:-1:-1;;;;;;8105:19:0::1;-1:-1:-1::0;;;;;8105:19:0;::::1;::::0;;::::1;::::0;;;8140:26:::1;::::0;160:51:1;;;8140:26:0::1;::::0;148:2:1;133:18;8140:26:0::1;14:203:1::0;23923:294:0;-1:-1:-1;;;;;24013:19:0;;24005:49;;;;-1:-1:-1;;;24005:49:0;;17179:2:1;24005:49:0;;;17161:21:1;17218:2;17198:18;;;17191:30;-1:-1:-1;;;17237:18:1;;;17230:47;17294:18;;24005:49:0;16977:341:1;24005:49:0;-1:-1:-1;;;;;24073:21:0;;24065:49;;;;-1:-1:-1;;;24065:49:0;;17525:2:1;24065:49:0;;;17507:21:1;17564:2;17544:18;;;17537:30;-1:-1:-1;;;17583:18:1;;;17576:45;17638:18;;24065:49:0;17323:339:1;24065:49:0;-1:-1:-1;;;;;24125:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;24177:32;;970:25:1;;;24177:32:0;;943:18:1;24177:32:0;;;;;;;23923:294;;;:::o;10272:633::-;-1:-1:-1;;;;;10365:20:0;;10357:51;;;;-1:-1:-1;;;10357:51:0;;17869:2:1;10357:51:0;;;17851:21:1;17908:2;17888:18;;;17881:30;-1:-1:-1;;;17927:18:1;;;17920:48;17985:18;;10357:51:0;17667:342:1;10357:51:0;-1:-1:-1;;;;;10427:23:0;;10419:52;;;;-1:-1:-1;;;10419:52:0;;18216:2:1;10419:52:0;;;18198:21:1;18255:2;18235:18;;;18228:30;-1:-1:-1;;;18274:18:1;;;18267:46;18330:18;;10419:52:0;18014:340:1;10419:52:0;10485:13;;;;;;;10482:122;;;-1:-1:-1;;;;;10523:21:0;;;;;;:13;:21;;;;;;;;10522:22;:51;;;;-1:-1:-1;;;;;;10549:24:0;;;;;;:13;:24;;;;;;;;10548:25;10522:51;10514:74;;;;-1:-1:-1;;;10514:74:0;;18561:2:1;10514:74:0;;;18543:21:1;18600:2;18580:18;;;18573:30;-1:-1:-1;;;18619:18:1;;;18612:41;18670:18;;10514:74:0;18359:335:1;10514:74:0;-1:-1:-1;;;;;10617:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;10645:27:0;;;;;;:16;:27;;;;;;;;10617:55;10614:284;;;10687:43;10704:6;10712:9;10723:6;10687:16;:43::i;:::-;10272:633;;;:::o;10614:284::-;10786:1;10770:15;;:17;10762:52;;;;-1:-1:-1;;;10762:52:0;;18901:2:1;10762:52:0;;;18883:21:1;18940:2;18920:18;;;18913:30;18979:25;18959:18;;;18952:53;19022:18;;10762:52:0;18699:347:1;10762:52:0;10829:39;10844:6;10851:9;10861:6;10829:14;:39::i;16540:1545::-;6386:27;:34;;-1:-1:-1;;6386:34:0;6416:4;6386:34;;;;;;16656:4:::1;6386:27:::0;16638:24;;;::::1;::::0;;;;;;;;16700:10:::1;::::0;16687:12:::1;::::0;16638:24;;6386:27;16687:23:::1;::::0;16700:10;16687:23:::1;:::i;:::-;16762:12;::::0;16748::::1;::::0;;-1:-1:-1;;;;;16748:12:0::1;16721:16;16738:23:::0;;;:9:::1;:23:::0;;;;;;;16673:37;;-1:-1:-1;16721:16:0;16775:4:::1;::::0;16738:36:::1;::::0;::::1;:::i;:::-;:41;;;;:::i;:::-;16721:58;;16793:8;16803:1;16793:11:::0;16790:22:::1;;16805:7;;;;;16790:22;16825:12;16822:134;;;-1:-1:-1::0;16882:4:0::1;16864:24;::::0;;;:9:::1;:24;::::0;;;;;16822:134:::1;;;16923:11;16907:15;:27;16904:52;;;16949:7;;;;;16904:52;16968:22;17001:17;:15;:17::i;:::-;:65;;17058:8;17044:12;;17032:11;:24;;;;:::i;:::-;17031:35;;;;:::i;:::-;17001:65;;;17019:1;17001:65;16968:98:::0;-1:-1:-1;17079:20:0::1;17101:29;16968:98:::0;17101:11;:29:::1;:::i;:::-;17079:51:::0;-1:-1:-1;17143:12:0::1;17156:19;17174:1;17156:17:::0;:19:::1;:::i;:::-;17143:32:::0;-1:-1:-1;17186:14:0::1;17201:23;17209:15:::0;17143:32;17201:23:::1;:::i;:::-;17186:38:::0;-1:-1:-1;17258:21:0::1;17290:27;17186:38:::0;17290:16:::1;:27::i;:::-;17328:11;17341:41;17365:17:::0;17341:21:::1;:41;:::i;:::-;17328:55:::0;-1:-1:-1;17399:19:0;;17396:135:::1;;17434:11;17465:9:::0;17449:14:::1;17456:7:::0;17449:6;:14:::1;:::i;:::-;17448:26;;;;:::i;:::-;17434:40;;17489:30;17503:7;17512:6;17489:13;:30::i;:::-;17419:112;17396:135;17541:18;17599:3;17584:14;;17560:21;:38;;;;:::i;:::-;:42;;;;:::i;:::-;17541:61;;17613:15;17662:3;17653:8;;17629:21;:32;;;;:::i;:::-;:36;;;;:::i;:::-;17613:52;;17676:19;17733:3;17720:12;;17696:21;:36;;;;:::i;:::-;:40;;;;:::i;:::-;17676:60:::0;-1:-1:-1;17750:15:0;;17747:130:::1;;17795:15;::::0;:45:::1;::::0;17778:14:::1;::::0;-1:-1:-1;;;;;17795:15:0::1;::::0;17822:13;;17778:14;17795:45;17778:14;17795:45;17822:13;17795:15;:45:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;17747:130:0::1;17890:12:::0;;17887:106:::1;;17926:9;::::0;:36:::1;::::0;17915:8:::1;::::0;-1:-1:-1;;;;;17926:9:0::1;::::0;17947:10;;17915:8;17926:36;17915:8;17926:36;17947:10;17926:9;:36:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;17887:106:0::1;18006:16:::0;;18003:75:::1;;18038:28;18051:14;18038:12;:28::i;:::-;16606:1479;;;;;;;;;;;;6431:1;-1:-1:-1::0;6443:27:0;:35;;-1:-1:-1;;6443:35:0;;;16540:1545::o;14795:339::-;-1:-1:-1;;;;;14908:17:0;;14887:18;14908:17;;;:9;:17;;;;;;14944:23;;;;14936:60;;;;-1:-1:-1;;;14936:60:0;;19463:2:1;14936:60:0;;;19445:21:1;19502:2;19482:18;;;19475:30;-1:-1:-1;;;19521:18:1;;;19514:54;19585:18;;14936:60:0;19261:348:1;14936:60:0;-1:-1:-1;;;;;15007:17:0;;;;;;:9;:17;;;;;:25;;15026:6;;15007:17;:25;;15026:6;;15007:25;:::i;:::-;;;;-1:-1:-1;;;;;;;15043:20:0;;;;;;:9;:20;;;;;:28;;15065:6;;15043:20;:28;;15065:6;;15043:28;:::i;:::-;;;;;;;;15109:9;-1:-1:-1;;;;;15093:33:0;15102:6;-1:-1:-1;;;;;15093:33:0;-1:-1:-1;;;;;;;;;;;15119:6:0;15093:33;;;;970:25:1;;958:2;943:18;;824:177;15093:33:0;;;;;;;;14876:258;14795:339;;;:::o;10917:3473::-;-1:-1:-1;;;;;11028:17:0;;11007:18;11028:17;;;:9;:17;;;;;;11064:23;;;;11056:60;;;;-1:-1:-1;;;11056:60:0;;19463:2:1;11056:60:0;;;19445:21:1;19502:2;19482:18;;;19475:30;-1:-1:-1;;;19521:18:1;;;19514:54;19585:18;;11056:60:0;19261:348:1;11056:60:0;-1:-1:-1;;;;;11150:26:0;;11127:20;11150:26;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;11180:29:0;;;;;;:18;:29;;;;;;;;11150:59;-1:-1:-1;;;;;11224:13:0;;;;;;:5;:13;;;;;;11127:82;;-1:-1:-1;11224:13:0;;:46;;;;;11255:15;11254:16;11224:46;11220:642;;;11323:20;;11313:6;:30;;11287:132;;;;-1:-1:-1;;;11287:132:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23429:18:0;;11434:32;23429:18;;;:9;:18;;;;;;11567:16;;11530:33;11557:6;23429:18;11530:33;:::i;:::-;:53;;11504:151;;;;-1:-1:-1;;;11504:151:0;;20225:2:1;11504:151:0;;;20207:21:1;20264:2;20244:18;;;20237:30;20303:34;20283:18;;;20276:62;-1:-1:-1;;;20354:18:1;;;20347:34;20398:19;;11504:151:0;20023:400:1;11504:151:0;11272:395;11220:642;;;-1:-1:-1;;;;;11691:16:0;;;;;;:5;:16;;;;;;;;:49;;;;;11725:15;11724:16;11691:49;11673:189;;;11785:20;;11775:6;:30;;11767:83;;;;-1:-1:-1;;;11767:83:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11885:13:0;;;11874:10;11885:13;;;:5;:13;;;;;;;11921:16;;;;;;;;11885:13;;;;;11921:16;;11967:1576;;;;12064:15;;12015:9;;12064:31;;12015:9;;12064:31;:::i;:::-;12048:15;:47;12045:127;;;12119:33;12132:15;12148:3;12119:12;:33::i;:::-;12115:37;;12045:127;12189:9;;;;;;;:32;;;;-1:-1:-1;;;;;;12202:19:0;;;;;;:11;:19;;;;;;;;12189:32;12186:852;;;12253:14;;12322:17;;-1:-1:-1;;;;;12297:12:0;;;;;;:4;:12;;;;;:22;;;12253:14;;-1:-1:-1;12342:15:0;;12297:42;;12322:17;12297:42;:::i;:::-;:60;12294:713;;;-1:-1:-1;;;;;12409:12:0;;12390:16;12409:12;;;:4;:12;;;;;:17;:26;;12429:6;;12409:26;:::i;:::-;-1:-1:-1;;;;;12486:12:0;;;;;;:4;:12;;;;;:23;;;12390:45;;-1:-1:-1;12474:35:0;;;12466:80;;;;-1:-1:-1;;;12466:80:0;;20630:2:1;12466:80:0;;;20612:21:1;;;20649:18;;;20642:30;20708:34;20688:18;;;20681:62;20760:18;;12466:80:0;20428:356:1;12466:80:0;-1:-1:-1;;;;;12577:12:0;;;;;;:4;:12;;;;;:28;12186:852;;12294:713;12737:5;12717:16;;12697:17;12707:6;-1:-1:-1;;;;;23429:18:0;23415:4;23429:18;;;:9;:18;;;;;;;23349:100;12697:17;:36;;;;:::i;:::-;12696:46;;;;:::i;:::-;-1:-1:-1;;;;;12670:12:0;;;;;;:4;:12;;;;;:23;;:72;;;12781:33;;;12773:78;;;;-1:-1:-1;;;12773:78:0;;20630:2:1;12773:78:0;;;20612:21:1;;;20649:18;;;20642:30;20708:34;20688:18;;;20681:62;20760:18;;12773:78:0;20428:356:1;12773:78:0;-1:-1:-1;;;;;12882:12:0;;;;;;:4;:12;;;;;:26;;;12964:15;12939:22;;;;:40;12186:852;;;13031:7;;13027:11;;12186:852;11977:1063;11967:1576;;;13058:5;13055:488;;;13082:15;;;;;;;13079:85;;;-1:-1:-1;;;;;13125:22:0;;;;;;:11;:22;;;;;;;;13117:31;;;;;;13241:15;;13198:9;;13241:30;;13198:9;;13241:30;:::i;:::-;13225:15;:46;13222:136;;;13295:32;13308:14;13323:3;13295:12;:32::i;:::-;13291:36;;13222:136;;;-1:-1:-1;;13352:6:0;;13055:488;;;13399:9;;;;;;;13398:10;;:61;;-1:-1:-1;;;;;;13413:22:0;;;;;;:11;:22;;;;;;;;13412:23;:47;;;;-1:-1:-1;;;;;;13440:19:0;;;;;;:11;:19;;;;;;;;13439:20;13412:47;13390:110;;;;-1:-1:-1;;;13390:110:0;;20991:2:1;13390:110:0;;;20973:21:1;21030:2;21010:18;;;21003:30;21069:34;21049:18;;;21042:62;-1:-1:-1;;;21120:18:1;;;21113:34;21164:19;;13390:110:0;20789:400:1;13390:110:0;-1:-1:-1;13520:11:0;;13055:488;13567:12;;-1:-1:-1;;;;;13559:20:0;;;13567:12;;13559:20;;;;13558:37;;-1:-1:-1;13584:10:0;;;;;;;13583:11;13558:37;:69;;;;-1:-1:-1;13599:27:0;;;;13598:28;13558:69;13555:112;;;13642:25;13661:5;13642:18;:25::i;:::-;13684:27;;;;13683:28;:48;;;;-1:-1:-1;;;;;;13715:16:0;;;;;;:5;:16;;;;;;;;13683:48;:65;;;;-1:-1:-1;13735:13:0;;;;;;;13683:65;:120;;;;;13788:15;;13771:14;;:32;;;;:::i;:::-;13752:15;:51;;13683:120;13680:169;;;13819:18;:16;:18::i;:::-;;13680:169;13861:25;13887:35;13901:6;13909:3;13914:7;;13887:13;:35::i;:::-;13861:61;;13933:18;13952:51;13966:6;13974:3;13990:12;;13979:10;;:23;;;;:::i;:::-;13952:13;:51::i;:::-;13933:70;-1:-1:-1;14014:16:0;14039:36;13933:70;14039:20;:36;:::i;:::-;14031:45;;:6;:45;:::i;:::-;-1:-1:-1;;;;;14089:17:0;;;;;;:9;:17;;;;;:25;;14014:62;;-1:-1:-1;14108:6:0;;14089:17;;;:25;;14108:6;;14089:25;:::i;:::-;;;;-1:-1:-1;;14143:4:0;14125:24;;;;:9;:24;;;;;:41;;14153:13;;14125:24;:41;;14153:13;;14125:41;:::i;:::-;;;;-1:-1:-1;;5283:6:0;14177:21;;;;:9;:21;;-1:-1:-1;;;;;;;;;;;14177:43:0;;14200:20;;14177:21;:43;;14200:20;;14177:43;:::i;:::-;;;;-1:-1:-1;;;;;;;14231:20:0;;;;;;:9;:20;;;;;:33;;14253:11;;14231:20;:33;;14253:11;;14231:33;:::i;:::-;;;;-1:-1:-1;;14280:48:0;;970:25:1;;;5283:6:0;;-1:-1:-1;;;;;14280:48:0;;;-1:-1:-1;;;;;;;;;;;14280:48:0;958:2:1;943:18;14280:48:0;;;;;;;14360:9;-1:-1:-1;;;;;14344:38:0;14353:6;-1:-1:-1;;;;;14344:38:0;-1:-1:-1;;;;;;;;;;;14370:11:0;14344:38;;;;970:25:1;;958:2;943:18;;824:177;14344:38:0;;;;;;;;10996:3394;;;;;;;;10917:3473;;;:::o;18491:462::-;18581:10;;18549:52;;18566:4;;-1:-1:-1;;;18581:10:0;;-1:-1:-1;;;;;18581:10:0;18594:6;18549:8;:52::i;:::-;18636:16;;;18650:1;18636:16;;;;;;;;18612:21;;18636:16;;;;;;;;;;-1:-1:-1;18636:16:0;18612:40;;18681:4;18663;18668:1;18663:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;18663:23:0;;;-1:-1:-1;;;;;18663:23:0;;;;;18707:10;;;;;;;;;-1:-1:-1;;;;;18707:10:0;-1:-1:-1;;;;;18707:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18697:4;18702:1;18697:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18697:27:0;;;:7;;;;;;;;;:27;18741:10;;:186;;-1:-1:-1;;;18741:186:0;;-1:-1:-1;;;18741:10:0;;;;;;;:61;;:186;;18817:6;;18838:1;;18854:4;;18881;;18901:15;;18741:186;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18538:415;18491:462;:::o;18959:351::-;19067:10;;19035:57;;19052:4;;-1:-1:-1;;;19067:10:0;;-1:-1:-1;;;;;19067:10:0;19080:11;19035:8;:57::i;:::-;19103:10;;:199;;-1:-1:-1;;;19103:199:0;;19170:4;19103:199;;;22976:34:1;;;23026:18;;;23019:34;;;19216:1:0;23069:18:1;;;23062:34;;;23112:18;;;23105:34;23155:19;;;23148:44;19276:15:0;23208:19:1;;;23201:35;-1:-1:-1;;;19103:10:0;;;-1:-1:-1;;;;;19103:10:0;;:26;;19137:9;;22910:19:1;;19103:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18959:351;;:::o;18091:394::-;18169:16;;;18183:1;18169:16;;;;;;;;18145:21;;18169:16;;;;;;;;;;-1:-1:-1;18169:16:0;18145:40;;18206:10;;;;;;;;;-1:-1:-1;;;;;18206:10:0;-1:-1:-1;;;;;18206:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18196:4;18201:1;18196:7;;;;;;;;:::i;:::-;;;;;;:27;-1:-1:-1;;;;;18196:27:0;;;-1:-1:-1;;;;;18196:27:0;;;;;18252:4;18234;18239:1;18234:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18234:23:0;;;:7;;;;;;;;;:23;18282:10;;:177;;-1:-1:-1;;;18282:177:0;;-1:-1:-1;;;18282:10:0;;;;;;;:61;;18351:6;;18282:177;;18373:1;;18389:4;;5283:6;;18433:15;;18282:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18134:351:0;18091:394;:::o;14396:211::-;14468:4;14484:20;14521:15;;14505;:31;;;;:::i;:::-;14484:52;-1:-1:-1;14590:8:0;14484:52;14563:9;14570:2;14563:6;:9;:::i;:::-;14562:27;;;;:::i;:::-;:36;;;;:::i;:::-;14554:45;;:6;:45;:::i;:::-;14547:52;14396:211;-1:-1:-1;;;;14396:211:0:o;21617:531::-;21696:15;21679:14;:32;21768:12;;21753:28;;-1:-1:-1;;;21753:28:0;;-1:-1:-1;;;;;21768:12:0;;;21753:28;;;160:51:1;21663:4:0;;;;21753;;:14;;133:18:1;;21753:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21722:59;;21792:20;21855:5;21838:16;;21815:20;:39;;;;:::i;:::-;:45;;;;:::i;:::-;21792:68;-1:-1:-1;21875:16:0;;21871:149;;5283:6;21907:21;;;;:9;:21;;-1:-1:-1;;;;;;;;;;;21907:35:0;;21930:12;;21907:21;:35;;21930:12;;21907:35;:::i;:::-;;;;-1:-1:-1;;21971:12:0;;21962:46;;5283:6;;-1:-1:-1;;;;;21971:12:0;;-1:-1:-1;;;;;;;;;;;21962:46:0;;;21995:12;970:25:1;;958:2;943:18;;824:177;21962:46:0;;;;;;;;21871:149;22055:12;;22079:11;;;-1:-1:-1;;;;;;22079:11:0;;;;-1:-1:-1;;;;;22055:12:0;;;;;;22079:9;;:11;;;;;22030:13;;22079:11;;;;;;;22030:13;22055:12;22079:11;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22106:12:0;;;;-1:-1:-1;22106:12:0;;-1:-1:-1;22106:12:0;22136:4;22129:11;;;;;21617:531;:::o;14613:176::-;14698:4;14749:31;4394:4;;14749:31;:::i;:::-;14734:10;14723;14730:3;14723:6;:10;:::i;:::-;:21;;;;:::i;:::-;14722:59;;;;:::i;222:597:1:-;334:4;363:2;392;381:9;374:21;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;611:14;;;607:23;;601:30;577:17;;;596:2;573:26;566:66;531:10;;502:140;;;660:6;657:1;654:13;651:91;;;730:1;725:2;716:6;705:9;701:22;697:31;690:42;651:91;-1:-1:-1;803:2:1;782:15;-1:-1:-1;;778:29:1;763:45;;;;810:2;759:54;;222:597;-1:-1:-1;;;222:597:1:o;1006:131::-;-1:-1:-1;;;;;1081:31:1;;1071:42;;1061:70;;1127:1;1124;1117:12;1061:70;1006:131;:::o;1142:315::-;1210:6;1218;1271:2;1259:9;1250:7;1246:23;1242:32;1239:52;;;1287:1;1284;1277:12;1239:52;1326:9;1313:23;1345:31;1370:5;1345:31;:::i;:::-;1395:5;1447:2;1432:18;;;;1419:32;;-1:-1:-1;;;1142:315:1:o;1654:180::-;1713:6;1766:2;1754:9;1745:7;1741:23;1737:32;1734:52;;;1782:1;1779;1772:12;1734:52;-1:-1:-1;1805:23:1;;1654:180;-1:-1:-1;1654:180:1:o;1839:118::-;1925:5;1918:13;1911:21;1904:5;1901:32;1891:60;;1947:1;1944;1937:12;1962:241;2018:6;2071:2;2059:9;2050:7;2046:23;2042:32;2039:52;;;2087:1;2084;2077:12;2039:52;2126:9;2113:23;2145:28;2167:5;2145:28;:::i;2208:456::-;2285:6;2293;2301;2354:2;2342:9;2333:7;2329:23;2325:32;2322:52;;;2370:1;2367;2360:12;2322:52;2409:9;2396:23;2428:31;2453:5;2428:31;:::i;:::-;2478:5;-1:-1:-1;2535:2:1;2520:18;;2507:32;2548:33;2507:32;2548:33;:::i;:::-;2208:456;;2600:7;;-1:-1:-1;;;2654:2:1;2639:18;;;;2626:32;;2208:456::o;2669:247::-;2728:6;2781:2;2769:9;2760:7;2756:23;2752:32;2749:52;;;2797:1;2794;2787:12;2749:52;2836:9;2823:23;2855:31;2880:5;2855:31;:::i;3110:382::-;3175:6;3183;3236:2;3224:9;3215:7;3211:23;3207:32;3204:52;;;3252:1;3249;3242:12;3204:52;3291:9;3278:23;3310:31;3335:5;3310:31;:::i;:::-;3360:5;-1:-1:-1;3417:2:1;3402:18;;3389:32;3430:30;3389:32;3430:30;:::i;:::-;3479:7;3469:17;;;3110:382;;;;;:::o;3497:385::-;3583:6;3591;3599;3607;3660:3;3648:9;3639:7;3635:23;3631:33;3628:53;;;3677:1;3674;3667:12;3628:53;-1:-1:-1;;3700:23:1;;;3770:2;3755:18;;3742:32;;-1:-1:-1;3821:2:1;3806:18;;3793:32;;3872:2;3857:18;3844:32;;-1:-1:-1;3497:385:1;-1:-1:-1;3497:385:1:o;4211:377::-;4285:6;4293;4301;4354:2;4342:9;4333:7;4329:23;4325:32;4322:52;;;4370:1;4367;4360:12;4322:52;4406:9;4393:23;4383:33;;4463:2;4452:9;4448:18;4435:32;4425:42;;4517:2;4506:9;4502:18;4489:32;4530:28;4552:5;4530:28;:::i;:::-;4577:5;4567:15;;;4211:377;;;;;:::o;4593:750::-;4685:6;4693;4701;4754:2;4742:9;4733:7;4729:23;4725:32;4722:52;;;4770:1;4767;4760:12;4722:52;4810:9;4797:23;4839:18;4880:2;4872:6;4869:14;4866:34;;;4896:1;4893;4886:12;4866:34;4934:6;4923:9;4919:22;4909:32;;4979:7;4972:4;4968:2;4964:13;4960:27;4950:55;;5001:1;4998;4991:12;4950:55;5041:2;5028:16;5067:2;5059:6;5056:14;5053:34;;;5083:1;5080;5073:12;5053:34;5138:7;5131:4;5121:6;5118:1;5114:14;5110:2;5106:23;5102:34;5099:47;5096:67;;;5159:1;5156;5149:12;5096:67;5190:4;5182:13;;;;-1:-1:-1;5214:6:1;-1:-1:-1;;5255:20:1;;5242:34;5285:28;5242:34;5285:28;:::i;5348:592::-;5461:6;5469;5477;5485;5493;5501;5509;5562:3;5550:9;5541:7;5537:23;5533:33;5530:53;;;5579:1;5576;5569:12;5530:53;-1:-1:-1;;5602:23:1;;;5672:2;5657:18;;5644:32;;-1:-1:-1;5723:2:1;5708:18;;5695:32;;5774:2;5759:18;;5746:32;;-1:-1:-1;5825:3:1;5810:19;;5797:33;;-1:-1:-1;5877:3:1;5862:19;;5849:33;;-1:-1:-1;5929:3:1;5914:19;5901:33;;-1:-1:-1;5348:592:1;-1:-1:-1;5348:592:1:o;5945:388::-;6013:6;6021;6074:2;6062:9;6053:7;6049:23;6045:32;6042:52;;;6090:1;6087;6080:12;6042:52;6129:9;6116:23;6148:31;6173:5;6148:31;:::i;:::-;6198:5;-1:-1:-1;6255:2:1;6240:18;;6227:32;6268:33;6227:32;6268:33;:::i;6338:356::-;6540:2;6522:21;;;6559:18;;;6552:30;6618:34;6613:2;6598:18;;6591:62;6685:2;6670:18;;6338:356::o;7048:127::-;7109:10;7104:3;7100:20;7097:1;7090:31;7140:4;7137:1;7130:15;7164:4;7161:1;7154:15;7180:422;7269:1;7312:5;7269:1;7326:270;7347:7;7337:8;7334:21;7326:270;;;7406:4;7402:1;7398:6;7394:17;7388:4;7385:27;7382:53;;;7415:18;;:::i;:::-;7465:7;7455:8;7451:22;7448:55;;;7485:16;;;;7448:55;7564:22;;;;7524:15;;;;7326:270;;;7330:3;7180:422;;;;;:::o;7607:806::-;7656:5;7686:8;7676:80;;-1:-1:-1;7727:1:1;7741:5;;7676:80;7775:4;7765:76;;-1:-1:-1;7812:1:1;7826:5;;7765:76;7857:4;7875:1;7870:59;;;;7943:1;7938:130;;;;7850:218;;7870:59;7900:1;7891:10;;7914:5;;;7938:130;7975:3;7965:8;7962:17;7959:43;;;7982:18;;:::i;:::-;-1:-1:-1;;8038:1:1;8024:16;;8053:5;;7850:218;;8152:2;8142:8;8139:16;8133:3;8127:4;8124:13;8120:36;8114:2;8104:8;8101:16;8096:2;8090:4;8087:12;8083:35;8080:77;8077:159;;;-1:-1:-1;8189:19:1;;;8221:5;;8077:159;8268:34;8293:8;8287:4;8268:34;:::i;:::-;8338:6;8334:1;8330:6;8326:19;8317:7;8314:32;8311:58;;;8349:18;;:::i;:::-;8387:20;;7607:806;-1:-1:-1;;;7607:806:1:o;8418:140::-;8476:5;8505:47;8546:4;8536:8;8532:19;8526:4;8505:47;:::i;8563:168::-;8603:7;8669:1;8665;8661:6;8657:14;8654:1;8651:21;8646:1;8639:9;8632:17;8628:45;8625:71;;;8676:18;;:::i;:::-;-1:-1:-1;8716:9:1;;8563:168::o;9080:217::-;9120:1;9146;9136:132;;9190:10;9185:3;9181:20;9178:1;9171:31;9225:4;9222:1;9215:15;9253:4;9250:1;9243:15;9136:132;-1:-1:-1;9282:9:1;;9080:217::o;10324:125::-;10364:4;10392:1;10389;10386:8;10383:34;;;10397:18;;:::i;:::-;-1:-1:-1;10434:9:1;;10324:125::o;10454:128::-;10494:3;10525:1;10521:6;10518:1;10515:13;10512:39;;;10531:18;;:::i;:::-;-1:-1:-1;10567:9:1;;10454:128::o;11625:184::-;11695:6;11748:2;11736:9;11727:7;11723:23;11719:32;11716:52;;;11764:1;11761;11754:12;11716:52;-1:-1:-1;11787:16:1;;11625:184;-1:-1:-1;11625:184:1:o;12093:245::-;12160:6;12213:2;12201:9;12192:7;12188:23;12184:32;12181:52;;;12229:1;12226;12219:12;12181:52;12261:9;12255:16;12280:28;12302:5;12280:28;:::i;13180:127::-;13241:10;13236:3;13232:20;13229:1;13222:31;13272:4;13269:1;13262:15;13296:4;13293:1;13286:15;13312:135;13351:3;13372:17;;;13369:43;;13392:18;;:::i;:::-;-1:-1:-1;13439:1:1;13428:13;;13312:135::o;19614:404::-;19816:2;19798:21;;;19855:2;19835:18;;;19828:30;19894:34;19889:2;19874:18;;19867:62;-1:-1:-1;;;19960:2:1;19945:18;;19938:38;20008:3;19993:19;;19614:404::o;21326:251::-;21396:6;21449:2;21437:9;21428:7;21424:23;21420:32;21417:52;;;21465:1;21462;21455:12;21417:52;21497:9;21491:16;21516:31;21541:5;21516:31;:::i;21582:461::-;21635:3;21673:5;21667:12;21700:6;21695:3;21688:19;21726:4;21755:2;21750:3;21746:12;21739:19;;21792:2;21785:5;21781:14;21813:1;21823:195;21837:6;21834:1;21831:13;21823:195;;;21902:13;;-1:-1:-1;;;;;21898:39:1;21886:52;;21958:12;;;;21993:15;;;;21934:1;21852:9;21823:195;;;-1:-1:-1;22034:3:1;;21582:461;-1:-1:-1;;;;;21582:461:1:o;22048:582::-;22347:6;22336:9;22329:25;22390:6;22385:2;22374:9;22370:18;22363:34;22433:3;22428:2;22417:9;22413:18;22406:31;22310:4;22454:57;22506:3;22495:9;22491:19;22483:6;22454:57;:::i;:::-;-1:-1:-1;;;;;22547:32:1;;;;22542:2;22527:18;;22520:60;-1:-1:-1;22611:3:1;22596:19;22589:35;22446:65;22048:582;-1:-1:-1;;;22048:582:1:o;23247:306::-;23335:6;23343;23351;23404:2;23392:9;23383:7;23379:23;23375:32;23372:52;;;23420:1;23417;23410:12;23372:52;23449:9;23443:16;23433:26;;23499:2;23488:9;23484:18;23478:25;23468:35;;23543:2;23532:9;23528:18;23522:25;23512:35;;23247:306;;;;;:::o;23558:510::-;23829:6;23818:9;23811:25;23872:3;23867:2;23856:9;23852:18;23845:31;23792:4;23893:57;23945:3;23934:9;23930:19;23922:6;23893:57;:::i;:::-;-1:-1:-1;;;;;23986:32:1;;;;23981:2;23966:18;;23959:60;-1:-1:-1;24050:2:1;24035:18;24028:34;23885:65;23558:510;-1:-1:-1;;23558:510:1:o

Swarm Source

ipfs://4eb8c6a4040b8fcea8c94c300e77a8f0523e09abd0e6815841174340b7c2cde9
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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