ETH Price: $2,625.93 (+1.83%)

Contract

0x711B4c96aCF69cf92f9523024e614451ED765C46
 

Overview

ETH Balance

1 wei

Eth Value

Less Than $0.01 (@ $2,625.93/ETH)

Token Holdings

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Approve205628972024-08-19 13:13:232 days ago1724073203IN
0x711B4c96...1ED765C46
0 ETH0.000221644.7630027
Approve205478312024-08-17 10:45:115 days ago1723891511IN
0x711B4c96...1ED765C46
0 ETH0.00004320.9332067
Approve205273342024-08-14 14:01:357 days ago1723644095IN
0x711B4c96...1ED765C46
0 ETH0.000613913.25738785
Approve204823952024-08-08 7:32:5914 days ago1723102379IN
0x711B4c96...1ED765C46
0 ETH0.000193224.14694679
Transfer204765902024-08-07 12:07:1115 days ago1723032431IN
0x711B4c96...1ED765C46
0 ETH0.000731823.41668951
Approve204115172024-07-29 10:07:3524 days ago1722247655IN
0x711B4c96...1ED765C46
0 ETH0.000140323.01556288
Approve201961832024-06-29 8:34:5954 days ago1719650099IN
0x711B4c96...1ED765C46
0 ETH0.000073083.01386523
Approve201528722024-06-23 7:20:5960 days ago1719127259IN
0x711B4c96...1ED765C46
0 ETH0.000162623.49463359
Transfer201499952024-06-22 21:42:2360 days ago1719092543IN
0x711B4c96...1ED765C46
0 ETH0.00049712.32097902
Approve200752872024-06-12 10:55:3571 days ago1718189735IN
0x711B4c96...1ED765C46
0 ETH0.0011449124.60320541
Approve200517032024-06-09 3:52:3574 days ago1717905155IN
0x711B4c96...1ED765C46
0 ETH0.000195074.19209606
Transfer200516992024-06-09 3:51:4774 days ago1717905107IN
0x711B4c96...1ED765C46
0 ETH0.001299876.06912092
Approve199254552024-05-22 12:35:3592 days ago1716381335IN
0x711B4c96...1ED765C46
0 ETH0.0005872912.62049767
Approve198019832024-05-05 6:03:59109 days ago1714889039IN
0x711B4c96...1ED765C46
0 ETH0.000296736.37654479
Approve195462212024-03-30 10:37:11145 days ago1711795031IN
0x711B4c96...1ED765C46
0 ETH0.0009158119.68016955
Approve193640492024-03-04 20:00:11170 days ago1709582411IN
0x711B4c96...1ED765C46
0 ETH0.0042105291.04426889
Approve193470242024-03-02 10:55:47173 days ago1709376947IN
0x711B4c96...1ED765C46
0 ETH0.0021602246.42143986
Approve191127342024-01-29 14:19:23205 days ago1706537963IN
0x711B4c96...1ED765C46
0 ETH0.0003786615.61458326
Approve190873962024-01-26 1:06:35209 days ago1706231195IN
0x711B4c96...1ED765C46
0 ETH0.0005021220.65440035
Approve190873922024-01-26 1:05:47209 days ago1706231147IN
0x711B4c96...1ED765C46
0 ETH0.0004882420.08333001
Approve190569302024-01-21 18:07:59213 days ago1705860479IN
0x711B4c96...1ED765C46
0 ETH0.00034514.22649922
Approve189879202024-01-12 2:44:11223 days ago1705027451IN
0x711B4c96...1ED765C46
0 ETH0.0008404118.03655463
Approve189877462024-01-12 2:08:59223 days ago1705025339IN
0x711B4c96...1ED765C46
0 ETH0.0007363115.90891948
Approve189328852024-01-04 8:50:35231 days ago1704358235IN
0x711B4c96...1ED765C46
0 ETH0.0003805915.69382854
Approve188636432023-12-25 15:31:11240 days ago1703518271IN
0x711B4c96...1ED765C46
0 ETH0.0014027130.14332526
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
205629022024-08-19 13:14:232 days ago1724073263
0x711B4c96...1ED765C46
0.00082494 ETH
205629022024-08-19 13:14:232 days ago1724073263
0x711B4c96...1ED765C46
0.00164989 ETH
205629022024-08-19 13:14:232 days ago1724073263
0x711B4c96...1ED765C46
0.00329978 ETH
205629022024-08-19 13:14:232 days ago1724073263
0x711B4c96...1ED765C46
0.00577461 ETH
205478392024-08-17 10:46:475 days ago1723891607
0x711B4c96...1ED765C46
0.00082587 ETH
205478392024-08-17 10:46:475 days ago1723891607
0x711B4c96...1ED765C46
0.00165174 ETH
205478392024-08-17 10:46:475 days ago1723891607
0x711B4c96...1ED765C46
0.00330348 ETH
205478392024-08-17 10:46:475 days ago1723891607
0x711B4c96...1ED765C46
0.00578109 ETH
205273692024-08-14 14:08:477 days ago1723644527
0x711B4c96...1ED765C46
0.00082948 ETH
205273692024-08-14 14:08:477 days ago1723644527
0x711B4c96...1ED765C46
0.00165897 ETH
205273692024-08-14 14:08:477 days ago1723644527
0x711B4c96...1ED765C46
0.00331794 ETH
205273692024-08-14 14:08:477 days ago1723644527
0x711B4c96...1ED765C46
0.0058064 ETH
204823972024-08-08 7:33:2314 days ago1723102403
0x711B4c96...1ED765C46
0.00084692 ETH
204823972024-08-08 7:33:2314 days ago1723102403
0x711B4c96...1ED765C46
0.00169385 ETH
204823972024-08-08 7:33:2314 days ago1723102403
0x711B4c96...1ED765C46
0.00338771 ETH
204823972024-08-08 7:33:2314 days ago1723102403
0x711B4c96...1ED765C46
0.00592849 ETH
204765902024-08-07 12:07:1115 days ago1723032431
0x711B4c96...1ED765C46
0.00084758 ETH
204765902024-08-07 12:07:1115 days ago1723032431
0x711B4c96...1ED765C46
0.00169516 ETH
204765902024-08-07 12:07:1115 days ago1723032431
0x711B4c96...1ED765C46
0.00339032 ETH
204765902024-08-07 12:07:1115 days ago1723032431
0x711B4c96...1ED765C46
0.00593307 ETH
204115222024-07-29 10:08:3524 days ago1722247715
0x711B4c96...1ED765C46
0.00084965 ETH
204115222024-07-29 10:08:3524 days ago1722247715
0x711B4c96...1ED765C46
0.0016993 ETH
204115222024-07-29 10:08:3524 days ago1722247715
0x711B4c96...1ED765C46
0.00339861 ETH
204115222024-07-29 10:08:3524 days ago1722247715
0x711B4c96...1ED765C46
0.00594758 ETH
201529692024-06-23 7:40:3560 days ago1719128435
0x711B4c96...1ED765C46
0.00085075 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CIRCLEONE

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-14
*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity 0.8.14;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface BEP20 {
    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);
}

abstract contract Auth {
    address internal owner;
    address internal potentialOwner;
    mapping (address => bool) internal authorizations;

    event Authorize_Wallet(address Wallet, bool Status);

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) external onlyOwner {
        authorizations[adr] = true;
        emit Authorize_Wallet(adr,true);
    }

    function unauthorize(address adr) external onlyOwner {
        require(adr != owner, "OWNER cant be unauthorized");
        authorizations[adr] = false;
        emit Authorize_Wallet(adr,false);
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) external onlyOwner {
        require(adr != owner, "Already the owner");
        require(adr != address(0), "Can not be zero address.");
        potentialOwner = adr;
        emit OwnershipNominated(adr);
    }

    function acceptOwnership() external {
        require(msg.sender == potentialOwner, "You must be nominated as potential owner before you can accept the role.");
        authorizations[owner] = false;
        authorizations[potentialOwner] = true;

        emit Authorize_Wallet(owner,false);
        emit Authorize_Wallet(potentialOwner,true);

        owner = potentialOwner;
        potentialOwner = address(0);
        emit OwnershipTransferred(owner);
    }

    event OwnershipTransferred(address owner);
    event OwnershipNominated(address potentialOwner);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract CIRCLEONE is BEP20, Auth {
    using SafeMath for uint256;

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "Circle";
    string public constant symbol = unicode"⭕";
    uint8 public constant decimals = 9;

    uint256 public constant totalSupply = 100 * 10**9 * 10**decimals;

    uint256 public _maxTxAmount = totalSupply / 100;
    uint256 public _maxWalletToken = totalSupply / 50;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 public liquidityFee = 0;
    uint256 public marketingFee = 40;
    uint256 public developmentFee = 20;
    uint256 public teamFee = 10;

    uint256 public totalFee = marketingFee + liquidityFee + developmentFee + teamFee;
    uint256 public constant feeDenominator = 1000;

    uint256 sellMultiplier = 200;
    uint256 buyMultiplier = 0;
    uint256 transferMultiplier = 100;

    address public marketingFeeReceiver;
    address public developmentFeeReceiver;
    address public teamFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    bool public tradingOpen = false;
    bool public launchMode = true;

    bool public swapEnabled = true;
    uint256 public swapThreshold = totalSupply / 2000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = 0xa34c7899Bf38f328db84A3DE61bbBD6E28E22C4F;
        developmentFeeReceiver = msg.sender;
        teamFeeReceiver = 0x4f1163154ef87DB83a243eDB07797780b83EE36a;

        isFeeExempt[msg.sender] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;
        isWalletLimitExempt[ZERO] = true;

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

    function getOwner() external view override returns (address) { return owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

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

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

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxWallPercent_base1000 >= 10,"Cannot set max wallet less than 1%");
        _maxWalletToken = (totalSupply * maxWallPercent_base1000 ) / 1000;
        emit config_MaxWallet(_maxWalletToken);
    }
    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        require(maxTXPercentage_base1000 >= 10,"Cannot set max transaction less than 1%");
        _maxTxAmount = (totalSupply * maxTXPercentage_base1000 ) / 1000;
        emit config_MaxTransaction(_maxTxAmount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }

        if (!authorizations[sender] && !isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }
    
        // Checks max transaction limit
        require((amount <= _maxTxAmount) || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "Max TX Limit Exceeded");

        if(shouldSwapBack()){ swapBack(); }

        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");
        balanceOf[recipient] = balanceOf[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        if(feeAmount > 0){
            balanceOf[address(this)] = balanceOf[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && balanceOf[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        require(amountPercentage < 101, "Max 100%");
        uint256 amountETH = address(this).balance;
        uint256 amountToClear = ( amountETH * amountPercentage ) / 100;
        payable(msg.sender).transfer(amountToClear);
        emit BalanceClear(amountToClear);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        require(tokenAddress != address(this), "Cannot withdraw native token");

        if(tokens == 0){
            tokens = BEP20(tokenAddress).balanceOf(address(this));
        }

        emit clearToken(tokenAddress, tokens);

        return BEP20(tokenAddress).transfer(msg.sender, tokens);
    }

    function tradingStatus(bool _status) external onlyOwner {
        if(!_status){
            require(launchMode,"Cannot stop trading after launch is done");
        }
        tradingOpen = _status;
        emit config_TradingStatus(tradingOpen);
    }

    function tradingStatus_launchmode(uint256 confirm) external onlyOwner {
        require(confirm == 911966298,"Accidental Press");
        require(tradingOpen,"Cant close launch mode when trading is disabled");
        launchMode = false;
        emit config_LaunchMode(launchMode);
    }

    function swapBack() internal swapping {

        uint256 totalETHFee = totalFee;
        uint256 amountToLiquify = (swapThreshold * liquidityFee)/(totalETHFee * 2);
        uint256 amountToSwap = swapThreshold - amountToLiquify;

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

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;

        totalETHFee = totalETHFee - (liquidityFee / 2);
        
        uint256 amountETHLiquidity = (amountETH * liquidityFee) / (totalETHFee * 2);
        uint256 amountETHMarketing = (amountETH * marketingFee) / totalETHFee;
        uint256 amountETHdevelopment = (amountETH * developmentFee) / totalETHFee;
        uint256 amountETHteam = (amountETH * teamFee) / totalETHFee;

        payable(marketingFeeReceiver).transfer(amountETHMarketing);
        payable(developmentFeeReceiver).transfer(amountETHdevelopment);
        payable(teamFeeReceiver).transfer(amountETHteam);

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                address(this),
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function manage_FeeExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
            emit Wallet_feeExempt(addresses[i], status);
        }
    }

    function manage_TxLimitExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isTxLimitExempt[addresses[i]] = status;
            emit Wallet_txExempt(addresses[i], status);
        }
    }

    function manage_WalletLimitExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isWalletLimitExempt[addresses[i]] = status;
            emit Wallet_holdingExempt(addresses[i], status);
        }
    }

    function update_fees() internal {
        require(totalFee.mul(buyMultiplier).div(100) <= 100, "Buy tax cannot be more than 10%");
        require(totalFee.mul(sellMultiplier).div(100) <= 140, "Sell tax cannot be more than 14%");
        require(totalFee.mul(transferMultiplier).div(100) <= 50, "Transfer Tax cannot be more than 5%");

        emit UpdateFee( uint8(totalFee.mul(buyMultiplier).div(100)),
            uint8(totalFee.mul(sellMultiplier).div(100)),
            uint8(totalFee.mul(transferMultiplier).div(100))
            );
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external authorized {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;

        update_fees();
    }

    function setFees_base1000(uint256 _liquidityFee,  uint256 _marketingFee, uint256 _developmentFee, uint256 _teamFee) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        developmentFee = _developmentFee;
        teamFee = _teamFee;
        
        totalFee = _liquidityFee + _marketingFee + _developmentFee + _teamFee;
        
        update_fees();
    }

    function setFeeReceivers(address _marketingFeeReceiver, address _developmentFeeReceiver, address _teamFeeReceiver) external onlyOwner {
        require(_marketingFeeReceiver != address(0),"Marketing fee address cannot be zero address");
        require(_developmentFeeReceiver != address(0),"Development fee address cannot be zero address");
        require(_teamFeeReceiver != address(0),"Team fee address cannot be zero address");

        marketingFeeReceiver = _marketingFeeReceiver;
        developmentFeeReceiver = _developmentFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;

        emit Set_Wallets(marketingFeeReceiver, developmentFeeReceiver, teamFeeReceiver);
    }


    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        require(_amount < (totalSupply/10), "Amount too high");

        swapEnabled = _enabled;
        swapThreshold = _amount;

        emit config_SwapSettings(swapThreshold, swapEnabled);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }


function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external authorized {
    if(msg.sender != from){
        require(launchMode,"Cannot execute this after launch is done");
    }

    require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
    require(addresses.length == tokens.length,"Mismatch between address and token count");

    uint256 SCCC = 0;

    for(uint i=0; i < addresses.length; i++){
        SCCC = SCCC + tokens[i];
    }

    require(balanceOf[from] >= SCCC, "Not enough tokens in wallet");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens[i]);
    }
}

