ETH Price: $3,124.98 (-5.74%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

Kyuubi ($KYUB) (@$0.00)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve208974762024-10-05 6:15:11114 days ago1728108911IN
Kyuubi: $KYUB Token
0 ETH0.000137122.95468506
Approve194881382024-03-22 5:39:11311 days ago1711085951IN
Kyuubi: $KYUB Token
0 ETH0.0009446820.27704844
Transfer187448212023-12-08 23:31:23415 days ago1702078283IN
Kyuubi: $KYUB Token
0 ETH0.0131827544.47981806
Transfer186692802023-11-28 9:38:23426 days ago1701164303IN
Kyuubi: $KYUB Token
0 ETH0.0082452627.37798719
Transfer186487782023-11-25 12:41:47429 days ago1700916107IN
Kyuubi: $KYUB Token
0 ETH0.0100126733.78370091
Approve184528182023-10-29 2:18:59456 days ago1698545939IN
Kyuubi: $KYUB Token
0 ETH0.000396778.50557215
Transfer175429722023-06-23 14:50:23584 days ago1687531823IN
Kyuubi: $KYUB Token
0 ETH0.0100838534.02523972
Approve172952002023-05-19 18:05:47618 days ago1684519547IN
Kyuubi: $KYUB Token
0 ETH0.0026700657.23731951
Approve172044752023-05-06 22:20:35631 days ago1683411635IN
Kyuubi: $KYUB Token
0 ETH0.00741882159.2398911
Approve171605932023-04-30 18:17:35637 days ago1682878655IN
Kyuubi: $KYUB Token
0 ETH0.0015782764.77633672
Approve171509922023-04-29 9:53:35639 days ago1682762015IN
Kyuubi: $KYUB Token
0 ETH0.0015440733.14251082
Approve171144852023-04-24 6:52:35644 days ago1682319155IN
Kyuubi: $KYUB Token
0 ETH0.0019675742.23259699
Approve169348692023-03-29 18:58:23669 days ago1680116303IN
Kyuubi: $KYUB Token
0 ETH0.0012824952.63686548
Approve164455582023-01-20 4:14:59738 days ago1674188099IN
Kyuubi: $KYUB Token
0 ETH0.0006848914.6818735
Transfer163022702022-12-31 4:10:23758 days ago1672459823IN
Kyuubi: $KYUB Token
0 ETH0.0052337117.67407479
Transfer161047752022-12-03 14:06:23786 days ago1670076383IN
Kyuubi: $KYUB Token
0 ETH0.0046426515.66537536
Approve157533822022-10-15 12:01:47835 days ago1665835307IN
Kyuubi: $KYUB Token
0 ETH0.0007347215.75014156
Approve157533762022-10-15 12:00:35835 days ago1665835235IN
Kyuubi: $KYUB Token
0 ETH0.0006835514.65319736
Approve157533752022-10-15 12:00:23835 days ago1665835223IN
Kyuubi: $KYUB Token
0 ETH0.0007517716.11563729
Approve157533742022-10-15 12:00:11835 days ago1665835211IN
Kyuubi: $KYUB Token
0 ETH0.0007458915.9894579
Approve156587922022-10-02 6:53:23848 days ago1664693603IN
Kyuubi: $KYUB Token
0 ETH0.000131232.81322742
Approve156241352022-09-27 10:36:23853 days ago1664274983IN
Kyuubi: $KYUB Token
0 ETH0.0004912610.53115695
Transfer155813442022-09-21 11:05:59859 days ago1663758359IN
Kyuubi: $KYUB Token
0 ETH0.001383494.59438633
Approve155691022022-09-19 17:40:35860 days ago1663609235IN
Kyuubi: $KYUB Token
0 ETH0.0009329820
Approve155468212022-09-16 14:38:47864 days ago1663339127IN
Kyuubi: $KYUB Token
0 ETH0.0006557814.05780339
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
208974762024-10-05 6:15:11114 days ago1728108911
Kyuubi: $KYUB Token
0.00003451 ETH
208974762024-10-05 6:15:11114 days ago1728108911
Kyuubi: $KYUB Token
0.0000009 ETH
208974762024-10-05 6:15:11114 days ago1728108911
Kyuubi: $KYUB Token
0.00003541 ETH
194997602024-03-23 20:46:11309 days ago1711226771
Kyuubi: $KYUB Token
0.00005074 ETH
194997602024-03-23 20:46:11309 days ago1711226771
Kyuubi: $KYUB Token
0.00000133 ETH
194997602024-03-23 20:46:11309 days ago1711226771
Kyuubi: $KYUB Token
0.00005207 ETH
187448212023-12-08 23:31:23415 days ago1702078283
Kyuubi: $KYUB Token
0.00001754 ETH
187448212023-12-08 23:31:23415 days ago1702078283
Kyuubi: $KYUB Token
0.00000046 ETH
187448212023-12-08 23:31:23415 days ago1702078283
Kyuubi: $KYUB Token
0.000018 ETH
186692802023-11-28 9:38:23426 days ago1701164303
Kyuubi: $KYUB Token
0.00001759 ETH
186692802023-11-28 9:38:23426 days ago1701164303
Kyuubi: $KYUB Token
0.00000046 ETH
186692802023-11-28 9:38:23426 days ago1701164303
Kyuubi: $KYUB Token
0.00001805 ETH
186487782023-11-25 12:41:47429 days ago1700916107
Kyuubi: $KYUB Token
0.00001764 ETH
186487782023-11-25 12:41:47429 days ago1700916107
Kyuubi: $KYUB Token
0.00000046 ETH
186487782023-11-25 12:41:47429 days ago1700916107
Kyuubi: $KYUB Token
0.0000181 ETH
175429722023-06-23 14:50:23584 days ago1687531823
Kyuubi: $KYUB Token
0.000012 ETH
175429722023-06-23 14:50:23584 days ago1687531823
Kyuubi: $KYUB Token
0.00000031 ETH
175429722023-06-23 14:50:23584 days ago1687531823
Kyuubi: $KYUB Token
0.00001232 ETH
174922792023-06-16 12:04:35591 days ago1686917075
Kyuubi: $KYUB Token
0.000012 ETH
174922792023-06-16 12:04:35591 days ago1686917075
Kyuubi: $KYUB Token
0.00000031 ETH
174922792023-06-16 12:04:35591 days ago1686917075
Kyuubi: $KYUB Token
0.00001232 ETH
172952082023-05-19 18:07:23618 days ago1684519643
Kyuubi: $KYUB Token
0.000012 ETH
172952082023-05-19 18:07:23618 days ago1684519643
Kyuubi: $KYUB Token
0.00000031 ETH
172952082023-05-19 18:07:23618 days ago1684519643
Kyuubi: $KYUB Token
0.00001232 ETH
172952002023-05-19 18:05:47618 days ago1684519547
Kyuubi: $KYUB Token
0.000012 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Kyuubi

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity 0.8.10;

interface IBEP20 {
  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 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 ITaxSplitter {
    function taxReceive() external payable;    
}

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() public 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;
    }
}
contract Kyuubi is IBEP20, Ownable
{
    //TresFlames
    //mapping
    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 isPair;
    mapping (address => bool) public isBlacklisted;
    //strings
    string private constant _name = 'Kyuubi';
    string private constant _symbol = '$KYUB';
    //uints
    uint private constant DefaultLiquidityLockTime=7 days;
    uint public constant InitialSupply= 10**12 * 10**_decimals;
    uint public _circulatingSupply =InitialSupply;
    uint public buyTax = 90;
    uint public sellTax = 90;
    uint public transferTax = 90;
    uint public liquidityTax=200;
    uint public splitterTax=800;
    uint constant TAX_DENOMINATOR=1000;
    uint constant MAXTAXDENOMINATOR=10;
    uint public swapTreshold=1;
    uint public overLiquifyTreshold=100;
    uint private LaunchTimestamp;
    uint _liquidityUnlockTime;
    uint8 private constant _decimals = 18;
    uint256 public maxTransactionAmount;
    uint256 public maxWalletBalance;

    IdexRouter private  _dexRouter;
    
    //addresses
    address private dexRouter=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address private _dexPairAddress;
    address constant deadWallet = 0x000000000000000000000000000000000000dEaD;
    address payable public taxSplitter;
    address public multisig;
    //modifiers
    modifier onlyMultisig() {
        require(msg.sender == multisig);
        _;
    }

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

    //bools
    bool private _isSwappingContractModifier;
    bool public blacklistMode = true;
    bool public manualSwap;
    bool public LPReleaseLimitedTo20Percent;
    
    //events
    event MultisigUpdate(address multisig);
    event BlacklistStatusChange(bool status);
    event UpdateTaxSplitter(address _contract);
    event SwapThresholdChange(uint threshold);
    event OverLiquifiedThresholdChange(uint threshold);
    event OnSetTaxes(uint buy, uint sell, uint transfer_, uint splitter,uint liquidity);
    event ManualSwapChange(bool status);
    event MaxWalletBalanceUpdated(uint256 percent);
    event MaxTransactionAmountUpdated(uint256 percent);
    event ExcludeAccount(address account, bool exclude);
    event ExcludeFromLimits(address account, bool exclude);
    event OwnerSwap();
    event OnEnableTrading();
    event OnProlongLPLock(uint UnlockTimestamp);
    event OnReleaseLP();
    event RecoverBNB();
    event BlacklistUpdated();
    event NewPairSet(address Pair, bool Add);
    event Release20PercentLP();
    event NewRouterSet(address _newdex);
    
    constructor () {
        uint deployerBalance=_circulatingSupply;
        _balances[msg.sender] = deployerBalance;
        emit Transfer(address(0), msg.sender, deployerBalance);
        _dexRouter = IdexRouter(dexRouter);
        _dexPairAddress = IdexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        isPair[_dexPairAddress]=true;
        
        taxSplitter = payable(0xbF2d9657BdF428AFd4F7f1B7f51279E99cc51A82);
        multisig = 0x686cEd60f145fB062BDc82DDecd4FCef26A643D2;

        excludedFromFees[msg.sender]=true;
        excludedFromFees[dexRouter]=true;
        excludedFromFees[address(this)]=true;
        excludedFromFees[taxSplitter]=true;
        excludedFromFees[multisig]=true;
        excludedFromFees[0x505610adB4D5DE12E1586f93355F40a412984132]=true;
        excludedFromLimits[multisig] = true;
        excludedFromLimits[taxSplitter] = true;
        excludedFromLimits[0x505610adB4D5DE12E1586f93355F40a412984132] = true;
        excludedFromLimits[msg.sender] = true;
        excludedFromLimits[deadWallet] = true;
        excludedFromLimits[address(this)] = true;
    }
    
    function enable_blacklist(bool _status) public onlyMultisig {
        blacklistMode = _status;
        emit BlacklistStatusChange (_status);
    }
    function manage_blacklist(address[] calldata addresses, bool status) public onlyMultisig {
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }
        emit BlacklistUpdated();
    }
    function setMultisig(address _multisig) external onlyMultisig {
        multisig = _multisig;
        excludedFromFees[_multisig] = true;
        excludedFromLimits[_multisig] = true;
        emit MultisigUpdate(_multisig);
    }
    function ChangeTaxSplitter(address newContract) public onlyMultisig{
        taxSplitter=payable(newContract);
        excludedFromFees[newContract] = true;
        excludedFromLimits[newContract] = true;
        emit UpdateTaxSplitter(newContract);
    }
    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 (
            isPair[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 (
            isPair[recipient] &&
            !excludedAccount
        ) {
            require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxSellTransactionAmount.");
        }

        bool isBuy=isPair[sender];
        bool isSell=isPair[recipient];
        uint tax;
        if(isSell){  
            uint SellTaxDuration=48 hours;          
            if(block.timestamp<LaunchTimestamp+SellTaxDuration){
                tax=_getStartTax(SellTaxDuration,200);
                }else tax=sellTax;
            }
        else if(isBuy){
            uint BuyTaxDuration=10 minutes;
            if(block.timestamp<LaunchTimestamp+BuyTaxDuration){
                tax=_getStartTax(BuyTaxDuration,200);
            }else tax=buyTax;
        } else tax=transferTax;

        if((sender!=_dexPairAddress)&&(!manualSwap)&&(!_isSwappingContractModifier))
            _swapContractToken(false);
        uint contractToken=_calculateFee(amount, tax, splitterTax+liquidityTax);
        uint taxedAmount=amount-contractToken;

        _balances[sender]-=amount;
        _balances[address(this)] += contractToken;
        _balances[recipient]+=taxedAmount;
        
        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) public onlyMultisig{
        require(newSwapTresholdPermille<=10);//MaxTreshold= 1%
        swapTreshold=newSwapTresholdPermille;
        emit SwapThresholdChange(newSwapTresholdPermille);
    }
    function SetOverLiquifiedTreshold(uint newOverLiquifyTresholdPermille) public onlyMultisig{
        require(newOverLiquifyTresholdPermille<=1000);
        overLiquifyTreshold=newOverLiquifyTresholdPermille;
        emit OverLiquifiedThresholdChange(newOverLiquifyTresholdPermille);
    }
    function SetTaxes(uint buy, uint sell, uint transfer_, uint splitter,uint liquidity) public onlyMultisig{
        uint maxTax=TAX_DENOMINATOR/MAXTAXDENOMINATOR;
        require(buy<=maxTax&&sell<=maxTax&&transfer_<=maxTax,"Tax exceeds maxTax");
        require(splitter+liquidity==TAX_DENOMINATOR,"Taxes don't add up to denominator");
        
        buyTax=buy;
        sellTax=sell;
        transferTax=transfer_;
        splitterTax=splitter;
        liquidityTax=liquidity;
        emit OnSetTaxes(buy, sell, transfer_, splitter,liquidity);
    }
    
    function isOverLiquified() public view returns(bool){
        return _balances[_dexPairAddress]>_circulatingSupply*overLiquifyTreshold/1000;
    }
    function _swapContractToken(bool ignoreLimits) private lockTheSwap{
        uint contractBalance=_balances[address(this)];
        uint totalTax=liquidityTax+splitterTax;
        uint tokenToSwap=_balances[_dexPairAddress]*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 tokenForSplitter= tokenToSwap-tokenForLiquidity;

        uint LiqHalf=tokenForLiquidity/2;
        uint swapToken=LiqHalf+tokenForSplitter;
        uint initialBNBBalance = address(this).balance;
        _swapTokenForBNB(swapToken);
        uint newBNB=(address(this).balance - initialBNBBalance);
        if(tokenForLiquidity>0){
            uint liqBNB = (newBNB*LiqHalf)/swapToken;
            _addLiquidity(LiqHalf, liqBNB);
        }
        ITaxSplitter(taxSplitter).taxReceive{value: address(this).balance}();
    }
    function _swapTokenForBNB(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 bnbamount) private {
        _approve(address(this), address(_dexRouter), tokenamount);
        _dexRouter.addLiquidityETH{value: bnbamount}(
            address(this),
            tokenamount,
            0,
            0,
            address(this),
            block.timestamp
        );
    }
    function getLiquidityReleaseTimeInSeconds() public view returns (uint){
        if(block.timestamp<_liquidityUnlockTime)
            return _liquidityUnlockTime-block.timestamp;
        return 0;
    }
    function getBurnedTokens() public view returns(uint){
        return (InitialSupply-_circulatingSupply)+_balances[address(0xdead)];
    }
    function SetPair(address Pair, bool Add) public onlyMultisig{
        require(Pair!=_dexPairAddress,"can't change pancake");
        isPair[Pair]=Add;
        emit NewPairSet(Pair,Add);
    }
    function SwitchManualSwap(bool manual) public onlyMultisig{
        manualSwap=manual;
        emit ManualSwapChange(manual);
    }
    function SwapContractToken() public onlyMultisig{
        _swapContractToken(true);
        emit OwnerSwap();
    }

    function SetNewRouter(address _newdex) public onlyMultisig{
        dexRouter = _newdex;
        emit NewRouterSet(_newdex);
    }

    function setMaxWalletBalancePercent(uint256 percent) external onlyMultisig {
        require(percent >= 10, "min 1%");
        require(percent <= 1000, "max 100%");
        maxWalletBalance = InitialSupply * percent / 1000;
        emit MaxWalletBalanceUpdated(percent);
    }
    
    function setMaxTransactionAmount(uint256 percent) public onlyMultisig {
        require(percent >= 25, "min 0.25%");
        require(percent <= 10000, "max 100%");
        maxTransactionAmount = InitialSupply * percent / 10000;
        emit MaxTransactionAmountUpdated(percent);
    }
    
    function ExcludeAccountFromFees(address account, bool exclude) public onlyMultisig{
        require(account!=address(this),"can't Include the contract");
        excludedFromFees[account]=exclude;
        emit ExcludeAccount(account,exclude);
    }
    
    function setExcludedAccountFromLimits(address account, bool exclude) public onlyMultisig{
        excludedFromLimits[account]=exclude;
        emit ExcludeFromLimits(account,exclude);
    }
    function isExcludedFromLimits(address account) public view returns(bool) {
        return excludedFromLimits[account];
    }
    
    function SetupEnableTrading() public onlyOwner{
        require(LaunchTimestamp==0,"AlreadyLaunched");
        LaunchTimestamp=block.timestamp;
        maxWalletBalance = InitialSupply * 30 / 1000;
        maxTransactionAmount = InitialSupply * 100 / 10000;
        emit OnEnableTrading();
    }
    
    function limitLiquidityReleaseTo20Percent() public onlyMultisig{
        LPReleaseLimitedTo20Percent=true;
        emit Release20PercentLP();
    }
    function LockLiquidityForSeconds(uint secondsUntilUnlock) public onlyMultisig{
        _prolongLiquidityLock(secondsUntilUnlock+block.timestamp);
    }
    function _prolongLiquidityLock(uint newUnlockTime) private{
        require(newUnlockTime>_liquidityUnlockTime);
        _liquidityUnlockTime=newUnlockTime;
        emit OnProlongLPLock(_liquidityUnlockTime);
    }
    
    function LiquidityRelease() public onlyMultisig {
        require(block.timestamp >= _liquidityUnlockTime, "Not yet unlocked");

        IBEP20 liquidityToken = IBEP20(_dexPairAddress);
        uint amount = liquidityToken.balanceOf(address(this));
        if(LPReleaseLimitedTo20Percent)
        {
            _liquidityUnlockTime=block.timestamp+DefaultLiquidityLockTime;
            amount=amount*2/10;
        }
        liquidityToken.transfer(msg.sender, amount);
        emit OnReleaseLP();
    }

    receive() external payable {}

    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 view override returns (uint) {
        return _circulatingSupply;
    }
    function balanceOf(address account) public view override returns (uint) {
        return _balances[account];
    }
    function transfer(address recipient, uint amount) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }
    function allowance(address _owner, address spender) external view override returns (uint) {
        return _allowances[_owner][spender];
    }
    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;
    }
    function emergencyBNBrecovery(uint256 amountPercentage) external onlyMultisig {
        uint256 amountBNB = address(this).balance;
        payable(msg.sender).transfer(amountBNB * amountPercentage / 100);
        emit RecoverBNB();
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"BlacklistStatusChange","type":"event"},{"anonymous":false,"inputs":[],"name":"BlacklistUpdated","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":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"ManualSwapChange","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":[{"indexed":false,"internalType":"address","name":"multisig","type":"address"}],"name":"MultisigUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Pair","type":"address"},{"indexed":false,"internalType":"bool","name":"Add","type":"bool"}],"name":"NewPairSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newdex","type":"address"}],"name":"NewRouterSet","type":"event"},{"anonymous":false,"inputs":[],"name":"OnEnableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"UnlockTimestamp","type":"uint256"}],"name":"OnProlongLPLock","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":"splitter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"OnSetTaxes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"OverLiquifiedThresholdChange","type":"event"},{"anonymous":false,"inputs":[],"name":"OwnerSwap","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":[],"name":"RecoverBNB","type":"event"},{"anonymous":false,"inputs":[],"name":"Release20PercentLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"threshold","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_contract","type":"address"}],"name":"UpdateTaxSplitter","type":"event"},{"inputs":[{"internalType":"address","name":"newContract","type":"address"}],"name":"ChangeTaxSplitter","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":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LPReleaseLimitedTo20Percent","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LiquidityRelease","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"secondsUntilUnlock","type":"uint256"}],"name":"LockLiquidityForSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newdex","type":"address"}],"name":"SetNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newOverLiquifyTresholdPermille","type":"uint256"}],"name":"SetOverLiquifiedTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"Pair","type":"address"},{"internalType":"bool","name":"Add","type":"bool"}],"name":"SetPair","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":"splitter","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SetupEnableTrading","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":[],"name":"_circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"buyTax","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":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"emergencyBNBrecovery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBurnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiquidityReleaseTimeInSeconds","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":"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":"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":[{"internalType":"address","name":"","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitLiquidityReleaseTo20Percent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"multisig","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"address","name":"_multisig","type":"address"}],"name":"setMultisig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapTresholdPermille","type":"uint256"}],"name":"setSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"splitterTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"taxSplitter","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a62000546565b620000239064e8d4a510006200055e565b600755605a60088190556009819055600a5560c8600b55610320600c556001600d556064600e55601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556017805460ff60a81b1916600160a81b1790553480156200009057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600754336000818152600160209081526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3601454601380546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000176573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019c919062000580565b6001600160a01b031663c9c6539630601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000225919062000580565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000273573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000299919062000580565b601580546001600160a01b039283166001600160a01b031991821681179092556000918252600560209081526040808420805460ff19908116600190811790925560168054861673bf2d9657bdf428afd4f7f1b7f51279e99cc51a821781556017805490961673686ced60f145fb062bdc82ddecd4fcef26a643d21786553380885260048652848820805484168517905560145489168852848820805484168517905530808952858920805485168617905582548a168952858920805485168617905587548a16895285892080548516861790557f8ca88601b52ef3c7f8399722b49250cf95002780d0d350468ca4992603e6c90680548516861790559654891688526003909552838720805483168417905554909616855281852080548716821790557f326f9ca5ad2f62c7983f9b6532ff7d2c87c49cb9eb4790a70e94e808a469d0bf805487168217905591845280842080548616831790557f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c80548616831790559183529120805490921617905550620005ab565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004885781600019048211156200046c576200046c62000431565b808516156200047a57918102915b93841c93908002906200044c565b509250929050565b600082620004a15750600162000540565b81620004b05750600062000540565b8160018114620004c95760028114620004d457620004f4565b600191505062000540565b60ff841115620004e857620004e862000431565b50506001821b62000540565b5060208310610133831016604e8410600b841016171562000519575081810a62000540565b62000525838362000447565b80600019048211156200053c576200053c62000431565b0290505b92915050565b60006200055760ff84168362000490565b9392505050565b60008160001904831182151516156200057b576200057b62000431565b500290565b6000602082840312156200059357600080fd5b81516001600160a01b03811681146200055757600080fd5b612de980620005bb6000396000f3fe6080604052600436106103855760003560e01c8063896648c1116101d1578063c3a3c03211610102578063e0d2f9eb116100a0578063f3283fba1161006f578063f3283fba14610a38578063f40a563a14610a58578063f7942b6314610a78578063fe575a8714610a9857600080fd5b8063e0d2f9eb146109b2578063e52fb9ec146109d2578063e5e31b13146109e8578063f2fde38b14610a1857600080fd5b8063cc1776d3116100dc578063cc1776d314610906578063cfd1940e1461091c578063dbe66ca01461093c578063dd62ed3e1461096c57600080fd5b8063c3a3c032146108c6578063c3f4f54f146108db578063c8c8ebe4146108f057600080fd5b8063a457c2d71161016f578063baa88ea911610149578063baa88ea91461085a578063bbde77c11461087a578063bc43d84914610890578063be617fa0146108b057600080fd5b8063a457c2d714610805578063a68bdac714610825578063a9059cbb1461083a57600080fd5b806395d89b41116101ab57806395d89b411461078057806397e78f35146107ae5780639b39b65f146107ce578063a253c06e146107ef57600080fd5b8063896648c11461073f5780638da5cb5b146107215780638e2eee841461076057600080fd5b806339509351116102b65780635cce86cd116102545780637b9e987a116102235780637b9e987a146106d65780638124f7ac146106eb578063868b014114610701578063893d20e81461072157600080fd5b80635cce86cd146106325780635e562f3b1461066b57806370a082311461068b578063715018a6146106c157600080fd5b806346e35f031161029057806346e35f03146105c65780634783c35b146105db5780634f7041a5146105fb57806351bc3c851461061157600080fd5b8063395093511461055957806340c3c8191461057957806341aec357146105b157600080fd5b806323b872dd116103235780632c92293c116102fd5780632c92293c146104dd57806330cc1cd1146104fd578063313ce5671461051d5780633227925f1461053957600080fd5b806323b872dd1461048757806325049036146104a75780632a8b0a24146104bd57600080fd5b80630eff4c641161035f5780630eff4c641461041957806318160ddd1461043d5780631e293c10146104525780631eb25d131461047257600080fd5b80630612f39d1461039157806306fdde03146103a8578063095ea7b3146103e957600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610ac8565b005b3480156103b457600080fd5b506040805180820190915260068152654b797575626960d01b60208201525b6040516103e0919061287b565b60405180910390f35b3480156103f557600080fd5b506104096104043660046128e5565b610c78565b60405190151581526020016103e0565b34801561042557600080fd5b5061042f600e5481565b6040519081526020016103e0565b34801561044957600080fd5b5060075461042f565b34801561045e57600080fd5b506103a661046d366004612911565b610c8f565b34801561047e57600080fd5b5061042f610d8d565b34801561049357600080fd5b506104096104a236600461292a565b610dab565b3480156104b357600080fd5b5061042f600c5481565b3480156104c957600080fd5b506103a66104d8366004612911565b610e42565b3480156104e957600080fd5b506103a66104f8366004612911565b610eca565b34801561050957600080fd5b506103a661051836600461296b565b610fbe565b34801561052957600080fd5b50604051601281526020016103e0565b34801561054557600080fd5b506103a6610554366004612911565b611052565b34801561056557600080fd5b506104096105743660046128e5565b61107e565b34801561058557600080fd5b50601654610599906001600160a01b031681565b6040516001600160a01b0390911681526020016103e0565b3480156105bd57600080fd5b506103a66110b5565b3480156105d257600080fd5b50610409611101565b3480156105e757600080fd5b50601754610599906001600160a01b031681565b34801561060757600080fd5b5061042f60085481565b34801561061d57600080fd5b5060175461040990600160b01b900460ff1681565b34801561063e57600080fd5b5061040961064d36600461296b565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561067757600080fd5b506103a661068636600461299d565b611141565b34801561069757600080fd5b5061042f6106a636600461296b565b6001600160a01b031660009081526001602052604090205490565b3480156106cd57600080fd5b506103a66111a5565b3480156106e257600080fd5b506103a6611228565b3480156106f757600080fd5b5061042f600a5481565b34801561070d57600080fd5b506103a661071c36600461299d565b611340565b34801561072d57600080fd5b506000546001600160a01b0316610599565b34801561074b57600080fd5b5060175461040990600160a81b900460ff1681565b34801561076c57600080fd5b506103a661077b3660046129ba565b6113a9565b34801561078c57600080fd5b506040805180820190915260058152641225acaaa160d91b60208201526103d3565b3480156107ba57600080fd5b506103a66107c936600461296b565b61145e565b3480156107da57600080fd5b5060175461040990600160b81b900460ff1681565b3480156107fb57600080fd5b5061042f60075481565b34801561081157600080fd5b506104096108203660046128e5565b6114c3565b34801561083157600080fd5b506103a661153f565b34801561084657600080fd5b506104096108553660046128e5565b611594565b34801561086657600080fd5b506103a6610875366004612a40565b6115a1565b34801561088657600080fd5b5061042f60125481565b34801561089c57600080fd5b506103a66108ab366004612911565b6116fa565b3480156108bc57600080fd5b5061042f600b5481565b3480156108d257600080fd5b5061042f611755565b3480156108e757600080fd5b5061042f611775565b3480156108fc57600080fd5b5061042f60115481565b34801561091257600080fd5b5061042f60095481565b34801561092857600080fd5b506103a6610937366004612911565b6117d6565b34801561094857600080fd5b5061040961095736600461296b565b60046020526000908152604090205460ff1681565b34801561097857600080fd5b5061042f610987366004612a7b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156109be57600080fd5b506103a66109cd366004612ab4565b611830565b3480156109de57600080fd5b5061042f600d5481565b3480156109f457600080fd5b50610409610a0336600461296b565b60056020526000908152604090205460ff1681565b348015610a2457600080fd5b506103a6610a3336600461296b565b611904565b348015610a4457600080fd5b506103a6610a5336600461296b565b6119fd565b348015610a6457600080fd5b506103a6610a73366004612ab4565b611a91565b348015610a8457600080fd5b506103a6610a93366004612ab4565b611b59565b348015610aa457600080fd5b50610409610ab336600461296b565b60066020526000908152604090205460ff1681565b6017546001600160a01b03163314610adf57600080fd5b601054421015610b295760405162461bcd60e51b815260206004820152601060248201526f139bdd081e595d081d5b9b1bd8dad95960821b60448201526064015b60405180910390fd5b6015546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a9190612ae2565b601754909150600160b81b900460ff1615610bd957610bbc62093a8042612b11565b601055600a610bcc826002612b29565b610bd69190612b48565b90505b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4a9190612b6a565b506040517f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67590600090a15050565b6000610c85338484611bcc565b5060015b92915050565b6017546001600160a01b03163314610ca657600080fd5b6019811015610ce35760405162461bcd60e51b81526020600482015260096024820152686d696e20302e32352560b81b6044820152606401610b20565b612710811115610d205760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610b20565b61271081610d306012600a612c6b565b610d3f9064e8d4a51000612b29565b610d499190612b29565b610d539190612b48565b6011556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac906020015b60405180910390a150565b610d996012600a612c6b565b610da89064e8d4a51000612b29565b81565b6000610db8848484611cbf565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610e235760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401610b20565b610e378533610e328685612c7a565b611bcc565b506001949350505050565b6017546001600160a01b03163314610e5957600080fd5b47336108fc6064610e6a8585612b29565b610e749190612b48565b6040518115909202916000818181858888f19350505050158015610e9c573d6000803e3d6000fd5b506040517fc596e4e14304bf380fec9eb503fbcf94714f378349710015b4df245b01033afa90600090a15050565b6017546001600160a01b03163314610ee157600080fd5b600a811015610f1b5760405162461bcd60e51b81526020600482015260066024820152656d696e20312560d01b6044820152606401610b20565b6103e8811115610f585760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610b20565b6103e881610f686012600a612c6b565b610f779064e8d4a51000612b29565b610f819190612b29565b610f8b9190612b48565b6012556040518181527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a9990602001610d82565b6017546001600160a01b03163314610fd557600080fd5b601680546001600160a01b0319166001600160a01b0383169081179091556000818152600460209081526040808320805460ff199081166001908117909255600384529382902080549094161790925590519182527f9366b3c89c28c8546c2b5ffedaaebc1aa4f6c8a06a97f735d00a3d86ac0625c79101610d82565b6017546001600160a01b0316331461106957600080fd5b61107b6110764283612b11565b611e92565b50565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610c85918590610e32908690612b11565b6017546001600160a01b031633146110cc57600080fd5b6110d66001611ed5565b6040517f703db25eb5fd328335fc797436bbbbd25d5575588bd991102facd962c4d41b9290600090a1565b60006103e8600e546007546111169190612b29565b6111209190612b48565b6015546001600160a01b031660009081526001602052604090205411919050565b6017546001600160a01b0316331461115857600080fd5b60178054821515600160a81b0260ff60a81b199091161790556040517fecfaacf5e291e532c372363b39be86acbee05e57acb4ff67acceb0c7110a7bc090610d8290831515815260200190565b336111b86000546001600160a01b031690565b6001600160a01b0316146111de5760405162461bcd60e51b8152600401610b2090612c91565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3361123b6000546001600160a01b031690565b6001600160a01b0316146112615760405162461bcd60e51b8152600401610b2090612c91565b600f54156112a35760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b6044820152606401610b20565b42600f556103e86112b66012600a612c6b565b6112c59064e8d4a51000612b29565b6112d090601e612b29565b6112da9190612b48565b6012908155612710906112ee90600a612c6b565b6112fd9064e8d4a51000612b29565b611308906064612b29565b6113129190612b48565b6011556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b6017546001600160a01b0316331461135757600080fd5b60178054821515600160b01b0260ff60b01b199091161790556040517f3db17fb4d29ca5a33dc4750f7205263855fb8b82cc89d6c418a04b60f58b429d90610d8290831515815260200190565b905090565b6017546001600160a01b031633146113c057600080fd5b60005b8281101561142f5781600660008686858181106113e2576113e2612cc6565b90506020020160208101906113f7919061296b565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561142881612cdc565b90506113c3565b506040517f890e6981f892b367aea9f0b31589753714df5ee88d6dde2c0ddaffce7b9915d990600090a1505050565b6017546001600160a01b0316331461147557600080fd5b601480546001600160a01b0319166001600160a01b0383169081179091556040519081527f117661539ed67d391940fa7b78853c234b4e9a40d616d75923ae8db26672833a90602001610d82565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156115265760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610b20565b6115353385610e328685612c7a565b5060019392505050565b6017546001600160a01b0316331461155657600080fd5b6017805460ff60b81b1916600160b81b1790556040517f6ea46eef5c8fc4ad72144e672cadd89b6d28bc14a84977fea8bfe0ac63c1194090600090a1565b6000610c85338484611cbf565b6017546001600160a01b031633146115b857600080fd5b60006115c7600a6103e8612b48565b90508086111580156115d95750808511155b80156115e55750808411155b6116265760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b6044820152606401610b20565b6103e86116338385612b11565b1461168a5760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b6064820152608401610b20565b60088690556009859055600a849055600c839055600b829055604080518781526020810187905290810185905260608101849052608081018390527f07d167ef63e413076f3e7e19f733b66f7ab5fd83fd7b437428f115315687ef6e9060a00160405180910390a1505050505050565b6017546001600160a01b0316331461171157600080fd5b6103e881111561172057600080fd5b600e8190556040518181527fa072eee57b8e01913ba01eab29d8a81117cf780e6c8984a3494477ce9cee846d90602001610d82565b600060105442101561176f57426010546113a49190612c7a565b50600090565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d546007546117b36012600a612c6b565b6117c29064e8d4a51000612b29565b6117cc9190612c7a565b6113a49190612b11565b6017546001600160a01b031633146117ed57600080fd5b600a8111156117fb57600080fd5b600d8190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc90602001610d82565b6017546001600160a01b0316331461184757600080fd5b6001600160a01b0382163014156118a05760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e74726163740000000000006044820152606401610b20565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed491015b60405180910390a15050565b336119176000546001600160a01b031690565b6001600160a01b03161461193d5760405162461bcd60e51b8152600401610b2090612c91565b6001600160a01b0381166119a25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b20565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6017546001600160a01b03163314611a1457600080fd5b601780546001600160a01b0319166001600160a01b0383169081179091556000818152600460209081526040808320805460ff199081166001908117909255600384529382902080549094161790925590519182527fdc0b2ff2a40bfb0cfd1ce8f446634ae38d98d2013d2c81c4c006ac62652229729101610d82565b6017546001600160a01b03163314611aa857600080fd5b6015546001600160a01b0383811691161415611afd5760405162461bcd60e51b815260206004820152601460248201527363616e2774206368616e67652070616e63616b6560601b6044820152606401610b20565b6001600160a01b038216600081815260056020908152604091829020805460ff19168515159081179091558251938452908301527f6765bb5e5ecad4581ce8f9322a9c218e75a54a7c4af6217752833adb834511ac91016118f8565b6017546001600160a01b03163314611b7057600080fd5b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9291016118f8565b6001600160a01b038316611c165760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610b20565b6001600160a01b038216611c5e5760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610b20565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d0a5760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610b20565b6001600160a01b038216611d535760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610b20565b601754600160a81b900460ff1615611de1576001600160a01b03831660009081526006602052604090205460ff16158015611da757506001600160a01b03821660009081526006602052604090205460ff16155b611de15760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610b20565b6001600160a01b03831660009081526004602052604090205460ff1680611e2057506001600160a01b03821660009081526004602052604090205460ff165b15611e3557611e308383836120a1565b505050565b6000600f5411611e875760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610b20565b611e308383836121b4565b6010548111611ea057600080fd5b60108190556040518181527f8ff9dc93846a022986f54e8f219a1fa780225726858e39e850da826852b4042e90602001610d82565b6017805460ff60a01b1916600160a01b17905530600090815260016020526040812054600c54600b54919291611f0b9190612b11565b600d546015546001600160a01b0316600090815260016020526040812054929350916103e891611f3a91612b29565b611f449190612b48565b905081611f5357505050612091565b8315611f6f575030600090815260016020526040902054611f7f565b80831015611f7f57505050612091565b6000611f89611101565b611fab5782600b5483611f9c9190612b29565b611fa69190612b48565b611fae565b60005b90506000611fbc8284612c7a565b90506000611fcb600284612b48565b90506000611fd98383612b11565b905047611fe582612608565b6000611ff18247612c7a565b9050851561201e576000836120068684612b29565b6120109190612b48565b905061201c8582612757565b505b601660009054906101000a90046001600160a01b03166001600160a01b0316637dc39276476040518263ffffffff1660e01b81526004016000604051808303818588803b15801561206e57600080fd5b505af1158015612082573d6000803e3d6000fd5b50505050505050505050505050505b506017805460ff60a01b19169055565b6001600160a01b038316600090815260016020526040902054818110156121055760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610b20565b6001600160a01b0384166000908152600160205260408120805484929061212d908490612c7a565b90915550506001600160a01b0383166000908152600160205260408120805484929061215a908490612b11565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121a691815260200190565b60405180910390a350505050565b6001600160a01b038316600090815260016020526040902054818110156122185760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610b20565b6001600160a01b03841660009081526003602052604081205460ff168061225757506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b03861660009081526005602052604090205490915060ff168015612280575080155b1561236e576011548311156122e85760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b20565b6001600160a01b03841660009081526001602052604090205460125461230e8583612b11565b11156123685760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610b20565b50612411565b6001600160a01b03841660009081526005602052604090205460ff168015612394575080155b15612411576011548311156124115760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610b20565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff928316921690811561247a57600f546202a30090612455908290612b11565b42101561246e576124678160c8612808565b9150612474565b60095491505b506124b3565b82156124ae57600f5461025890612492908290612b11565b4210156124a4576124678160c8612808565b50506008546124b3565b50600a545b6015546001600160a01b038981169116148015906124db5750601754600160b01b900460ff16155b80156124f15750601754600160a01b900460ff16155b15612500576125006000611ed5565b600061251c8783600b54600c546125179190612b11565b61284e565b9050600061252a8289612c7a565b6001600160a01b038b16600090815260016020526040812080549293508a92909190612557908490612c7a565b9091555050306000908152600160205260408120805484929061257b908490612b11565b90915550506001600160a01b038916600090815260016020526040812080548392906125a8908490612b11565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125f491815260200190565b60405180910390a350505050505050505050565b6013546126209030906001600160a01b031683611bcc565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061265557612655612cc6565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156126ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d29190612cf7565b816001815181106126e5576126e5612cc6565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac9479061272b908590600090869030904290600401612d14565b600060405180830381600087803b15801561274557600080fd5b505af1925050508015611e3057505050565b60135461276f9030906001600160a01b031684611bcc565b60135460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156127dc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128019190612d85565b5050505050565b600080600f54426128199190612c7a565b90508381612828603286612c7a565b6128329190612b29565b61283c9190612b48565b6128469084612c7a565b949350505050565b600061285c6103e880612b29565b826128678587612b29565b6128719190612b29565b6128469190612b48565b600060208083528351808285015260005b818110156128a85785810183015185820160400152820161288c565b818111156128ba576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461107b57600080fd5b600080604083850312156128f857600080fd5b8235612903816128d0565b946020939093013593505050565b60006020828403121561292357600080fd5b5035919050565b60008060006060848603121561293f57600080fd5b833561294a816128d0565b9250602084013561295a816128d0565b929592945050506040919091013590565b60006020828403121561297d57600080fd5b8135612988816128d0565b9392505050565b801515811461107b57600080fd5b6000602082840312156129af57600080fd5b81356129888161298f565b6000806000604084860312156129cf57600080fd5b833567ffffffffffffffff808211156129e757600080fd5b818601915086601f8301126129fb57600080fd5b813581811115612a0a57600080fd5b8760208260051b8501011115612a1f57600080fd5b60209283019550935050840135612a358161298f565b809150509250925092565b600080600080600060a08688031215612a5857600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612a8e57600080fd5b8235612a99816128d0565b91506020830135612aa9816128d0565b809150509250929050565b60008060408385031215612ac757600080fd5b8235612ad2816128d0565b91506020830135612aa98161298f565b600060208284031215612af457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115612b2457612b24612afb565b500190565b6000816000190483118215151615612b4357612b43612afb565b500290565b600082612b6557634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612b7c57600080fd5b81516129888161298f565b600181815b80851115612bc2578160001904821115612ba857612ba8612afb565b80851615612bb557918102915b93841c9390800290612b8c565b509250929050565b600082612bd957506001610c89565b81612be657506000610c89565b8160018114612bfc5760028114612c0657612c22565b6001915050610c89565b60ff841115612c1757612c17612afb565b50506001821b610c89565b5060208310610133831016604e8410600b8410161715612c45575081810a610c89565b612c4f8383612b87565b8060001904821115612c6357612c63612afb565b029392505050565b600061298860ff841683612bca565b600082821015612c8c57612c8c612afb565b500390565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612cf057612cf0612afb565b5060010190565b600060208284031215612d0957600080fd5b8151612988816128d0565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d645784516001600160a01b031683529383019391830191600101612d3f565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612d9a57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220ce5a1ff84701375fdccdbf73f3c07cc3f2ed5a35343861e59f7696dfd8cb44ef64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106103855760003560e01c8063896648c1116101d1578063c3a3c03211610102578063e0d2f9eb116100a0578063f3283fba1161006f578063f3283fba14610a38578063f40a563a14610a58578063f7942b6314610a78578063fe575a8714610a9857600080fd5b8063e0d2f9eb146109b2578063e52fb9ec146109d2578063e5e31b13146109e8578063f2fde38b14610a1857600080fd5b8063cc1776d3116100dc578063cc1776d314610906578063cfd1940e1461091c578063dbe66ca01461093c578063dd62ed3e1461096c57600080fd5b8063c3a3c032146108c6578063c3f4f54f146108db578063c8c8ebe4146108f057600080fd5b8063a457c2d71161016f578063baa88ea911610149578063baa88ea91461085a578063bbde77c11461087a578063bc43d84914610890578063be617fa0146108b057600080fd5b8063a457c2d714610805578063a68bdac714610825578063a9059cbb1461083a57600080fd5b806395d89b41116101ab57806395d89b411461078057806397e78f35146107ae5780639b39b65f146107ce578063a253c06e146107ef57600080fd5b8063896648c11461073f5780638da5cb5b146107215780638e2eee841461076057600080fd5b806339509351116102b65780635cce86cd116102545780637b9e987a116102235780637b9e987a146106d65780638124f7ac146106eb578063868b014114610701578063893d20e81461072157600080fd5b80635cce86cd146106325780635e562f3b1461066b57806370a082311461068b578063715018a6146106c157600080fd5b806346e35f031161029057806346e35f03146105c65780634783c35b146105db5780634f7041a5146105fb57806351bc3c851461061157600080fd5b8063395093511461055957806340c3c8191461057957806341aec357146105b157600080fd5b806323b872dd116103235780632c92293c116102fd5780632c92293c146104dd57806330cc1cd1146104fd578063313ce5671461051d5780633227925f1461053957600080fd5b806323b872dd1461048757806325049036146104a75780632a8b0a24146104bd57600080fd5b80630eff4c641161035f5780630eff4c641461041957806318160ddd1461043d5780631e293c10146104525780631eb25d131461047257600080fd5b80630612f39d1461039157806306fdde03146103a8578063095ea7b3146103e957600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610ac8565b005b3480156103b457600080fd5b506040805180820190915260068152654b797575626960d01b60208201525b6040516103e0919061287b565b60405180910390f35b3480156103f557600080fd5b506104096104043660046128e5565b610c78565b60405190151581526020016103e0565b34801561042557600080fd5b5061042f600e5481565b6040519081526020016103e0565b34801561044957600080fd5b5060075461042f565b34801561045e57600080fd5b506103a661046d366004612911565b610c8f565b34801561047e57600080fd5b5061042f610d8d565b34801561049357600080fd5b506104096104a236600461292a565b610dab565b3480156104b357600080fd5b5061042f600c5481565b3480156104c957600080fd5b506103a66104d8366004612911565b610e42565b3480156104e957600080fd5b506103a66104f8366004612911565b610eca565b34801561050957600080fd5b506103a661051836600461296b565b610fbe565b34801561052957600080fd5b50604051601281526020016103e0565b34801561054557600080fd5b506103a6610554366004612911565b611052565b34801561056557600080fd5b506104096105743660046128e5565b61107e565b34801561058557600080fd5b50601654610599906001600160a01b031681565b6040516001600160a01b0390911681526020016103e0565b3480156105bd57600080fd5b506103a66110b5565b3480156105d257600080fd5b50610409611101565b3480156105e757600080fd5b50601754610599906001600160a01b031681565b34801561060757600080fd5b5061042f60085481565b34801561061d57600080fd5b5060175461040990600160b01b900460ff1681565b34801561063e57600080fd5b5061040961064d36600461296b565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561067757600080fd5b506103a661068636600461299d565b611141565b34801561069757600080fd5b5061042f6106a636600461296b565b6001600160a01b031660009081526001602052604090205490565b3480156106cd57600080fd5b506103a66111a5565b3480156106e257600080fd5b506103a6611228565b3480156106f757600080fd5b5061042f600a5481565b34801561070d57600080fd5b506103a661071c36600461299d565b611340565b34801561072d57600080fd5b506000546001600160a01b0316610599565b34801561074b57600080fd5b5060175461040990600160a81b900460ff1681565b34801561076c57600080fd5b506103a661077b3660046129ba565b6113a9565b34801561078c57600080fd5b506040805180820190915260058152641225acaaa160d91b60208201526103d3565b3480156107ba57600080fd5b506103a66107c936600461296b565b61145e565b3480156107da57600080fd5b5060175461040990600160b81b900460ff1681565b3480156107fb57600080fd5b5061042f60075481565b34801561081157600080fd5b506104096108203660046128e5565b6114c3565b34801561083157600080fd5b506103a661153f565b34801561084657600080fd5b506104096108553660046128e5565b611594565b34801561086657600080fd5b506103a6610875366004612a40565b6115a1565b34801561088657600080fd5b5061042f60125481565b34801561089c57600080fd5b506103a66108ab366004612911565b6116fa565b3480156108bc57600080fd5b5061042f600b5481565b3480156108d257600080fd5b5061042f611755565b3480156108e757600080fd5b5061042f611775565b3480156108fc57600080fd5b5061042f60115481565b34801561091257600080fd5b5061042f60095481565b34801561092857600080fd5b506103a6610937366004612911565b6117d6565b34801561094857600080fd5b5061040961095736600461296b565b60046020526000908152604090205460ff1681565b34801561097857600080fd5b5061042f610987366004612a7b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156109be57600080fd5b506103a66109cd366004612ab4565b611830565b3480156109de57600080fd5b5061042f600d5481565b3480156109f457600080fd5b50610409610a0336600461296b565b60056020526000908152604090205460ff1681565b348015610a2457600080fd5b506103a6610a3336600461296b565b611904565b348015610a4457600080fd5b506103a6610a5336600461296b565b6119fd565b348015610a6457600080fd5b506103a6610a73366004612ab4565b611a91565b348015610a8457600080fd5b506103a6610a93366004612ab4565b611b59565b348015610aa457600080fd5b50610409610ab336600461296b565b60066020526000908152604090205460ff1681565b6017546001600160a01b03163314610adf57600080fd5b601054421015610b295760405162461bcd60e51b815260206004820152601060248201526f139bdd081e595d081d5b9b1bd8dad95960821b60448201526064015b60405180910390fd5b6015546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a9190612ae2565b601754909150600160b81b900460ff1615610bd957610bbc62093a8042612b11565b601055600a610bcc826002612b29565b610bd69190612b48565b90505b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4a9190612b6a565b506040517f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67590600090a15050565b6000610c85338484611bcc565b5060015b92915050565b6017546001600160a01b03163314610ca657600080fd5b6019811015610ce35760405162461bcd60e51b81526020600482015260096024820152686d696e20302e32352560b81b6044820152606401610b20565b612710811115610d205760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610b20565b61271081610d306012600a612c6b565b610d3f9064e8d4a51000612b29565b610d499190612b29565b610d539190612b48565b6011556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac906020015b60405180910390a150565b610d996012600a612c6b565b610da89064e8d4a51000612b29565b81565b6000610db8848484611cbf565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610e235760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401610b20565b610e378533610e328685612c7a565b611bcc565b506001949350505050565b6017546001600160a01b03163314610e5957600080fd5b47336108fc6064610e6a8585612b29565b610e749190612b48565b6040518115909202916000818181858888f19350505050158015610e9c573d6000803e3d6000fd5b506040517fc596e4e14304bf380fec9eb503fbcf94714f378349710015b4df245b01033afa90600090a15050565b6017546001600160a01b03163314610ee157600080fd5b600a811015610f1b5760405162461bcd60e51b81526020600482015260066024820152656d696e20312560d01b6044820152606401610b20565b6103e8811115610f585760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610b20565b6103e881610f686012600a612c6b565b610f779064e8d4a51000612b29565b610f819190612b29565b610f8b9190612b48565b6012556040518181527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a9990602001610d82565b6017546001600160a01b03163314610fd557600080fd5b601680546001600160a01b0319166001600160a01b0383169081179091556000818152600460209081526040808320805460ff199081166001908117909255600384529382902080549094161790925590519182527f9366b3c89c28c8546c2b5ffedaaebc1aa4f6c8a06a97f735d00a3d86ac0625c79101610d82565b6017546001600160a01b0316331461106957600080fd5b61107b6110764283612b11565b611e92565b50565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610c85918590610e32908690612b11565b6017546001600160a01b031633146110cc57600080fd5b6110d66001611ed5565b6040517f703db25eb5fd328335fc797436bbbbd25d5575588bd991102facd962c4d41b9290600090a1565b60006103e8600e546007546111169190612b29565b6111209190612b48565b6015546001600160a01b031660009081526001602052604090205411919050565b6017546001600160a01b0316331461115857600080fd5b60178054821515600160a81b0260ff60a81b199091161790556040517fecfaacf5e291e532c372363b39be86acbee05e57acb4ff67acceb0c7110a7bc090610d8290831515815260200190565b336111b86000546001600160a01b031690565b6001600160a01b0316146111de5760405162461bcd60e51b8152600401610b2090612c91565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3361123b6000546001600160a01b031690565b6001600160a01b0316146112615760405162461bcd60e51b8152600401610b2090612c91565b600f54156112a35760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b6044820152606401610b20565b42600f556103e86112b66012600a612c6b565b6112c59064e8d4a51000612b29565b6112d090601e612b29565b6112da9190612b48565b6012908155612710906112ee90600a612c6b565b6112fd9064e8d4a51000612b29565b611308906064612b29565b6113129190612b48565b6011556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b6017546001600160a01b0316331461135757600080fd5b60178054821515600160b01b0260ff60b01b199091161790556040517f3db17fb4d29ca5a33dc4750f7205263855fb8b82cc89d6c418a04b60f58b429d90610d8290831515815260200190565b905090565b6017546001600160a01b031633146113c057600080fd5b60005b8281101561142f5781600660008686858181106113e2576113e2612cc6565b90506020020160208101906113f7919061296b565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561142881612cdc565b90506113c3565b506040517f890e6981f892b367aea9f0b31589753714df5ee88d6dde2c0ddaffce7b9915d990600090a1505050565b6017546001600160a01b0316331461147557600080fd5b601480546001600160a01b0319166001600160a01b0383169081179091556040519081527f117661539ed67d391940fa7b78853c234b4e9a40d616d75923ae8db26672833a90602001610d82565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156115265760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610b20565b6115353385610e328685612c7a565b5060019392505050565b6017546001600160a01b0316331461155657600080fd5b6017805460ff60b81b1916600160b81b1790556040517f6ea46eef5c8fc4ad72144e672cadd89b6d28bc14a84977fea8bfe0ac63c1194090600090a1565b6000610c85338484611cbf565b6017546001600160a01b031633146115b857600080fd5b60006115c7600a6103e8612b48565b90508086111580156115d95750808511155b80156115e55750808411155b6116265760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b6044820152606401610b20565b6103e86116338385612b11565b1461168a5760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b6064820152608401610b20565b60088690556009859055600a849055600c839055600b829055604080518781526020810187905290810185905260608101849052608081018390527f07d167ef63e413076f3e7e19f733b66f7ab5fd83fd7b437428f115315687ef6e9060a00160405180910390a1505050505050565b6017546001600160a01b0316331461171157600080fd5b6103e881111561172057600080fd5b600e8190556040518181527fa072eee57b8e01913ba01eab29d8a81117cf780e6c8984a3494477ce9cee846d90602001610d82565b600060105442101561176f57426010546113a49190612c7a565b50600090565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d546007546117b36012600a612c6b565b6117c29064e8d4a51000612b29565b6117cc9190612c7a565b6113a49190612b11565b6017546001600160a01b031633146117ed57600080fd5b600a8111156117fb57600080fd5b600d8190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc90602001610d82565b6017546001600160a01b0316331461184757600080fd5b6001600160a01b0382163014156118a05760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e74726163740000000000006044820152606401610b20565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed491015b60405180910390a15050565b336119176000546001600160a01b031690565b6001600160a01b03161461193d5760405162461bcd60e51b8152600401610b2090612c91565b6001600160a01b0381166119a25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b20565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6017546001600160a01b03163314611a1457600080fd5b601780546001600160a01b0319166001600160a01b0383169081179091556000818152600460209081526040808320805460ff199081166001908117909255600384529382902080549094161790925590519182527fdc0b2ff2a40bfb0cfd1ce8f446634ae38d98d2013d2c81c4c006ac62652229729101610d82565b6017546001600160a01b03163314611aa857600080fd5b6015546001600160a01b0383811691161415611afd5760405162461bcd60e51b815260206004820152601460248201527363616e2774206368616e67652070616e63616b6560601b6044820152606401610b20565b6001600160a01b038216600081815260056020908152604091829020805460ff19168515159081179091558251938452908301527f6765bb5e5ecad4581ce8f9322a9c218e75a54a7c4af6217752833adb834511ac91016118f8565b6017546001600160a01b03163314611b7057600080fd5b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9291016118f8565b6001600160a01b038316611c165760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610b20565b6001600160a01b038216611c5e5760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610b20565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d0a5760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610b20565b6001600160a01b038216611d535760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610b20565b601754600160a81b900460ff1615611de1576001600160a01b03831660009081526006602052604090205460ff16158015611da757506001600160a01b03821660009081526006602052604090205460ff16155b611de15760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610b20565b6001600160a01b03831660009081526004602052604090205460ff1680611e2057506001600160a01b03821660009081526004602052604090205460ff165b15611e3557611e308383836120a1565b505050565b6000600f5411611e875760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610b20565b611e308383836121b4565b6010548111611ea057600080fd5b60108190556040518181527f8ff9dc93846a022986f54e8f219a1fa780225726858e39e850da826852b4042e90602001610d82565b6017805460ff60a01b1916600160a01b17905530600090815260016020526040812054600c54600b54919291611f0b9190612b11565b600d546015546001600160a01b0316600090815260016020526040812054929350916103e891611f3a91612b29565b611f449190612b48565b905081611f5357505050612091565b8315611f6f575030600090815260016020526040902054611f7f565b80831015611f7f57505050612091565b6000611f89611101565b611fab5782600b5483611f9c9190612b29565b611fa69190612b48565b611fae565b60005b90506000611fbc8284612c7a565b90506000611fcb600284612b48565b90506000611fd98383612b11565b905047611fe582612608565b6000611ff18247612c7a565b9050851561201e576000836120068684612b29565b6120109190612b48565b905061201c8582612757565b505b601660009054906101000a90046001600160a01b03166001600160a01b0316637dc39276476040518263ffffffff1660e01b81526004016000604051808303818588803b15801561206e57600080fd5b505af1158015612082573d6000803e3d6000fd5b50505050505050505050505050505b506017805460ff60a01b19169055565b6001600160a01b038316600090815260016020526040902054818110156121055760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610b20565b6001600160a01b0384166000908152600160205260408120805484929061212d908490612c7a565b90915550506001600160a01b0383166000908152600160205260408120805484929061215a908490612b11565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121a691815260200190565b60405180910390a350505050565b6001600160a01b038316600090815260016020526040902054818110156122185760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610b20565b6001600160a01b03841660009081526003602052604081205460ff168061225757506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b03861660009081526005602052604090205490915060ff168015612280575080155b1561236e576011548311156122e85760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b20565b6001600160a01b03841660009081526001602052604090205460125461230e8583612b11565b11156123685760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610b20565b50612411565b6001600160a01b03841660009081526005602052604090205460ff168015612394575080155b15612411576011548311156124115760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610b20565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff928316921690811561247a57600f546202a30090612455908290612b11565b42101561246e576124678160c8612808565b9150612474565b60095491505b506124b3565b82156124ae57600f5461025890612492908290612b11565b4210156124a4576124678160c8612808565b50506008546124b3565b50600a545b6015546001600160a01b038981169116148015906124db5750601754600160b01b900460ff16155b80156124f15750601754600160a01b900460ff16155b15612500576125006000611ed5565b600061251c8783600b54600c546125179190612b11565b61284e565b9050600061252a8289612c7a565b6001600160a01b038b16600090815260016020526040812080549293508a92909190612557908490612c7a565b9091555050306000908152600160205260408120805484929061257b908490612b11565b90915550506001600160a01b038916600090815260016020526040812080548392906125a8908490612b11565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125f491815260200190565b60405180910390a350505050505050505050565b6013546126209030906001600160a01b031683611bcc565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061265557612655612cc6565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156126ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d29190612cf7565b816001815181106126e5576126e5612cc6565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac9479061272b908590600090869030904290600401612d14565b600060405180830381600087803b15801561274557600080fd5b505af1925050508015611e3057505050565b60135461276f9030906001600160a01b031684611bcc565b60135460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156127dc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128019190612d85565b5050505050565b600080600f54426128199190612c7a565b90508381612828603286612c7a565b6128329190612b29565b61283c9190612b48565b6128469084612c7a565b949350505050565b600061285c6103e880612b29565b826128678587612b29565b6128719190612b29565b6128469190612b48565b600060208083528351808285015260005b818110156128a85785810183015185820160400152820161288c565b818111156128ba576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461107b57600080fd5b600080604083850312156128f857600080fd5b8235612903816128d0565b946020939093013593505050565b60006020828403121561292357600080fd5b5035919050565b60008060006060848603121561293f57600080fd5b833561294a816128d0565b9250602084013561295a816128d0565b929592945050506040919091013590565b60006020828403121561297d57600080fd5b8135612988816128d0565b9392505050565b801515811461107b57600080fd5b6000602082840312156129af57600080fd5b81356129888161298f565b6000806000604084860312156129cf57600080fd5b833567ffffffffffffffff808211156129e757600080fd5b818601915086601f8301126129fb57600080fd5b813581811115612a0a57600080fd5b8760208260051b8501011115612a1f57600080fd5b60209283019550935050840135612a358161298f565b809150509250925092565b600080600080600060a08688031215612a5857600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612a8e57600080fd5b8235612a99816128d0565b91506020830135612aa9816128d0565b809150509250929050565b60008060408385031215612ac757600080fd5b8235612ad2816128d0565b91506020830135612aa98161298f565b600060208284031215612af457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115612b2457612b24612afb565b500190565b6000816000190483118215151615612b4357612b43612afb565b500290565b600082612b6557634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612b7c57600080fd5b81516129888161298f565b600181815b80851115612bc2578160001904821115612ba857612ba8612afb565b80851615612bb557918102915b93841c9390800290612b8c565b509250929050565b600082612bd957506001610c89565b81612be657506000610c89565b8160018114612bfc5760028114612c0657612c22565b6001915050610c89565b60ff841115612c1757612c17612afb565b50506001821b610c89565b5060208310610133831016604e8410600b8410161715612c45575081810a610c89565b612c4f8383612b87565b8060001904821115612c6357612c63612afb565b029392505050565b600061298860ff841683612bca565b600082821015612c8c57612c8c612afb565b500390565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612cf057612cf0612afb565b5060010190565b600060208284031215612d0957600080fd5b8151612988816128d0565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d645784516001600160a01b031683529383019391830191600101612d3f565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612d9a57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220ce5a1ff84701375fdccdbf73f3c07cc3f2ed5a35343861e59f7696dfd8cb44ef64736f6c634300080a0033

