ETH Price: $3,232.70 (+5.23%)

Contract

0x8a7426a06b1F32e74F01B391530892486A87C093
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve178550622023-08-06 9:36:11462 days ago1691314571IN
0x8a7426a0...86A87C093
0 ETH0.0005820612.34386352
Approve178081962023-07-30 20:21:59468 days ago1690748519IN
0x8a7426a0...86A87C093
0 ETH0.002386350.67109534
Approve178081572023-07-30 20:13:59468 days ago1690748039IN
0x8a7426a0...86A87C093
0 ETH0.0023990451.24183586
Approve178076942023-07-30 18:41:11469 days ago1690742471IN
0x8a7426a0...86A87C093
0 ETH0.0007629616.20099216
Approve178076732023-07-30 18:36:59469 days ago1690742219IN
0x8a7426a0...86A87C093
0 ETH0.0006999214.86224996
Approve178074152023-07-30 17:44:59469 days ago1690739099IN
0x8a7426a0...86A87C093
0 ETH0.0008028117.04705788
Approve178072822023-07-30 17:18:23469 days ago1690737503IN
0x8a7426a0...86A87C093
0 ETH0.0012815527.21272178
Approve178045322023-07-30 8:02:35469 days ago1690704155IN
0x8a7426a0...86A87C093
0 ETH0.0009130419.49194301
Approve178019362023-07-29 23:20:47469 days ago1690672847IN
0x8a7426a0...86A87C093
0 ETH0.0011232123.85053186
Approve178019282023-07-29 23:19:11469 days ago1690672751IN
0x8a7426a0...86A87C093
0 ETH0.0011095323.56003197
Approve177956802023-07-29 2:21:11470 days ago1690597271IN
0x8a7426a0...86A87C093
0 ETH0.0007618416.15653037
Approve177954052023-07-29 1:25:35470 days ago1690593935IN
0x8a7426a0...86A87C093
0 ETH0.0008433117.88417532
Approve177863212023-07-27 18:54:11472 days ago1690484051IN
0x8a7426a0...86A87C093
0 ETH0.0019951742.36582651
Approve177804682023-07-26 23:15:23472 days ago1690413323IN
0x8a7426a0...86A87C093
0 ETH0.0010705122.70249253
Approve177649132023-07-24 19:01:23475 days ago1690225283IN
0x8a7426a0...86A87C093
0 ETH0.0019705441.84277353
Approve177647982023-07-24 18:38:23475 days ago1690223903IN
0x8a7426a0...86A87C093
0 ETH0.0028834561.22759604
Approve177587722023-07-23 22:23:59475 days ago1690151039IN
0x8a7426a0...86A87C093
0 ETH0.0009693520.58335838
Approve177462442023-07-22 4:20:11477 days ago1689999611IN
0x8a7426a0...86A87C093
0 ETH0.0007164115.29433458
Approve177327292023-07-20 6:55:11479 days ago1689836111IN
0x8a7426a0...86A87C093
0 ETH0.0008390417.92143298
Approve177205382023-07-18 13:54:23481 days ago1689688463IN
0x8a7426a0...86A87C093
0 ETH0.001554333.00435425
Approve177201692023-07-18 12:39:11481 days ago1689683951IN
0x8a7426a0...86A87C093
0 ETH0.001690635.89856364
Approve176937452023-07-14 19:21:59484 days ago1689362519IN
0x8a7426a0...86A87C093
0 ETH0.0016221434.62131835
Approve176927962023-07-14 16:10:35485 days ago1689351035IN
0x8a7426a0...86A87C093
0 ETH0.002459952.23402294
Approve176817612023-07-13 2:55:11486 days ago1689216911IN
0x8a7426a0...86A87C093
0 ETH0.0007456215.91793911
Approve176814752023-07-13 1:56:59486 days ago1689213419IN
0x8a7426a0...86A87C093
0 ETH0.0009190519.63035107
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
178076972023-07-30 18:41:47469 days ago1690742507
0x8a7426a0...86A87C093
0.00585509 ETH
178076972023-07-30 18:41:47469 days ago1690742507
0x8a7426a0...86A87C093
0.00195169 ETH
178076972023-07-30 18:41:47469 days ago1690742507
0x8a7426a0...86A87C093
0.00780679 ETH
178074172023-07-30 17:45:23469 days ago1690739123
0x8a7426a0...86A87C093
0.00733464 ETH
178074172023-07-30 17:45:23469 days ago1690739123
0x8a7426a0...86A87C093
0.00244488 ETH
178074172023-07-30 17:45:23469 days ago1690739123
0x8a7426a0...86A87C093
0.00977953 ETH
177957102023-07-29 2:27:11470 days ago1690597631
0x8a7426a0...86A87C093
0.0124916 ETH
177957102023-07-29 2:27:11470 days ago1690597631
0x8a7426a0...86A87C093
0.00416386 ETH
177957102023-07-29 2:27:11470 days ago1690597631
0x8a7426a0...86A87C093
0.01665547 ETH
177649312023-07-24 19:04:59475 days ago1690225499
0x8a7426a0...86A87C093
0.01163878 ETH
177649312023-07-24 19:04:59475 days ago1690225499
0x8a7426a0...86A87C093
0.00387959 ETH
177649312023-07-24 19:04:59475 days ago1690225499
0x8a7426a0...86A87C093
0.01551837 ETH
177649222023-07-24 19:03:11475 days ago1690225391
0x8a7426a0...86A87C093
0.01163878 ETH
177649222023-07-24 19:03:11475 days ago1690225391
0x8a7426a0...86A87C093
0.00387959 ETH
177649222023-07-24 19:03:11475 days ago1690225391
0x8a7426a0...86A87C093
0.01551837 ETH
177028552023-07-16 2:19:23483 days ago1689473963
0x8a7426a0...86A87C093
0.0161181 ETH
177028552023-07-16 2:19:23483 days ago1689473963
0x8a7426a0...86A87C093
0.0053727 ETH
177028552023-07-16 2:19:23483 days ago1689473963
0x8a7426a0...86A87C093
0.0214908 ETH
176532792023-07-09 2:47:11490 days ago1688870831
0x8a7426a0...86A87C093
0.01872313 ETH
176532792023-07-09 2:47:11490 days ago1688870831
0x8a7426a0...86A87C093
0.00624104 ETH
176532792023-07-09 2:47:11490 days ago1688870831
0x8a7426a0...86A87C093
0.02496417 ETH
176324082023-07-06 4:22:47493 days ago1688617367
0x8a7426a0...86A87C093
0.03234009 ETH
176324082023-07-06 4:22:47493 days ago1688617367
0x8a7426a0...86A87C093
0.01078003 ETH
176324082023-07-06 4:22:47493 days ago1688617367
0x8a7426a0...86A87C093
0.04312012 ETH
176100082023-07-03 0:52:35496 days ago1688345555
0x8a7426a0...86A87C093
0.02751376 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ElonWin

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 2 : ElonWin.sol
/**
 *Submitted for verification at Etherscan.io on 2023-03-16
*/

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.9.0;

import "./SafeMath.sol";

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

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

contract ElonWin is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromFees;

    mapping (address => bool) public isBot;
   
    uint256 constant private startingSupply = 50_000_000_000;
    string constant private _name = "ElonWin";
    string constant private _symbol = "EWIN";
    uint8 constant private _decimals = 18;

    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    uint256 public tradingEnabledAt;
    using SafeMath for uint256;
    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }

    struct Ratios {
        uint16 marketing;
        uint16 jackpot;
        uint16 totalSwap;
    }

    Fees public _taxRates = Fees({
        buyFee: 300,
        sellFee: 300,
        transferFee: 0
        });
		
    Ratios public _ratios = Ratios({
        jackpot: 450,
        marketing: 150,
        totalSwap: 600
        });

    uint256 constant public maxBuyTaxes = 2000;
    uint256 constant public maxSellTaxes = 2000;
    uint256 constant public maxTransferTaxes = 2000;
    uint256 constant public maxRoundtripTax = 3000;
    uint256 constant masterTaxDivisor = 10000;

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

    struct TaxWallets {
       address payable marketing;
       address payable jackpot;
    }
	
    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x2a7FD1010E4DD155B8eE6B56B69675f17129Baf7),
        jackpot: payable(0x648E38CF38fb1DBb9D980Efac86C3009277d639d)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent;
    
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Caller =/= owner.");
        _;
    }

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

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

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3 || block.chainid == 5) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            //Ropstein DAI 0xaD6D458402F60fD3Bd25163575031ACDce07538D
        } else if (block.chainid == 43114) {
            dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } else if (block.chainid == 250) {
            dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        } else {
            revert();
        }

        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

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

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

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

    function renounceOwnership() external onlyOwner {
		_isExcludedFromFees[_owner] = false;
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }
	
    receive() external payable {}
    function totalSupply() external pure override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

    function setNewRouter(address newRouter) public onlyOwner {
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

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

    function addRemoveBots(address[] memory accounts, bool[] memory value) public onlyOwner {
        require(accounts.length == value.length, "Lengths do not match.");
        for (uint8 i = 0; i < accounts.length; i++) {
            isBot[accounts[i]] = value[i];
        }        
    }
	
    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        require(buyFee + sellFee <= maxRoundtripTax, "Cannot exceed roundtrip maximum.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

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

    function setWallets(address payable marketing, address payable jackpot) external onlyOwner {
        _taxWallets.marketing = payable(marketing);
        _taxWallets.jackpot = payable(jackpot);
    }

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

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

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

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

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

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

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
		
        tradingEnabled = true;
        tradingEnabledAt = block.timestamp;
        swapThreshold = (balanceOf(lpPair) * 15) / 10000;
        swapAmount = (balanceOf(lpPair) * 30) / 10000;
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if(_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }
            if(tradingEnabled && block.timestamp <= tradingEnabledAt.add(600) && !isBot[to]) {
                revert("Cannot buy yet");
            }
        }
        if (sell) {
            if (!inSwap) {
                if (contractSwapEnabled) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        }
        return _finalizeTransfer(from, to, amount, buy, sell, other);
    }

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

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

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

        uint256 amtBalance = address(this).balance;
        bool success;
        uint256 jackpotBalance = (amtBalance * ratios.jackpot) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - jackpotBalance;
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 35000}("");
        }
        if (ratios.jackpot > 0) {
            (success,) = _taxWallets.jackpot.call{value: jackpotBalance, gas: 35000}("");
        }
    }    

    function _contractSwap(uint256 contractTokenBalance) external {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 0) {
            return;
        }

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

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amtBalance = address(this).balance;
        bool success;
        uint256 jackpotBalance = (amtBalance * ratios.jackpot) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - jackpotBalance;
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 35000}("");
        }
        if (ratios.jackpot > 0) {
            (success,) = _taxWallets.jackpot.call{value: jackpotBalance, gas: 35000}("");
        }
    }

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

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

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

    function _finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
		
        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, buy, sell, amount) : amount;
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }
	
    function takeTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (buy) 
		{
            currentFee = _taxRates.buyFee;
        } 
		else if (sell) 
		{
            currentFee = _taxRates.sellFee;
        } 
		else 
		{
            currentFee = _taxRates.transferFee;
        }
		
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        uint256 swapAmt = feeAmount;

        _tOwned[address(this)] += swapAmt;
        emit Transfer(from, address(this), swapAmt);

        return amount - feeAmount;
    }
}