event AutoLiquify(uint256 amountETH, uint256 amountTokens);
event UpdateFee(uint8 Buy, uint8 Sell, uint8 Transfer);
event Wallet_feeExempt(address Wallet, bool Status);
event Wallet_txExempt(address Wallet, bool Status);
event Wallet_holdingExempt(address Wallet, bool Status);

event BalanceClear(uint256 amount);
event clearToken(address TokenAddressCleared, uint256 Amount);

event Set_Wallets(address MarketingWallet, address DevelopmentWallet, address TeamWallet);
event Set_Wallets_Dev(address DevWallet);

event config_MaxWallet(uint256 maxWallet);
event config_MaxTransaction(uint256 maxWallet);
event config_TradingStatus(bool Status);
event config_LaunchMode(bool Status);
event config_SwapSettings(uint256 Amount, bool Enabled);

}

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":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Authorize_Wallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BalanceClear","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"potentialOwner","type":"address"}],"name":"OwnershipNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"MarketingWallet","type":"address"},{"indexed":false,"internalType":"address","name":"DevelopmentWallet","type":"address"},{"indexed":false,"internalType":"address","name":"TeamWallet","type":"address"}],"name":"Set_Wallets","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"DevWallet","type":"address"}],"name":"Set_Wallets_Dev","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":"uint8","name":"Buy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Sell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Transfer","type":"uint8"}],"name":"UpdateFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_feeExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_holdingExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_txExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"clearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"config_LaunchMode","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"config_MaxTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"config_MaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"config_SwapSettings","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"config_TradingStatus","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","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_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_developmentFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"}],"name":"setFees_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"confirm","type":"uint256"}],"name":"tradingStatus_launchmode","outputs":[],"stateMutability":"nonpayable","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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526064620000146009600a620005c0565b620000259064174876e800620005d8565b620000319190620005fa565b6003556032620000446009600a620005c0565b620000559064174876e800620005d8565b620000619190620005fa565b6004556000600a556028600b556014600c55600a600d55600d54600c54600a54600b546200009091906200061d565b6200009c91906200061d565b620000a891906200061d565b600e5560c8600f55600060105560646011556015805462ffffff60a01b191661010160a81b1790556107d0620000e16009600a620005c0565b620000f29064174876e800620005d8565b620000fe9190620005fa565b6016553480156200010e57600080fd5b5060008054336001600160a01b031991821681178355825260026020908152604092839020805460ff1916600117905560158054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c464892600480830193928290030181865afa15801562000194573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ba919062000638565b6001600160a01b039081166080526015546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa1580156200020b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000231919062000638565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000283573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a9919062000638565b6001600160a01b0390811660a05230600081815260066020908152604080832060155490951683529381528382206000199055601280546001600160a01b031990811673a34c7899bf38f328db84a3de61bbbd6e28e22c4f179091556013805482163390811790915560148054909216734f1163154ef87db83a243edb07797780b83ee36a17909155825260078152838220805460ff1990811660019081179092556008835285842080548216831790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548216831790557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c78054821683179055600992839052858420805482168317905593835293822080548416851790557f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb19307500378580548416851790559080527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b805490921690921790556200042f90600a620005c0565b620004409064174876e800620005d8565b33600081815260056020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620004836009600a620005c0565b620004949064174876e800620005d8565b60405190815260200160405180910390a362000663565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000502578160001904821115620004e657620004e6620004ab565b80851615620004f457918102915b93841c9390800290620004c6565b509250929050565b6000826200051b57506001620005ba565b816200052a57506000620005ba565b81600181146200054357600281146200054e576200056e565b6001915050620005ba565b60ff841115620005625762000562620004ab565b50506001821b620005ba565b5060208310610133831016604e8410600b841016171562000593575081810a620005ba565b6200059f8383620004c1565b8060001904821115620005b657620005b6620004ab565b0290505b92915050565b6000620005d160ff8416836200050a565b9392505050565b6000816000190483118215151615620005f557620005f5620004ab565b500290565b6000826200061857634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620006335762000633620004ab565b500190565b6000602082840312156200064b57600080fd5b81516001600160a01b0381168114620005d157600080fd5b60805160a051613415620006a5600039600081816107bb015281816121e0015281816126d101528181612ae20152612b16015260006127dc01526134156000f3fe6080604052600436106103015760003560e01c806378109e5411610190578063bd9ab537116100dc578063e96fada211610095578063f2fde38b1161006f578063f2fde38b1461098a578063f887ea40146109aa578063fe9fbb80146109ca578063ffb54a99146109ea57600080fd5b8063e96fada21461092a578063efa5e3471461094a578063f0b37c041461096a57600080fd5b8063bd9ab5371461083e578063c867d60b1461085e578063d7c010321461088e578063d7c94efd146108ae578063dd62ed3e146108c4578063df20fd491461090a57600080fd5b806398118cb411610149578063a8aa1b3111610123578063a8aa1b31146107a9578063a9059cbb146107dd578063b37dd690146107fd578063b6a5d7de1461081e57600080fd5b806398118cb41461075d5780639cd1aef114610773578063a5f3d0031461079357600080fd5b806378109e541461069f57806379ba5097146106b55780637d1db4a5146106ca578063893d20e8146106e05780638b42507f146106fe57806395d89b411461072e57600080fd5b80632b112e491161024f578063571ac8b0116102085780636ddd1713116101e25780636ddd1713146106115780636ec518b81461063257806370a082311461065257806377b54bad1461067f57600080fd5b8063571ac8b0146105bb5780636b67c4df146105db5780636ce46bc3146105f157600080fd5b80632b112e49146104c85780632f54bf6e146104dd578063313ce5671461050c5780633f4218e01461053357806340291143146105635780634be9d8691461059b57600080fd5b80630d295980116102bc5780631ca0a28d116102965780631ca0a28d146104525780631da1db5e146104725780631df4ccfc1461049257806323b872dd146104a857600080fd5b80630d29598014610407578063180b0d7e1461042757806318160ddd1461043d57600080fd5b80621086831461030d578062bff4461461032f5780630445b6671461034f57806306fdde031461037857806309302dc6146103b7578063095ea7b3146103d757600080fd5b3661030857005b600080fd5b34801561031957600080fd5b5061032d610328366004612da4565b610a0b565b005b34801561033b57600080fd5b5061032d61034a366004612da4565b610b2e565b34801561035b57600080fd5b5061036560165481565b6040519081526020015b60405180910390f35b34801561038457600080fd5b506103aa60405180604001604052806006815260200165436972636c6560d01b81525081565b60405161036f9190612dfb565b3480156103c357600080fd5b5061032d6103d2366004612e50565b610c42565b3480156103e357600080fd5b506103f76103f2366004612e7e565b610d37565b604051901515815260200161036f565b34801561041357600080fd5b5061032d610422366004612eaa565b610da4565b34801561043357600080fd5b506103656103e881565b34801561044957600080fd5b50610365610e92565b34801561045e57600080fd5b5061032d61046d366004612ec7565b610eb0565b34801561047e57600080fd5b5061032d61048d366004612e50565b6110ed565b34801561049e57600080fd5b50610365600e5481565b3480156104b457600080fd5b506103f76104c3366004612f4a565b6111d5565b3480156104d457600080fd5b50610365611297565b3480156104e957600080fd5b506103f76104f8366004612f8b565b6000546001600160a01b0391821691161490565b34801561051857600080fd5b50610521600981565b60405160ff909116815260200161036f565b34801561053f57600080fd5b506103f761054e366004612f8b565b60076020526000908152604090205460ff1681565b34801561056f57600080fd5b50601454610583906001600160a01b031681565b6040516001600160a01b03909116815260200161036f565b3480156105a757600080fd5b5061032d6105b6366004612da4565b61131f565b3480156105c757600080fd5b506103f76105d6366004612f8b565b611433565b3480156105e757600080fd5b50610365600b5481565b3480156105fd57600080fd5b5061032d61060c366004612fa8565b611441565b34801561061d57600080fd5b506015546103f790600160b01b900460ff1681565b34801561063e57600080fd5b50601354610583906001600160a01b031681565b34801561065e57600080fd5b5061036561066d366004612f8b565b60056020526000908152604090205481565b34801561068b57600080fd5b506103f761069a366004612e7e565b611482565b3480156106ab57600080fd5b5061036560045481565b3480156106c157600080fd5b5061032d61162b565b3480156106d657600080fd5b5061036560035481565b3480156106ec57600080fd5b506000546001600160a01b0316610583565b34801561070a57600080fd5b506103f7610719366004612f8b565b60086020526000908152604090205460ff1681565b34801561073a57600080fd5b506103aa60405180604001604052806003815260200162e2ad9560e81b81525081565b34801561076957600080fd5b50610365600a5481565b34801561077f57600080fd5b5061032d61078e366004612e50565b6117b1565b34801561079f57600080fd5b50610365600c5481565b3480156107b557600080fd5b506105837f000000000000000000000000000000000000000000000000000000000000000081565b3480156107e957600080fd5b506103f76107f8366004612e7e565b6118df565b34801561080957600080fd5b506015546103f790600160a81b900460ff1681565b34801561082a57600080fd5b5061032d610839366004612f8b565b6118ec565b34801561084a57600080fd5b5061032d610859366004612e50565b61195c565b34801561086a57600080fd5b506103f7610879366004612f8b565b60096020526000908152604090205460ff1681565b34801561089a57600080fd5b5061032d6108a9366004612fd4565b611a4f565b3480156108ba57600080fd5b50610365600d5481565b3480156108d057600080fd5b506103656108df366004613014565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561091657600080fd5b5061032d61092536600461304d565b611c33565b34801561093657600080fd5b50601254610583906001600160a01b031681565b34801561095657600080fd5b5061032d61096536600461306b565b611d2c565b34801561097657600080fd5b5061032d610985366004612f8b565b611d95565b34801561099657600080fd5b5061032d6109a5366004612f8b565b611e5b565b3480156109b657600080fd5b50601554610583906001600160a01b031681565b3480156109d657600080fd5b506103f76109e5366004612f8b565b611f7b565b3480156109f657600080fd5b506015546103f790600160a01b900460ff1681565b610a1433611f7b565b610a395760405162461bcd60e51b8152600401610a309061309d565b60405180910390fd5b6101f58210610a5a5760405162461bcd60e51b8152600401610a30906130c2565b60005b82811015610b28578160096000868685818110610a7c57610a7c613107565b9050602002016020810190610a919190612f8b565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f566c2270277919680152b0734389ae919d95ff7e9024c03fc3c7c209ec8412c7848483818110610aec57610aec613107565b9050602002016020810190610b019190612f8b565b83604051610b1092919061311d565b60405180910390a1610b218161314e565b9050610a5d565b50505050565b610b3733611f7b565b610b535760405162461bcd60e51b8152600401610a309061309d565b6101f58210610b745760405162461bcd60e51b8152600401610a30906130c2565b60005b82811015610b28578160076000868685818110610b9657610b96613107565b9050602002016020810190610bab9190612f8b565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f9fbd25f95d342f2efc070b56d2fadd2341d264ef8c915dc268609b2ca1bb25de848483818110610c0657610c06613107565b9050602002016020810190610c1b9190612f8b565b83604051610c2a92919061311d565b60405180910390a1610c3b8161314e565b9050610b77565b6000546001600160a01b03163314610c6c5760405162461bcd60e51b8152600401610a3090613167565b600a811015610cc85760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261312560f01b6064820152608401610a30565b6103e881610cd86009600a61326b565b610ce79064174876e80061327a565b610cf1919061327a565b610cfb9190613299565b60048190556040519081527fa69fa556bf940aa0c695b9c8e1b229fdb1476830e2025e44da1028e0c1458d4a906020015b60405180910390a150565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d929086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610dce5760405162461bcd60e51b8152600401610a3090613167565b80610e3d57601554600160a81b900460ff16610e3d5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f742073746f702074726164696e67206166746572206c61756e636860448201526720697320646f6e6560c01b6064820152608401610a30565b6015805460ff60a01b1916600160a01b8315158102919091179182905560405160ff9190920416151581527ff865819dcfd8250cfaa23e1ab7129c1ec65c617bae1e716699dfe07dd7c489ee90602001610d2c565b610e9e6009600a61326b565b610ead9064174876e80061327a565b81565b610eb933611f7b565b610ed55760405162461bcd60e51b8152600401610a309061309d565b336001600160a01b03861614610f4f57601554600160a81b900460ff16610f4f5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420657865637574652074686973206166746572206c61756e636860448201526720697320646f6e6560c01b6064820152608401610a30565b6101f58310610f705760405162461bcd60e51b8152600401610a30906130c2565b828114610fd05760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e206164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610a30565b6000805b8481101561101457838382818110610fee57610fee613107565b905060200201358261100091906132bb565b91508061100c8161314e565b915050610fd4565b506001600160a01b03861660009081526005602052604090205481111561107d5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610a30565b60005b848110156110e4576110d18787878481811061109e5761109e613107565b90506020020160208101906110b39190612f8b565b8686858181106110c5576110c5613107565b90506020020135611f99565b50806110dc8161314e565b915050611080565b50505050505050565b6000546001600160a01b031633146111175760405162461bcd60e51b8152600401610a3090613167565b606581106111525760405162461bcd60e51b81526020600482015260086024820152674d6178203130302560c01b6044820152606401610a30565b4760006064611161848461327a565b61116b9190613299565b604051909150339082156108fc029083906000818181858888f1935050505015801561119b573d6000803e3d6000fd5b506040518181527f377153983e64f72f80af47182763316780b9133be808b7082a16710202b8fbda906020015b60405180910390a1505050565b6001600160a01b038316600090815260066020908152604080832033845290915281205460001914611282576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260068252838120338252909152919091205461125d91849061207f565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b61128d8484846120b9565b90505b9392505050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba549091906112f76009600a61326b565b6113069064174876e80061327a565b61131091906132d3565b61131a91906132d3565b905090565b61132833611f7b565b6113445760405162461bcd60e51b8152600401610a309061309d565b6101f582106113655760405162461bcd60e51b8152600401610a30906130c2565b60005b82811015610b2857816008600086868581811061138757611387613107565b905060200201602081019061139c9190612f8b565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f3c4f06d74861dea6c152189f2ac8853b6f789feb0e1182101b7ad9d1858f70e38484838181106113f7576113f7613107565b905060200201602081019061140c9190612f8b565b8360405161141b92919061311d565b60405180910390a161142c8161314e565b9050611368565b6000610d9e82600019610d37565b61144a33611f7b565b6114665760405162461bcd60e51b8152600401610a309061309d565b600f8290556010839055601181905561147d612476565b505050565b600080546001600160a01b031633146114ad5760405162461bcd60e51b8152600401610a3090613167565b306001600160a01b038416036115055760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207769746864726177206e617469766520746f6b656e000000006044820152606401610a30565b81600003611578576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611551573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157591906132ea565b91505b604080516001600160a01b0385168152602081018490527f960427a4fde284dcc8da2c51a43d210cfd7ed6f4328a24ba33eee49910db564b910160405180910390a160405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611607573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112909190613303565b6001546001600160a01b031633146116bc5760405162461bcd60e51b815260206004820152604860248201527f596f75206d757374206265206e6f6d696e6174656420617320706f74656e746960448201527f616c206f776e6572206265666f726520796f752063616e2061636365707420746064820152673432903937b6329760c11b608482015260a401610a30565b600080546001600160a01b03908116825260026020526040808320805460ff1990811690915560018054841685528285208054909216179055825490516000805160206133c0833981519152936117189392909216919061311d565b60405180910390a1600180546040516000805160206133c08339815191529261174a926001600160a01b03169161311d565b60405180910390a160018054600080546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163906020015b60405180910390a1565b6000546001600160a01b031633146117db5760405162461bcd60e51b8152600401610a3090613167565b8063365b805a146118215760405162461bcd60e51b815260206004820152601060248201526f4163636964656e74616c20507265737360801b6044820152606401610a30565b601554600160a01b900460ff166118925760405162461bcd60e51b815260206004820152602f60248201527f43616e7420636c6f7365206c61756e6368206d6f6465207768656e207472616460448201526e1a5b99c81a5cc8191a5cd8589b1959608a1b6064820152608401610a30565b6015805460ff60a81b1916908190556040517f4b4d10c084e3fa6291b99e9e41e22eadfb3b01ca4bb86ae8d7b9fefe1498f52f91610d2c91600160a81b90910460ff161515815260200190565b60006112903384846120b9565b6000546001600160a01b031633146119165760405162461bcd60e51b8152600401610a3090613167565b6001600160a01b03811660009081526002602052604090819020805460ff1916600190811790915590516000805160206133c083398151915291610d2c9184919061311d565b6000546001600160a01b031633146119865760405162461bcd60e51b8152600401610a3090613167565b600a8110156119e75760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152667468616e20312560c81b6064820152608401610a30565b6103e8816119f76009600a61326b565b611a069064174876e80061327a565b611a10919061327a565b611a1a9190613299565b60038190556040519081527f365a2bb07537fddd750e9ac8d56970e584f83a144bb5225e77491b83bccd118390602001610d2c565b6000546001600160a01b03163314611a795760405162461bcd60e51b8152600401610a3090613167565b6001600160a01b038316611ae45760405162461bcd60e51b815260206004820152602c60248201527f4d61726b6574696e672066656520616464726573732063616e6e6f742062652060448201526b7a65726f206164647265737360a01b6064820152608401610a30565b6001600160a01b038216611b515760405162461bcd60e51b815260206004820152602e60248201527f446576656c6f706d656e742066656520616464726573732063616e6e6f74206260448201526d65207a65726f206164647265737360901b6064820152608401610a30565b6001600160a01b038116611bb75760405162461bcd60e51b815260206004820152602760248201527f5465616d2066656520616464726573732063616e6e6f74206265207a65726f206044820152666164647265737360c81b6064820152608401610a30565b601280546001600160a01b038581166001600160a01b0319928316811790935560138054868316908416811790915560148054928616929093168217909255604080519384526020840192909252908201527fb93b1ef445620c8661ebddddb575085ede7dfe08ccc6a91b933a6520249c3c7c906060016111c8565b6000546001600160a01b03163314611c5d5760405162461bcd60e51b8152600401610a3090613167565b600a611c6a60098261326b565b611c799064174876e80061327a565b611c839190613299565b8110611cc35760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610a30565b6015805460ff60b01b1916600160b01b8415158102919091179182905560168390556040805184815260ff9290930491909116151560208301527f34c2d4c263b6f41223c6d30ae2e7bcb18629892587e0a4138f57ba2c523953d0910160405180910390a15050565b6000546001600160a01b03163314611d565760405162461bcd60e51b8152600401610a3090613167565b600a849055600b839055600c829055600d8190558082611d7685876132bb565b611d8091906132bb565b611d8a91906132bb565b600e55610b28612476565b6000546001600160a01b03163314611dbf5760405162461bcd60e51b8152600401610a3090613167565b6000546001600160a01b0390811690821603611e1d5760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610a30565b6001600160a01b038116600090815260026020526040808220805460ff19169055516000805160206133c083398151915291610d2c9184919061311d565b6000546001600160a01b03163314611e855760405162461bcd60e51b8152600401610a3090613167565b6000546001600160a01b0390811690821603611ed75760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903a34329037bbb732b960791b6044820152606401610a30565b6001600160a01b038116611f2d5760405162461bcd60e51b815260206004820152601860248201527f43616e206e6f74206265207a65726f20616464726573732e00000000000000006044820152606401610a30565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527fe235b3289f2e990914b334bf6827949c27f6ba58d3e5a1d6f8415037ca1ef22290602001610d2c565b6001600160a01b031660009081526002602052604090205460ff1690565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600590915291822054611fea91849061207f565b6001600160a01b0380861660009081526005602052604080822093909355908516815220546120199083612665565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061206d9086815260200190565b60405180910390a35060019392505050565b600081848411156120a35760405162461bcd60e51b8152600401610a309190612dfb565b5060006120b084866132d3565b95945050505050565b60175460009060ff16156120d9576120d2848484611f99565b9050611290565b6001600160a01b03841660009081526002602052604090205460ff1615801561211b57506001600160a01b03831660009081526002602052604090205460ff16155b1561217057601554600160a01b900460ff166121705760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610a30565b6001600160a01b03841660009081526002602052604090205460ff161580156121b257506001600160a01b03841660009081526009602052604090205460ff16155b80156121d757506001600160a01b03831660009081526009602052604090205460ff16155b801561221557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b1561228f576004546001600160a01b0384166000908152600560205260409020546122419084906132bb565b111561228f5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610a30565b600354821115806122b857506001600160a01b03841660009081526008602052604090205460ff165b806122db57506001600160a01b03831660009081526008602052604090205460ff165b61231f5760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610a30565b6123276126c4565b1561233457612334612737565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526005909152919091205461238691849061207f565b6001600160a01b038516600090815260056020908152604080832093909355600790529081205460ff16806123d357506001600160a01b03841660009081526007602052604090205460ff165b6123e7576123e2858486612aba565b6123e9565b825b6001600160a01b03851660009081526005602052604090205490915061240f9082612665565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124639085815260200190565b60405180910390a3506001949350505050565b606461249a6064612494601054600e54612c1390919063ffffffff16565b90612c95565b11156124e85760405162461bcd60e51b815260206004820152601f60248201527f427579207461782063616e6e6f74206265206d6f7265207468616e20313025006044820152606401610a30565b608c6125066064612494600f54600e54612c1390919063ffffffff16565b11156125545760405162461bcd60e51b815260206004820181905260248201527f53656c6c207461782063616e6e6f74206265206d6f7265207468616e203134256044820152606401610a30565b60326125726064612494601154600e54612c1390919063ffffffff16565b11156125cc5760405162461bcd60e51b815260206004820152602360248201527f5472616e73666572205461782063616e6e6f74206265206d6f7265207468616e60448201526220352560e81b6064820152608401610a30565b7f375884ed7f92283ee74d8884b39a803f4aee832b15766fe016b74fc791fc2ada6126096064612494601054600e54612c1390919063ffffffff16565b6126256064612494600f54600e54612c1390919063ffffffff16565b6126416064612494601154600e54612c1390919063ffffffff16565b6040805160ff948516815292841660208401529216918101919091526060016117a7565b60008061267283856132bb565b9050838110156112905760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a30565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590612702575060175460ff16155b80156127175750601554600160b01b900460ff165b801561131a57505060165430600090815260056020526040902054101590565b6017805460ff19166001179055600e54600061275482600261327a565b600a54601654612764919061327a565b61276e9190613299565b905060008160165461278091906132d3565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106127ba576127ba613107565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061280e5761280e613107565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac94790612854908590600090869030904290600401613320565b600060405180830381600087803b15801561286e57600080fd5b505af1158015612882573d6000803e3d6000fd5b5050600a544792506128979150600290613299565b6128a190866132d3565b945060006128b086600261327a565b600a546128bd908461327a565b6128c79190613299565b9050600086600b54846128da919061327a565b6128e49190613299565b9050600087600c54856128f7919061327a565b6129019190613299565b9050600088600d5486612914919061327a565b61291e9190613299565b6012546040519192506001600160a01b03169084156108fc029085906000818181858888f19350505050158015612959573d6000803e3d6000fd5b506013546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612994573d6000803e3d6000fd5b506014546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156129cf573d6000803e3d6000fd5b508715612aa55760155460405163f305d71960e01b81523060048201819052602482018b9052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990869060c40160606040518083038185885af1158015612a43573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a689190613391565b505060408051868152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506017805460ff1916905550505050505050565b6000821580612ac95750600e54155b15612ad5575081611290565b6011546001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690841603612b145750600f54612b52565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603612b5257506010545b6000612b83612b646103e8606461327a565b61249484612b7d600e548a612c1390919063ffffffff16565b90612c13565b90508015612bff5730600090815260056020526040902054612ba59082612665565b30600081815260056020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612bf69085815260200190565b60405180910390a35b612c098582612cd7565b9695505050505050565b600082600003612c2557506000610d9e565b6000612c31838561327a565b905082612c3e8583613299565b146112905760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a30565b600061129083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d19565b600061129083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061207f565b60008183612d3a5760405162461bcd60e51b8152600401610a309190612dfb565b5060006120b08486613299565b60008083601f840112612d5957600080fd5b50813567ffffffffffffffff811115612d7157600080fd5b6020830191508360208260051b8501011115612d8c57600080fd5b9250929050565b8015158114612da157600080fd5b50565b600080600060408486031215612db957600080fd5b833567ffffffffffffffff811115612dd057600080fd5b612ddc86828701612d47565b9094509250506020840135612df081612d93565b809150509250925092565b600060208083528351808285015260005b81811015612e2857858101830151858201604001528201612e0c565b81811115612e3a576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215612e6257600080fd5b5035919050565b6001600160a01b0381168114612da157600080fd5b60008060408385031215612e9157600080fd5b8235612e9c81612e69565b946020939093013593505050565b600060208284031215612ebc57600080fd5b813561129081612d93565b600080600080600060608688031215612edf57600080fd5b8535612eea81612e69565b9450602086013567ffffffffffffffff80821115612f0757600080fd5b612f1389838a01612d47565b90965094506040880135915080821115612f2c57600080fd5b50612f3988828901612d47565b969995985093965092949392505050565b600080600060608486031215612f5f57600080fd5b8335612f6a81612e69565b92506020840135612f7a81612e69565b929592945050506040919091013590565b600060208284031215612f9d57600080fd5b813561129081612e69565b600080600060608486031215612fbd57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612fe957600080fd5b8335612ff481612e69565b9250602084013561300481612e69565b91506040840135612df081612e69565b6000806040838503121561302757600080fd5b823561303281612e69565b9150602083013561304281612e69565b809150509250929050565b6000806040838503121561306057600080fd5b8235612e9c81612d93565b6000806000806080858703121561308157600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039290921682521515602082015260400190565b634e487b7160e01b600052601160045260246000fd5b60006001820161316057613160613138565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b808511156131c25781600019048211156131a8576131a8613138565b808516156131b557918102915b93841c939080029061318c565b509250929050565b6000826131d957506001610d9e565b816131e657506000610d9e565b81600181146131fc576002811461320657613222565b6001915050610d9e565b60ff84111561321757613217613138565b50506001821b610d9e565b5060208310610133831016604e8410600b8410161715613245575081810a610d9e565b61324f8383613187565b806000190482111561326357613263613138565b029392505050565b600061129060ff8416836131ca565b600081600019048311821515161561329457613294613138565b500290565b6000826132b657634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156132ce576132ce613138565b500190565b6000828210156132e5576132e5613138565b500390565b6000602082840312156132fc57600080fd5b5051919050565b60006020828403121561331557600080fd5b815161129081612d93565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133705784516001600160a01b03168352938301939183019160010161334b565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156133a657600080fd5b835192506020840151915060408401519050925092509256feb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b9505a264697066735822122083aaf09b19183207e65962279d36a1329c307af432d8c6f8f6fc8aa1bc6ec5da64736f6c634300080e0033