Deployed Bytecode Sourcemap

2688:17794:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17320:514;;;;;;;;;;;;;:::i;:::-;;17979:94;;;;;;;;;;-1:-1:-1;18060:5:0;;;;;;;;;;;;-1:-1:-1;;;18060:5:0;;;;17979:94;;;;;;;:::i;:::-;;;;;;;;18836:158;;;;;;;;;;-1:-1:-1;18836:158:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;18836:158:0;1072:187:1;3676:35:0;;;;;;;;;;;;;;;;;;;1410:25:1;;;1398:2;1383:18;3676:35:0;1264:177:1;18283:105:0;;;;;;;;;;-1:-1:-1;18362:18:0;;18283:105;;15561:289;;;;;;;;;;-1:-1:-1;15561:289:0;;;;;:::i;:::-;;:::i;3279:58::-;;;;;;;;;;;;;:::i;19300:382::-;;;;;;;;;;-1:-1:-1;19300:382:0;;;;;:::i;:::-;;:::i;3527:27::-;;;;;;;;;;;;;;;;20236:241;;;;;;;;;;-1:-1:-1;20236:241:0;;;;;:::i;:::-;;:::i;15268:281::-;;;;;;;;;;-1:-1:-1;15268:281:0;;;;;:::i;:::-;;:::i;7410:260::-;;;;;;;;;;-1:-1:-1;7410:260:0;;;;;:::i;:::-;;:::i;18183:94::-;;;;;;;;;;-1:-1:-1;18183:94:0;;3820:2;2486:36:1;;2474:2;2459:18;18183:94:0;2344:184:1;16931:153:0;;;;;;;;;;-1:-1:-1;16931:153:0;;;;;:::i;:::-;;:::i;19688:202::-;;;;;;;;;;-1:-1:-1;19688:202:0;;;;;:::i;:::-;;:::i;4163:34::-;;;;;;;;;;-1:-1:-1;4163:34:0;;;;-1:-1:-1;;;;;4163:34:0;;;;;;-1:-1:-1;;;;;2713:32:1;;;2695:51;;2683:2;2668:18;4163:34:0;2533:219:1;15001:118:0;;;;;;;;;;;;;:::i;12258:148::-;;;;;;;;;;;;;:::i;4204:23::-;;;;;;;;;;-1:-1:-1;4204:23:0;;;;-1:-1:-1;;;;;4204:23:0;;;3396;;;;;;;;;;;;;;;;4584:22;;;;;;;;;;-1:-1:-1;4584:22:0;;;;-1:-1:-1;;;4584:22:0;;;;;;16324:126;;;;;;;;;;-1:-1:-1;16324:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;16415:27:0;16391:4;16415:27;;;:18;:27;;;;;;;;;16324:126;6762:149;;;;;;;;;;-1:-1:-1;6762:149:0;;;;;:::i;:::-;;:::i;18394:116::-;;;;;;;;;;-1:-1:-1;18394:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;18484:18:0;18460:4;18484:18;;;:9;:18;;;;;;;18394:116;2301:140;;;;;;;;;;;;;:::i;16462:301::-;;;;;;;;;;;;;:::i;3457:28::-;;;;;;;;;;;;;;;;14861:134;;;;;;;;;;-1:-1:-1;14861:134:0;;;;;:::i;:::-;;:::i;17879:94::-;;;;;;;;;;-1:-1:-1;17931:7:0;2157:6;-1:-1:-1;;;;;2157:6:0;17879:94;;4545:32;;;;;;;;;;-1:-1:-1;4545:32:0;;;;-1:-1:-1;;;4545:32:0;;;;;;6917:247;;;;;;;;;;-1:-1:-1;6917:247:0;;;;;:::i;:::-;;:::i;18079:98::-;;;;;;;;;;-1:-1:-1;18162:7:0;;;;;;;;;;;;-1:-1:-1;;;18162:7:0;;;;18079:98;;15127:133;;;;;;;;;;-1:-1:-1;15127:133:0;;;;;:::i;:::-;;:::i;4613:39::-;;;;;;;;;;-1:-1:-1;4613:39:0;;;;-1:-1:-1;;;4613:39:0;;;;;;3344:45;;;;;;;;;;;;;;;;19896:334;;;;;;;;;;-1:-1:-1;19896:334:0;;;;;:::i;:::-;;:::i;16775:150::-;;;;;;;;;;;;;:::i;18516:164::-;;;;;;;;;;-1:-1:-1;18516:164:0;;;;;:::i;:::-;;:::i;11684:562::-;;;;;;;;;;-1:-1:-1;11684:562:0;;;;;:::i;:::-;;:::i;3871:31::-;;;;;;;;;;;;;;;;11387:291;;;;;;;;;;-1:-1:-1;11387:291:0;;;;;:::i;:::-;;:::i;3492:28::-;;;;;;;;;;;;;;;;14304:205;;;;;;;;;;;;;:::i;14515:139::-;;;;;;;;;;;;;:::i;3829:35::-;;;;;;;;;;;;;;;;3426:24;;;;;;;;;;;;;;;;11128:253;;;;;;;;;;-1:-1:-1;11128:253:0;;;;;:::i;:::-;;:::i;2945:48::-;;;;;;;;;;-1:-1:-1;2945:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18686:144;;;;;;;;;;-1:-1:-1;18686:144:0;;;;;:::i;:::-;-1:-1:-1;;;;;18794:19:0;;;18770:4;18794:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;18686:144;15862:252;;;;;;;;;;-1:-1:-1;15862:252:0;;;;;:::i;:::-;;:::i;3643:26::-;;;;;;;;;;;;;;;;3000:36;;;;;;;;;;-1:-1:-1;3000:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2447:236;;;;;;;;;;-1:-1:-1;2447:236:0;;;;;:::i;:::-;;:::i;7170:234::-;;;;;;;;;;-1:-1:-1;7170:234:0;;;;;:::i;:::-;;:::i;14660:195::-;;;;;;;;;;-1:-1:-1;14660:195:0;;;;;:::i;:::-;;:::i;16126:192::-;;;;;;;;;;-1:-1:-1;16126:192:0;;;;;:::i;:::-;;:::i;3043:46::-;;;;;;;;;;-1:-1:-1;3043:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17320:514;4308:8;;-1:-1:-1;;;;;4308:8:0;4294:10;:22;4286:31;;;;;;17406:20:::1;;17387:15;:39;;17379:68;;;::::0;-1:-1:-1;;;17379:68:0;;5530:2:1;17379:68:0::1;::::0;::::1;5512:21:1::0;5569:2;5549:18;;;5542:30;-1:-1:-1;;;5588:18:1;;;5581:46;5644:18;;17379:68:0::1;;;;;;;;;17491:15;::::0;17532:39:::1;::::0;-1:-1:-1;;;17532:39:0;;17565:4:::1;17532:39;::::0;::::1;2695:51:1::0;-1:-1:-1;;;;;17491:15:0;;::::1;::::0;17460:21:::1;::::0;17491:15;;17532:24:::1;::::0;2668:18:1;;17532:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17585:27;::::0;17518:53;;-1:-1:-1;;;;17585:27:0;::::1;;;17582:162;;;17659:40;3266:6;17659:15;:40;:::i;:::-;17638:20;:61:::0;17730:2:::1;17721:8;:6:::0;17728:1:::1;17721:8;:::i;:::-;:11;;;;:::i;:::-;17714:18;;17582:162;17754:43;::::0;-1:-1:-1;;;17754:43:0;;17778:10:::1;17754:43;::::0;::::1;6696:51:1::0;6763:18;;;6756:34;;;-1:-1:-1;;;;;17754:23:0;::::1;::::0;::::1;::::0;6669:18:1;;17754:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;17813:13:0::1;::::0;::::1;::::0;;;::::1;17368:466;;17320:514::o:0;18836:158::-;18910:4;18927:37;18936:10;18948:7;18957:6;18927:8;:37::i;:::-;-1:-1:-1;18982:4:0;18836:158;;;;;:::o;15561:289::-;4308:8;;-1:-1:-1;;;;;4308:8:0;4294:10;:22;4286:31;;;;;;15661:2:::1;15650:7;:13;;15642:35;;;::::0;-1:-1:-1;;;15642:35:0;;7253:2:1;15642:35:0::1;::::0;::::1;7235:21:1::0;7292:1;7272:18;;;7265:29;-1:-1:-1;;;7310:18:1;;;7303:39;7359:18;;15642:35:0::1;7051:332:1::0;15642:35:0::1;15707:5;15696:7;:16;;15688:37;;;::::0;-1:-1:-1;;;15688:37:0;;7590:2:1;15688:37:0::1;::::0;::::1;7572:21:1::0;7629:1;7609:18;;;7602:29;-1:-1:-1;;;7647:18:1;;;7640:38;7695:18;;15688:37:0::1;7388:331:1::0;15688:37:0::1;15785:5;15775:7:::0;3324:13:::1;3820:2;3324;:13;:::i;:::-;3315:22;::::0;:6:::1;:22;:::i;:::-;15759:23;;;;:::i;:::-;:31;;;;:::i;:::-;15736:20;:54:::0;15806:36:::1;::::0;1410:25:1;;;15806:36:0::1;::::0;1398:2:1;1383:18;15806:36:0::1;;;;;;;;15561:289:::0;:::o;3279:58::-;3324:13;3820:2;3324;:13;:::i;:::-;3315:22;;:6;:22;:::i;:::-;3279:58;:::o;19300:382::-;19397:4;19414:36;19424:6;19432:9;19443:6;19414:9;:36::i;:::-;-1:-1:-1;;;;;19485:19:0;;19461:21;19485:19;;;:11;:19;;;;;;;;19505:10;19485:31;;;;;;;;19535:26;;;;19527:59;;;;-1:-1:-1;;;19527:59:0;;9309:2:1;19527:59:0;;;9291:21:1;9348:2;9328:18;;;9321:30;-1:-1:-1;;;9367:18:1;;;9360:50;9427:18;;19527:59:0;9107:344:1;19527:59:0;19597:55;19606:6;19614:10;19626:25;19645:6;19626:16;:25;:::i;:::-;19597:8;:55::i;:::-;-1:-1:-1;19670:4:0;;19300:382;-1:-1:-1;;;;19300:382:0:o;20236:241::-;4308:8;;-1:-1:-1;;;;;4308:8:0;4294:10;:22;4286:31;;;;;;20345:21:::1;20385:10;20377:64;20437:3;20406:28;20418:16:::0;20345:21;20406:28:::1;:::i;:::-;:34;;;;:::i;:::-;20377:64;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;20457:12:0::1;::::0;::::1;::::0;;;::::1;20314:163;20236:241:::0;:::o;15268:281::-;4308:8;;-1:-1:-1;;;;;4308:8:0;4294:10;:22;4286:31;;;;;;15373:2:::1;15362:7;:13;;15354:32;;;::::0;-1:-1:-1;;;15354:32:0;;9788:2:1;15354:32:0::1;::::0;::::1;9770:21:1::0;9827:1;9807:18;;;9800:29;-1:-1:-1;;;9845:18:1;;;9838:36;9891:18;;15354:32:0::1;9586:329:1::0;15354:32:0::1;15416:4;15405:7;:15;;15397:36;;;::::0;-1:-1:-1;;;15397:36:0;;7590:2:1;15397:36:0::1;::::0;::::1;7572:21:1::0;7629:1;7609:18;;;7602:29;-1:-1:-1;;;7647:18:1;;;7640:38;7695:18;;15397:36:0::1;7388:331:1::0;15397:36:0::1;15489:4;15479:7:::0;3324:13:::1;3820:2;3324;:13;:::i;:::-;3315:22;::::0;:6:::1;:22;:::i;:::-;15463:23;;;;:::i;:::-;:30;;;;:::i;:::-;15444:16;:49:::0;15509:32:::1;::::0;1410:25:1;;;15509:32:0::1;::::0;1398:2:1;1383:18;15509:32:0::1;1264:177:1::0;7410:260:0;4308:8;;-1:-1:-1;;;;;4308:8:0;4294:10;:22;4286:31;;;;;;7488:11:::1;:32:::0;;-1:-1:-1;;;;;;7488:32:0::1;-1:-1:-1::0;;;;;7488:32:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;7531:29:0;;;:16:::1;:29;::::0;;;;;;;:36;;-1:-1:-1;;7531:36:0;;::::1;-1:-1:-1::0;7531:36:0;;::::1;::::0;;;7578:18:::1;:31:::0;;;;;;:38;;;;::::1;;::::0;;;7632:30;;2695:51:1;;;7632:30:0::1;::::0;2668:18:1;7632:30:0::1;2533:219:1::0;16931:153:0;4308:8;;-1:-1:-1;;;;;4308:8:0;4294:10;:22;4286:31;;;;;;17019:57:::1;17041:34;17060:15;17041:18:::0;:34:::1;:::i;:::-;17019:21;:57::i;:::-;16931:153:::0;:::o;19688:202::-;19793:10;19767:4;19814:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;19814:32:0;;;;;;;;;;19767:4;;19784:76;;19805:7;;19814:45;;19849:10;;19814:45;:::i;15001:118::-;4308:8;;-1:-1:-1;;;;;4308:8:0;4294:10;:22;4286:31;;;;;;15060:24:::1;15079:4;15060:18;:24::i;:::-;15100:11;::::0;::::1;::::0;;;::::1;15001:118::o:0;12258:148::-;12305:4;12394;12374:19;;12355:18;;:38;;;;:::i;:::-;:43;;;;:::i;:::-;12338:15;;-1:-1:-1;;;;;12338:15:0;12328:26;;;;:9;:26;;;;;;:70;;12258:148;-1:-1:-1;12258:148:0:o;6762:149::-;4308:8;;-1:-1:-1;;;;;4308:8:0;4294:10;:22;4286:31;;;;;;6833:13:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;6833:23:0::1;-1:-1:-1::0;;;;6833:23:0;;::::1;;::::0;;6872:31:::1;::::0;::::1;::::0;::::1;::::0;6849:7;1237:14:1;1230:22;1212:41;;1200:2;1185:18;;1072:187;2301:140:0;2228:10;2217:7;2130;2157:6;-1:-1:-1;;;;;2157:6:0;;2092:79;2217:7;-1:-1:-1;;;;;2217:21:0;;2209:66;;;;-1:-1:-1;;;2209:66:0;;;;;;;:::i;:::-;2400:1:::1;2384:6:::0;;2363:40:::1;::::0;-1:-1:-1;;;;;2384:6:0;;::::1;::::0;2363:40:::1;::::0;2400:1;;2363:40:::1;2431:1;2414:19:::0;;-1:-1:-1;;;;;;2414:19:0::1;::::0;;2301:140::o;16462:301::-;2228:10;2217:7;2130;2157:6;-1:-1:-1;;;;;2157:6:0;;2092:79;2217:7;-1:-1:-1;;;;;2217:21:0;;2209:66;;;;-1:-1:-1;;;2209:66:0;;;;;;;:::i;:::-;16527:15:::1;::::0;:18;16519:45:::1;;;::::0;-1:-1:-1;;;16519:45:0;;10483:2:1;16519:45:0::1;::::0;::::1;10465:21:1::0;10522:2;10502:18;;;10495:30;-1:-1:-1;;;10541:18:1;;;10534:45;10596:18;;16519:45:0::1;10281:339:1::0;16519:45:0::1;16591:15;16575;:31:::0;16657:4:::1;3324:13;3820:2;3324;:13;:::i;:::-;3315:22;::::0;:6:::1;:22;:::i;:::-;16636:18;::::0;16652:2:::1;16636:18;:::i;:::-;:25;;;;:::i;:::-;16617:16;:44:::0;;;16717:5:::1;::::0;3324:13:::1;::::0;:2:::1;:13;:::i;:::-;3315:22;::::0;:6:::1;:22;:::i;:::-;16695:19;::::0;16711:3:::1;16695:19;:::i;:::-;:27;;;;:::i;:::-;16672:20;:50:::0;16738:17:::1;::::0;::::1;::::0;;;::::1;16462:301::o:0;14861:134::-;4308:8;;-1:-1:-1;;;;;4308:8:0;4294:10;:22;4286:31;;;;;;14930:10:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;14930:17:0::1;-1:-1:-1::0;;;;14930:17:0;;::::1;;::::0;;14963:24:::1;::::0;::::1;::::0;::::1;::::0;14941:6;1237:14:1;1230:22;1212:41;;1200:2;1185:18;;1072:187;17958:7:0;17951:14;;17879:94;:::o;6917:247::-;4308:8;;-1:-1:-1;;;;;4308:8:0;4294:10;:22;4286:31;;;;;;7022:9:::1;7017:106;7033:20:::0;;::::1;7017:106;;;7105:6;7075:13;:27;7089:9;;7099:1;7089:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7075:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;7075:27:0;:36;;-1:-1:-1;;7075:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7055:3:::1;::::0;::::1;:::i;:::-;;;7017:106;;;-1:-1:-1::0;7138:18:0::1;::::0;::::1;::::0;;;::::1;6917:247:::0;;;:::o;15127:133::-;4308:8;;-1:-1:-1;;;;;4308:8:0;4294:10;:22;4286:31;;;;;;15196:9:::1;:19:::0;;-1:-1:-1;;;;;;15196:19:0::1;-1:-1:-1::0;;;;;15196:19:0;::::1;::::0;;::::1;::::0;;;15231:21:::1;::::0;2695:51:1;;;15231:21:0::1;::::0;2683:2:1;2668:18;15231:21:0::1;2533:219:1::0;19896:334:0;20033:10;19980:4;20021:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;20021:32:0;;;;;;;;;;20072:35;;;;20064:60;;;;-1:-1:-1;;;20064:60:0;;11099:2:1;20064:60:0;;;11081:21:1;11138:2;11118:18;;;11111:30;-1:-1:-1;;;11157:18:1;;;11150:42;11209:18;;20064:60:0;10897:336:1;20064:60:0;20135:65;20144:10;20156:7;20165:34;20184:15;20165:16;:34;:::i;20135:65::-;-1:-1:-1;20218:4:0;;19896:334;-1:-1:-1;;;19896:334:0:o;16775:150::-;4308:8;;-1:-1:-1;;;;;4308:8:0;4294:10;:22;4286:31;;;;;;16849:27:::1;:32:::0;;-1:-1:-1;;;;16849:32:0::1;-1:-1:-1::0;;;16849:32:0::1;::::0;;16897:20:::1;::::0;::::1;::::0;16849:32;;16897:20:::1;16775:150::o:0;18516:164::-;18593:4;18610:40;18620:10;18632:9;18643:6;18610:9;:40::i;11684:562::-;4308:8;;-1:-1:-1;;;;;4308:8:0;4294:10;:22;4286:31;;;;;;11799:11:::1;11811:33;3634:2;3591:4;11811:33;:::i;:::-;11799:45;;11868:6;11863:3;:11;;:25;;;;;11882:6;11876:4;:12;;11863:25;:44;;;;;11901:6;11890:9;:17;;11863:44;11855:74;;;::::0;-1:-1:-1;;;11855:74:0;;11440:2:1;11855:74:0::1;::::0;::::1;11422:21:1::0;11479:2;11459:18;;;11452:30;-1:-1:-1;;;11498:18:1;;;11491:48;11556:18;;11855:74:0::1;11238:342:1::0;11855:74:0::1;3591:4;11948:18;11957:9:::0;11948:8;:18:::1;:::i;:::-;:35;11940:80;;;::::0;-1:-1:-1;;;11940:80:0;;11787:2:1;11940:80:0::1;::::0;::::1;11769:21:1::0;11826:2;11806:18;;;11799:30;11865:34;11845:18;;;11838:62;-1:-1:-1;;;11916:18:1;;;11909:31;11957:19;;11940:80:0::1;11585:397:1::0;11940:80:0::1;12041:6;:10:::0;;;12062:7:::1;:12:::0;;;12085:11:::1;:21:::0;;;12117:11:::1;:20:::0;;;12148:12:::1;:22:::0;;;12186:52:::1;::::0;;12246:25:1;;;12302:2;12287:18;;12280:34;;;12330:18;;;12323:34;;;12388:2;12373:18;;12366:34;;;12431:3;12416:19;;12409:35;;;12186:52:0::1;::::0;12233:3:1;12218:19;12186:52:0::1;;;;;;;11788:458;11684:562:::0;;;;;:::o;11387:291::-;4308:8;;-1:-1:-1;;;;;4308:8:0;4294:10;:22;4286:31;;;;;;11528:4:::1;11496:30;:36;;11488:45;;;::::0;::::1;;11544:19;:50:::0;;;11610:60:::1;::::0;1410:25:1;;;11610:60:0::1;::::0;1398:2:1;1383:18;11610:60:0::1;1264:177:1::0;14304:205:0;14369:4;14404:20;;14388:15;:36;14385:97;;;14467:15;14446:20;;:36;;;;:::i;14385:97::-;-1:-1:-1;14500:1:0;;14304:205::o;14515:139::-;14638:6;14562:4;14620:26;;;:9;:26;;;;14600:18;;3324:13;3820:2;3324;:13;:::i;:::-;3315:22;;:6;:22;:::i;:::-;14586:32;;;;:::i;:::-;14585:61;;;;:::i;11128:253::-;4308:8;;-1:-1:-1;;;;;4308:8:0;4294:10;:22;4286:31;;;;;;11246:2:::1;11221:23;:27;;11213:36;;;::::0;::::1;;11277:12;:36:::0;;;11329:44:::1;::::0;1410:25:1;;;11329:44:0::1;::::0;1398:2:1;1383:18;11329:44:0::1;1264:177:1::0;15862:252:0;4308:8;;-1:-1:-1;;;;;4308:8:0;4294:10;:22;4286:31;;;;;;-1:-1:-1;;;;;15963:22:0;::::1;15980:4;15963:22;;15955:60;;;::::0;-1:-1:-1;;;15955:60:0;;12657:2:1;15955:60:0::1;::::0;::::1;12639:21:1::0;12696:2;12676:18;;;12669:30;12735:28;12715:18;;;12708:56;12781:18;;15955:60:0::1;12455:350:1::0;15955:60:0::1;-1:-1:-1::0;;;;;16026:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;;;;:33;;-1:-1:-1;;16026:33:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16075:31;;12978:51:1;;;13045:18;;;13038:50;16075:31:0::1;::::0;12951:18:1;16075:31:0::1;;;;;;;;15862:252:::0;;:::o;2447:236::-;2228:10;2217:7;2130;2157:6;-1:-1:-1;;;;;2157:6:0;;2092:79;2217:7;-1:-1:-1;;;;;2217:21:0;;2209:66;;;;-1:-1:-1;;;2209:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2528:22:0;::::1;2520:73;;;::::0;-1:-1:-1;;;2520:73:0;;13301:2:1;2520:73:0::1;::::0;::::1;13283:21:1::0;13340:2;13320:18;;;13313:30;13379:34;13359:18;;;13352:62;-1:-1:-1;;;13430:18:1;;;13423:36;13476:19;;2520:73:0::1;13099:402:1::0;2520:73:0::1;2630:6;::::0;;2609:38:::1;::::0;-1:-1:-1;;;;;2609:38:0;;::::1;::::0;2630:6;::::1;::::0;2609:38:::1;::::0;::::1;2658:6;:17:::0;;-1:-1:-1;;;;;;2658:17:0::1;-1:-1:-1::0;;;;;2658:17:0;;;::::1;::::0;;;::::1;::::0;;2447:236::o;7170:234::-;4308:8;;-1:-1:-1;;;;;4308:8:0;4294:10;:22;4286:31;;;;;;7243:8:::1;:20:::0;;-1:-1:-1;;;;;;7243:20:0::1;-1:-1:-1::0;;;;;7243:20:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;7274:27:0;;;:16:::1;:27;::::0;;;;;;;:34;;-1:-1:-1;;7274:34:0;;::::1;-1:-1:-1::0;7274:34:0;;::::1;::::0;;;7319:18:::1;:29:::0;;;;;;:36;;;;::::1;;::::0;;;7371:25;;2695:51:1;;;7371:25:0::1;::::0;2668:18:1;7371:25:0::1;2533:219:1::0;14660:195:0;4308:8;;-1:-1:-1;;;;;4308:8:0;4294:10;:22;4286:31;;;;;;14745:15:::1;::::0;-1:-1:-1;;;;;14739:21:0;;::::1;14745:15:::0;::::1;14739:21;;14731:53;;;::::0;-1:-1:-1;;;14731:53:0;;13708:2:1;14731:53:0::1;::::0;::::1;13690:21:1::0;13747:2;13727:18;;;13720:30;-1:-1:-1;;;13766:18:1;;;13759:50;13826:18;;14731:53:0::1;13506:344:1::0;14731:53:0::1;-1:-1:-1::0;;;;;14795:12:0;::::1;;::::0;;;:6:::1;:12;::::0;;;;;;;;:16;;-1:-1:-1;;14795:16:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14827:20;;12978:51:1;;;13045:18;;;13038:50;14827:20:0::1;::::0;12951:18:1;14827:20:0::1;12810:284:1::0;16126:192:0;4308:8;;-1:-1:-1;;;;;4308:8:0;4294:10;:22;4286:31;;;;;;-1:-1:-1;;;;;16225:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:35;;-1:-1:-1;;16225:35:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16276:34;;12978:51:1;;;13045:18;;;13038:50;16276:34:0::1;::::0;12951:18:1;16276:34:0::1;12810:284:1::0;19000:294:0;-1:-1:-1;;;;;19090:19:0;;19082:49;;;;-1:-1:-1;;;19082:49:0;;14057:2:1;19082:49:0;;;14039:21:1;14096:2;14076:18;;;14069:30;-1:-1:-1;;;14115:18:1;;;14108:47;14172:18;;19082:49:0;13855:341:1;19082:49:0;-1:-1:-1;;;;;19150:21:0;;19142:49;;;;-1:-1:-1;;;19142:49:0;;14403:2:1;19142:49:0;;;14385:21:1;14442:2;14422:18;;;14415:30;-1:-1:-1;;;14461:18:1;;;14454:45;14516:18;;19142:49:0;14201:339:1;19142:49:0;-1:-1:-1;;;;;19202:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19254:32;;1410:25:1;;;19254:32:0;;1383:18:1;19254:32:0;;;;;;;19000:294;;;:::o;7676:643::-;-1:-1:-1;;;;;7769:20:0;;7761:51;;;;-1:-1:-1;;;7761:51:0;;14747:2:1;7761:51:0;;;14729:21:1;14786:2;14766:18;;;14759:30;-1:-1:-1;;;14805:18:1;;;14798:48;14863:18;;7761:51:0;14545:342:1;7761:51:0;-1:-1:-1;;;;;7831:23:0;;7823:52;;;;-1:-1:-1;;;7823:52:0;;15094:2:1;7823:52:0;;;15076:21:1;15133:2;15113:18;;;15106:30;-1:-1:-1;;;15152:18:1;;;15145:46;15208:18;;7823:52:0;14892:340:1;7823:52:0;7889:13;;-1:-1:-1;;;7889:13:0;;;;7886:122;;;-1:-1:-1;;;;;7927:21:0;;;;;;:13;:21;;;;;;;;7926:22;:51;;;;-1:-1:-1;;;;;;7953:24:0;;;;;;:13;:24;;;;;;;;7952:25;7926:51;7918:74;;;;-1:-1:-1;;;7918:74:0;;15439:2:1;7918:74:0;;;15421:21:1;15478:2;15458:18;;;15451:30;-1:-1:-1;;;15497:18:1;;;15490:41;15548:18;;7918:74:0;15237:335:1;7918:74:0;-1:-1:-1;;;;;8021:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;8049:27:0;;;;;;:16;:27;;;;;;;;8021:55;8018:294;;;8091:43;8108:6;8116:9;8127:6;8091:16;:43::i;:::-;7676:643;;;:::o;8018:294::-;8200:1;8184:15;;:17;8176:52;;;;-1:-1:-1;;;8176:52:0;;15779:2:1;8176:52:0;;;15761:21:1;15818:2;15798:18;;;15791:30;15857:25;15837:18;;;15830:53;15900:18;;8176:52:0;15577:347:1;8176:52:0;8243:39;8258:6;8265:9;8275:6;8243:14;:39::i;17090:218::-;17181:20;;17167:13;:34;17159:43;;;;;;17213:20;:34;;;17263:37;;1410:25:1;;;17263:37:0;;1398:2:1;1383:18;17263:37:0;1264:177:1;12412:1061:0;4377:27;:34;;-1:-1:-1;;;;4377:34:0;-1:-1:-1;;;4377:34:0;;;12528:4:::1;4377:34:::0;12510:24;;;4407:4;12510:24:::1;::::0;;;;;12572:11:::1;::::0;12559:12:::1;::::0;12510:24;;4377:34;12559:24:::1;::::0;12572:11;12559:24:::1;:::i;:::-;12638:12;::::0;12621:15:::1;::::0;-1:-1:-1;;;;;12621:15:0::1;12594:16;12611:26:::0;;;:9:::1;:26;::::0;;;;;12545:38;;-1:-1:-1;12594:16:0;12651:4:::1;::::0;12611:39:::1;::::0;::::1;:::i;:::-;:44;;;;:::i;:::-;12594:61:::0;-1:-1:-1;12669:11:0;12666:22:::1;;12681:7;;;;;12666:22;12701:12;12698:134;;;-1:-1:-1::0;12758:4:0::1;12740:24;::::0;;;:9:::1;:24;::::0;;;;;12698:134:::1;;;12799:11;12783:15;:27;12780:52;;;12825:7;;;;;12780:52;12842:22;12865:17;:15;:17::i;:::-;:55;;12912:8;12898:12;;12886:11;:24;;;;:::i;:::-;12885:35;;;;:::i;:::-;12865:55;;;12883:1;12865:55;12842:78:::0;-1:-1:-1;12933:21:0::1;12956:29;12842:78:::0;12956:11;:29:::1;:::i;:::-;12933:52:::0;-1:-1:-1;12998:12:0::1;13011:19;13029:1;13011:17:::0;:19:::1;:::i;:::-;12998:32:::0;-1:-1:-1;13041:14:0::1;13056:24;13064:16:::0;12998:32;13056:24:::1;:::i;:::-;13041:39:::0;-1:-1:-1;13116:21:0::1;13148:27;13041:39:::0;13148:16:::1;:27::i;:::-;13186:11;13199:41;13223:17:::0;13199:21:::1;:41;:::i;:::-;13186:55:::0;-1:-1:-1;13255:19:0;;13252:135:::1;;13290:11;13321:9:::0;13305:14:::1;13312:7:::0;13305:6;:14:::1;:::i;:::-;13304:26;;;;:::i;:::-;13290:40;;13345:30;13359:7;13368:6;13345:13;:30::i;:::-;13275:112;13252:135;13410:11;;;;;;;;;-1:-1:-1::0;;;;;13410:11:0::1;-1:-1:-1::0;;;;;13397:36:0::1;;13441:21;13397:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;12478:995;;;;;;;;;4422:1;-1:-1:-1::0;4434:27:0;:35;;-1:-1:-1;;;;4434:35:0;;;12412:1061::o;10783:339::-;-1:-1:-1;;;;;10896:17:0;;10875:18;10896:17;;;:9;:17;;;;;;10932:23;;;;10924:60;;;;-1:-1:-1;;;10924:60:0;;16131:2:1;10924:60:0;;;16113:21:1;16170:2;16150:18;;;16143:30;-1:-1:-1;;;16189:18:1;;;16182:54;16253:18;;10924:60:0;15929:348:1;10924:60:0;-1:-1:-1;;;;;10995:17:0;;;;;;:9;:17;;;;;:25;;11014:6;;10995:17;:25;;11014:6;;10995:25;:::i;:::-;;;;-1:-1:-1;;;;;;;11031:20:0;;;;;;:9;:20;;;;;:28;;11053:6;;11031:20;:28;;11053:6;;11031:28;:::i;:::-;;;;;;;;11097:9;-1:-1:-1;;;;;11081:33:0;11090:6;-1:-1:-1;;;;;11081:33:0;;11107:6;11081:33;;;;1410:25:1;;1398:2;1383:18;;1264:177;11081:33:0;;;;;;;;10864:258;10783:339;;;:::o;8325:2053::-;-1:-1:-1;;;;;8436:17:0;;8415:18;8436:17;;;:9;:17;;;;;;8472:23;;;;8464:60;;;;-1:-1:-1;;;8464:60:0;;16131:2:1;8464:60:0;;;16113:21:1;16170:2;16150:18;;;16143:30;-1:-1:-1;;;16189:18:1;;;16182:54;16253:18;;8464:60:0;15929:348:1;8464:60:0;-1:-1:-1;;;;;8558:26:0;;8535:20;8558:26;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;8588:29:0;;;;;;:18;:29;;;;;;;;8558:59;-1:-1:-1;;;;;8646:14:0;;;;;;:6;:14;;;;;;8535:82;;-1:-1:-1;8646:14:0;;:47;;;;;8678:15;8677:16;8646:47;8628:686;;;8756:20;;8746:6;:30;;8720:132;;;;-1:-1:-1;;;8720:132:0;;16484:2:1;8720:132:0;;;16466:21:1;16523:2;16503:18;;;16496:30;16562:34;16542:18;;;16535:62;-1:-1:-1;;;16613:18:1;;;16606:38;16661:19;;8720:132:0;16282:404:1;8720:132:0;-1:-1:-1;;;;;18484:18:0;;8867:32;18484:18;;;:9;:18;;;;;;9000:16;;8963:33;8990:6;18484:18;8963:33;:::i;:::-;:53;;8937:151;;;;-1:-1:-1;;;8937:151:0;;16893:2:1;8937:151:0;;;16875:21:1;16932:2;16912:18;;;16905:30;16971:34;16951:18;;;16944:62;-1:-1:-1;;;17022:18:1;;;17015:34;17066:19;;8937:151:0;16691:400:1;8937:151:0;8705:395;8628:686;;;-1:-1:-1;;;;;9124:17:0;;;;;;:6;:17;;;;;;;;:50;;;;;9159:15;9158:16;9124:50;9106:208;;;9219:20;;9209:6;:30;;9201:101;;;;-1:-1:-1;;;9201:101:0;;17298:2:1;9201:101:0;;;17280:21:1;17337:2;17317:18;;;17310:30;17376:34;17356:18;;;17349:62;17447:28;17427:18;;;17420:56;17493:19;;9201:101:0;17096:422:1;9201:101:0;-1:-1:-1;;;;;9337:14:0;;;9326:10;9337:14;;;:6;:14;;;;;;;9374:17;;;;;;;;9337:14;;;;;9374:17;;9421:493;;;;9521:15;;9469:8;;9521:31;;9469:8;;9521:31;:::i;:::-;9505:15;:47;9502:143;;;9576:33;9589:15;9605:3;9576:12;:33::i;:::-;9572:37;;9502:143;;;9638:7;;9634:11;;9502:143;9431:230;9421:493;;;9679:5;9676:238;;;9764:15;;9720:10;;9764:30;;9720:10;;9764:30;:::i;:::-;9748:15;:46;9745:136;;;9818:32;9831:14;9846:3;9818:12;:32::i;9745:136::-;-1:-1:-1;;9875:6:0;;9676:238;;;-1:-1:-1;9903:11:0;;9676:238;9939:15;;-1:-1:-1;;;;;9931:23:0;;;9939:15;;9931:23;;;;9930:40;;-1:-1:-1;9959:10:0;;-1:-1:-1;;;9959:10:0;;;;9958:11;9930:40;:72;;;;-1:-1:-1;9974:27:0;;-1:-1:-1;;;9974:27:0;;;;9973:28;9930:72;9927:115;;;10017:25;10036:5;10017:18;:25::i;:::-;10053:18;10072:52;10086:6;10094:3;10111:12;;10099:11;;:24;;;;:::i;:::-;10072:13;:52::i;:::-;10053:71;-1:-1:-1;10135:16:0;10152:20;10053:71;10152:6;:20;:::i;:::-;-1:-1:-1;;;;;10185:17:0;;;;;;:9;:17;;;;;:25;;10135:37;;-1:-1:-1;10204:6:0;;10185:17;;;:25;;10204:6;;10185:25;:::i;:::-;;;;-1:-1:-1;;10239:4:0;10221:24;;;;:9;:24;;;;;:41;;10249:13;;10221:24;:41;;10249:13;;10221:41;:::i;:::-;;;;-1:-1:-1;;;;;;;10273:20:0;;;;;;:9;:20;;;;;:33;;10295:11;;10273:20;:33;;10295:11;;10273:33;:::i;:::-;;;;;;;;10348:9;-1:-1:-1;;;;;10332:38:0;10341:6;-1:-1:-1;;;;;10332:38:0;;10358:11;10332:38;;;;1410:25:1;;1398:2;1383:18;;1264:177;10332:38:0;;;;;;;;8404:1974;;;;;;;8325:2053;;;:::o;13479:462::-;13569:10;;13537:52;;13554:4;;-1:-1:-1;;;;;13569:10:0;13582:6;13537:8;:52::i;:::-;13624:16;;;13638:1;13624:16;;;;;;;;13600:21;;13624:16;;;;;;;;;;-1:-1:-1;13624:16:0;13600:40;;13669:4;13651;13656:1;13651:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13651:23:0;;;:7;;;;;;;;;;:23;;;;13695:10;;:17;;;-1:-1:-1;;;13695:17:0;;;;:10;;;;;:15;;:17;;;;;13651:7;;13695:17;;;;;:10;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13685:4;13690:1;13685:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13685:27:0;;;:7;;;;;;;;;:27;13729:10;;:186;;-1:-1:-1;;;13729:186:0;;:10;;;:61;;:186;;13805:6;;13729:10;;13842:4;;13869;;13889:15;;13729:186;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13526:415;13479:462;:::o;13947:351::-;14055:10;;14023:57;;14040:4;;-1:-1:-1;;;;;14055:10:0;14068:11;14023:8;:57::i;:::-;14091:10;;:199;;-1:-1:-1;;;14091:199:0;;14158:4;14091:199;;;19237:34:1;;;19287:18;;;19280:34;;;14091:10:0;19330:18:1;;;19323:34;;;19373:18;;;19366:34;19416:19;;;19409:44;14264:15:0;19469:19:1;;;19462:35;-1:-1:-1;;;;;14091:10:0;;;;:26;;14125:9;;19171:19:1;;14091:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13947:351;;:::o;10384:211::-;10456:4;10472:20;10509:15;;10493;:31;;;;:::i;:::-;10472:52;-1:-1:-1;10578:8:0;10472:52;10551:9;10558:2;10551:6;:9;:::i;:::-;10550:27;;;;:::i;:::-;:36;;;;:::i;:::-;10542:45;;:6;:45;:::i;:::-;10535:52;10384:211;-1:-1:-1;;;;10384:211:0:o;10601:176::-;10686:4;10737:31;3591:4;;10737:31;:::i;:::-;10722:10;10711;10718:3;10711:6;:10;:::i;:::-;:21;;;;:::i;:::-;10710:59;;;;:::i;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1446:180::-;1505:6;1558:2;1546:9;1537:7;1533:23;1529:32;1526:52;;;1574:1;1571;1564:12;1526:52;-1:-1:-1;1597:23:1;;1446:180;-1:-1:-1;1446:180:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2092:247::-;2151:6;2204:2;2192:9;2183:7;2179:23;2175:32;2172:52;;;2220:1;2217;2210:12;2172:52;2259:9;2246:23;2278:31;2303:5;2278:31;:::i;:::-;2328:5;2092:247;-1:-1:-1;;;2092:247:1:o;2965:118::-;3051:5;3044:13;3037:21;3030:5;3027:32;3017:60;;3073:1;3070;3063:12;3088:241;3144:6;3197:2;3185:9;3176:7;3172:23;3168:32;3165:52;;;3213:1;3210;3203:12;3165:52;3252:9;3239:23;3271:28;3293:5;3271:28;:::i;3334:750::-;3426:6;3434;3442;3495:2;3483:9;3474:7;3470:23;3466:32;3463:52;;;3511:1;3508;3501:12;3463:52;3551:9;3538:23;3580:18;3621:2;3613:6;3610:14;3607:34;;;3637:1;3634;3627:12;3607:34;3675:6;3664:9;3660:22;3650:32;;3720:7;3713:4;3709:2;3705:13;3701:27;3691:55;;3742:1;3739;3732:12;3691:55;3782:2;3769:16;3808:2;3800:6;3797:14;3794:34;;;3824:1;3821;3814:12;3794:34;3879:7;3872:4;3862:6;3859:1;3855:14;3851:2;3847:23;3843:34;3840:47;3837:67;;;3900:1;3897;3890:12;3837:67;3931:4;3923:13;;;;-1:-1:-1;3955:6:1;-1:-1:-1;;3996:20:1;;3983:34;4026:28;3983:34;4026:28;:::i;:::-;4073:5;4063:15;;;3334:750;;;;;:::o;4089:454::-;4184:6;4192;4200;4208;4216;4269:3;4257:9;4248:7;4244:23;4240:33;4237:53;;;4286:1;4283;4276:12;4237:53;-1:-1:-1;;4309:23:1;;;4379:2;4364:18;;4351:32;;-1:-1:-1;4430:2:1;4415:18;;4402:32;;4481:2;4466:18;;4453:32;;-1:-1:-1;4532:3:1;4517:19;4504:33;;-1:-1:-1;4089:454:1;-1:-1:-1;4089:454:1:o;4548:388::-;4616:6;4624;4677:2;4665:9;4656:7;4652:23;4648:32;4645:52;;;4693:1;4690;4683:12;4645:52;4732:9;4719:23;4751:31;4776:5;4751:31;:::i;:::-;4801:5;-1:-1:-1;4858:2:1;4843:18;;4830:32;4871:33;4830:32;4871:33;:::i;:::-;4923:7;4913:17;;;4548:388;;;;;:::o;4941:382::-;5006:6;5014;5067:2;5055:9;5046:7;5042:23;5038:32;5035:52;;;5083:1;5080;5073:12;5035:52;5122:9;5109:23;5141:31;5166:5;5141:31;:::i;:::-;5191:5;-1:-1:-1;5248:2:1;5233:18;;5220:32;5261:30;5220:32;5261:30;:::i;5673:184::-;5743:6;5796:2;5784:9;5775:7;5771:23;5767:32;5764:52;;;5812:1;5809;5802:12;5764:52;-1:-1:-1;5835:16:1;;5673:184;-1:-1:-1;5673:184:1:o;5862:127::-;5923:10;5918:3;5914:20;5911:1;5904:31;5954:4;5951:1;5944:15;5978:4;5975:1;5968:15;5994:128;6034:3;6065:1;6061:6;6058:1;6055:13;6052:39;;;6071:18;;:::i;:::-;-1:-1:-1;6107:9:1;;5994:128::o;6127:168::-;6167:7;6233:1;6229;6225:6;6221:14;6218:1;6215:21;6210:1;6203:9;6196:17;6192:45;6189:71;;;6240:18;;:::i;:::-;-1:-1:-1;6280:9:1;;6127:168::o;6300:217::-;6340:1;6366;6356:132;;6410:10;6405:3;6401:20;6398:1;6391:31;6445:4;6442:1;6435:15;6473:4;6470:1;6463:15;6356:132;-1:-1:-1;6502:9:1;;6300:217::o;6801:245::-;6868:6;6921:2;6909:9;6900:7;6896:23;6892:32;6889:52;;;6937:1;6934;6927:12;6889:52;6969:9;6963:16;6988:28;7010:5;6988:28;:::i;7724:422::-;7813:1;7856:5;7813:1;7870:270;7891:7;7881:8;7878:21;7870:270;;;7950:4;7946:1;7942:6;7938:17;7932:4;7929:27;7926:53;;;7959:18;;:::i;:::-;8009:7;7999:8;7995:22;7992:55;;;8029:16;;;;7992:55;8108:22;;;;8068:15;;;;7870:270;;;7874:3;7724:422;;;;;:::o;8151:806::-;8200:5;8230:8;8220:80;;-1:-1:-1;8271:1:1;8285:5;;8220:80;8319:4;8309:76;;-1:-1:-1;8356:1:1;8370:5;;8309:76;8401:4;8419:1;8414:59;;;;8487:1;8482:130;;;;8394:218;;8414:59;8444:1;8435:10;;8458:5;;;8482:130;8519:3;8509:8;8506:17;8503:43;;;8526:18;;:::i;:::-;-1:-1:-1;;8582:1:1;8568:16;;8597:5;;8394:218;;8696:2;8686:8;8683:16;8677:3;8671:4;8668:13;8664:36;8658:2;8648:8;8645:16;8640:2;8634:4;8631:12;8627:35;8624:77;8621:159;;;-1:-1:-1;8733:19:1;;;8765:5;;8621:159;8812:34;8837:8;8831:4;8812:34;:::i;:::-;8882:6;8878:1;8874:6;8870:19;8861:7;8858:32;8855:58;;;8893:18;;:::i;:::-;8931:20;;8151:806;-1:-1:-1;;;8151:806:1:o;8962:140::-;9020:5;9049:47;9090:4;9080:8;9076:19;9070:4;9049:47;:::i;9456:125::-;9496:4;9524:1;9521;9518:8;9515:34;;;9529:18;;:::i;:::-;-1:-1:-1;9566:9:1;;9456:125::o;9920:356::-;10122:2;10104:21;;;10141:18;;;10134:30;10200:34;10195:2;10180:18;;10173:62;10267:2;10252:18;;9920:356::o;10625:127::-;10686:10;10681:3;10677:20;10674:1;10667:31;10717:4;10714:1;10707:15;10741:4;10738:1;10731:15;10757:135;10796:3;-1:-1:-1;;10817:17:1;;10814:43;;;10837:18;;:::i;:::-;-1:-1:-1;10884:1:1;10873:13;;10757:135::o;17655:251::-;17725:6;17778:2;17766:9;17757:7;17753:23;17749:32;17746:52;;;17794:1;17791;17784:12;17746:52;17826:9;17820:16;17845:31;17870:5;17845:31;:::i;17911:980::-;18173:4;18221:3;18210:9;18206:19;18252:6;18241:9;18234:25;18278:2;18316:6;18311:2;18300:9;18296:18;18289:34;18359:3;18354:2;18343:9;18339:18;18332:31;18383:6;18418;18412:13;18449:6;18441;18434:22;18487:3;18476:9;18472:19;18465:26;;18526:2;18518:6;18514:15;18500:29;;18547:1;18557:195;18571:6;18568:1;18565:13;18557:195;;;18636:13;;-1:-1:-1;;;;;18632:39:1;18620:52;;18727:15;;;;18692:12;;;;18668:1;18586:9;18557:195;;;-1:-1:-1;;;;;;;18808:32:1;;;;18803:2;18788:18;;18781:60;-1:-1:-1;;;18872:3:1;18857:19;18850:35;18769:3;17911:980;-1:-1:-1;;;17911:980:1:o;19508:306::-;19596:6;19604;19612;19665:2;19653:9;19644:7;19640:23;19636:32;19633:52;;;19681:1;19678;19671:12;19633:52;19710:9;19704:16;19694:26;;19760:2;19749:9;19745:18;19739:25;19729:35;;19804:2;19793:9;19789:18;19783:25;19773:35;;19508:306;;;;;:::o

Swarm Source

ipfs://ce5a1ff84701375fdccdbf73f3c07cc3f2ed5a35343861e59f7696dfd8cb44ef

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Kyuubi symbolizes attributes of agility, adaptability, and the ability to grow wise. Kyuubi represents the ability to grow through community engagement and strength. Kyuubi aims to be a serious contender and provide developmental supports through each new tail(roadmap phases).

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.