File 2 of 2 : SafeMath.sol
pragma solidity 0.8.20;

// SPDX-License-Identifier: MIT

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) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/OpenZeppelin-contracts/pull/522
        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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"contractTokenBalance","type":"uint256"}],"name":"_contractSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"jackpot","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"jackpot","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool[]","name":"value","type":"bool[]"}],"name":"addRemoveBots","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":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRoundtripTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"jackpot","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"jackpot","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabledAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600255604051806060016040528061012c61ffff16815260200161012c61ffff1681526020015f61ffff1681525060085f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a81548161ffff021916908361ffff1602179055506040820151815f0160046101000a81548161ffff021916908361ffff16021790555050506040518060600160405280609661ffff1681526020016101c261ffff16815260200161025861ffff1681525060095f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a81548161ffff021916908361ffff1602179055506040820151815f0160046101000a81548161ffff021916908361ffff16021790555050506040518060400160405280732a7fd1010e4dd155b8ee6b56b69675f17129baf773ffffffffffffffffffffffffffffffffffffffff16815260200173648e38cf38fb1dbb9d980efac86c3009277d639d73ffffffffffffffffffffffffffffffffffffffff16815250600c5f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505f600e60016101000a81548160ff0219169083151502179055505f60135f6101000a81548160ff0219169083151502179055505f601360016101000a81548160ff02191690831515021790555033601360026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620002c4919062000f55565b640ba43b7400620002d6919062000fa5565b5f80601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620003b9919062000f55565b640ba43b7400620003cb919062000fa5565b604051620003da919062001000565b60405180910390a36038460362000445577310ed43c718714eb63d5aa57b78b54704e256024e600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005ff565b60614603620004a85773d99d1c33f9fc3444f8101754abc46c52416550d1600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005fe565b6001461480620004b85750600446145b80620004c45750600346145b80620004d05750600546145b156200053057737a250d5630b4cf539739df2c5dacb4c659f2488d600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005fd565b61a86a460362000594577360ae616a2155ee3d9a68541ba4544862310933d4600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005fc565b60fa4603620005f75773f491e7b69e4244ad4002bc14e878a34207e38c29600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005fb565b5f80fd5b5b5b5b5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200066a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000690919062001080565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000716573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200073c919062001080565b306040518363ffffffff1660e01b81526004016200075c929190620010c1565b6020604051808303815f875af115801562000779573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200079f919062001080565b600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001805f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620008c9601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000bf860201b60201c565b6200091d30600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000bf860201b60201c565b600160055f601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f73407993575c91ce7643a4d4ccacc9a98c36ee1bbe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f73663a5c229c09b049e36dcc11a9b0d4a8eb9db21473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f73dba68f07d1b7ca219f78ae8582c213d975c25caf73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200116a565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000c69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c60906200114a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000cda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cd1906200114a565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000db6919062001000565b60405180910390a3505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000e4d5780860481111562000e255762000e2462000dc3565b5b600185161562000e355780820291505b808102905062000e458562000df0565b945062000e05565b94509492505050565b5f8262000e67576001905062000f39565b8162000e76575f905062000f39565b816001811462000e8f576002811462000e9a5762000ed0565b600191505062000f39565b60ff84111562000eaf5762000eae62000dc3565b5b8360020a91508482111562000ec95762000ec862000dc3565b5b5062000f39565b5060208310610133831016604e8410600b841016171562000f0a5782820a90508381111562000f045762000f0362000dc3565b5b62000f39565b62000f19848484600162000dfc565b9250905081840481111562000f335762000f3262000dc3565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000f618262000f40565b915062000f6e8362000f49565b925062000f9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e56565b905092915050565b5f62000fb18262000f40565b915062000fbe8362000f40565b925082820262000fce8162000f40565b9150828204841483151762000fe85762000fe762000dc3565b5b5092915050565b62000ffa8162000f40565b82525050565b5f602082019050620010155f83018462000fef565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200104a826200101f565b9050919050565b6200105c816200103e565b811462001067575f80fd5b50565b5f815190506200107a8162001051565b92915050565b5f602082840312156200109857620010976200101b565b5b5f620010a7848285016200106a565b91505092915050565b620010bb816200103e565b82525050565b5f604082019050620010d65f830185620010b0565b620010e56020830184620010b0565b9392505050565b5f82825260208201905092915050565b7f45524332303a205a65726f2041646472657373000000000000000000000000005f82015250565b5f62001132601383620010ec565b91506200113f82620010fc565b602082019050919050565b5f6020820190508181035f830152620011638162001124565b9050919050565b615f7680620011785f395ff3fe60806040526004361061028b575f3560e01c80636492048011610159578063b7df8b36116100c0578063dd62ed3e11610079578063dd62ed3e14610982578063eafb5a3c146109be578063ee5d9c2d146109e6578063f94aa1b4146109fc578063fb78680d14610a27578063fdb78c0e14610a4f57610292565b8063b7df8b361461088a578063bcd96a25146108b4578063bfc2fc35146108dc578063c31fe80a14610904578063cf8477061461092e578063d3f6a1571461095a57610292565b80638a8c523c116101125780638a8c523c1461079257806394b954d6146107a857806395d89b41146107d0578063a9059cbb146107fa578063b1b08f7114610836578063b3d514fb1461086057610292565b8063649204801461069c57806370a08231146106c4578063715018a61461070057806380c581d114610716578063893d20e81461073e5780638a63bd9b1461076857610292565b80632e8fa821116101fd5780634ada218b116101b65780634ada218b146105945780634e718e48146105be5780634fb2e45d146105e65780634fbee1931461060e57806350a8e0161461064a578063590ffdce1461067457610292565b80632e8fa82114610488578063313ce567146104b257806332cde664146104dc5780633bbac57914610504578063452ed4f11461054057806346ea7ac81461056a57610292565b8063095ea7b31161024f578063095ea7b31461036a57806318160ddd146103a657806323b872dd146103d05780632610eaca1461040c57806328577751146104345780632b28fc7a1461045e57610292565b806303fd2a45146102965780630445b667146102c0578063069d955f146102ea57806306fdde03146103165780630758d9241461034057610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102aa610a79565b6040516102b79190614585565b60405180910390f35b3480156102cb575f80fd5b506102d4610a7f565b6040516102e191906145b6565b60405180910390f35b3480156102f5575f80fd5b506102fe610a85565b60405161030d939291906145eb565b60405180910390f35b348015610321575f80fd5b5061032a610ac3565b60405161033791906146aa565b60405180910390f35b34801561034b575f80fd5b50610354610b00565b6040516103619190614725565b60405180910390f35b348015610375575f80fd5b50610390600480360381019061038b91906147a3565b610b25565b60405161039d91906147fb565b60405180910390f35b3480156103b1575f80fd5b506103ba610b3b565b6040516103c791906145b6565b60405180910390f35b3480156103db575f80fd5b506103f660048036038101906103f19190614814565b610b5f565b60405161040391906147fb565b60405180910390f35b348015610417575f80fd5b50610432600480360381019061042d9190614a64565b610ca2565b005b34801561043f575f80fd5b50610448610e2f565b60405161045591906145b6565b60405180910390f35b348015610469575f80fd5b50610472610e35565b60405161047f91906145b6565b60405180910390f35b348015610493575f80fd5b5061049c610e3b565b6040516104a991906145b6565b60405180910390f35b3480156104bd575f80fd5b506104c6610e41565b6040516104d39190614af5565b60405180910390f35b3480156104e7575f80fd5b5061050260048036038101906104fd9190614b38565b610e49565b005b34801561050f575f80fd5b5061052a60048036038101906105259190614b88565b610ffb565b60405161053791906147fb565b60405180910390f35b34801561054b575f80fd5b50610554611018565b6040516105619190614585565b60405180910390f35b348015610575575f80fd5b5061057e61103d565b60405161058b91906145b6565b60405180910390f35b34801561059f575f80fd5b506105a8611043565b6040516105b591906147fb565b60405180910390f35b3480156105c9575f80fd5b506105e460048036038101906105df9190614bb3565b611055565b005b3480156105f1575f80fd5b5061060c60048036038101906106079190614b88565b611133565b005b348015610619575f80fd5b50610634600480360381019061062f9190614b88565b6114c0565b60405161064191906147fb565b60405180910390f35b348015610655575f80fd5b5061065e611512565b60405161066b91906147fb565b60405180910390f35b34801561067f575f80fd5b5061069a60048036038101906106959190614c08565b611525565b005b3480156106a7575f80fd5b506106c260048036038101906106bd9190614bb3565b61160d565b005b3480156106cf575f80fd5b506106ea60048036038101906106e59190614b88565b611b9f565b6040516106f791906145b6565b60405180910390f35b34801561070b575f80fd5b50610714611be4565b005b348015610721575f80fd5b5061073c60048036038101906107379190614c08565b611dae565b005b348015610749575f80fd5b50610752611f5e565b60405161075f9190614585565b60405180910390f35b348015610773575f80fd5b5061077c611f87565b60405161078991906147fb565b60405180910390f35b34801561079d575f80fd5b506107a661206b565b005b3480156107b3575f80fd5b506107ce60048036038101906107c99190614d06565b61224e565b005b3480156107db575f80fd5b506107e46123d6565b6040516107f191906146aa565b60405180910390f35b348015610805575f80fd5b50610820600480360381019061081b91906147a3565b612413565b60405161082d91906147fb565b60405180910390f35b348015610841575f80fd5b5061084a61242a565b60405161085791906145b6565b60405180910390f35b34801561086b575f80fd5b50610874612430565b60405161088191906145b6565b60405180910390f35b348015610895575f80fd5b5061089e612436565b6040516108ab91906147fb565b60405180910390f35b3480156108bf575f80fd5b506108da60048036038101906108d59190614d7c565b612448565b005b3480156108e7575f80fd5b5061090260048036038101906108fd9190614dba565b6125d3565b005b34801561090f575f80fd5b506109186126d1565b60405161092591906145b6565b60405180910390f35b348015610939575f80fd5b506109426126d7565b604051610951939291906145eb565b60405180910390f35b348015610965575f80fd5b50610980600480360381019061097b9190614e33565b612715565b005b34801561098d575f80fd5b506109a860048036038101906109a39190614e71565b61282e565b6040516109b591906145b6565b60405180910390f35b3480156109c9575f80fd5b506109e460048036038101906109df9190614b88565b6128b0565b005b3480156109f1575f80fd5b506109fa612d35565b005b348015610a07575f80fd5b50610a10612e7d565b604051610a1e929190614ebe565b60405180910390f35b348015610a32575f80fd5b50610a4d6004803603810190610a489190614ee5565b612ecc565b005b348015610a5a575f80fd5b50610a63613184565b604051610a7091906147fb565b60405180910390f35b61dead81565b600f5481565b6008805f015f9054906101000a900461ffff1690805f0160029054906101000a900461ffff1690805f0160049054906101000a900461ffff16905083565b60606040518060400160405280600781526020017f456c6f6e57696e00000000000000000000000000000000000000000000000000815250905090565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610b31338484613197565b6001905092915050565b5f6012600a610b4a91906150a5565b640ba43b7400610b5a91906150ef565b905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610c8e578160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c869190615130565b925050819055505b610c9984848461335a565b90509392505050565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d29906151ad565b60405180910390fd5b8051825114610d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6d90615215565b60405180910390fd5b5f5b82518160ff161015610e2a57818160ff1681518110610d9a57610d99615233565b5b6020026020010151610dab33611b9f565b1015610db5575f80fd5b610e1633848360ff1681518110610dcf57610dce615233565b5b60200260200101516012600a610de591906150a5565b858560ff1681518110610dfb57610dfa615233565b5b6020026020010151610e0d91906150ef565b5f80600161372c565b508080610e2290615260565b915050610d78565b505050565b60125481565b6107d081565b60105481565b5f6012905090565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed0906151ad565b60405180910390fd5b6107d08361ffff1611158015610ef557506107d08261ffff1611155b8015610f0757506107d08161ffff1611155b610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d906152d2565b60405180910390fd5b610bb88284610f5591906152f0565b61ffff161115610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f919061536f565b60405180910390fd5b8260085f015f6101000a81548161ffff021916908361ffff1602179055508160085f0160026101000a81548161ffff021916908361ffff1602179055508060085f0160046101000a81548161ffff021916908361ffff160217905550505050565b6006602052805f5260405f205f915054906101000a900460ff1681565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bb881565b60135f9054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dc906151ad565b60405180910390fd5b60c8811115611129576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611120906153d7565b60405180910390fd5b8060128190555050565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ba906151ad565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122890615465565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129890615465565b60405180910390fd5b5f60055f601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f611398601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b9f565b11156113fb576113f9601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826113f0601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b9f565b5f80600161372c565b505b5f601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081601360026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b601360019054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ac906151ad565b60405180910390fd5b8060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60096040518060600160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900461ffff1661ffff1661ffff1681526020015f820160049054906101000a900461ffff1661ffff1661ffff168152505090505f816040015161ffff160361168e5750611b9c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541461180d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5f600267ffffffffffffffff81111561182957611828614868565b5b6040519080825280602002602001820160405280156118575781602001602082028036833780820191505090505b50905030815f8151811061186e5761186d615233565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611912573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119369190615497565b8160018151811061194a57611949615233565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b81526004016119e69594939291906155b2565b5f604051808303815f87803b1580156119fd575f80fd5b505af1158015611a0f573d5f803e3d5ffd5b505050505f4790505f80846040015161ffff16856020015161ffff1684611a3691906150ef565b611a409190615637565b90505f8184611a4f9190615130565b90505f865f015161ffff161115611af257600c5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816188b890604051611aab90615694565b5f60405180830381858888f193505050503d805f8114611ae6576040519150601f19603f3d011682016040523d82523d5f602084013e611aeb565b606091505b5050809350505b5f866020015161ffff161115611b9557600c6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826188b890604051611b4e90615694565b5f60405180830381858888f193505050503d805f8114611b89576040519150601f19603f3d011682016040523d82523d5f602084013e611b8e565b606091505b5050809350505b5050505050505b50565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6b906151ad565b60405180910390fd5b5f60055f601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f601360026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e35906151ad565b60405180910390fd5b5f151581151503611ea2575f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611f5a565b5f60025414611efe576203f48060025442611ebd9190615130565b11611efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef4906156f2565b60405180910390fd5b5b6001805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550426002819055505b5050565b5f601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200f906151ad565b60405180910390fd5b61206430600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613197565b6001905090565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f2906151ad565b60405180910390fd5b60135f9054906101000a900460ff161561214a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121419061575a565b60405180910390fd5b601360019054906101000a900460ff16612199576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612190906157c2565b60405180910390fd5b600160135f6101000a81548160ff02191690831515021790555042600781905550612710600f6121e9600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b9f565b6121f391906150ef565b6121fd9190615637565b600f81905550612710601e612232600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b9f565b61223c91906150ef565b6122469190615637565b601081905550565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d5906151ad565b60405180910390fd5b8051825114612322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231990615215565b60405180910390fd5b5f5b82518160ff1610156123d157818160ff168151811061234657612345615233565b5b602002602001015160065f858460ff168151811061236757612366615233565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806123c990615260565b915050612324565b505050565b60606040518060400160405280600481526020017f4557494e00000000000000000000000000000000000000000000000000000000815250905090565b5f61241f33848461335a565b506001905092915050565b6107d081565b6107d081565b60115f9054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cf906151ad565b60405180910390fd5b8060095f0160026101000a81548161ffff021916908361ffff1602179055508160095f015f6101000a81548161ffff021916908361ffff160217905550818161252191906152f0565b60095f0160046101000a81548161ffff021916908361ffff1602179055505f60085f0160029054906101000a900461ffff1660085f015f9054906101000a900461ffff1661256f91906152f0565b61ffff1690508060095f0160049054906101000a900461ffff1661ffff1611156125ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c590615850565b60405180910390fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265a906151ad565b60405180910390fd5b81600e60016101000a81548160ff0219169083151502179055508060115f6101000a81548160ff0219169083151502179055507f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257826040516126c591906147fb565b60405180910390a15050565b60075481565b6009805f015f9054906101000a900461ffff1690805f0160029054906101000a900461ffff1690805f0160049054906101000a900461ffff16905083565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279c906151ad565b60405180910390fd5b81600c5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c6001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612940576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612937906151ad565b60405180910390fd5b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561298e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129b29190615497565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a3b9190615497565b6040518363ffffffff1660e01b8152600401612a5892919061586e565b602060405180830381865afa158015612a73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a979190615497565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612c63578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b15573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b399190615497565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bc29190615497565b6040518363ffffffff1660e01b8152600401612bdf92919061586e565b6020604051808303815f875af1158015612bfb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c1f9190615497565b600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612ca4565b80600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612d3030600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613197565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbc906151ad565b60405180910390fd5b601360019054906101000a900460ff1615612e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0c906158df565b60405180910390fd5b601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015612e7a573d5f803e3d5ffd5b50565b600c805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f53906151ad565b60405180910390fd5b82846012600a612f6c91906150a5565b640ba43b7400612f7c91906150ef565b612f8691906150ef565b612f909190615637565b600f8190555080826012600a612fa691906150a5565b640ba43b7400612fb691906150ef565b612fc091906150ef565b612fca9190615637565b601081905550601054600f541115613017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300e9061596d565b60405180910390fd5b6127106096613046600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b9f565b61305091906150ef565b61305a9190615637565b601054111561309e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613095906159fb565b60405180910390fd5b620f42406012600a6130b091906150a5565b640ba43b74006130c091906150ef565b6130ca9190615637565b601054101561310e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310590615a89565b60405180910390fd5b620f42406012600a61312091906150a5565b640ba43b740061313091906150ef565b61313a9190615637565b600f54101561317e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317590615a89565b60405180910390fd5b50505050565b600e60019054906101000a900460ff1681565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131fc90615af1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326a90615af1565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161334d91906145b6565b60405180910390a3505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036133c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c090615b7f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342e90615c0d565b60405180910390fd5b5f8211613479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347090615c9b565b60405180910390fd5b5f805f60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156134d45760019250613532565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561352c5760019150613531565b600190505b5b61353c8787613996565b156136545760135f9054906101000a900460ff1661358f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358690615d03565b60405180910390fd5b60135f9054906101000a900460ff1680156135c057506135bc610258600754613bf590919063ffffffff16565b4211155b8015613613575060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364a90615d6b565b60405180910390fd5b5b811561371257600e5f9054906101000a900460ff1661371157600e60019054906101000a900460ff1615613710575f61368c30611b9f565b9050600f54811061370e575f601054905060115f9054906101000a900460ff16156136f8576127106012546136e1600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b9f565b6136eb91906150ef565b6136f59190615637565b90505b808210613703578091505b61370c82613c52565b505b505b5b5b61372087878786868661372c565b93505050509392505050565b5f601360019054906101000a900460ff166137b95761374b878761421d565b601360019054906101000a900460ff1615801561376e575061376d8787613996565b5b8015613778575081155b156137b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137af90615df9565b60405180910390fd5b5b5f6001905060055f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613859575060055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613862575f90505b855f808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546138ad9190615130565b925050819055505f816138c057866138cd565b6138cc8987878a6143f2565b5b9050805f808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461391a9190615e17565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161397e91906145b6565b60405180910390a36001925050509695505050505050565b5f601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613a435750601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613a9d5750601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614155b8015613af0575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613b43575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613b7d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613bb557505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613bed57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b5f808284613c039190615e17565b905083811015613c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c3f90615e94565b60405180910390fd5b8091505092915050565b6001600e5f6101000a81548160ff0219169083151502179055505f60096040518060600160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900461ffff1661ffff1661ffff1681526020015f820160049054906101000a900461ffff1661ffff1661ffff168152505090505f816040015161ffff1603613ced5750614201565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414613e6c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5f600267ffffffffffffffff811115613e8857613e87614868565b5b604051908082528060200260200182016040528015613eb65781602001602082028036833780820191505090505b50905030815f81518110613ecd57613ecc615233565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f959190615497565b81600181518110613fa957613fa8615233565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b81526004016140459594939291906155b2565b5f604051808303815f87803b15801561405c575f80fd5b505af192505050801561406d575060015b614078575050614201565b5f4790505f80846040015161ffff16856020015161ffff168461409b91906150ef565b6140a59190615637565b90505f81846140b49190615130565b90505f865f015161ffff16111561415757600c5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816188b89060405161411090615694565b5f60405180830381858888f193505050503d805f811461414b576040519150601f19603f3d011682016040523d82523d5f602084013e614150565b606091505b5050809350505b5f866020015161ffff1611156141fa57600c6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826188b8906040516141b390615694565b5f60405180830381858888f193505050503d805f81146141ee576040519150601f19603f3d011682016040523d82523d5f602084013e6141f3565b606091505b5050809350505b5050505050505b5f600e5f6101000a81548160ff02191690831515021790555050565b601360019054906101000a900460ff161561426d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161426490615f22565b60405180910390fd5b6142778282613996565b1580156142d05750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156143ee57600160045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601360016101000a81548160ff0219169083151502179055506001600e60016101000a81548160ff0219169083151502179055507f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325760016040516143e591906147fb565b60405180910390a15b5050565b5f8084156144175760085f015f9054906101000a900461ffff1661ffff169050614456565b831561443b5760085f0160029054906101000a900461ffff1661ffff169050614455565b60085f0160049054906101000a900461ffff1661ffff1690505b5b5f612710828561446691906150ef565b6144709190615637565b90505f819050805f803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546144c19190615e17565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161452591906145b6565b60405180910390a381856145399190615130565b9350505050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61456f82614546565b9050919050565b61457f81614565565b82525050565b5f6020820190506145985f830184614576565b92915050565b5f819050919050565b6145b08161459e565b82525050565b5f6020820190506145c95f8301846145a7565b92915050565b5f61ffff82169050919050565b6145e5816145cf565b82525050565b5f6060820190506145fe5f8301866145dc565b61460b60208301856145dc565b61461860408301846145dc565b949350505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561465757808201518184015260208101905061463c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61467c82614620565b614686818561462a565b935061469681856020860161463a565b61469f81614662565b840191505092915050565b5f6020820190508181035f8301526146c28184614672565b905092915050565b5f819050919050565b5f6146ed6146e86146e384614546565b6146ca565b614546565b9050919050565b5f6146fe826146d3565b9050919050565b5f61470f826146f4565b9050919050565b61471f81614705565b82525050565b5f6020820190506147385f830184614716565b92915050565b5f604051905090565b5f80fd5b5f80fd5b61475881614565565b8114614762575f80fd5b50565b5f813590506147738161474f565b92915050565b6147828161459e565b811461478c575f80fd5b50565b5f8135905061479d81614779565b92915050565b5f80604083850312156147b9576147b8614747565b5b5f6147c685828601614765565b92505060206147d78582860161478f565b9150509250929050565b5f8115159050919050565b6147f5816147e1565b82525050565b5f60208201905061480e5f8301846147ec565b92915050565b5f805f6060848603121561482b5761482a614747565b5b5f61483886828701614765565b935050602061484986828701614765565b925050604061485a8682870161478f565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61489e82614662565b810181811067ffffffffffffffff821117156148bd576148bc614868565b5b80604052505050565b5f6148cf61473e565b90506148db8282614895565b919050565b5f67ffffffffffffffff8211156148fa576148f9614868565b5b602082029050602081019050919050565b5f80fd5b5f61492161491c846148e0565b6148c6565b905080838252602082019050602084028301858111156149445761494361490b565b5b835b8181101561496d57806149598882614765565b845260208401935050602081019050614946565b5050509392505050565b5f82601f83011261498b5761498a614864565b5b813561499b84826020860161490f565b91505092915050565b5f67ffffffffffffffff8211156149be576149bd614868565b5b602082029050602081019050919050565b5f6149e16149dc846149a4565b6148c6565b90508083825260208201905060208402830185811115614a0457614a0361490b565b5b835b81811015614a2d5780614a19888261478f565b845260208401935050602081019050614a06565b5050509392505050565b5f82601f830112614a4b57614a4a614864565b5b8135614a5b8482602086016149cf565b91505092915050565b5f8060408385031215614a7a57614a79614747565b5b5f83013567ffffffffffffffff811115614a9757614a9661474b565b5b614aa385828601614977565b925050602083013567ffffffffffffffff811115614ac457614ac361474b565b5b614ad085828601614a37565b9150509250929050565b5f60ff82169050919050565b614aef81614ada565b82525050565b5f602082019050614b085f830184614ae6565b92915050565b614b17816145cf565b8114614b21575f80fd5b50565b5f81359050614b3281614b0e565b92915050565b5f805f60608486031215614b4f57614b4e614747565b5b5f614b5c86828701614b24565b9350506020614b6d86828701614b24565b9250506040614b7e86828701614b24565b9150509250925092565b5f60208284031215614b9d57614b9c614747565b5b5f614baa84828501614765565b91505092915050565b5f60208284031215614bc857614bc7614747565b5b5f614bd58482850161478f565b91505092915050565b614be7816147e1565b8114614bf1575f80fd5b50565b5f81359050614c0281614bde565b92915050565b5f8060408385031215614c1e57614c1d614747565b5b5f614c2b85828601614765565b9250506020614c3c85828601614bf4565b9150509250929050565b5f67ffffffffffffffff821115614c6057614c5f614868565b5b602082029050602081019050919050565b5f614c83614c7e84614c46565b6148c6565b90508083825260208201905060208402830185811115614ca657614ca561490b565b5b835b81811015614ccf5780614cbb8882614bf4565b845260208401935050602081019050614ca8565b5050509392505050565b5f82601f830112614ced57614cec614864565b5b8135614cfd848260208601614c71565b91505092915050565b5f8060408385031215614d1c57614d1b614747565b5b5f83013567ffffffffffffffff811115614d3957614d3861474b565b5b614d4585828601614977565b925050602083013567ffffffffffffffff811115614d6657614d6561474b565b5b614d7285828601614cd9565b9150509250929050565b5f8060408385031215614d9257614d91614747565b5b5f614d9f85828601614b24565b9250506020614db085828601614b24565b9150509250929050565b5f8060408385031215614dd057614dcf614747565b5b5f614ddd85828601614bf4565b9250506020614dee85828601614bf4565b9150509250929050565b5f614e0282614546565b9050919050565b614e1281614df8565b8114614e1c575f80fd5b50565b5f81359050614e2d81614e09565b92915050565b5f8060408385031215614e4957614e48614747565b5b5f614e5685828601614e1f565b9250506020614e6785828601614e1f565b9150509250929050565b5f8060408385031215614e8757614e86614747565b5b5f614e9485828601614765565b9250506020614ea585828601614765565b9150509250929050565b614eb881614df8565b82525050565b5f604082019050614ed15f830185614eaf565b614ede6020830184614eaf565b9392505050565b5f805f8060808587031215614efd57614efc614747565b5b5f614f0a8782880161478f565b9450506020614f1b8782880161478f565b9350506040614f2c8782880161478f565b9250506060614f3d8782880161478f565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115614fcb57808604811115614fa757614fa6614f49565b5b6001851615614fb65780820291505b8081029050614fc485614f76565b9450614f8b565b94509492505050565b5f82614fe3576001905061509e565b81614ff0575f905061509e565b816001811461500657600281146150105761503f565b600191505061509e565b60ff84111561502257615021614f49565b5b8360020a91508482111561503957615038614f49565b5b5061509e565b5060208310610133831016604e8410600b84101617156150745782820a90508381111561506f5761506e614f49565b5b61509e565b6150818484846001614f82565b9250905081840481111561509857615097614f49565b5b81810290505b9392505050565b5f6150af8261459e565b91506150ba83614ada565b92506150e77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614fd4565b905092915050565b5f6150f98261459e565b91506151048361459e565b92508282026151128161459e565b9150828204841483151761512957615128614f49565b5b5092915050565b5f61513a8261459e565b91506151458361459e565b925082820390508181111561515d5761515c614f49565b5b92915050565b7f43616c6c6572203d2f3d206f776e65722e0000000000000000000000000000005f82015250565b5f61519760118361462a565b91506151a282615163565b602082019050919050565b5f6020820190508181035f8301526151c48161518b565b9050919050565b7f4c656e6774687320646f206e6f74206d617463682e00000000000000000000005f82015250565b5f6151ff60158361462a565b915061520a826151cb565b602082019050919050565b5f6020820190508181035f83015261522c816151f3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61526a82614ada565b915060ff820361527d5761527c614f49565b5b600182019050919050565b7f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000005f82015250565b5f6152bc60178361462a565b91506152c782615288565b602082019050919050565b5f6020820190508181035f8301526152e9816152b0565b9050919050565b5f6152fa826145cf565b9150615305836145cf565b9250828201905061ffff81111561531f5761531e614f49565b5b92915050565b7f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e5f82015250565b5f61535960208361462a565b915061536482615325565b602082019050919050565b5f6020820190508181035f8301526153868161534d565b9050919050565b7f43616e6e6f74207365742061626f76652032252e0000000000000000000000005f82015250565b5f6153c160148361462a565b91506153cc8261538d565b602082019050919050565b5f6020820190508181035f8301526153ee816153b5565b9050919050565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e73665f8201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b5f61544f603d8361462a565b915061545a826153f5565b604082019050919050565b5f6020820190508181035f83015261547c81615443565b9050919050565b5f815190506154918161474f565b92915050565b5f602082840312156154ac576154ab614747565b5b5f6154b984828501615483565b91505092915050565b5f819050919050565b5f6154e56154e06154db846154c2565b6146ca565b61459e565b9050919050565b6154f5816154cb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61552d81614565565b82525050565b5f61553e8383615524565b60208301905092915050565b5f602082019050919050565b5f615560826154fb565b61556a8185615505565b935061557583615515565b805f5b838110156155a557815161558c8882615533565b97506155978361554a565b925050600181019050615578565b5085935050505092915050565b5f60a0820190506155c55f8301886145a7565b6155d260208301876154ec565b81810360408301526155e48186615556565b90506155f36060830185614576565b61560060808301846145a7565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6156418261459e565b915061564c8361459e565b92508261565c5761565b61560a565b5b828204905092915050565b5f81905092915050565b50565b5f61567f5f83615667565b915061568a82615671565b5f82019050919050565b5f61569e82615674565b9150819050919050565b7f332044617920636f6f6c646f776e2e21000000000000000000000000000000005f82015250565b5f6156dc60108361462a565b91506156e7826156a8565b602082019050919050565b5f6020820190508181035f830152615709816156d0565b9050919050565b7f54726164696e6720616c726561647920656e61626c65642100000000000000005f82015250565b5f61574460188361462a565b915061574f82615710565b602082019050919050565b5f6020820190508181035f83015261577181615738565b9050919050565b7f4c6971756964697479206d7573742062652061646465642e00000000000000005f82015250565b5f6157ac60188361462a565b91506157b782615778565b602082019050919050565b5f6020820190508181035f8301526157d9816157a0565b9050919050565b7f43616e6e6f74206578636565642073756d206f662062757920616e642073656c5f8201527f6c20666565732e00000000000000000000000000000000000000000000000000602082015250565b5f61583a60278361462a565b9150615845826157e0565b604082019050919050565b5f6020820190508181035f8301526158678161582e565b9050919050565b5f6040820190506158815f830185614576565b61588e6020830184614576565b9392505050565b7f43616e6e6f742063616c6c206166746572206c69717569646974792e000000005f82015250565b5f6158c9601c8361462a565b91506158d482615895565b602082019050919050565b5f6020820190508181035f8301526158f6816158bd565b9050919050565b7f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e745f8201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f61595760218361462a565b9150615962826158fd565b604082019050919050565b5f6020820190508181035f8301526159848161594b565b9050919050565b7f43616e6e6f742062652061626f766520312e3525206f662063757272656e74205f8201527f50492e0000000000000000000000000000000000000000000000000000000000602082015250565b5f6159e560238361462a565b91506159f08261598b565b604082019050919050565b5f6020820190508181035f830152615a12816159d9565b9050919050565b7f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f665f8201527f20746f74616c20737570706c792e000000000000000000000000000000000000602082015250565b5f615a73602e8361462a565b9150615a7e82615a19565b604082019050919050565b5f6020820190508181035f830152615aa081615a67565b9050919050565b7f45524332303a205a65726f2041646472657373000000000000000000000000005f82015250565b5f615adb60138361462a565b9150615ae682615aa7565b602082019050919050565b5f6020820190508181035f830152615b0881615acf565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f615b6960258361462a565b9150615b7482615b0f565b604082019050919050565b5f6020820190508181035f830152615b9681615b5d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f615bf760238361462a565b9150615c0282615b9d565b604082019050919050565b5f6020820190508181035f830152615c2481615beb565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f615c8560298361462a565b9150615c9082615c2b565b604082019050919050565b5f6020820190508181035f830152615cb281615c79565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642100000000000000005f82015250565b5f615ced60188361462a565b9150615cf882615cb9565b602082019050919050565b5f6020820190508181035f830152615d1a81615ce1565b9050919050565b7f43616e6e6f7420627579207965740000000000000000000000000000000000005f82015250565b5f615d55600e8361462a565b9150615d6082615d21565b602082019050919050565b5f6020820190508181035f830152615d8281615d49565b9050919050565b7f5072652d6c6971756964697479207472616e736665722070726f74656374696f5f8201527f6e2e000000000000000000000000000000000000000000000000000000000000602082015250565b5f615de360228361462a565b9150615dee82615d89565b604082019050919050565b5f6020820190508181035f830152615e1081615dd7565b9050919050565b5f615e218261459e565b9150615e2c8361459e565b9250828201905080821115615e4457615e43614f49565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f615e7e601b8361462a565b9150615e8982615e4a565b602082019050919050565b5f6020820190508181035f830152615eab81615e72565b9050919050565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b5f8201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b5f615f0c60238361462a565b9150615f1782615eb2565b604082019050919050565b5f6020820190508181035f830152615f3981615f00565b905091905056fea26469706673582212200af83aac5fb58acfa36257b9bd9943f305a98129487543f93807665a3496612c64736f6c63430008140033