Deployed Bytecode

0x6080604052600436106103015760003560e01c806378109e5411610190578063bd9ab537116100dc578063e96fada211610095578063f2fde38b1161006f578063f2fde38b1461098a578063f887ea40146109aa578063fe9fbb80146109ca578063ffb54a99146109ea57600080fd5b8063e96fada21461092a578063efa5e3471461094a578063f0b37c041461096a57600080fd5b8063bd9ab5371461083e578063c867d60b1461085e578063d7c010321461088e578063d7c94efd146108ae578063dd62ed3e146108c4578063df20fd491461090a57600080fd5b806398118cb411610149578063a8aa1b3111610123578063a8aa1b31146107a9578063a9059cbb146107dd578063b37dd690146107fd578063b6a5d7de1461081e57600080fd5b806398118cb41461075d5780639cd1aef114610773578063a5f3d0031461079357600080fd5b806378109e541461069f57806379ba5097146106b55780637d1db4a5146106ca578063893d20e8146106e05780638b42507f146106fe57806395d89b411461072e57600080fd5b80632b112e491161024f578063571ac8b0116102085780636ddd1713116101e25780636ddd1713146106115780636ec518b81461063257806370a082311461065257806377b54bad1461067f57600080fd5b8063571ac8b0146105bb5780636b67c4df146105db5780636ce46bc3146105f157600080fd5b80632b112e49146104c85780632f54bf6e146104dd578063313ce5671461050c5780633f4218e01461053357806340291143146105635780634be9d8691461059b57600080fd5b80630d295980116102bc5780631ca0a28d116102965780631ca0a28d146104525780631da1db5e146104725780631df4ccfc1461049257806323b872dd146104a857600080fd5b80630d29598014610407578063180b0d7e1461042757806318160ddd1461043d57600080fd5b80621086831461030d578062bff4461461032f5780630445b6671461034f57806306fdde031461037857806309302dc6146103b7578063095ea7b3146103d757600080fd5b3661030857005b600080fd5b34801561031957600080fd5b5061032d610328366004612da4565b610a0b565b005b34801561033b57600080fd5b5061032d61034a366004612da4565b610b2e565b34801561035b57600080fd5b5061036560165481565b6040519081526020015b60405180910390f35b34801561038457600080fd5b506103aa60405180604001604052806006815260200165436972636c6560d01b81525081565b60405161036f9190612dfb565b3480156103c357600080fd5b5061032d6103d2366004612e50565b610c42565b3480156103e357600080fd5b506103f76103f2366004612e7e565b610d37565b604051901515815260200161036f565b34801561041357600080fd5b5061032d610422366004612eaa565b610da4565b34801561043357600080fd5b506103656103e881565b34801561044957600080fd5b50610365610e92565b34801561045e57600080fd5b5061032d61046d366004612ec7565b610eb0565b34801561047e57600080fd5b5061032d61048d366004612e50565b6110ed565b34801561049e57600080fd5b50610365600e5481565b3480156104b457600080fd5b506103f76104c3366004612f4a565b6111d5565b3480156104d457600080fd5b50610365611297565b3480156104e957600080fd5b506103f76104f8366004612f8b565b6000546001600160a01b0391821691161490565b34801561051857600080fd5b50610521600981565b60405160ff909116815260200161036f565b34801561053f57600080fd5b506103f761054e366004612f8b565b60076020526000908152604090205460ff1681565b34801561056f57600080fd5b50601454610583906001600160a01b031681565b6040516001600160a01b03909116815260200161036f565b3480156105a757600080fd5b5061032d6105b6366004612da4565b61131f565b3480156105c757600080fd5b506103f76105d6366004612f8b565b611433565b3480156105e757600080fd5b50610365600b5481565b3480156105fd57600080fd5b5061032d61060c366004612fa8565b611441565b34801561061d57600080fd5b506015546103f790600160b01b900460ff1681565b34801561063e57600080fd5b50601354610583906001600160a01b031681565b34801561065e57600080fd5b5061036561066d366004612f8b565b60056020526000908152604090205481565b34801561068b57600080fd5b506103f761069a366004612e7e565b611482565b3480156106ab57600080fd5b5061036560045481565b3480156106c157600080fd5b5061032d61162b565b3480156106d657600080fd5b5061036560035481565b3480156106ec57600080fd5b506000546001600160a01b0316610583565b34801561070a57600080fd5b506103f7610719366004612f8b565b60086020526000908152604090205460ff1681565b34801561073a57600080fd5b506103aa60405180604001604052806003815260200162e2ad9560e81b81525081565b34801561076957600080fd5b50610365600a5481565b34801561077f57600080fd5b5061032d61078e366004612e50565b6117b1565b34801561079f57600080fd5b50610365600c5481565b3480156107b557600080fd5b506105837f0000000000000000000000009c04ada07d03e3857438ec8dd7747fd54167370181565b3480156107e957600080fd5b506103f76107f8366004612e7e565b6118df565b34801561080957600080fd5b506015546103f790600160a81b900460ff1681565b34801561082a57600080fd5b5061032d610839366004612f8b565b6118ec565b34801561084a57600080fd5b5061032d610859366004612e50565b61195c565b34801561086a57600080fd5b506103f7610879366004612f8b565b60096020526000908152604090205460ff1681565b34801561089a57600080fd5b5061032d6108a9366004612fd4565b611a4f565b3480156108ba57600080fd5b50610365600d5481565b3480156108d057600080fd5b506103656108df366004613014565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561091657600080fd5b5061032d61092536600461304d565b611c33565b34801561093657600080fd5b50601254610583906001600160a01b031681565b34801561095657600080fd5b5061032d61096536600461306b565b611d2c565b34801561097657600080fd5b5061032d610985366004612f8b565b611d95565b34801561099657600080fd5b5061032d6109a5366004612f8b565b611e5b565b3480156109b657600080fd5b50601554610583906001600160a01b031681565b3480156109d657600080fd5b506103f76109e5366004612f8b565b611f7b565b3480156109f657600080fd5b506015546103f790600160a01b900460ff1681565b610a1433611f7b565b610a395760405162461bcd60e51b8152600401610a309061309d565b60405180910390fd5b6101f58210610a5a5760405162461bcd60e51b8152600401610a30906130c2565b60005b82811015610b28578160096000868685818110610a7c57610a7c613107565b9050602002016020810190610a919190612f8b565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f566c2270277919680152b0734389ae919d95ff7e9024c03fc3c7c209ec8412c7848483818110610aec57610aec613107565b9050602002016020810190610b019190612f8b565b83604051610b1092919061311d565b60405180910390a1610b218161314e565b9050610a5d565b50505050565b610b3733611f7b565b610b535760405162461bcd60e51b8152600401610a309061309d565b6101f58210610b745760405162461bcd60e51b8152600401610a30906130c2565b60005b82811015610b28578160076000868685818110610b9657610b96613107565b9050602002016020810190610bab9190612f8b565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f9fbd25f95d342f2efc070b56d2fadd2341d264ef8c915dc268609b2ca1bb25de848483818110610c0657610c06613107565b9050602002016020810190610c1b9190612f8b565b83604051610c2a92919061311d565b60405180910390a1610c3b8161314e565b9050610b77565b6000546001600160a01b03163314610c6c5760405162461bcd60e51b8152600401610a3090613167565b600a811015610cc85760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261312560f01b6064820152608401610a30565b6103e881610cd86009600a61326b565b610ce79064174876e80061327a565b610cf1919061327a565b610cfb9190613299565b60048190556040519081527fa69fa556bf940aa0c695b9c8e1b229fdb1476830e2025e44da1028e0c1458d4a906020015b60405180910390a150565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d929086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610dce5760405162461bcd60e51b8152600401610a3090613167565b80610e3d57601554600160a81b900460ff16610e3d5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f742073746f702074726164696e67206166746572206c61756e636860448201526720697320646f6e6560c01b6064820152608401610a30565b6015805460ff60a01b1916600160a01b8315158102919091179182905560405160ff9190920416151581527ff865819dcfd8250cfaa23e1ab7129c1ec65c617bae1e716699dfe07dd7c489ee90602001610d2c565b610e9e6009600a61326b565b610ead9064174876e80061327a565b81565b610eb933611f7b565b610ed55760405162461bcd60e51b8152600401610a309061309d565b336001600160a01b03861614610f4f57601554600160a81b900460ff16610f4f5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420657865637574652074686973206166746572206c61756e636860448201526720697320646f6e6560c01b6064820152608401610a30565b6101f58310610f705760405162461bcd60e51b8152600401610a30906130c2565b828114610fd05760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e206164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610a30565b6000805b8481101561101457838382818110610fee57610fee613107565b905060200201358261100091906132bb565b91508061100c8161314e565b915050610fd4565b506001600160a01b03861660009081526005602052604090205481111561107d5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610a30565b60005b848110156110e4576110d18787878481811061109e5761109e613107565b90506020020160208101906110b39190612f8b565b8686858181106110c5576110c5613107565b90506020020135611f99565b50806110dc8161314e565b915050611080565b50505050505050565b6000546001600160a01b031633146111175760405162461bcd60e51b8152600401610a3090613167565b606581106111525760405162461bcd60e51b81526020600482015260086024820152674d6178203130302560c01b6044820152606401610a30565b4760006064611161848461327a565b61116b9190613299565b604051909150339082156108fc029083906000818181858888f1935050505015801561119b573d6000803e3d6000fd5b506040518181527f377153983e64f72f80af47182763316780b9133be808b7082a16710202b8fbda906020015b60405180910390a1505050565b6001600160a01b038316600090815260066020908152604080832033845290915281205460001914611282576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260068252838120338252909152919091205461125d91849061207f565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b61128d8484846120b9565b90505b9392505050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba549091906112f76009600a61326b565b6113069064174876e80061327a565b61131091906132d3565b61131a91906132d3565b905090565b61132833611f7b565b6113445760405162461bcd60e51b8152600401610a309061309d565b6101f582106113655760405162461bcd60e51b8152600401610a30906130c2565b60005b82811015610b2857816008600086868581811061138757611387613107565b905060200201602081019061139c9190612f8b565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f3c4f06d74861dea6c152189f2ac8853b6f789feb0e1182101b7ad9d1858f70e38484838181106113f7576113f7613107565b905060200201602081019061140c9190612f8b565b8360405161141b92919061311d565b60405180910390a161142c8161314e565b9050611368565b6000610d9e82600019610d37565b61144a33611f7b565b6114665760405162461bcd60e51b8152600401610a309061309d565b600f8290556010839055601181905561147d612476565b505050565b600080546001600160a01b031633146114ad5760405162461bcd60e51b8152600401610a3090613167565b306001600160a01b038416036115055760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207769746864726177206e617469766520746f6b656e000000006044820152606401610a30565b81600003611578576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611551573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157591906132ea565b91505b604080516001600160a01b0385168152602081018490527f960427a4fde284dcc8da2c51a43d210cfd7ed6f4328a24ba33eee49910db564b910160405180910390a160405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611607573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112909190613303565b6001546001600160a01b031633146116bc5760405162461bcd60e51b815260206004820152604860248201527f596f75206d757374206265206e6f6d696e6174656420617320706f74656e746960448201527f616c206f776e6572206265666f726520796f752063616e2061636365707420746064820152673432903937b6329760c11b608482015260a401610a30565b600080546001600160a01b03908116825260026020526040808320805460ff1990811690915560018054841685528285208054909216179055825490516000805160206133c0833981519152936117189392909216919061311d565b60405180910390a1600180546040516000805160206133c08339815191529261174a926001600160a01b03169161311d565b60405180910390a160018054600080546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163906020015b60405180910390a1565b6000546001600160a01b031633146117db5760405162461bcd60e51b8152600401610a3090613167565b8063365b805a146118215760405162461bcd60e51b815260206004820152601060248201526f4163636964656e74616c20507265737360801b6044820152606401610a30565b601554600160a01b900460ff166118925760405162461bcd60e51b815260206004820152602f60248201527f43616e7420636c6f7365206c61756e6368206d6f6465207768656e207472616460448201526e1a5b99c81a5cc8191a5cd8589b1959608a1b6064820152608401610a30565b6015805460ff60a81b1916908190556040517f4b4d10c084e3fa6291b99e9e41e22eadfb3b01ca4bb86ae8d7b9fefe1498f52f91610d2c91600160a81b90910460ff161515815260200190565b60006112903384846120b9565b6000546001600160a01b031633146119165760405162461bcd60e51b8152600401610a3090613167565b6001600160a01b03811660009081526002602052604090819020805460ff1916600190811790915590516000805160206133c083398151915291610d2c9184919061311d565b6000546001600160a01b031633146119865760405162461bcd60e51b8152600401610a3090613167565b600a8110156119e75760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152667468616e20312560c81b6064820152608401610a30565b6103e8816119f76009600a61326b565b611a069064174876e80061327a565b611a10919061327a565b611a1a9190613299565b60038190556040519081527f365a2bb07537fddd750e9ac8d56970e584f83a144bb5225e77491b83bccd118390602001610d2c565b6000546001600160a01b03163314611a795760405162461bcd60e51b8152600401610a3090613167565b6001600160a01b038316611ae45760405162461bcd60e51b815260206004820152602c60248201527f4d61726b6574696e672066656520616464726573732063616e6e6f742062652060448201526b7a65726f206164647265737360a01b6064820152608401610a30565b6001600160a01b038216611b515760405162461bcd60e51b815260206004820152602e60248201527f446576656c6f706d656e742066656520616464726573732063616e6e6f74206260448201526d65207a65726f206164647265737360901b6064820152608401610a30565b6001600160a01b038116611bb75760405162461bcd60e51b815260206004820152602760248201527f5465616d2066656520616464726573732063616e6e6f74206265207a65726f206044820152666164647265737360c81b6064820152608401610a30565b601280546001600160a01b038581166001600160a01b0319928316811790935560138054868316908416811790915560148054928616929093168217909255604080519384526020840192909252908201527fb93b1ef445620c8661ebddddb575085ede7dfe08ccc6a91b933a6520249c3c7c906060016111c8565b6000546001600160a01b03163314611c5d5760405162461bcd60e51b8152600401610a3090613167565b600a611c6a60098261326b565b611c799064174876e80061327a565b611c839190613299565b8110611cc35760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610a30565b6015805460ff60b01b1916600160b01b8415158102919091179182905560168390556040805184815260ff9290930491909116151560208301527f34c2d4c263b6f41223c6d30ae2e7bcb18629892587e0a4138f57ba2c523953d0910160405180910390a15050565b6000546001600160a01b03163314611d565760405162461bcd60e51b8152600401610a3090613167565b600a849055600b839055600c829055600d8190558082611d7685876132bb565b611d8091906132bb565b611d8a91906132bb565b600e55610b28612476565b6000546001600160a01b03163314611dbf5760405162461bcd60e51b8152600401610a3090613167565b6000546001600160a01b0390811690821603611e1d5760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610a30565b6001600160a01b038116600090815260026020526040808220805460ff19169055516000805160206133c083398151915291610d2c9184919061311d565b6000546001600160a01b03163314611e855760405162461bcd60e51b8152600401610a3090613167565b6000546001600160a01b0390811690821603611ed75760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903a34329037bbb732b960791b6044820152606401610a30565b6001600160a01b038116611f2d5760405162461bcd60e51b815260206004820152601860248201527f43616e206e6f74206265207a65726f20616464726573732e00000000000000006044820152606401610a30565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527fe235b3289f2e990914b334bf6827949c27f6ba58d3e5a1d6f8415037ca1ef22290602001610d2c565b6001600160a01b031660009081526002602052604090205460ff1690565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600590915291822054611fea91849061207f565b6001600160a01b0380861660009081526005602052604080822093909355908516815220546120199083612665565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061206d9086815260200190565b60405180910390a35060019392505050565b600081848411156120a35760405162461bcd60e51b8152600401610a309190612dfb565b5060006120b084866132d3565b95945050505050565b60175460009060ff16156120d9576120d2848484611f99565b9050611290565b6001600160a01b03841660009081526002602052604090205460ff1615801561211b57506001600160a01b03831660009081526002602052604090205460ff16155b1561217057601554600160a01b900460ff166121705760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610a30565b6001600160a01b03841660009081526002602052604090205460ff161580156121b257506001600160a01b03841660009081526009602052604090205460ff16155b80156121d757506001600160a01b03831660009081526009602052604090205460ff16155b801561221557507f0000000000000000000000009c04ada07d03e3857438ec8dd7747fd5416737016001600160a01b0316836001600160a01b031614155b1561228f576004546001600160a01b0384166000908152600560205260409020546122419084906132bb565b111561228f5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610a30565b600354821115806122b857506001600160a01b03841660009081526008602052604090205460ff165b806122db57506001600160a01b03831660009081526008602052604090205460ff165b61231f5760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610a30565b6123276126c4565b1561233457612334612737565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526005909152919091205461238691849061207f565b6001600160a01b038516600090815260056020908152604080832093909355600790529081205460ff16806123d357506001600160a01b03841660009081526007602052604090205460ff165b6123e7576123e2858486612aba565b6123e9565b825b6001600160a01b03851660009081526005602052604090205490915061240f9082612665565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124639085815260200190565b60405180910390a3506001949350505050565b606461249a6064612494601054600e54612c1390919063ffffffff16565b90612c95565b11156124e85760405162461bcd60e51b815260206004820152601f60248201527f427579207461782063616e6e6f74206265206d6f7265207468616e20313025006044820152606401610a30565b608c6125066064612494600f54600e54612c1390919063ffffffff16565b11156125545760405162461bcd60e51b815260206004820181905260248201527f53656c6c207461782063616e6e6f74206265206d6f7265207468616e203134256044820152606401610a30565b60326125726064612494601154600e54612c1390919063ffffffff16565b11156125cc5760405162461bcd60e51b815260206004820152602360248201527f5472616e73666572205461782063616e6e6f74206265206d6f7265207468616e60448201526220352560e81b6064820152608401610a30565b7f375884ed7f92283ee74d8884b39a803f4aee832b15766fe016b74fc791fc2ada6126096064612494601054600e54612c1390919063ffffffff16565b6126256064612494600f54600e54612c1390919063ffffffff16565b6126416064612494601154600e54612c1390919063ffffffff16565b6040805160ff948516815292841660208401529216918101919091526060016117a7565b60008061267283856132bb565b9050838110156112905760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a30565b6000336001600160a01b037f0000000000000000000000009c04ada07d03e3857438ec8dd7747fd5416737011614801590612702575060175460ff16155b80156127175750601554600160b01b900460ff165b801561131a57505060165430600090815260056020526040902054101590565b6017805460ff19166001179055600e54600061275482600261327a565b600a54601654612764919061327a565b61276e9190613299565b905060008160165461278091906132d3565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106127ba576127ba613107565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061280e5761280e613107565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac94790612854908590600090869030904290600401613320565b600060405180830381600087803b15801561286e57600080fd5b505af1158015612882573d6000803e3d6000fd5b5050600a544792506128979150600290613299565b6128a190866132d3565b945060006128b086600261327a565b600a546128bd908461327a565b6128c79190613299565b9050600086600b54846128da919061327a565b6128e49190613299565b9050600087600c54856128f7919061327a565b6129019190613299565b9050600088600d5486612914919061327a565b61291e9190613299565b6012546040519192506001600160a01b03169084156108fc029085906000818181858888f19350505050158015612959573d6000803e3d6000fd5b506013546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612994573d6000803e3d6000fd5b506014546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156129cf573d6000803e3d6000fd5b508715612aa55760155460405163f305d71960e01b81523060048201819052602482018b9052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990869060c40160606040518083038185885af1158015612a43573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a689190613391565b505060408051868152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506017805460ff1916905550505050505050565b6000821580612ac95750600e54155b15612ad5575081611290565b6011546001600160a01b037f0000000000000000000000009c04ada07d03e3857438ec8dd7747fd541673701811690841603612b145750600f54612b52565b7f0000000000000000000000009c04ada07d03e3857438ec8dd7747fd5416737016001600160a01b0316856001600160a01b031603612b5257506010545b6000612b83612b646103e8606461327a565b61249484612b7d600e548a612c1390919063ffffffff16565b90612c13565b90508015612bff5730600090815260056020526040902054612ba59082612665565b30600081815260056020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612bf69085815260200190565b60405180910390a35b612c098582612cd7565b9695505050505050565b600082600003612c2557506000610d9e565b6000612c31838561327a565b905082612c3e8583613299565b146112905760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a30565b600061129083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d19565b600061129083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061207f565b60008183612d3a5760405162461bcd60e51b8152600401610a309190612dfb565b5060006120b08486613299565b60008083601f840112612d5957600080fd5b50813567ffffffffffffffff811115612d7157600080fd5b6020830191508360208260051b8501011115612d8c57600080fd5b9250929050565b8015158114612da157600080fd5b50565b600080600060408486031215612db957600080fd5b833567ffffffffffffffff811115612dd057600080fd5b612ddc86828701612d47565b9094509250506020840135612df081612d93565b809150509250925092565b600060208083528351808285015260005b81811015612e2857858101830151858201604001528201612e0c565b81811115612e3a576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215612e6257600080fd5b5035919050565b6001600160a01b0381168114612da157600080fd5b60008060408385031215612e9157600080fd5b8235612e9c81612e69565b946020939093013593505050565b600060208284031215612ebc57600080fd5b813561129081612d93565b600080600080600060608688031215612edf57600080fd5b8535612eea81612e69565b9450602086013567ffffffffffffffff80821115612f0757600080fd5b612f1389838a01612d47565b90965094506040880135915080821115612f2c57600080fd5b50612f3988828901612d47565b969995985093965092949392505050565b600080600060608486031215612f5f57600080fd5b8335612f6a81612e69565b92506020840135612f7a81612e69565b929592945050506040919091013590565b600060208284031215612f9d57600080fd5b813561129081612e69565b600080600060608486031215612fbd57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612fe957600080fd5b8335612ff481612e69565b9250602084013561300481612e69565b91506040840135612df081612e69565b6000806040838503121561302757600080fd5b823561303281612e69565b9150602083013561304281612e69565b809150509250929050565b6000806040838503121561306057600080fd5b8235612e9c81612d93565b6000806000806080858703121561308157600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039290921682521515602082015260400190565b634e487b7160e01b600052601160045260246000fd5b60006001820161316057613160613138565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b808511156131c25781600019048211156131a8576131a8613138565b808516156131b557918102915b93841c939080029061318c565b509250929050565b6000826131d957506001610d9e565b816131e657506000610d9e565b81600181146131fc576002811461320657613222565b6001915050610d9e565b60ff84111561321757613217613138565b50506001821b610d9e565b5060208310610133831016604e8410600b8410161715613245575081810a610d9e565b61324f8383613187565b806000190482111561326357613263613138565b029392505050565b600061129060ff8416836131ca565b600081600019048311821515161561329457613294613138565b500290565b6000826132b657634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156132ce576132ce613138565b500190565b6000828210156132e5576132e5613138565b500390565b6000602082840312156132fc57600080fd5b5051919050565b60006020828403121561331557600080fd5b815161129081612d93565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133705784516001600160a01b03168352938301939183019160010161334b565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156133a657600080fd5b835192506020840151915060408401519050925092509256feb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b9505a264697066735822122083aaf09b19183207e65962279d36a1329c307af432d8c6f8f6fc8aa1bc6ec5da64736f6c634300080e0033

Deployed Bytecode Sourcemap

4588:14783:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15164:373;;;;;;;;;;-1:-1:-1;15164:373:0;;;;;:::i;:::-;;:::i;:::-;;14435:353;;;;;;;;;;-1:-1:-1;14435:353:0;;;;;:::i;:::-;;:::i;6164:49::-;;;;;;;;;;;;;;;;;;;1226:25:1;;;1214:2;1199:18;6164:49:0;;;;;;;;4841:38;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4841:38:0;;;;;;;;;;;;:::i;8431:309::-;;;;;;;;;;-1:-1:-1;8431:309:0;;;;;:::i;:::-;;:::i;7535:216::-;;;;;;;;;;-1:-1:-1;7535:216:0;;;;;:::i;:::-;;:::i;:::-;;;2670:14:1;;2663:22;2645:41;;2633:2;2618:18;7535:216:0;2505:187:1;12299:256:0;;;;;;;;;;-1:-1:-1;12299:256:0;;;;;:::i;:::-;;:::i;5695:45::-;;;;;;;;;;;;5736:4;5695:45;;4980:64;;;;;;;;;;;;;:::i;17911:696::-;;;;;;;;;;-1:-1:-1;17911:696:0;;;;;:::i;:::-;;:::i;11508:356::-;;;;;;;;;;-1:-1:-1;11508:356:0;;;;;:::i;:::-;;:::i;5608:80::-;;;;;;;;;;;;;;;;8053:370;;;;;;;;;;-1:-1:-1;8053:370:0;;;;;:::i;:::-;;:::i;17768:137::-;;;;;;;;;;;;;:::i;2755:103::-;;;;;;;;;;-1:-1:-1;2755:103:0;;;;;:::i;:::-;2810:4;2845:5;-1:-1:-1;;;;;2834:16:0;;;2845:5;;2834:16;;2755:103;4937:34;;;;;;;;;;;;4970:1;4937:34;;;;;4741:4:1;4729:17;;;4711:36;;4699:2;4684:18;4937:34:0;4569:184:1;5287:44:0;;;;;;;;;;-1:-1:-1;5287:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5943:30;;;;;;;;;;-1:-1:-1;5943:30:0;;;;-1:-1:-1;;;;;5943:30:0;;;;;;-1:-1:-1;;;;;4922:32:1;;;4904:51;;4892:2;4877:18;5943:30:0;4758:203:1;14796:360:0;;;;;;;;;;-1:-1:-1;14796:360:0;;;;;:::i;:::-;;:::i;7759:122::-;;;;;;;;;;-1:-1:-1;7759:122:0;;;;;:::i;:::-;;:::i;5492:32::-;;;;;;;;;;;;;;;;16106:225;;;;;;;;;;-1:-1:-1;16106:225:0;;;;;:::i;:::-;;:::i;6127:30::-;;;;;;;;;;-1:-1:-1;6127:30:0;;;;-1:-1:-1;;;6127:30:0;;;;;;5899:37;;;;;;;;;;-1:-1:-1;5899:37:0;;;;-1:-1:-1;;;;;5899:37:0;;;5165:45;;;;;;;;;;-1:-1:-1;5165:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;11872:419;;;;;;;;;;-1:-1:-1;11872:419:0;;;;;:::i;:::-;;:::i;5107:49::-;;;;;;;;;;;;;;;;3252:472;;;;;;;;;;;;;:::i;5053:47::-;;;;;;;;;;;;;;;;7310:78;;;;;;;;;;-1:-1:-1;7362:7:0;7380:5;-1:-1:-1;;;;;7380:5:0;7310:78;;5338:48;;;;;;;;;;-1:-1:-1;5338:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4886:44;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4886:44:0;;;;;5454:31;;;;;;;;;;;;;;;;12563:292;;;;;;;;;;-1:-1:-1;12563:292:0;;;;;:::i;:::-;;:::i;5531:34::-;;;;;;;;;;;;;;;;6013:29;;;;;;;;;;;;;;;7889:156;;;;;;;;;;-1:-1:-1;7889:156:0;;;;;:::i;:::-;;:::i;6089:29::-;;;;;;;;;;-1:-1:-1;6089:29:0;;;;-1:-1:-1;;;6089:29:0;;;;;;2397:138;;;;;;;;;;-1:-1:-1;2397:138:0;;;;;:::i;:::-;;:::i;8746:312::-;;;;;;;;;;-1:-1:-1;8746:312:0;;;;;:::i;:::-;;:::i;5393:52::-;;;;;;;;;;-1:-1:-1;5393:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16764:695;;;;;;;;;;-1:-1:-1;16764:695:0;;;;;:::i;:::-;;:::i;5572:27::-;;;;;;;;;;;;;;;;7394:133;;;;;;;;;;-1:-1:-1;7394:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7496:19:0;;;7478:7;7496:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7394:133;17469:287;;;;;;;;;;-1:-1:-1;17469:287:0;;;;;:::i;:::-;;:::i;5857:35::-;;;;;;;;;;-1:-1:-1;5857:35:0;;;;-1:-1:-1;;;;;5857:35:0;;;16339:417;;;;;;;;;;-1:-1:-1;16339:417:0;;;;;:::i;:::-;;:::i;2543:204::-;;;;;;;;;;-1:-1:-1;2543:204:0;;;;;:::i;:::-;;:::i;2981:263::-;;;;;;;;;;-1:-1:-1;2981:263:0;;;;;:::i;:::-;;:::i;5982:24::-;;;;;;;;;;-1:-1:-1;5982:24:0;;;;-1:-1:-1;;;;;5982:24:0;;;2866:107;;;;;;;;;;-1:-1:-1;2866:107:0;;;;;:::i;:::-;;:::i;6051:31::-;;;;;;;;;;-1:-1:-1;6051:31:0;;;;-1:-1:-1;;;6051:31:0;;;;;;15164:373;2338:24;2351:10;2338:12;:24::i;:::-;2330:48;;;;-1:-1:-1;;;2330:48:0;;;;;;;:::i;:::-;;;;;;;;;15299:3:::1;15280:22:::0;::::1;15272:71;;;;-1:-1:-1::0;;;15272:71:0::1;;;;;;;:::i;:::-;15359:9;15354:176;15372:20:::0;;::::1;15354:176;;;15450:6;15414:19;:33;15434:9;;15444:1;15434:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15414:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15414:33:0;:42;;-1:-1:-1;;15414:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15476::::1;15497:9:::0;;15507:1;15497:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15511:6;15476:42;;;;;;;:::i;:::-;;;;;;;;15394:3;::::0;::::1;:::i;:::-;;;15354:176;;;;15164:373:::0;;;:::o;14435:353::-;2338:24;2351:10;2338:12;:24::i;:::-;2330:48;;;;-1:-1:-1;;;2330:48:0;;;;;;;:::i;:::-;14562:3:::1;14543:22:::0;::::1;14535:71;;;;-1:-1:-1::0;;;14535:71:0::1;;;;;;;:::i;:::-;14622:9;14617:164;14635:20:::0;;::::1;14617:164;;;14705:6;14677:11;:25;14689:9;;14699:1;14689:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14677:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14677:25:0;:34;;-1:-1:-1;;14677:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14731:38:::1;14748:9:::0;;14758:1;14748:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14762:6;14731:38;;;;;;;:::i;:::-;;;;;;;;14657:3;::::0;::::1;:::i;:::-;;;14617:164;;8431:309:::0;2810:4;2845:5;-1:-1:-1;;;;;2845:5:0;2256:10;2834:16;2240:38;;;;-1:-1:-1;;;2240:38:0;;;;;;;:::i;:::-;8567:2:::1;8540:23;:29;;8532:75;;;::::0;-1:-1:-1;;;8532:75:0;;9379:2:1;8532:75:0::1;::::0;::::1;9361:21:1::0;9418:2;9398:18;;;9391:30;9457:34;9437:18;;;9430:62;-1:-1:-1;;;9508:18:1;;;9501:32;9550:19;;8532:75:0::1;9177:398:1::0;8532:75:0::1;8679:4;8651:23:::0;5032:12:::1;4970:1;5032:2;:12;:::i;:::-;5018:26;::::0;:11:::1;:26;:::i;:::-;8637:37;;;;:::i;:::-;8636:47;;;;:::i;:::-;8618:15;:65:::0;;;8699:33:::1;::::0;1226:25:1;;;8699:33:0::1;::::0;1214:2:1;1199:18;8699:33:0::1;;;;;;;;8431:309:::0;:::o;7535:216::-;7639:10;7610:4;7627:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7627:32:0;;;;;;;;;;:41;;;7684:37;7610:4;;7627:32;;7684:37;;;;7662:6;1226:25:1;;1214:2;1199:18;;1080:177;7684:37:0;;;;;;;;-1:-1:-1;7739:4:0;7535:216;;;;;:::o;12299:256::-;2810:4;2845:5;-1:-1:-1;;;;;2845:5:0;2256:10;2834:16;2240:38;;;;-1:-1:-1;;;2240:38:0;;;;;;;:::i;:::-;12370:7:::1;12366:101;;12401:10;::::0;-1:-1:-1;;;12401:10:0;::::1;;;12393:62;;;::::0;-1:-1:-1;;;12393:62:0;;11560:2:1;12393:62:0::1;::::0;::::1;11542:21:1::0;11599:2;11579:18;;;11572:30;11638:34;11618:18;;;11611:62;-1:-1:-1;;;11689:18:1;;;11682:38;11737:19;;12393:62:0::1;11358:404:1::0;12393:62:0::1;12477:11;:21:::0;;-1:-1:-1;;;;12477:21:0::1;-1:-1:-1::0;;;12477:21:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;12514:33:::1;::::0;12477:21:::1;12535:11:::0;;;::::1;;2670:14:1::0;2663:22;2645:41;;12514:33:0::1;::::0;2633:2:1;2618:18;12514:33:0::1;2505:187:1::0;4980:64:0;5032:12;4970:1;5032:2;:12;:::i;:::-;5018:26;;:11;:26;:::i;:::-;4980:64;:::o;17911:696::-;2338:24;2351:10;2338:12;:24::i;:::-;2330:48;;;;-1:-1:-1;;;2330:48:0;;;;;;;:::i;:::-;18035:10:::1;-1:-1:-1::0;;;;;18035:18:0;::::1;;18032:103;;18073:10;::::0;-1:-1:-1;;;18073:10:0;::::1;;;18065:62;;;::::0;-1:-1:-1;;;18065:62:0;;11969:2:1;18065:62:0::1;::::0;::::1;11951:21:1::0;12008:2;11988:18;;;11981:30;12047:34;12027:18;;;12020:62;-1:-1:-1;;;12098:18:1;;;12091:38;12146:19;;18065:62:0::1;11767:404:1::0;18065:62:0::1;18170:3;18151:22:::0;::::1;18143:71;;;;-1:-1:-1::0;;;18143:71:0::1;;;;;;;:::i;:::-;18229:33:::0;;::::1;18221:85;;;::::0;-1:-1:-1;;;18221:85:0;;12378:2:1;18221:85:0::1;::::0;::::1;12360:21:1::0;12417:2;12397:18;;;12390:30;12456:34;12436:18;;;12429:62;-1:-1:-1;;;12507:18:1;;;12500:38;12555:19;;18221:85:0::1;12176:404:1::0;18221:85:0::1;18315:12;18344:6:::0;18340:82:::1;18354:20:::0;;::::1;18340:82;;;18405:6;;18412:1;18405:9;;;;;;;:::i;:::-;;;;;;;18398:4;:16;;;;:::i;:::-;18391:23:::0;-1:-1:-1;18376:3:0;::::1;::::0;::::1;:::i;:::-;;;;18340:82;;;-1:-1:-1::0;;;;;;18438:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;:23;-1:-1:-1;18438:23:0::1;18430:63;;;::::0;-1:-1:-1;;;18430:63:0;;12920:2:1;18430:63:0::1;::::0;::::1;12902:21:1::0;12959:2;12939:18;;;12932:30;12998:29;12978:18;;;12971:57;13045:18;;18430:63:0::1;12718:351:1::0;18430:63:0::1;18506:6;18502:102;18516:20:::0;;::::1;18502:102;;;18553:43;18568:4;18573:9;;18583:1;18573:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;18586:6;;18593:1;18586:9;;;;;;;:::i;:::-;;;;;;;18553:14;:43::i;:::-;-1:-1:-1::0;18538:3:0;::::1;::::0;::::1;:::i;:::-;;;;18502:102;;;;18025:582;17911:696:::0;;;;;:::o;11508:356::-;2810:4;2845:5;-1:-1:-1;;;;;2845:5:0;2256:10;2834:16;2240:38;;;;-1:-1:-1;;;2240:38:0;;;;;;;:::i;:::-;11618:3:::1;11599:16;:22;11591:43;;;::::0;-1:-1:-1;;;11591:43:0;;13276:2:1;11591:43:0::1;::::0;::::1;13258:21:1::0;13315:1;13295:18;;;13288:29;-1:-1:-1;;;13333:18:1;;;13326:38;13381:18;;11591:43:0::1;13074:331:1::0;11591:43:0::1;11665:21;11645:17;11756:3;11723:28;11735:16:::0;11665:21;11723:28:::1;:::i;:::-;11721:38;;;;:::i;:::-;11770:43;::::0;11697:62;;-1:-1:-1;11778:10:0::1;::::0;11770:43;::::1;;;::::0;11697:62;;11770:43:::1;::::0;;;11697:62;11778:10;11770:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;11829:27:0::1;::::0;1226:25:1;;;11829:27:0::1;::::0;1214:2:1;1199:18;11829:27:0::1;;;;;;;;11580:284;;11508:356:::0;:::o;8053:370::-;-1:-1:-1;;;;;8173:19:0;;8153:4;8173:19;;;:11;:19;;;;;;;;8193:10;8173:31;;;;;;;;-1:-1:-1;;8173:52:0;8170:186;;8275:69;;;;;;;;;;;-1:-1:-1;;;8275:69:0;;;;;;;;-1:-1:-1;;;;;8275:19:0;;-1:-1:-1;8275:19:0;;;:11;:19;;;;;8295:10;8275:31;;;;;;;;;;:69;;8311:6;;8275:35;:69::i;:::-;-1:-1:-1;;;;;8241:19:0;;;;;;:11;:19;;;;;;;;8261:10;8241:31;;;;;;;:103;8170:186;8375:40;8389:6;8397:9;8408:6;8375:13;:40::i;:::-;8368:47;;8053:370;;;;;;:::o;17768:137::-;17881:9;:15;;;;4717:42;17821:7;17863:15;;;;;17821:7;;17881:15;5032:12;4970:1;5032:2;:12;:::i;:::-;5018:26;;:11;:26;:::i;:::-;17849:29;;;;:::i;:::-;:47;;;;:::i;:::-;17841:56;;17768:137;:::o;14796:360::-;2338:24;2351:10;2338:12;:24::i;:::-;2330:48;;;;-1:-1:-1;;;2330:48:0;;;;;;;:::i;:::-;14927:3:::1;14908:22:::0;::::1;14900:71;;;;-1:-1:-1::0;;;14900:71:0::1;;;;;;;:::i;:::-;14987:9;14982:167;15000:20:::0;;::::1;14982:167;;;15074:6;15042:15;:29;15058:9;;15068:1;15058:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15042:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15042:29:0;:38;;-1:-1:-1;;15042:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15100:37:::1;15116:9:::0;;15126:1;15116:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15130:6;15100:37;;;;;;;:::i;:::-;;;;;;;;15022:3;::::0;::::1;:::i;:::-;;;14982:167;;7759:122:::0;7814:4;7838:35;7846:7;-1:-1:-1;;7838:7:0;:35::i;16106:225::-;2338:24;2351:10;2338:12;:24::i;:::-;2330:48;;;;-1:-1:-1;;;2330:48:0;;;;;;;:::i;:::-;16206:14:::1;:22:::0;;;16239:13:::1;:20:::0;;;16270:18:::1;:27:::0;;;16310:13:::1;:11;:13::i;:::-;16106:225:::0;;;:::o;11872:419::-;11963:12;2845:5;;-1:-1:-1;;;;;2845:5:0;2256:10;2834:16;2240:38;;;;-1:-1:-1;;;2240:38:0;;;;;;;:::i;:::-;12020:4:::1;-1:-1:-1::0;;;;;11996:29:0;::::1;::::0;11988:70:::1;;;::::0;-1:-1:-1;;;11988:70:0;;13742:2:1;11988:70:0::1;::::0;::::1;13724:21:1::0;13781:2;13761:18;;;13754:30;13820;13800:18;;;13793:58;13868:18;;11988:70:0::1;13540:352:1::0;11988:70:0::1;12074:6;12084:1;12074:11:::0;12071:95:::1;;12110:44;::::0;-1:-1:-1;;;12110:44:0;;12148:4:::1;12110:44;::::0;::::1;4904:51:1::0;-1:-1:-1;;;;;12110:29:0;::::1;::::0;::::1;::::0;4877:18:1;;12110:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12101:53;;12071:95;12183:32;::::0;;-1:-1:-1;;;;;14278:32:1;;14260:51;;14342:2;14327:18;;14320:34;;;12183:32:0::1;::::0;14233:18:1;12183:32:0::1;;;;;;;12235:48;::::0;-1:-1:-1;;;12235:48:0;;12264:10:::1;12235:48;::::0;::::1;14260:51:1::0;14327:18;;;14320:34;;;-1:-1:-1;;;;;12235:28:0;::::1;::::0;::::1;::::0;14233:18:1;;12235:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3252:472::-:0;3321:14;;-1:-1:-1;;;;;3321:14:0;3307:10;:28;3299:113;;;;-1:-1:-1;;;3299:113:0;;14817:2:1;3299:113:0;;;14799:21:1;14856:2;14836:18;;;14829:30;14895:34;14875:18;;;14868:62;14966:34;14946:18;;;14939:62;-1:-1:-1;;;15017:19:1;;;15010:39;15066:19;;3299:113:0;14615:476:1;3299:113:0;3447:5;3438;;-1:-1:-1;;;;;3438:5:0;;;3423:21;;:14;:21;;;;;;:29;;-1:-1:-1;;3423:29:0;;;;;;3438:5;3478:14;;;;3463:30;;;;;:37;;;;;;;;3535:5;;3518:29;;-1:-1:-1;;;;;;;;;;;3518:29:0;;;3535:5;;;;;3447;3518:29;:::i;:::-;;;;;;;;3580:14;;;3563:37;;-1:-1:-1;;;;;;;;;;;3563:37:0;;;-1:-1:-1;;;;;3580:14:0;;3563:37;:::i;:::-;;;;;;;;3621:14;;;;3613:22;;-1:-1:-1;;;;;3621:14:0;;-1:-1:-1;;;;;;3613:22:0;;;;;;;;3646:27;;;;;;3689;;4904:51:1;;;3689:27:0;;4892:2:1;4877:18;3689:27:0;;;;;;;;3252:472::o;12563:292::-;2810:4;2845:5;-1:-1:-1;;;;;2845:5:0;2256:10;2834:16;2240:38;;;;-1:-1:-1;;;2240:38:0;;;;;;;:::i;:::-;12652:7:::1;12663:9;12652:20;12644:48;;;::::0;-1:-1:-1;;;12644:48:0;;15298:2:1;12644:48:0::1;::::0;::::1;15280:21:1::0;15337:2;15317:18;;;15310:30;-1:-1:-1;;;15356:18:1;;;15349:46;15412:18;;12644:48:0::1;15096:340:1::0;12644:48:0::1;12711:11;::::0;-1:-1:-1;;;12711:11:0;::::1;;;12703:70;;;::::0;-1:-1:-1;;;12703:70:0;;15643:2:1;12703:70:0::1;::::0;::::1;15625:21:1::0;15682:2;15662:18;;;15655:30;15721:34;15701:18;;;15694:62;-1:-1:-1;;;15772:18:1;;;15765:45;15827:19;;12703:70:0::1;15441:411:1::0;12703:70:0::1;12784:10;:18:::0;;-1:-1:-1;;;;12784:18:0::1;::::0;;;;12818:29:::1;::::0;::::1;::::0;::::1;::::0;-1:-1:-1;;;12836:10:0;;::::1;12784:18;12836:10;2670:14:1::0;2663:22;2645:41;;2633:2;2618:18;;2505:187;7889:156:0;7969:4;7993:44;8007:10;8019:9;8030:6;7993:13;:44::i;2397:138::-;2810:4;2845:5;-1:-1:-1;;;;;2845:5:0;2256:10;2834:16;2240:38;;;;-1:-1:-1;;;2240:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2459:19:0;::::1;;::::0;;;:14:::1;:19;::::0;;;;;;:26;;-1:-1:-1;;2459:26:0::1;2481:4;2459:26:::0;;::::1;::::0;;;2501;;-1:-1:-1;;;;;;;;;;;2501:26:0;::::1;::::0;2474:3;;2481:4;2501:26:::1;:::i;8746:312::-:0;2810:4;2845:5;-1:-1:-1;;;;;2845:5:0;2256:10;2834:16;2240:38;;;;-1:-1:-1;;;2240:38:0;;;;;;;:::i;:::-;8880:2:::1;8852:24;:30;;8844:81;;;::::0;-1:-1:-1;;;8844:81:0;;16059:2:1;8844:81:0::1;::::0;::::1;16041:21:1::0;16098:2;16078:18;;;16071:30;16137:34;16117:18;;;16110:62;-1:-1:-1;;;16188:18:1;;;16181:37;16235:19;;8844:81:0::1;15857:403:1::0;8844:81:0::1;8995:4;8966:24:::0;5032:12:::1;4970:1;5032:2;:12;:::i;:::-;5018:26;::::0;:11:::1;:26;:::i;:::-;8952:38;;;;:::i;:::-;8951:48;;;;:::i;:::-;8936:12;:63:::0;;;9015:35:::1;::::0;1226:25:1;;;9015:35:0::1;::::0;1214:2:1;1199:18;9015:35:0::1;1080:177:1::0;16764:695:0;2810:4;2845:5;-1:-1:-1;;;;;2845:5:0;2256:10;2834:16;2240:38;;;;-1:-1:-1;;;2240:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16917:35:0;::::1;16909:91;;;::::0;-1:-1:-1;;;16909:91:0;;16467:2:1;16909:91:0::1;::::0;::::1;16449:21:1::0;16506:2;16486:18;;;16479:30;16545:34;16525:18;;;16518:62;-1:-1:-1;;;16596:18:1;;;16589:42;16648:19;;16909:91:0::1;16265:408:1::0;16909:91:0::1;-1:-1:-1::0;;;;;17019:37:0;::::1;17011:95;;;::::0;-1:-1:-1;;;17011:95:0;;16880:2:1;17011:95:0::1;::::0;::::1;16862:21:1::0;16919:2;16899:18;;;16892:30;16958:34;16938:18;;;16931:62;-1:-1:-1;;;17009:18:1;;;17002:44;17063:19;;17011:95:0::1;16678:410:1::0;17011:95:0::1;-1:-1:-1::0;;;;;17125:30:0;::::1;17117:81;;;::::0;-1:-1:-1;;;17117:81:0;;17295:2:1;17117:81:0::1;::::0;::::1;17277:21:1::0;17334:2;17314:18;;;17307:30;17373:34;17353:18;;;17346:62;-1:-1:-1;;;17424:18:1;;;17417:37;17471:19;;17117:81:0::1;17093:403:1::0;17117:81:0::1;17211:20;:44:::0;;-1:-1:-1;;;;;17211:44:0;;::::1;-1:-1:-1::0;;;;;;17211:44:0;;::::1;::::0;::::1;::::0;;;17266:22:::1;:48:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;17325:15:::1;:34:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;17377:74:::1;::::0;;17741:34:1;;;17806:2;17791:18;;17784:43;;;;17843:18;;;17836:43;17377:74:0::1;::::0;17691:2:1;17676:18;17377:74:0::1;17501:384:1::0;17469:287:0;2810:4;2845:5;-1:-1:-1;;;;;2845:5:0;2256:10;2834:16;2240:38;;;;-1:-1:-1;;;2240:38:0;;;;;;;:::i;:::-;17591:2:::1;5032:12;4970:1;17591:2:::0;5032:12:::1;:::i;:::-;5018:26;::::0;:11:::1;:26;:::i;:::-;17579:14;;;;:::i;:::-;17568:7;:26;17560:54;;;::::0;-1:-1:-1;;;17560:54:0;;18092:2:1;17560:54:0::1;::::0;::::1;18074:21:1::0;18131:2;18111:18;;;18104:30;-1:-1:-1;;;18150:18:1;;;18143:45;18205:18;;17560:54:0::1;17890:339:1::0;17560:54:0::1;17627:11;:22:::0;;-1:-1:-1;;;;17627:22:0::1;-1:-1:-1::0;;;17627:22:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;:11:::1;17660:23:::0;;;17701:47:::1;::::0;;18402:25:1;;;17627:22:0::1;17736:11:::0;;;::::1;::::0;;;::::1;18470:14:1::0;18463:22;18458:2;18443:18;;18436:50;17701:47:0::1;::::0;18375:18:1;17701:47:0::1;;;;;;;17469:287:::0;;:::o;16339:417::-;2810:4;2845:5;-1:-1:-1;;;;;2845:5:0;2256:10;2834:16;2240:38;;;;-1:-1:-1;;;2240:38:0;;;;;;;:::i;:::-;16485:12:::1;:28:::0;;;16524:12:::1;:28:::0;;;16563:14:::1;:32:::0;;;16606:7:::1;:18:::0;;;16616:8;16580:15;16656:29:::1;16539:13:::0;16500;16656:29:::1;:::i;:::-;:47;;;;:::i;:::-;:58;;;;:::i;:::-;16645:8;:69:::0;16735:13:::1;:11;:13::i;2543:204::-:0;2810:4;2845:5;-1:-1:-1;;;;;2845:5:0;2256:10;2834:16;2240:38;;;;-1:-1:-1;;;2240:38:0;;;;;;;:::i;:::-;2622:5:::1;::::0;-1:-1:-1;;;;;2622:5:0;;::::1;2615:12:::0;;::::1;::::0;2607:51:::1;;;::::0;-1:-1:-1;;;2607:51:0;;18699:2:1;2607:51:0::1;::::0;::::1;18681:21:1::0;18738:2;18718:18;;;18711:30;18777:28;18757:18;;;18750:56;18823:18;;2607:51:0::1;18497:350:1::0;2607:51:0::1;-1:-1:-1::0;;;;;2669:19:0;::::1;2691:5;2669:19:::0;;;:14:::1;:19;::::0;;;;;:27;;-1:-1:-1;;2669:27:0::1;::::0;;2712;-1:-1:-1;;;;;;;;;;;2712:27:0;::::1;::::0;2684:3;;2691:5;2712:27:::1;:::i;2981:263::-:0;2810:4;2845:5;-1:-1:-1;;;;;2845:5:0;2256:10;2834:16;2240:38;;;;-1:-1:-1;;;2240:38:0;;;;;;;:::i;:::-;3074:5:::1;::::0;-1:-1:-1;;;;;3074:5:0;;::::1;3067:12:::0;;::::1;::::0;3059:42:::1;;;::::0;-1:-1:-1;;;3059:42:0;;19054:2:1;3059:42:0::1;::::0;::::1;19036:21:1::0;19093:2;19073:18;;;19066:30;-1:-1:-1;;;19112:18:1;;;19105:47;19169:18;;3059:42:0::1;18852:341:1::0;3059:42:0::1;-1:-1:-1::0;;;;;3120:17:0;::::1;3112:54;;;::::0;-1:-1:-1;;;3112:54:0;;19400:2:1;3112:54:0::1;::::0;::::1;19382:21:1::0;19439:2;19419:18;;;19412:30;19478:26;19458:18;;;19451:54;19522:18;;3112:54:0::1;19198:348:1::0;3112:54:0::1;3177:14;:20:::0;;-1:-1:-1;;;;;;3177:20:0::1;-1:-1:-1::0;;;;;3177:20:0;::::1;::::0;;::::1;::::0;;;3213:23:::1;::::0;4904:51:1;;;3213:23:0::1;::::0;4892:2:1;4877:18;3213:23:0::1;4758:203:1::0;2866:107:0;-1:-1:-1;;;;;2946:19:0;2922:4;2946:19;;;:14;:19;;;;;;;;;2866:107::o;10234:330::-;10364:53;;;;;;;;;;;-1:-1:-1;;;10364:53:0;;;;;;;;-1:-1:-1;;;;;10364:17:0;;10327:4;10364:17;;;:9;:17;;;;;;;:53;;10386:6;;10364:21;:53::i;:::-;-1:-1:-1;;;;;10344:17:0;;;;;;;:9;:17;;;;;;:73;;;;10451:20;;;;;;;:32;;10476:6;10451:24;:32::i;:::-;-1:-1:-1;;;;;10428:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10499:35;;;;;;;;;;10527:6;1226:25:1;;1214:2;1199:18;;1080:177;10499:35:0;;;;;;;;-1:-1:-1;10552:4:0;10234:330;;;;;:::o;422:192::-;508:7;544:12;536:6;;;;528:29;;;;-1:-1:-1;;;528:29:0;;;;;;;;:::i;:::-;-1:-1:-1;568:9:0;580:5;584:1;580;:5;:::i;:::-;568:17;422:192;-1:-1:-1;;;;;422:192:0:o;9066:1156::-;9178:6;;9158:4;;9178:6;;9175:63;;;9194:41;9209:6;9217:9;9228:6;9194:14;:41::i;:::-;9187:48;;;;9175:63;-1:-1:-1;;;;;9254:22:0;;;;;;:14;:22;;;;;;;;9253:23;:53;;;;-1:-1:-1;;;;;;9281:25:0;;;;;;:14;:25;;;;;;;;9280:26;9253:53;9250:127;;;9330:11;;-1:-1:-1;;;9330:11:0;;;;9322:43;;;;-1:-1:-1;;;9322:43:0;;19969:2:1;9322:43:0;;;19951:21:1;20008:2;19988:18;;;19981:30;-1:-1:-1;;;20027:18:1;;;20020:50;20087:18;;9322:43:0;19767:344:1;9322:43:0;-1:-1:-1;;;;;9394:22:0;;;;;;:14;:22;;;;;;;;9393:23;:55;;;;-1:-1:-1;;;;;;9421:27:0;;;;;;:19;:27;;;;;;;;9420:28;9393:55;:90;;;;-1:-1:-1;;;;;;9453:30:0;;;;;;:19;:30;;;;;;;;9452:31;9393:90;:111;;;;;9500:4;-1:-1:-1;;;;;9487:17:0;:9;-1:-1:-1;;;;;9487:17:0;;;9393:111;9389:230;;;9564:15;;-1:-1:-1;;;;;9530:20:0;;;;;;:9;:20;;;;;;:29;;9553:6;;9530:29;:::i;:::-;9529:50;;9521:86;;;;-1:-1:-1;;;9521:86:0;;20318:2:1;9521:86:0;;;20300:21:1;20357:2;20337:18;;;20330:30;20396:26;20376:18;;;20369:54;20440:18;;9521:86:0;20116:348:1;9521:86:0;9695:12;;9685:6;:22;;9684:51;;;-1:-1:-1;;;;;;9712:23:0;;;;;;:15;:23;;;;;;;;9684:51;:81;;;-1:-1:-1;;;;;;9739:26:0;;;;;;:15;:26;;;;;;;;9684:81;9676:115;;;;-1:-1:-1;;;9676:115:0;;20671:2:1;9676:115:0;;;20653:21:1;20710:2;20690:18;;;20683:30;-1:-1:-1;;;20729:18:1;;;20722:51;20790:18;;9676:115:0;20469:345:1;9676:115:0;9807:16;:14;:16::i;:::-;9804:35;;;9826:10;:8;:10::i;:::-;9871:53;;;;;;;;;;;-1:-1:-1;;;9871:53:0;;;;;;;;-1:-1:-1;;;;;9871:17:0;;-1:-1:-1;9871:17:0;;;:9;:17;;;;;;;;:53;;9893:6;;9871:21;:53::i;:::-;-1:-1:-1;;;;;9851:17:0;;;;;;:9;:17;;;;;;;;:73;;;;9963:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;9986:22:0;;;;;;:11;:22;;;;;;;;9963:45;9962:93;;10021:34;10029:6;10037;10045:9;10021:7;:34::i;:::-;9962:93;;;10012:6;9962:93;-1:-1:-1;;;;;10091:20:0;;;;;;:9;:20;;;;;;9937:118;;-1:-1:-1;10091:40:0;;9937:118;10091:24;:40::i;:::-;-1:-1:-1;;;;;10068:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10149:43;;;;;;;;;;10177:14;1226:25:1;;1214:2;1199:18;;1080:177;10149:43:0;;;;;;;;-1:-1:-1;10210:4:0;;9066:1156;-1:-1:-1;;;;9066:1156:0:o;15545:553::-;15636:3;15596:36;15628:3;15596:27;15609:13;;15596:8;;:12;;:27;;;;:::i;:::-;:31;;:36::i;:::-;:43;;15588:87;;;;-1:-1:-1;;;15588:87:0;;21021:2:1;15588:87:0;;;21003:21:1;21060:2;21040:18;;;21033:30;21099:33;21079:18;;;21072:61;21150:18;;15588:87:0;20819:355:1;15588:87:0;15735:3;15694:37;15727:3;15694:28;15707:14;;15694:8;;:12;;:28;;;;:::i;:37::-;:44;;15686:89;;;;-1:-1:-1;;;15686:89:0;;21381:2:1;15686:89:0;;;21363:21:1;;;21400:18;;;21393:30;21459:34;21439:18;;;21432:62;21511:18;;15686:89:0;21179:356:1;15686:89:0;15839:2;15794:41;15831:3;15794:32;15807:18;;15794:8;;:12;;:32;;;;:::i;:41::-;:47;;15786:95;;;;-1:-1:-1;;;15786:95:0;;21742:2:1;15786:95:0;;;21724:21:1;21781:2;21761:18;;;21754:30;21820:34;21800:18;;;21793:62;-1:-1:-1;;;21871:18:1;;;21864:33;21914:19;;15786:95:0;21540:399:1;15786:95:0;15899:191;15916:36;15948:3;15916:27;15929:13;;15916:8;;:12;;:27;;;;:::i;:36::-;15974:37;16007:3;15974:28;15987:14;;15974:8;;:12;;:28;;;;:::i;:37::-;16033:41;16070:3;16033:32;16046:18;;16033:8;;:12;;:32;;;;:::i;:41::-;15899:191;;;22164:4:1;22152:17;;;22134:36;;22206:17;;;22201:2;22186:18;;22179:45;22260:17;;22240:18;;;22233:45;;;;22122:2;22107:18;15899:191:0;21944:340:1;93:181:0;151:7;;183:5;187:1;183;:5;:::i;:::-;171:17;;212:1;207;:6;;199:46;;;;-1:-1:-1;;;199:46:0;;22491:2:1;199:46:0;;;22473:21:1;22530:2;22510:18;;;22503:30;22569:29;22549:18;;;22542:57;22616:18;;199:46:0;22289:351:1;11303:197:0;11352:4;11376:10;-1:-1:-1;;;;;11390:4:0;11376:18;;;;;:38;;-1:-1:-1;11408:6:0;;;;11407:7;11376:38;:62;;;;-1:-1:-1;11427:11:0;;-1:-1:-1;;;11427:11:0;;;;11376:62;:116;;;;-1:-1:-1;;11479:13:0;;11469:4;11451:24;;;;:9;:24;;;;;;:41;;;11303:197::o;12863:1564::-;6260:6;:13;;-1:-1:-1;;6260:13:0;6269:4;6260:13;;;12936:8:::1;::::0;6260:6;13013:15:::1;12936:8:::0;13027:1:::1;13013:15;:::i;:::-;12998:12;;12982:13;;:28;;;;:::i;:::-;12981:48;;;;:::i;:::-;12955:74;;13040:20;13079:15;13063:13;;:31;;;;:::i;:::-;13131:16;::::0;;13145:1:::1;13131:16:::0;;;;;::::1;::::0;;13040:54;;-1:-1:-1;13107:21:0::1;::::0;13131:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13131:16:0::1;13107:40;;13176:4;13158;13163:1;13158:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;13158:23:0::1;;;-1:-1:-1::0;;;;;13158:23:0::1;;;::::0;::::1;13202:4;13192;13197:1;13192:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13192:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;13219:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;13219:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;13291:12;;13219:6:::1;::::0;13334:4;;13361::::1;::::0;13381:15:::1;::::0;13219:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;13503:12:0::1;::::0;13440:21:::1;::::0;-1:-1:-1;13503:16:0::1;::::0;-1:-1:-1;13518:1:0::1;::::0;13503:16:::1;:::i;:::-;13488:32;::::0;:11;:32:::1;:::i;:::-;13474:46:::0;-1:-1:-1;13541:26:0::1;13600:15;13474:46:::0;13614:1:::1;13600:15;:::i;:::-;13583:12;::::0;13571:24:::1;::::0;:9;:24:::1;:::i;:::-;13570:46;;;;:::i;:::-;13541:75;;13627:26;13685:11;13669:12;;13657:9;:24;;;;:::i;:::-;13656:40;;;;:::i;:::-;13627:69;;13707:28;13769:11;13751:14;;13739:9;:26;;;;:::i;:::-;13738:42;;;;:::i;:::-;13707:73;;13791:21;13839:11;13828:7;;13816:9;:19;;;;:::i;:::-;13815:35;;;;:::i;:::-;13871:20;::::0;13863:58:::1;::::0;13791:59;;-1:-1:-1;;;;;;13871:20:0::1;::::0;13863:58;::::1;;;::::0;13902:18;;13871:20:::1;13863:58:::0;13871:20;13863:58;13902:18;13871:20;13863:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;13940:22:0::1;::::0;13932:62:::1;::::0;-1:-1:-1;;;;;13940:22:0;;::::1;::::0;13932:62;::::1;;;::::0;13973:20;;13940:22:::1;13932:62:::0;13940:22;13932:62;13973:20;13940:22;13932:62;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;14013:15:0::1;::::0;14005:48:::1;::::0;-1:-1:-1;;;;;14013:15:0;;::::1;::::0;14005:48;::::1;;;::::0;14039:13;;14013:15:::1;14005:48:::0;14013:15;14005:48;14039:13;14013:15;14005:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;14069:19:0;;14066:354:::1;;14104:6;::::0;:236:::1;::::0;-1:-1:-1;;;14104:236:0;;14180:4:::1;14104:236;::::0;::::1;24103:34:1::0;;;24153:18;;;24146:34;;;14104:6:0::1;24196:18:1::0;;;24189:34;;;24239:18;;;24232:34;24282:19;;;24275:44;14310:15:0::1;24335:19:1::0;;;24328:35;-1:-1:-1;;;;;14104:6:0;;::::1;::::0;:22:::1;::::0;14134:18;;24037:19:1;;14104:236:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14360:48:0::1;::::0;;24859:25:1;;;24915:2;24900:18;;24893:34;;;14360:48:0::1;::::0;-1:-1:-1;24832:18:1;14360:48:0::1;;;;;;;14066:354;-1:-1:-1::0;;6278:6:0;:14;;-1:-1:-1;;6278:14:0;;;-1:-1:-1;;;;;;;12863:1564:0:o;10572:723::-;10658:7;10681:11;;;:28;;-1:-1:-1;10696:8:0;;:13;10681:28;10678:72;;;-1:-1:-1;10732:6:0;10725:13;;10678:72;10783:18;;-1:-1:-1;;;;;10830:4:0;10817:17;;;;;;10814:154;;-1:-1:-1;10864:14:0;;10814:154;;;10909:4;-1:-1:-1;;;;;10899:14:0;:6;-1:-1:-1;;;;;10899:14:0;;10896:72;;-1:-1:-1;10943:13:0;;10896:72;10980:17;11000:62;11041:20;5736:4;11058:3;11041:20;:::i;:::-;11000:36;11025:10;11000:20;11011:8;;11000:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:62::-;10980:82;-1:-1:-1;11078:13:0;;11075:172;;11152:4;11134:24;;;;:9;:24;;;;;;:39;;11163:9;11134:28;:39::i;:::-;11125:4;11107:24;;;;:9;:24;;;;;;;:66;;;;11193:42;;-1:-1:-1;;;;;11193:42:0;;;;;;;11225:9;1226:25:1;;1214:2;1199:18;;1080:177;11193:42:0;;;;;;;;11075:172;11266:21;:6;11277:9;11266:10;:21::i;:::-;11259:28;10572:723;-1:-1:-1;;;;;;10572:723:0:o;620:250::-;678:7;702:1;707;702:6;698:47;;-1:-1:-1;732:1:0;725:8;;698:47;757:9;769:5;773:1;769;:5;:::i;:::-;757:17;-1:-1:-1;802:1:0;793:5;797:1;757:17;793:5;:::i;:::-;:10;785:56;;;;-1:-1:-1;;;785:56:0;;25140:2:1;785:56:0;;;25122:21:1;25179:2;25159:18;;;25152:30;25218:34;25198:18;;;25191:62;-1:-1:-1;;;25269:18:1;;;25262:31;25310:19;;785:56:0;24938:397:1;876:132:0;934:7;961:39;965:1;968;961:39;;;;;;;;;;;;;;;;;:3;:39::i;280:136::-;338:7;365:43;369:1;372;365:43;;;;;;;;;;;;;;;;;:3;:43::i;1014:189::-;1100:7;1135:12;1128:5;1120:28;;;;-1:-1:-1;;;1120:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1159:9:0;1171:5;1175:1;1171;:5;:::i;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:118::-;472:5;465:13;458:21;451:5;448:32;438:60;;494:1;491;484:12;438:60;386:118;:::o;509:566::-;601:6;609;617;670:2;658:9;649:7;645:23;641:32;638:52;;;686:1;683;676:12;638:52;726:9;713:23;759:18;751:6;748:30;745:50;;;791:1;788;781:12;745:50;830:70;892:7;883:6;872:9;868:22;830:70;:::i;:::-;919:8;;-1:-1:-1;804:96:1;-1:-1:-1;;1004:2:1;989:18;;976:32;1017:28;976:32;1017:28;:::i;:::-;1064:5;1054:15;;;509:566;;;;;:::o;1262:597::-;1374:4;1403:2;1432;1421:9;1414:21;1464:6;1458:13;1507:6;1502:2;1491:9;1487:18;1480:34;1532:1;1542:140;1556:6;1553:1;1550:13;1542:140;;;1651:14;;;1647:23;;1641:30;1617:17;;;1636:2;1613:26;1606:66;1571:10;;1542:140;;;1700:6;1697:1;1694:13;1691:91;;;1770:1;1765:2;1756:6;1745:9;1741:22;1737:31;1730:42;1691:91;-1:-1:-1;1843:2:1;1822:15;-1:-1:-1;;1818:29:1;1803:45;;;;1850:2;1799:54;;1262:597;-1:-1:-1;;;1262:597:1:o;1864:180::-;1923:6;1976:2;1964:9;1955:7;1951:23;1947:32;1944:52;;;1992:1;1989;1982:12;1944:52;-1:-1:-1;2015:23:1;;1864:180;-1:-1:-1;1864:180:1:o;2049:131::-;-1:-1:-1;;;;;2124:31:1;;2114:42;;2104:70;;2170:1;2167;2160:12;2185:315;2253:6;2261;2314:2;2302:9;2293:7;2289:23;2285:32;2282:52;;;2330:1;2327;2320:12;2282:52;2369:9;2356:23;2388:31;2413:5;2388:31;:::i;:::-;2438:5;2490:2;2475:18;;;;2462:32;;-1:-1:-1;;;2185:315:1:o;2697:241::-;2753:6;2806:2;2794:9;2785:7;2781:23;2777:32;2774:52;;;2822:1;2819;2812:12;2774:52;2861:9;2848:23;2880:28;2902:5;2880:28;:::i;2943:908::-;3074:6;3082;3090;3098;3106;3159:2;3147:9;3138:7;3134:23;3130:32;3127:52;;;3175:1;3172;3165:12;3127:52;3214:9;3201:23;3233:31;3258:5;3233:31;:::i;:::-;3283:5;-1:-1:-1;3339:2:1;3324:18;;3311:32;3362:18;3392:14;;;3389:34;;;3419:1;3416;3409:12;3389:34;3458:70;3520:7;3511:6;3500:9;3496:22;3458:70;:::i;:::-;3547:8;;-1:-1:-1;3432:96:1;-1:-1:-1;3635:2:1;3620:18;;3607:32;;-1:-1:-1;3651:16:1;;;3648:36;;;3680:1;3677;3670:12;3648:36;;3719:72;3783:7;3772:8;3761:9;3757:24;3719:72;:::i;:::-;2943:908;;;;-1:-1:-1;2943:908:1;;-1:-1:-1;3810:8:1;;3693:98;2943:908;-1:-1:-1;;;2943:908:1:o;3856:456::-;3933:6;3941;3949;4002:2;3990:9;3981:7;3977:23;3973:32;3970:52;;;4018:1;4015;4008:12;3970:52;4057:9;4044:23;4076:31;4101:5;4076:31;:::i;:::-;4126:5;-1:-1:-1;4183:2:1;4168:18;;4155:32;4196:33;4155:32;4196:33;:::i;:::-;3856:456;;4248:7;;-1:-1:-1;;;4302:2:1;4287:18;;;;4274:32;;3856:456::o;4317:247::-;4376:6;4429:2;4417:9;4408:7;4404:23;4400:32;4397:52;;;4445:1;4442;4435:12;4397:52;4484:9;4471:23;4503:31;4528:5;4503:31;:::i;4966:316::-;5043:6;5051;5059;5112:2;5100:9;5091:7;5087:23;5083:32;5080:52;;;5128:1;5125;5118:12;5080:52;-1:-1:-1;;5151:23:1;;;5221:2;5206:18;;5193:32;;-1:-1:-1;5272:2:1;5257:18;;;5244:32;;4966:316;-1:-1:-1;4966:316:1:o;5287:529::-;5364:6;5372;5380;5433:2;5421:9;5412:7;5408:23;5404:32;5401:52;;;5449:1;5446;5439:12;5401:52;5488:9;5475:23;5507:31;5532:5;5507:31;:::i;:::-;5557:5;-1:-1:-1;5614:2:1;5599:18;;5586:32;5627:33;5586:32;5627:33;:::i;:::-;5679:7;-1:-1:-1;5738:2:1;5723:18;;5710:32;5751:33;5710:32;5751:33;:::i;5821:388::-;5889:6;5897;5950:2;5938:9;5929:7;5925:23;5921:32;5918:52;;;5966:1;5963;5956:12;5918:52;6005:9;5992:23;6024:31;6049:5;6024:31;:::i;:::-;6074:5;-1:-1:-1;6131:2:1;6116:18;;6103:32;6144:33;6103:32;6144:33;:::i;:::-;6196:7;6186:17;;;5821:388;;;;;:::o;6214:309::-;6279:6;6287;6340:2;6328:9;6319:7;6315:23;6311:32;6308:52;;;6356:1;6353;6346:12;6308:52;6395:9;6382:23;6414:28;6436:5;6414:28;:::i;6528:385::-;6614:6;6622;6630;6638;6691:3;6679:9;6670:7;6666:23;6662:33;6659:53;;;6708:1;6705;6698:12;6659:53;-1:-1:-1;;6731:23:1;;;6801:2;6786:18;;6773:32;;-1:-1:-1;6852:2:1;6837:18;;6824:32;;6903:2;6888:18;6875:32;;-1:-1:-1;6528:385:1;-1:-1:-1;6528:385:1:o;7404:335::-;7606:2;7588:21;;;7645:2;7625:18;;;7618:30;-1:-1:-1;;;7679:2:1;7664:18;;7657:41;7730:2;7715:18;;7404:335::o;7744:401::-;7946:2;7928:21;;;7985:2;7965:18;;;7958:30;8024:34;8019:2;8004:18;;7997:62;-1:-1:-1;;;8090:2:1;8075:18;;8068:35;8135:3;8120:19;;7744:401::o;8150:127::-;8211:10;8206:3;8202:20;8199:1;8192:31;8242:4;8239:1;8232:15;8266:4;8263:1;8256:15;8282:284;-1:-1:-1;;;;;8468:32:1;;;;8450:51;;8544:14;8537:22;8532:2;8517:18;;8510:50;8438:2;8423:18;;8282:284::o;8571:127::-;8632:10;8627:3;8623:20;8620:1;8613:31;8663:4;8660:1;8653:15;8687:4;8684:1;8677:15;8703:135;8742:3;8763:17;;;8760:43;;8783:18;;:::i;:::-;-1:-1:-1;8830:1:1;8819:13;;8703:135::o;8843:329::-;9045:2;9027:21;;;9084:1;9064:18;;;9057:29;-1:-1:-1;;;9117:2:1;9102:18;;9095:36;9163:2;9148:18;;8843:329::o;9580:422::-;9669:1;9712:5;9669:1;9726:270;9747:7;9737:8;9734:21;9726:270;;;9806:4;9802:1;9798:6;9794:17;9788:4;9785:27;9782:53;;;9815:18;;:::i;:::-;9865:7;9855:8;9851:22;9848:55;;;9885:16;;;;9848:55;9964:22;;;;9924:15;;;;9726:270;;;9730:3;9580:422;;;;;:::o;10007:806::-;10056:5;10086:8;10076:80;;-1:-1:-1;10127:1:1;10141:5;;10076:80;10175:4;10165:76;;-1:-1:-1;10212:1:1;10226:5;;10165:76;10257:4;10275:1;10270:59;;;;10343:1;10338:130;;;;10250:218;;10270:59;10300:1;10291:10;;10314:5;;;10338:130;10375:3;10365:8;10362:17;10359:43;;;10382:18;;:::i;:::-;-1:-1:-1;;10438:1:1;10424:16;;10453:5;;10250:218;;10552:2;10542:8;10539:16;10533:3;10527:4;10524:13;10520:36;10514:2;10504:8;10501:16;10496:2;10490:4;10487:12;10483:35;10480:77;10477:159;;;-1:-1:-1;10589:19:1;;;10621:5;;10477:159;10668:34;10693:8;10687:4;10668:34;:::i;:::-;10738:6;10734:1;10730:6;10726:19;10717:7;10714:32;10711:58;;;10749:18;;:::i;:::-;10787:20;;10007:806;-1:-1:-1;;;10007:806:1:o;10818:140::-;10876:5;10905:47;10946:4;10936:8;10932:19;10926:4;10905:47;:::i;10963:168::-;11003:7;11069:1;11065;11061:6;11057:14;11054:1;11051:21;11046:1;11039:9;11032:17;11028:45;11025:71;;;11076:18;;:::i;:::-;-1:-1:-1;11116:9:1;;10963:168::o;11136:217::-;11176:1;11202;11192:132;;11246:10;11241:3;11237:20;11234:1;11227:31;11281:4;11278:1;11271:15;11309:4;11306:1;11299:15;11192:132;-1:-1:-1;11338:9:1;;11136:217::o;12585:128::-;12625:3;12656:1;12652:6;12649:1;12646:13;12643:39;;;12662:18;;:::i;:::-;-1:-1:-1;12698:9:1;;12585:128::o;13410:125::-;13450:4;13478:1;13475;13472:8;13469:34;;;13483:18;;:::i;:::-;-1:-1:-1;13520:9:1;;13410:125::o;13897:184::-;13967:6;14020:2;14008:9;13999:7;13995:23;13991:32;13988:52;;;14036:1;14033;14026:12;13988:52;-1:-1:-1;14059:16:1;;13897:184;-1:-1:-1;13897:184:1:o;14365:245::-;14432:6;14485:2;14473:9;14464:7;14460:23;14456:32;14453:52;;;14501:1;14498;14491:12;14453:52;14533:9;14527:16;14552:28;14574:5;14552:28;:::i;22777:980::-;23039:4;23087:3;23076:9;23072:19;23118:6;23107:9;23100:25;23144:2;23182:6;23177:2;23166:9;23162:18;23155:34;23225:3;23220:2;23209:9;23205:18;23198:31;23249:6;23284;23278:13;23315:6;23307;23300:22;23353:3;23342:9;23338:19;23331:26;;23392:2;23384:6;23380:15;23366:29;;23413:1;23423:195;23437:6;23434:1;23431:13;23423:195;;;23502:13;;-1:-1:-1;;;;;23498:39:1;23486:52;;23593:15;;;;23558:12;;;;23534:1;23452:9;23423:195;;;-1:-1:-1;;;;;;;23674:32:1;;;;23669:2;23654:18;;23647:60;-1:-1:-1;;;23738:3:1;23723:19;23716:35;23635:3;22777:980;-1:-1:-1;;;22777:980:1:o;24374:306::-;24462:6;24470;24478;24531:2;24519:9;24510:7;24506:23;24502:32;24499:52;;;24547:1;24544;24537:12;24499:52;24576:9;24570:16;24560:26;;24626:2;24615:9;24611:18;24605:25;24595:35;;24670:2;24659:9;24655:18;24649:25;24639:35;;24374:306;;;;;:::o

Swarm Source

ipfs://83aaf09b19183207e65962279d36a1329c307af432d8c6f8f6fc8aa1bc6ec5da

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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