Deployed Bytecode

0x60806040526004361061028b575f3560e01c80636492048011610159578063b7df8b36116100c0578063dd62ed3e11610079578063dd62ed3e14610982578063eafb5a3c146109be578063ee5d9c2d146109e6578063f94aa1b4146109fc578063fb78680d14610a27578063fdb78c0e14610a4f57610292565b8063b7df8b361461088a578063bcd96a25146108b4578063bfc2fc35146108dc578063c31fe80a14610904578063cf8477061461092e578063d3f6a1571461095a57610292565b80638a8c523c116101125780638a8c523c1461079257806394b954d6146107a857806395d89b41146107d0578063a9059cbb146107fa578063b1b08f7114610836578063b3d514fb1461086057610292565b8063649204801461069c57806370a08231146106c4578063715018a61461070057806380c581d114610716578063893d20e81461073e5780638a63bd9b1461076857610292565b80632e8fa821116101fd5780634ada218b116101b65780634ada218b146105945780634e718e48146105be5780634fb2e45d146105e65780634fbee1931461060e57806350a8e0161461064a578063590ffdce1461067457610292565b80632e8fa82114610488578063313ce567146104b257806332cde664146104dc5780633bbac57914610504578063452ed4f11461054057806346ea7ac81461056a57610292565b8063095ea7b31161024f578063095ea7b31461036a57806318160ddd146103a657806323b872dd146103d05780632610eaca1461040c57806328577751146104345780632b28fc7a1461045e57610292565b806303fd2a45146102965780630445b667146102c0578063069d955f146102ea57806306fdde03146103165780630758d9241461034057610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102aa610a79565b6040516102b79190614585565b60405180910390f35b3480156102cb575f80fd5b506102d4610a7f565b6040516102e191906145b6565b60405180910390f35b3480156102f5575f80fd5b506102fe610a85565b60405161030d939291906145eb565b60405180910390f35b348015610321575f80fd5b5061032a610ac3565b60405161033791906146aa565b60405180910390f35b34801561034b575f80fd5b50610354610b00565b6040516103619190614725565b60405180910390f35b348015610375575f80fd5b50610390600480360381019061038b91906147a3565b610b25565b60405161039d91906147fb565b60405180910390f35b3480156103b1575f80fd5b506103ba610b3b565b6040516103c791906145b6565b60405180910390f35b3480156103db575f80fd5b506103f660048036038101906103f19190614814565b610b5f565b60405161040391906147fb565b60405180910390f35b348015610417575f80fd5b50610432600480360381019061042d9190614a64565b610ca2565b005b34801561043f575f80fd5b50610448610e2f565b60405161045591906145b6565b60405180910390f35b348015610469575f80fd5b50610472610e35565b60405161047f91906145b6565b60405180910390f35b348015610493575f80fd5b5061049c610e3b565b6040516104a991906145b6565b60405180910390f35b3480156104bd575f80fd5b506104c6610e41565b6040516104d39190614af5565b60405180910390f35b3480156104e7575f80fd5b5061050260048036038101906104fd9190614b38565b610e49565b005b34801561050f575f80fd5b5061052a60048036038101906105259190614b88565b610ffb565b60405161053791906147fb565b60405180910390f35b34801561054b575f80fd5b50610554611018565b6040516105619190614585565b60405180910390f35b348015610575575f80fd5b5061057e61103d565b60405161058b91906145b6565b60405180910390f35b34801561059f575f80fd5b506105a8611043565b6040516105b591906147fb565b60405180910390f35b3480156105c9575f80fd5b506105e460048036038101906105df9190614bb3565b611055565b005b3480156105f1575f80fd5b5061060c60048036038101906106079190614b88565b611133565b005b348015610619575f80fd5b50610634600480360381019061062f9190614b88565b6114c0565b60405161064191906147fb565b60405180910390f35b348015610655575f80fd5b5061065e611512565b60405161066b91906147fb565b60405180910390f35b34801561067f575f80fd5b5061069a60048036038101906106959190614c08565b611525565b005b3480156106a7575f80fd5b506106c260048036038101906106bd9190614bb3565b61160d565b005b3480156106cf575f80fd5b506106ea60048036038101906106e59190614b88565b611b9f565b6040516106f791906145b6565b60405180910390f35b34801561070b575f80fd5b50610714611be4565b005b348015610721575f80fd5b5061073c60048036038101906107379190614c08565b611dae565b005b348015610749575f80fd5b50610752611f5e565b60405161075f9190614585565b60405180910390f35b348015610773575f80fd5b5061077c611f87565b60405161078991906147fb565b60405180910390f35b34801561079d575f80fd5b506107a661206b565b005b3480156107b3575f80fd5b506107ce60048036038101906107c99190614d06565b61224e565b005b3480156107db575f80fd5b506107e46123d6565b6040516107f191906146aa565b60405180910390f35b348015610805575f80fd5b50610820600480360381019061081b91906147a3565b612413565b60405161082d91906147fb565b60405180910390f35b348015610841575f80fd5b5061084a61242a565b60405161085791906145b6565b60405180910390f35b34801561086b575f80fd5b50610874612430565b60405161088191906145b6565b60405180910390f35b348015610895575f80fd5b5061089e612436565b6040516108ab91906147fb565b60405180910390f35b3480156108bf575f80fd5b506108da60048036038101906108d59190614d7c565b612448565b005b3480156108e7575f80fd5b5061090260048036038101906108fd9190614dba565b6125d3565b005b34801561090f575f80fd5b506109186126d1565b60405161092591906145b6565b60405180910390f35b348015610939575f80fd5b506109426126d7565b604051610951939291906145eb565b60405180910390f35b348015610965575f80fd5b50610980600480360381019061097b9190614e33565b612715565b005b34801561098d575f80fd5b506109a860048036038101906109a39190614e71565b61282e565b6040516109b591906145b6565b60405180910390f35b3480156109c9575f80fd5b506109e460048036038101906109df9190614b88565b6128b0565b005b3480156109f1575f80fd5b506109fa612d35565b005b348015610a07575f80fd5b50610a10612e7d565b604051610a1e929190614ebe565b60405180910390f35b348015610a32575f80fd5b50610a4d6004803603810190610a489190614ee5565b612ecc565b005b348015610a5a575f80fd5b50610a63613184565b604051610a7091906147fb565b60405180910390f35b61dead81565b600f5481565b6008805f015f9054906101000a900461ffff1690805f0160029054906101000a900461ffff1690805f0160049054906101000a900461ffff16905083565b60606040518060400160405280600781526020017f456c6f6e57696e00000000000000000000000000000000000000000000000000815250905090565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610b31338484613197565b6001905092915050565b5f6012600a610b4a91906150a5565b640ba43b7400610b5a91906150ef565b905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610c8e578160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c869190615130565b925050819055505b610c9984848461335a565b90509392505050565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d29906151ad565b60405180910390fd5b8051825114610d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6d90615215565b60405180910390fd5b5f5b82518160ff161015610e2a57818160ff1681518110610d9a57610d99615233565b5b6020026020010151610dab33611b9f565b1015610db5575f80fd5b610e1633848360ff1681518110610dcf57610dce615233565b5b60200260200101516012600a610de591906150a5565b858560ff1681518110610dfb57610dfa615233565b5b6020026020010151610e0d91906150ef565b5f80600161372c565b508080610e2290615260565b915050610d78565b505050565b60125481565b6107d081565b60105481565b5f6012905090565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed0906151ad565b60405180910390fd5b6107d08361ffff1611158015610ef557506107d08261ffff1611155b8015610f0757506107d08161ffff1611155b610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d906152d2565b60405180910390fd5b610bb88284610f5591906152f0565b61ffff161115610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f919061536f565b60405180910390fd5b8260085f015f6101000a81548161ffff021916908361ffff1602179055508160085f0160026101000a81548161ffff021916908361ffff1602179055508060085f0160046101000a81548161ffff021916908361ffff160217905550505050565b6006602052805f5260405f205f915054906101000a900460ff1681565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bb881565b60135f9054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dc906151ad565b60405180910390fd5b60c8811115611129576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611120906153d7565b60405180910390fd5b8060128190555050565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ba906151ad565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122890615465565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129890615465565b60405180910390fd5b5f60055f601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f611398601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b9f565b11156113fb576113f9601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826113f0601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b9f565b5f80600161372c565b505b5f601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081601360026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b601360019054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ac906151ad565b60405180910390fd5b8060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60096040518060600160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900461ffff1661ffff1661ffff1681526020015f820160049054906101000a900461ffff1661ffff1661ffff168152505090505f816040015161ffff160361168e5750611b9c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541461180d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5f600267ffffffffffffffff81111561182957611828614868565b5b6040519080825280602002602001820160405280156118575781602001602082028036833780820191505090505b50905030815f8151811061186e5761186d615233565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611912573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119369190615497565b8160018151811061194a57611949615233565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b81526004016119e69594939291906155b2565b5f604051808303815f87803b1580156119fd575f80fd5b505af1158015611a0f573d5f803e3d5ffd5b505050505f4790505f80846040015161ffff16856020015161ffff1684611a3691906150ef565b611a409190615637565b90505f8184611a4f9190615130565b90505f865f015161ffff161115611af257600c5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816188b890604051611aab90615694565b5f60405180830381858888f193505050503d805f8114611ae6576040519150601f19603f3d011682016040523d82523d5f602084013e611aeb565b606091505b5050809350505b5f866020015161ffff161115611b9557600c6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826188b890604051611b4e90615694565b5f60405180830381858888f193505050503d805f8114611b89576040519150601f19603f3d011682016040523d82523d5f602084013e611b8e565b606091505b5050809350505b5050505050505b50565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6b906151ad565b60405180910390fd5b5f60055f601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f601360026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e35906151ad565b60405180910390fd5b5f151581151503611ea2575f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611f5a565b5f60025414611efe576203f48060025442611ebd9190615130565b11611efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef4906156f2565b60405180910390fd5b5b6001805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550426002819055505b5050565b5f601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200f906151ad565b60405180910390fd5b61206430600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613197565b6001905090565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f2906151ad565b60405180910390fd5b60135f9054906101000a900460ff161561214a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121419061575a565b60405180910390fd5b601360019054906101000a900460ff16612199576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612190906157c2565b60405180910390fd5b600160135f6101000a81548160ff02191690831515021790555042600781905550612710600f6121e9600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b9f565b6121f391906150ef565b6121fd9190615637565b600f81905550612710601e612232600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b9f565b61223c91906150ef565b6122469190615637565b601081905550565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d5906151ad565b60405180910390fd5b8051825114612322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231990615215565b60405180910390fd5b5f5b82518160ff1610156123d157818160ff168151811061234657612345615233565b5b602002602001015160065f858460ff168151811061236757612366615233565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806123c990615260565b915050612324565b505050565b60606040518060400160405280600481526020017f4557494e00000000000000000000000000000000000000000000000000000000815250905090565b5f61241f33848461335a565b506001905092915050565b6107d081565b6107d081565b60115f9054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cf906151ad565b60405180910390fd5b8060095f0160026101000a81548161ffff021916908361ffff1602179055508160095f015f6101000a81548161ffff021916908361ffff160217905550818161252191906152f0565b60095f0160046101000a81548161ffff021916908361ffff1602179055505f60085f0160029054906101000a900461ffff1660085f015f9054906101000a900461ffff1661256f91906152f0565b61ffff1690508060095f0160049054906101000a900461ffff1661ffff1611156125ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c590615850565b60405180910390fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265a906151ad565b60405180910390fd5b81600e60016101000a81548160ff0219169083151502179055508060115f6101000a81548160ff0219169083151502179055507f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257826040516126c591906147fb565b60405180910390a15050565b60075481565b6009805f015f9054906101000a900461ffff1690805f0160029054906101000a900461ffff1690805f0160049054906101000a900461ffff16905083565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279c906151ad565b60405180910390fd5b81600c5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c6001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612940576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612937906151ad565b60405180910390fd5b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561298e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129b29190615497565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a3b9190615497565b6040518363ffffffff1660e01b8152600401612a5892919061586e565b602060405180830381865afa158015612a73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a979190615497565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612c63578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b15573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b399190615497565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bc29190615497565b6040518363ffffffff1660e01b8152600401612bdf92919061586e565b6020604051808303815f875af1158015612bfb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c1f9190615497565b600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612ca4565b80600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612d3030600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613197565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbc906151ad565b60405180910390fd5b601360019054906101000a900460ff1615612e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0c906158df565b60405180910390fd5b601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015612e7a573d5f803e3d5ffd5b50565b600c805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b3373ffffffffffffffffffffffffffffffffffffffff16601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f53906151ad565b60405180910390fd5b82846012600a612f6c91906150a5565b640ba43b7400612f7c91906150ef565b612f8691906150ef565b612f909190615637565b600f8190555080826012600a612fa691906150a5565b640ba43b7400612fb691906150ef565b612fc091906150ef565b612fca9190615637565b601081905550601054600f541115613017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300e9061596d565b60405180910390fd5b6127106096613046600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b9f565b61305091906150ef565b61305a9190615637565b601054111561309e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613095906159fb565b60405180910390fd5b620f42406012600a6130b091906150a5565b640ba43b74006130c091906150ef565b6130ca9190615637565b601054101561310e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310590615a89565b60405180910390fd5b620f42406012600a61312091906150a5565b640ba43b740061313091906150ef565b61313a9190615637565b600f54101561317e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317590615a89565b60405180910390fd5b50505050565b600e60019054906101000a900460ff1681565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131fc90615af1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326a90615af1565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161334d91906145b6565b60405180910390a3505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036133c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c090615b7f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342e90615c0d565b60405180910390fd5b5f8211613479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347090615c9b565b60405180910390fd5b5f805f60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156134d45760019250613532565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561352c5760019150613531565b600190505b5b61353c8787613996565b156136545760135f9054906101000a900460ff1661358f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358690615d03565b60405180910390fd5b60135f9054906101000a900460ff1680156135c057506135bc610258600754613bf590919063ffffffff16565b4211155b8015613613575060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364a90615d6b565b60405180910390fd5b5b811561371257600e5f9054906101000a900460ff1661371157600e60019054906101000a900460ff1615613710575f61368c30611b9f565b9050600f54811061370e575f601054905060115f9054906101000a900460ff16156136f8576127106012546136e1600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b9f565b6136eb91906150ef565b6136f59190615637565b90505b808210613703578091505b61370c82613c52565b505b505b5b5b61372087878786868661372c565b93505050509392505050565b5f601360019054906101000a900460ff166137b95761374b878761421d565b601360019054906101000a900460ff1615801561376e575061376d8787613996565b5b8015613778575081155b156137b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137af90615df9565b60405180910390fd5b5b5f6001905060055f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613859575060055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613862575f90505b855f808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546138ad9190615130565b925050819055505f816138c057866138cd565b6138cc8987878a6143f2565b5b9050805f808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461391a9190615e17565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161397e91906145b6565b60405180910390a36001925050509695505050505050565b5f601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613a435750601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613a9d5750601360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614155b8015613af0575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613b43575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613b7d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613bb557505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613bed57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b5f808284613c039190615e17565b905083811015613c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c3f90615e94565b60405180910390fd5b8091505092915050565b6001600e5f6101000a81548160ff0219169083151502179055505f60096040518060600160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900461ffff1661ffff1661ffff1681526020015f820160049054906101000a900461ffff1661ffff1661ffff168152505090505f816040015161ffff1603613ced5750614201565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414613e6c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5f600267ffffffffffffffff811115613e8857613e87614868565b5b604051908082528060200260200182016040528015613eb65781602001602082028036833780820191505090505b50905030815f81518110613ecd57613ecc615233565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f959190615497565b81600181518110613fa957613fa8615233565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b81526004016140459594939291906155b2565b5f604051808303815f87803b15801561405c575f80fd5b505af192505050801561406d575060015b614078575050614201565b5f4790505f80846040015161ffff16856020015161ffff168461409b91906150ef565b6140a59190615637565b90505f81846140b49190615130565b90505f865f015161ffff16111561415757600c5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816188b89060405161411090615694565b5f60405180830381858888f193505050503d805f811461414b576040519150601f19603f3d011682016040523d82523d5f602084013e614150565b606091505b5050809350505b5f866020015161ffff1611156141fa57600c6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826188b8906040516141b390615694565b5f60405180830381858888f193505050503d805f81146141ee576040519150601f19603f3d011682016040523d82523d5f602084013e6141f3565b606091505b5050809350505b5050505050505b5f600e5f6101000a81548160ff02191690831515021790555050565b601360019054906101000a900460ff161561426d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161426490615f22565b60405180910390fd5b6142778282613996565b1580156142d05750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156143ee57600160045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601360016101000a81548160ff0219169083151502179055506001600e60016101000a81548160ff0219169083151502179055507f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325760016040516143e591906147fb565b60405180910390a15b5050565b5f8084156144175760085f015f9054906101000a900461ffff1661ffff169050614456565b831561443b5760085f0160029054906101000a900461ffff1661ffff169050614455565b60085f0160049054906101000a900461ffff1661ffff1690505b5b5f612710828561446691906150ef565b6144709190615637565b90505f819050805f803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546144c19190615e17565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161452591906145b6565b60405180910390a381856145399190615130565b9350505050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61456f82614546565b9050919050565b61457f81614565565b82525050565b5f6020820190506145985f830184614576565b92915050565b5f819050919050565b6145b08161459e565b82525050565b5f6020820190506145c95f8301846145a7565b92915050565b5f61ffff82169050919050565b6145e5816145cf565b82525050565b5f6060820190506145fe5f8301866145dc565b61460b60208301856145dc565b61461860408301846145dc565b949350505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561465757808201518184015260208101905061463c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61467c82614620565b614686818561462a565b935061469681856020860161463a565b61469f81614662565b840191505092915050565b5f6020820190508181035f8301526146c28184614672565b905092915050565b5f819050919050565b5f6146ed6146e86146e384614546565b6146ca565b614546565b9050919050565b5f6146fe826146d3565b9050919050565b5f61470f826146f4565b9050919050565b61471f81614705565b82525050565b5f6020820190506147385f830184614716565b92915050565b5f604051905090565b5f80fd5b5f80fd5b61475881614565565b8114614762575f80fd5b50565b5f813590506147738161474f565b92915050565b6147828161459e565b811461478c575f80fd5b50565b5f8135905061479d81614779565b92915050565b5f80604083850312156147b9576147b8614747565b5b5f6147c685828601614765565b92505060206147d78582860161478f565b9150509250929050565b5f8115159050919050565b6147f5816147e1565b82525050565b5f60208201905061480e5f8301846147ec565b92915050565b5f805f6060848603121561482b5761482a614747565b5b5f61483886828701614765565b935050602061484986828701614765565b925050604061485a8682870161478f565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61489e82614662565b810181811067ffffffffffffffff821117156148bd576148bc614868565b5b80604052505050565b5f6148cf61473e565b90506148db8282614895565b919050565b5f67ffffffffffffffff8211156148fa576148f9614868565b5b602082029050602081019050919050565b5f80fd5b5f61492161491c846148e0565b6148c6565b905080838252602082019050602084028301858111156149445761494361490b565b5b835b8181101561496d57806149598882614765565b845260208401935050602081019050614946565b5050509392505050565b5f82601f83011261498b5761498a614864565b5b813561499b84826020860161490f565b91505092915050565b5f67ffffffffffffffff8211156149be576149bd614868565b5b602082029050602081019050919050565b5f6149e16149dc846149a4565b6148c6565b90508083825260208201905060208402830185811115614a0457614a0361490b565b5b835b81811015614a2d5780614a19888261478f565b845260208401935050602081019050614a06565b5050509392505050565b5f82601f830112614a4b57614a4a614864565b5b8135614a5b8482602086016149cf565b91505092915050565b5f8060408385031215614a7a57614a79614747565b5b5f83013567ffffffffffffffff811115614a9757614a9661474b565b5b614aa385828601614977565b925050602083013567ffffffffffffffff811115614ac457614ac361474b565b5b614ad085828601614a37565b9150509250929050565b5f60ff82169050919050565b614aef81614ada565b82525050565b5f602082019050614b085f830184614ae6565b92915050565b614b17816145cf565b8114614b21575f80fd5b50565b5f81359050614b3281614b0e565b92915050565b5f805f60608486031215614b4f57614b4e614747565b5b5f614b5c86828701614b24565b9350506020614b6d86828701614b24565b9250506040614b7e86828701614b24565b9150509250925092565b5f60208284031215614b9d57614b9c614747565b5b5f614baa84828501614765565b91505092915050565b5f60208284031215614bc857614bc7614747565b5b5f614bd58482850161478f565b91505092915050565b614be7816147e1565b8114614bf1575f80fd5b50565b5f81359050614c0281614bde565b92915050565b5f8060408385031215614c1e57614c1d614747565b5b5f614c2b85828601614765565b9250506020614c3c85828601614bf4565b9150509250929050565b5f67ffffffffffffffff821115614c6057614c5f614868565b5b602082029050602081019050919050565b5f614c83614c7e84614c46565b6148c6565b90508083825260208201905060208402830185811115614ca657614ca561490b565b5b835b81811015614ccf5780614cbb8882614bf4565b845260208401935050602081019050614ca8565b5050509392505050565b5f82601f830112614ced57614cec614864565b5b8135614cfd848260208601614c71565b91505092915050565b5f8060408385031215614d1c57614d1b614747565b5b5f83013567ffffffffffffffff811115614d3957614d3861474b565b5b614d4585828601614977565b925050602083013567ffffffffffffffff811115614d6657614d6561474b565b5b614d7285828601614cd9565b9150509250929050565b5f8060408385031215614d9257614d91614747565b5b5f614d9f85828601614b24565b9250506020614db085828601614b24565b9150509250929050565b5f8060408385031215614dd057614dcf614747565b5b5f614ddd85828601614bf4565b9250506020614dee85828601614bf4565b9150509250929050565b5f614e0282614546565b9050919050565b614e1281614df8565b8114614e1c575f80fd5b50565b5f81359050614e2d81614e09565b92915050565b5f8060408385031215614e4957614e48614747565b5b5f614e5685828601614e1f565b9250506020614e6785828601614e1f565b9150509250929050565b5f8060408385031215614e8757614e86614747565b5b5f614e9485828601614765565b9250506020614ea585828601614765565b9150509250929050565b614eb881614df8565b82525050565b5f604082019050614ed15f830185614eaf565b614ede6020830184614eaf565b9392505050565b5f805f8060808587031215614efd57614efc614747565b5b5f614f0a8782880161478f565b9450506020614f1b8782880161478f565b9350506040614f2c8782880161478f565b9250506060614f3d8782880161478f565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115614fcb57808604811115614fa757614fa6614f49565b5b6001851615614fb65780820291505b8081029050614fc485614f76565b9450614f8b565b94509492505050565b5f82614fe3576001905061509e565b81614ff0575f905061509e565b816001811461500657600281146150105761503f565b600191505061509e565b60ff84111561502257615021614f49565b5b8360020a91508482111561503957615038614f49565b5b5061509e565b5060208310610133831016604e8410600b84101617156150745782820a90508381111561506f5761506e614f49565b5b61509e565b6150818484846001614f82565b9250905081840481111561509857615097614f49565b5b81810290505b9392505050565b5f6150af8261459e565b91506150ba83614ada565b92506150e77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614fd4565b905092915050565b5f6150f98261459e565b91506151048361459e565b92508282026151128161459e565b9150828204841483151761512957615128614f49565b5b5092915050565b5f61513a8261459e565b91506151458361459e565b925082820390508181111561515d5761515c614f49565b5b92915050565b7f43616c6c6572203d2f3d206f776e65722e0000000000000000000000000000005f82015250565b5f61519760118361462a565b91506151a282615163565b602082019050919050565b5f6020820190508181035f8301526151c48161518b565b9050919050565b7f4c656e6774687320646f206e6f74206d617463682e00000000000000000000005f82015250565b5f6151ff60158361462a565b915061520a826151cb565b602082019050919050565b5f6020820190508181035f83015261522c816151f3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61526a82614ada565b915060ff820361527d5761527c614f49565b5b600182019050919050565b7f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000005f82015250565b5f6152bc60178361462a565b91506152c782615288565b602082019050919050565b5f6020820190508181035f8301526152e9816152b0565b9050919050565b5f6152fa826145cf565b9150615305836145cf565b9250828201905061ffff81111561531f5761531e614f49565b5b92915050565b7f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e5f82015250565b5f61535960208361462a565b915061536482615325565b602082019050919050565b5f6020820190508181035f8301526153868161534d565b9050919050565b7f43616e6e6f74207365742061626f76652032252e0000000000000000000000005f82015250565b5f6153c160148361462a565b91506153cc8261538d565b602082019050919050565b5f6020820190508181035f8301526153ee816153b5565b9050919050565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e73665f8201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b5f61544f603d8361462a565b915061545a826153f5565b604082019050919050565b5f6020820190508181035f83015261547c81615443565b9050919050565b5f815190506154918161474f565b92915050565b5f602082840312156154ac576154ab614747565b5b5f6154b984828501615483565b91505092915050565b5f819050919050565b5f6154e56154e06154db846154c2565b6146ca565b61459e565b9050919050565b6154f5816154cb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61552d81614565565b82525050565b5f61553e8383615524565b60208301905092915050565b5f602082019050919050565b5f615560826154fb565b61556a8185615505565b935061557583615515565b805f5b838110156155a557815161558c8882615533565b97506155978361554a565b925050600181019050615578565b5085935050505092915050565b5f60a0820190506155c55f8301886145a7565b6155d260208301876154ec565b81810360408301526155e48186615556565b90506155f36060830185614576565b61560060808301846145a7565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6156418261459e565b915061564c8361459e565b92508261565c5761565b61560a565b5b828204905092915050565b5f81905092915050565b50565b5f61567f5f83615667565b915061568a82615671565b5f82019050919050565b5f61569e82615674565b9150819050919050565b7f332044617920636f6f6c646f776e2e21000000000000000000000000000000005f82015250565b5f6156dc60108361462a565b91506156e7826156a8565b602082019050919050565b5f6020820190508181035f830152615709816156d0565b9050919050565b7f54726164696e6720616c726561647920656e61626c65642100000000000000005f82015250565b5f61574460188361462a565b915061574f82615710565b602082019050919050565b5f6020820190508181035f83015261577181615738565b9050919050565b7f4c6971756964697479206d7573742062652061646465642e00000000000000005f82015250565b5f6157ac60188361462a565b91506157b782615778565b602082019050919050565b5f6020820190508181035f8301526157d9816157a0565b9050919050565b7f43616e6e6f74206578636565642073756d206f662062757920616e642073656c5f8201527f6c20666565732e00000000000000000000000000000000000000000000000000602082015250565b5f61583a60278361462a565b9150615845826157e0565b604082019050919050565b5f6020820190508181035f8301526158678161582e565b9050919050565b5f6040820190506158815f830185614576565b61588e6020830184614576565b9392505050565b7f43616e6e6f742063616c6c206166746572206c69717569646974792e000000005f82015250565b5f6158c9601c8361462a565b91506158d482615895565b602082019050919050565b5f6020820190508181035f8301526158f6816158bd565b9050919050565b7f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e745f8201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f61595760218361462a565b9150615962826158fd565b604082019050919050565b5f6020820190508181035f8301526159848161594b565b9050919050565b7f43616e6e6f742062652061626f766520312e3525206f662063757272656e74205f8201527f50492e0000000000000000000000000000000000000000000000000000000000602082015250565b5f6159e560238361462a565b91506159f08261598b565b604082019050919050565b5f6020820190508181035f830152615a12816159d9565b9050919050565b7f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f665f8201527f20746f74616c20737570706c792e000000000000000000000000000000000000602082015250565b5f615a73602e8361462a565b9150615a7e82615a19565b604082019050919050565b5f6020820190508181035f830152615aa081615a67565b9050919050565b7f45524332303a205a65726f2041646472657373000000000000000000000000005f82015250565b5f615adb60138361462a565b9150615ae682615aa7565b602082019050919050565b5f6020820190508181035f830152615b0881615acf565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f615b6960258361462a565b9150615b7482615b0f565b604082019050919050565b5f6020820190508181035f830152615b9681615b5d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f615bf760238361462a565b9150615c0282615b9d565b604082019050919050565b5f6020820190508181035f830152615c2481615beb565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f615c8560298361462a565b9150615c9082615c2b565b604082019050919050565b5f6020820190508181035f830152615cb281615c79565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642100000000000000005f82015250565b5f615ced60188361462a565b9150615cf882615cb9565b602082019050919050565b5f6020820190508181035f830152615d1a81615ce1565b9050919050565b7f43616e6e6f7420627579207965740000000000000000000000000000000000005f82015250565b5f615d55600e8361462a565b9150615d6082615d21565b602082019050919050565b5f6020820190508181035f830152615d8281615d49565b9050919050565b7f5072652d6c6971756964697479207472616e736665722070726f74656374696f5f8201527f6e2e000000000000000000000000000000000000000000000000000000000000602082015250565b5f615de360228361462a565b9150615dee82615d89565b604082019050919050565b5f6020820190508181035f830152615e1081615dd7565b9050919050565b5f615e218261459e565b9150615e2c8361459e565b9250828201905080821115615e4457615e43614f49565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f615e7e601b8361462a565b9150615e8982615e4a565b602082019050919050565b5f6020820190508181035f830152615eab81615e72565b9050919050565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b5f8201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b5f615f0c60238361462a565b9150615f1782615eb2565b604082019050919050565b5f6020820190508181035f830152615f3981615f00565b905091905056fea26469706673582212200af83aac5fb58acfa36257b9bd9943f305a98129487543f93807665a3496612c64736f6c63430008140033

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.