ETH Price: $3,056.84 (-1.51%)

Contract

0x7aBDA249CE3f93c0FC1d34B5C5DB166DdF75f857
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve208375742024-09-26 21:47:3552 days ago1727387255IN
0x7aBDA249...DdF75f857
0 ETH0.0008896118.86213739
Set Fees208375602024-09-26 21:44:4752 days ago1727387087IN
0x7aBDA249...DdF75f857
0 ETH0.0007636622.25710475
Set Fees208375372024-09-26 21:39:5952 days ago1727386799IN
0x7aBDA249...DdF75f857
0 ETH0.0007909625.1011765
Approve208375242024-09-26 21:37:2352 days ago1727386643IN
0x7aBDA249...DdF75f857
0 ETH0.0009168119.43888682
Set Fees208375212024-09-26 21:36:4752 days ago1727386607IN
0x7aBDA249...DdF75f857
0 ETH0.0006381720.25251703
Approve208375132024-09-26 21:34:5952 days ago1727386499IN
0x7aBDA249...DdF75f857
0 ETH0.0014807531.35605868
Approve208375022024-09-26 21:32:4752 days ago1727386367IN
0x7aBDA249...DdF75f857
0 ETH0.0009205119.4925384
Approve208375002024-09-26 21:32:2352 days ago1727386343IN
0x7aBDA249...DdF75f857
0 ETH0.0013110427.7621571
Approve208374962024-09-26 21:31:3552 days ago1727386295IN
0x7aBDA249...DdF75f857
0 ETH0.0008917518.88822789
Approve208374952024-09-26 21:31:2352 days ago1727386283IN
0x7aBDA249...DdF75f857
0 ETH0.0009687120.53925266
Remove Limits208374872024-09-26 21:29:4752 days ago1727386187IN
0x7aBDA249...DdF75f857
0 ETH0.000726920.28811411
Approve208374852024-09-26 21:29:2352 days ago1727386163IN
0x7aBDA249...DdF75f857
0 ETH0.0011101723.50871975
Approve208374852024-09-26 21:29:2352 days ago1727386163IN
0x7aBDA249...DdF75f857
0 ETH0.0011101723.50871975
Approve208374802024-09-26 21:28:2352 days ago1727386103IN
0x7aBDA249...DdF75f857
0 ETH0.0011576324.51376975
Approve208374802024-09-26 21:28:2352 days ago1727386103IN
0x7aBDA249...DdF75f857
0 ETH0.0011576324.51376975
Approve208374802024-09-26 21:28:2352 days ago1727386103IN
0x7aBDA249...DdF75f857
0 ETH0.0011576324.51376975
Approve208374752024-09-26 21:27:2352 days ago1727386043IN
0x7aBDA249...DdF75f857
0 ETH0.001103223.36705294
Approve208374752024-09-26 21:27:2352 days ago1727386043IN
0x7aBDA249...DdF75f857
0 ETH0.0011034823.36705294
Approve208374752024-09-26 21:27:2352 days ago1727386043IN
0x7aBDA249...DdF75f857
0 ETH0.0011034823.36705294
Approve208374742024-09-26 21:27:1152 days ago1727386031IN
0x7aBDA249...DdF75f857
0 ETH0.0009127419.3280696
Approve208374732024-09-26 21:26:5952 days ago1727386019IN
0x7aBDA249...DdF75f857
0 ETH0.0008136417.33522171
Approve208374732024-09-26 21:26:5952 days ago1727386019IN
0x7aBDA249...DdF75f857
0 ETH0.0008271317.51522171
Approve208374722024-09-26 21:26:4752 days ago1727386007IN
0x7aBDA249...DdF75f857
0 ETH0.0012126925.6861834
Approve208374712024-09-26 21:26:2352 days ago1727385983IN
0x7aBDA249...DdF75f857
0 ETH0.000899719.05177434
Approve208374712024-09-26 21:26:2352 days ago1727385983IN
0x7aBDA249...DdF75f857
0 ETH0.000899719.05177434
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SteamAI

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-26
*/

/*
   _____ __                       ___    ____
  / ___// /____  ____ _____ ___  /   |  /  _/
  \__ \/ __/ _ \/ __ `/ __ `__ \/ /| |  / /  
 ___/ / /_/  __/ /_/ / / / / / / ___ |_/ /   
/____/\__/\___/\__,_/_/ /_/ /_/_/  |_/___/


Website: https://stm-1.gitbook.io/steamai
Telegram: t.me/SteamAiToken
X: https://x.com/SteamAiToken


Total Supply: 100,000,000 $STM (100%)

Team Allocation: 3 000 000 $STM (3%)

Final Buy Tax: 4%

Final Sell Tax: 4%

Initial Liquidity Pool: 2 ETH + 97 000 000 $STM (97%)

Initial/Launch Buy Tax: 18%

Initial/Launch Sell Tax: 24%

Initial/Launch Wallet Size - 1 000 000 $STM (1%)

Maximum Wallet Size: No limit



*/

// SPDX-License-Identifier: MIT

pragma solidity = 0.8.26;

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

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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

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

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

    function name() external pure returns (string memory);

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

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

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);

    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

library SafeMath {

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

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

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

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

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

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

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

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

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

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

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

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

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

interface IERC20 {

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);

    function totalSupply() external view returns (uint256);

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

    function transfer(address to, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

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

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

contract SteamAI is ERC20, Ownable {
    using SafeMath for uint256;
    
    IUniswapV2Router02 public immutable _uniswapV2Router;
    address private uniswapV2Pair;
    address private deployerWallet;
    address private marketingWallet;

    bool private swapping;

    string private constant _name = unicode"SteamAI";
    string private constant _symbol = unicode"STM";
    
    uint256 public initialTotalSupply = 100000000 * 1e18;

    uint256 public maxTransactionAmountPercent = 2;
    uint256 public maxWalletPercent = 1;
    uint256 public swapTokensAtAmountPercent = 1;

    uint256 public maxTransactionAmount;
    uint256 public maxWallet;
    uint256 public swapTokensAtAmount;
    uint256 public currentBlock;
    uint256 public sellCount;

    bool public tradingOpen = false;
    bool public sellLimit = true;

    uint256 public BuyFee = 18;
    uint256 public SellFee = 24;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    constructor(address wallet) ERC20(_name, _symbol) {

        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        marketingWallet = payable(wallet);     
        
        deployerWallet = payable(_msgSender());
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(wallet), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(wallet), true);
        excludeFromMaxTransaction(address(0xdead), true);

        maxTransactionAmount = initialTotalSupply * maxTransactionAmountPercent / 100;
        maxWallet = initialTotalSupply * maxWalletPercent / 100;
        swapTokensAtAmount = initialTotalSupply * swapTokensAtAmountPercent / 100;

        currentBlock = block.number;
        sellCount = 0;

        _mint(deployerWallet, initialTotalSupply);
    }

    receive() external payable {}

    function openTrading() external onlyOwner() {
        tradingOpen = true;
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) private {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function excludeFromFees(address account, bool excluded) private {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (block.number > currentBlock) {
            currentBlock = block.number;
            sellCount = 0;
        }

                bool isTransfer = !automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to];

                if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {

                if (!tradingOpen) {
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }

                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                    if (sellLimit){
                        require(sellCount < 3, "Exceeded the maximum number of sells allowed in this block");
                        sellCount++;
                    }
                } 
                
                else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance > 0 && !isTransfer;

        if (canSwap && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;
            swapBack(amount);
            swapping = false;
        }

        bool takeFee = !swapping && !isTransfer;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            if (automatedMarketMakerPairs[to]) {
                fees = amount.mul(SellFee).div(100);
            }
            else {
                fees = amount.mul(BuyFee).div(100);
            }

        if (fees > 0) {
            super._transfer(from, address(this), fees);
        }
        amount -= fees;
    }
        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

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

        _approve(address(this), address(_uniswapV2Router), tokenAmount);

        _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            marketingWallet,
            block.timestamp
        );
    }

   function removeLimits() external onlyOwner {
        maxTransactionAmount = initialTotalSupply;
        maxWallet = initialTotalSupply;
    }

    function removeSellLimit() external {
        require(_msgSender() == deployerWallet);
        sellLimit = false;
    }

    function clearStuckEth() external {
        require(_msgSender() == deployerWallet);
        require(address(this).balance > 0, "Token: no ETH to clear");
        payable(msg.sender).transfer(address(this).balance);
    }

    function clearStuckTokens(address tokenAddress, uint256 toKeep) external {
        require(_msgSender() == deployerWallet, "Only deployer can clear tokens");
        IERC20 tokenContract = IERC20(tokenAddress);
        uint256 totalBalance = tokenContract.balanceOf(address(this));
        uint256 tokensToKeep = (initialTotalSupply * toKeep) / 100;
        require(totalBalance > tokensToKeep, "No excess tokens to clear");
        uint256 tokensToClear = totalBalance - tokensToKeep;

        if (tokensToClear > 0) {
            tokenContract.transfer(deployerWallet, tokensToClear);
        }

        if (toKeep == 0) {
            tokenContract.transfer(deployerWallet, totalBalance);
        }
    }

    function SetFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 45 && _sellFee <= 99, "Fees cannot exceed 99%");
        BuyFee = _buyFee;
        SellFee = _sellFee;
    }

    function swapBack(uint256 tokens) private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensToSwap; 

        if (contractBalance == 0) {
            return;
        }

    if ((BuyFee+SellFee) == 0) {

        if(contractBalance > 0 && contractBalance < swapTokensAtAmount) {
            tokensToSwap = contractBalance;
        }
        else {
            uint256 sellFeeTokens = tokens.mul(SellFee).div(100);
            tokens -= sellFeeTokens;
            if (tokens > swapTokensAtAmount) {
                tokensToSwap = swapTokensAtAmount;
            }
            else {
                tokensToSwap = tokens;
            }
        }
    }

    else {

        if(contractBalance > 0 && contractBalance < swapTokensAtAmount.div(5)) {
            return;
        }
        else if (contractBalance > 0 && contractBalance > swapTokensAtAmount.div(5) && contractBalance < swapTokensAtAmount) {
            tokensToSwap = swapTokensAtAmount.div(5);
        }
        else {
            uint256 sellFeeTokens = tokens.mul(SellFee).div(100);
            tokens -= sellFeeTokens;
            if (tokens > swapTokensAtAmount) {
                tokensToSwap = swapTokensAtAmount;
            } else {
                tokensToSwap = tokens;
            }
        }
    }
        swapTokensForEth(tokensToSwap);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"BuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"SetFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"toKeep","type":"uint256"}],"name":"clearStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeSellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmountPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526a52b7d2dcc80cd2e40000006009556002600a556001600b556001600c555f60125f6101000a81548160ff0219169083151502179055506001601260016101000a81548160ff0219169083151502179055506012601355601860145534801561006b575f80fd5b50604051614815380380614815833981810160405281019061008d91906109bc565b6040518060400160405280600781526020017f537465616d4149000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f53544d000000000000000000000000000000000000000000000000000000000081525081600390816101089190610c21565b5080600490816101189190610c21565b50505061013761012c61056c60201b60201c565b61057360201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ee91906109bc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610255573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027991906109bc565b6040518363ffffffff1660e01b8152600401610296929190610cff565b6020604051808303815f875af11580156102b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102d691906109bc565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061034760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161063660201b60201c565b61037960065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016106d460201b60201c565b61038c60805160016106d460201b60201c565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103da61056c60201b60201c565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061043761042a61072c60201b60201c565b600161075460201b60201c565b61044830600161075460201b60201c565b61045981600161075460201b60201c565b61046c61dead600161075460201b60201c565b61048a61047d61072c60201b60201c565b60016106d460201b60201c565b61049b3060016106d460201b60201c565b6104ac8160016106d460201b60201c565b6104bf61dead60016106d460201b60201c565b6064600a546009546104d19190610d53565b6104db9190610dc1565b600d819055506064600b546009546104f39190610d53565b6104fd9190610dc1565b600e819055506064600c546009546105159190610d53565b61051f9190610dc1565b600f81905550436010819055505f60118190555061056660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009546107fa60201b60201c565b50610ef7565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516107ee9190610e0b565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085f90610e7e565b60405180910390fd5b6108795f838361095460201b60201c565b8060025f82825461088a9190610e9c565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109379190610ede565b60405180910390a36109505f838361095960201b60201c565b5050565b505050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61098b82610962565b9050919050565b61099b81610981565b81146109a5575f80fd5b50565b5f815190506109b681610992565b92915050565b5f602082840312156109d1576109d061095e565b5b5f6109de848285016109a8565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610a6257607f821691505b602082108103610a7557610a74610a1e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610ad77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610a9c565b610ae18683610a9c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610b25610b20610b1b84610af9565b610b02565b610af9565b9050919050565b5f819050919050565b610b3e83610b0b565b610b52610b4a82610b2c565b848454610aa8565b825550505050565b5f90565b610b66610b5a565b610b71818484610b35565b505050565b5b81811015610b9457610b895f82610b5e565b600181019050610b77565b5050565b601f821115610bd957610baa81610a7b565b610bb384610a8d565b81016020851015610bc2578190505b610bd6610bce85610a8d565b830182610b76565b50505b505050565b5f82821c905092915050565b5f610bf95f1984600802610bde565b1980831691505092915050565b5f610c118383610bea565b9150826002028217905092915050565b610c2a826109e7565b67ffffffffffffffff811115610c4357610c426109f1565b5b610c4d8254610a4b565b610c58828285610b98565b5f60209050601f831160018114610c89575f8415610c77578287015190505b610c818582610c06565b865550610ce8565b601f198416610c9786610a7b565b5f5b82811015610cbe57848901518255600182019150602085019450602081019050610c99565b86831015610cdb5784890151610cd7601f891682610bea565b8355505b6001600288020188555050505b505050505050565b610cf981610981565b82525050565b5f604082019050610d125f830185610cf0565b610d1f6020830184610cf0565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610d5d82610af9565b9150610d6883610af9565b9250828202610d7681610af9565b91508282048414831517610d8d57610d8c610d26565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610dcb82610af9565b9150610dd683610af9565b925082610de657610de5610d94565b5b828204905092915050565b5f8115159050919050565b610e0581610df1565b82525050565b5f602082019050610e1e5f830184610dfc565b92915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610e68601f83610e24565b9150610e7382610e34565b602082019050919050565b5f6020820190508181035f830152610e9581610e5c565b9050919050565b5f610ea682610af9565b9150610eb183610af9565b9250828201905080821115610ec957610ec8610d26565b5b92915050565b610ed881610af9565b82525050565b5f602082019050610ef15f830184610ecf565b92915050565b6080516138f1610f245f395f8181610a400152818161256601528181612645015261266c01526138f15ff3fe608060405260043610610212575f3560e01c806389291a8f11610117578063cf9522fd1161009f578063e2f456051161006e578063e2f456051461075b578063f2a95aa914610785578063f2fde38b146107ad578063f8b45b05146107d5578063ffb54a99146107ff57610219565b8063cf9522fd146106a1578063dd62ed3e146106cb578063dd85465214610707578063e12ed13c1461073157610219565b8063a457c2d7116100e6578063a457c2d7146105d3578063a9059cbb1461060f578063bd93e6441461064b578063c8c8ebe414610661578063c9567bf91461068b57610219565b806389291a8f146105415780638da5cb5b1461055757806395d89b41146105815780639a7a23d6146105ab57610219565b80633be6e6371161019a5780634fbee193116101695780634fbee19314610473578063583e0568146104af57806370a08231146104d9578063715018a614610515578063751039fc1461052b57610219565b80633be6e637146103cd5780633d9a3d19146103f55780633e4aff1e1461041f5780634f91e48c1461044957610219565b806322a0bc81116101e157806322a0bc81146102d757806323b872dd14610301578063311028af1461033d578063313ce56714610367578063395093511461039157610219565b806306fdde031461021d578063095ea7b3146102475780630c6b67371461028357806318160ddd146102ad57610219565b3661021957005b5f80fd5b348015610228575f80fd5b50610231610829565b60405161023e919061278d565b60405180910390f35b348015610252575f80fd5b5061026d6004803603810190610268919061283e565b6108b9565b60405161027a9190612896565b60405180910390f35b34801561028e575f80fd5b506102976108db565b6040516102a491906128be565b60405180910390f35b3480156102b8575f80fd5b506102c16108e1565b6040516102ce91906128be565b60405180910390f35b3480156102e2575f80fd5b506102eb6108ea565b6040516102f891906128be565b60405180910390f35b34801561030c575f80fd5b50610327600480360381019061032291906128d7565b6108f0565b6040516103349190612896565b60405180910390f35b348015610348575f80fd5b5061035161091e565b60405161035e91906128be565b60405180910390f35b348015610372575f80fd5b5061037b610924565b6040516103889190612942565b60405180910390f35b34801561039c575f80fd5b506103b760048036038101906103b2919061283e565b61092c565b6040516103c49190612896565b60405180910390f35b3480156103d8575f80fd5b506103f360048036038101906103ee919061295b565b610962565b005b348015610400575f80fd5b506104096109cd565b60405161041691906128be565b60405180910390f35b34801561042a575f80fd5b506104336109d3565b60405161044091906128be565b60405180910390f35b348015610454575f80fd5b5061045d6109d9565b60405161046a9190612896565b60405180910390f35b34801561047e575f80fd5b5061049960048036038101906104949190612999565b6109ec565b6040516104a69190612896565b60405180910390f35b3480156104ba575f80fd5b506104c3610a3e565b6040516104d09190612a1f565b60405180910390f35b3480156104e4575f80fd5b506104ff60048036038101906104fa9190612999565b610a62565b60405161050c91906128be565b60405180910390f35b348015610520575f80fd5b50610529610aa7565b005b348015610536575f80fd5b5061053f610aba565b005b34801561054c575f80fd5b50610555610ad6565b005b348015610562575f80fd5b5061056b610bbd565b6040516105789190612a47565b60405180910390f35b34801561058c575f80fd5b50610595610be5565b6040516105a2919061278d565b60405180910390f35b3480156105b6575f80fd5b506105d160048036038101906105cc9190612a8a565b610c75565b005b3480156105de575f80fd5b506105f960048036038101906105f4919061283e565b610d1a565b6040516106069190612896565b60405180910390f35b34801561061a575f80fd5b506106356004803603810190610630919061283e565b610d8f565b6040516106429190612896565b60405180910390f35b348015610656575f80fd5b5061065f610db1565b005b34801561066c575f80fd5b50610675610e2c565b60405161068291906128be565b60405180910390f35b348015610696575f80fd5b5061069f610e32565b005b3480156106ac575f80fd5b506106b5610e56565b6040516106c291906128be565b60405180910390f35b3480156106d6575f80fd5b506106f160048036038101906106ec9190612ac8565b610e5c565b6040516106fe91906128be565b60405180910390f35b348015610712575f80fd5b5061071b610ede565b60405161072891906128be565b60405180910390f35b34801561073c575f80fd5b50610745610ee4565b60405161075291906128be565b60405180910390f35b348015610766575f80fd5b5061076f610eea565b60405161077c91906128be565b60405180910390f35b348015610790575f80fd5b506107ab60048036038101906107a6919061283e565b610ef0565b005b3480156107b8575f80fd5b506107d360048036038101906107ce9190612999565b6111c6565b005b3480156107e0575f80fd5b506107e9611248565b6040516107f691906128be565b60405180910390f35b34801561080a575f80fd5b5061081361124e565b6040516108209190612896565b60405180910390f35b60606003805461083890612b33565b80601f016020809104026020016040519081016040528092919081815260200182805461086490612b33565b80156108af5780601f10610886576101008083540402835291602001916108af565b820191905f5260205f20905b81548152906001019060200180831161089257829003601f168201915b5050505050905090565b5f806108c3611260565b90506108d0818585611267565b600191505092915050565b60115481565b5f600254905090565b600a5481565b5f806108fa611260565b905061090785828561142a565b6109128585856114b5565b60019150509392505050565b60095481565b5f6012905090565b5f80610936611260565b90506109578185856109488589610e5c565b6109529190612b90565b611267565b600191505092915050565b61096a611ec0565b602d821115801561097c575060638111155b6109bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b290612c0d565b60405180910390fd5b81601381905550806014819055505050565b600b5481565b600c5481565b601260019054906101000a900460ff1681565b5f60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610aaf611ec0565b610ab85f611f3e565b565b610ac2611ec0565b600954600d81905550600954600e81905550565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b16611260565b73ffffffffffffffffffffffffffffffffffffffff1614610b35575f80fd5b5f4711610b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6e90612c75565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610bba573d5f803e3d5ffd5b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610bf490612b33565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2090612b33565b8015610c6b5780601f10610c4257610100808354040283529160200191610c6b565b820191905f5260205f20905b815481529060010190602001808311610c4e57829003601f168201915b5050505050905090565b610c7d611ec0565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0390612d03565b60405180910390fd5b610d168282612001565b5050565b5f80610d24611260565b90505f610d318286610e5c565b905083811015610d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6d90612d91565b60405180910390fd5b610d838286868403611267565b60019250505092915050565b5f80610d99611260565b9050610da68185856114b5565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610df1611260565b73ffffffffffffffffffffffffffffffffffffffff1614610e10575f80fd5b5f601260016101000a81548160ff021916908315150217905550565b600d5481565b610e3a611ec0565b600160125f6101000a81548160ff021916908315150217905550565b60145481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135481565b60105481565b600f5481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f30611260565b73ffffffffffffffffffffffffffffffffffffffff1614610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d90612df9565b60405180910390fd5b5f8290505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fc49190612a47565b602060405180830381865afa158015610fdf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110039190612e2b565b90505f6064846009546110169190612e56565b6110209190612ec4565b9050808211611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b90612f3e565b60405180910390fd5b5f81836110719190612f5c565b90505f811115611119578373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016110d7929190612f8f565b6020604051808303815f875af11580156110f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111179190612fca565b505b5f85036111be578373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b815260040161117c929190612f8f565b6020604051808303815f875af1158015611198573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111bc9190612fca565b505b505050505050565b6111ce611ec0565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361123c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123390613065565b60405180910390fd5b61124581611f3e565b50565b600e5481565b60125f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc906130f3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133a90613181565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161141d91906128be565b60405180910390a3505050565b5f6114358484610e5c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114af57818110156114a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611498906131e9565b60405180910390fd5b6114ae8484848403611267565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151a90613277565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158890613305565b60405180910390fd5b5f81036115a8576115a383835f61209f565b611ebb565b6010544311156115c157436010819055505f6011819055505b5f60175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611660575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905061166a610bbd565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156116d857506116a8610bbd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561171057505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561174a575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117635750600860149054906101000a900460ff16155b15611ba25760125f9054906101000a900460ff166118565760155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611816575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184c9061336d565b60405180910390fd5b5b60175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156118f3575060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561199a57600d5482111561193d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611934906133fb565b60405180910390fd5b600e5461194984610a62565b836119549190612b90565b1115611995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198c90613463565b60405180910390fd5b611ba1565b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611a37575060165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611af857600d54821115611a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a78906134f1565b60405180910390fd5b601260019054906101000a900460ff1615611af357600360115410611adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad29061357f565b60405180910390fd5b60115f815480929190611aed9061359d565b91905055505b611ba0565b60165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611b9f57600e54611b5284610a62565b83611b5d9190612b90565b1115611b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9590613463565b60405180910390fd5b5b5b5b5b5f611bac30610a62565b90505f8082118015611bbc575082155b9050808015611bd85750600860149054906101000a900460ff16155b8015611c2b575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611c7e575060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611cd1575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d15576001600860146101000a81548160ff021916908315150217905550611cfa8461230b565b5f600860146101000a81548160ff0219169083151502179055505b5f600860149054906101000a900460ff16158015611d31575083155b905060155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dce575060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611dd7575f90505b5f8115611eaa5760175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611e5c57611e556064611e476014548961249590919063ffffffff16565b6124aa90919063ffffffff16565b9050611e87565b611e846064611e766013548961249590919063ffffffff16565b6124aa90919063ffffffff16565b90505b5f811115611e9b57611e9a88308361209f565b5b8086611ea79190612f5c565b95505b611eb588888861209f565b50505050505b505050565b611ec8611260565b73ffffffffffffffffffffffffffffffffffffffff16611ee6610bbd565b73ffffffffffffffffffffffffffffffffffffffff1614611f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f339061362e565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361210d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210490613277565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361217b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217290613305565b60405180910390fd5b6121868383836124bf565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612209576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612200906136bc565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122f291906128be565b60405180910390a36123058484846124c4565b50505050565b5f61231530610a62565b90505f808203612326575050612492565b5f6014546013546123379190612b90565b036123b1575f8211801561234c5750600f5482105b15612359578190506123ac565b5f61238260646123746014548761249590919063ffffffff16565b6124aa90919063ffffffff16565b905080846123909190612f5c565b9350600f548411156123a657600f5491506123aa565b8391505b505b612486565b5f821180156123d457506123d16005600f546124aa90919063ffffffff16565b82105b156123e0575050612492565b5f8211801561240357506124006005600f546124aa90919063ffffffff16565b82115b80156124105750600f5482105b156124325761242b6005600f546124aa90919063ffffffff16565b9050612485565b5f61245b606461244d6014548761249590919063ffffffff16565b6124aa90919063ffffffff16565b905080846124699190612f5c565b9350600f5484111561247f57600f549150612483565b8391505b505b5b61248f816124c9565b50505b50565b5f81836124a29190612e56565b905092915050565b5f81836124b79190612ec4565b905092915050565b505050565b505050565b5f600267ffffffffffffffff8111156124e5576124e46136da565b5b6040519080825280602002602001820160405280156125135781602001602082028036833780820191505090505b50905030815f8151811061252a57612529613707565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125f19190613748565b8160018151811061260557612604613707565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061266a307f000000000000000000000000000000000000000000000000000000000000000084611267565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016126ec959493929190613863565b5f604051808303815f87803b158015612703575f80fd5b505af1158015612715573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61275f8261271d565b6127698185612727565b9350612779818560208601612737565b61278281612745565b840191505092915050565b5f6020820190508181035f8301526127a58184612755565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127da826127b1565b9050919050565b6127ea816127d0565b81146127f4575f80fd5b50565b5f81359050612805816127e1565b92915050565b5f819050919050565b61281d8161280b565b8114612827575f80fd5b50565b5f8135905061283881612814565b92915050565b5f8060408385031215612854576128536127ad565b5b5f612861858286016127f7565b92505060206128728582860161282a565b9150509250929050565b5f8115159050919050565b6128908161287c565b82525050565b5f6020820190506128a95f830184612887565b92915050565b6128b88161280b565b82525050565b5f6020820190506128d15f8301846128af565b92915050565b5f805f606084860312156128ee576128ed6127ad565b5b5f6128fb868287016127f7565b935050602061290c868287016127f7565b925050604061291d8682870161282a565b9150509250925092565b5f60ff82169050919050565b61293c81612927565b82525050565b5f6020820190506129555f830184612933565b92915050565b5f8060408385031215612971576129706127ad565b5b5f61297e8582860161282a565b925050602061298f8582860161282a565b9150509250929050565b5f602082840312156129ae576129ad6127ad565b5b5f6129bb848285016127f7565b91505092915050565b5f819050919050565b5f6129e76129e26129dd846127b1565b6129c4565b6127b1565b9050919050565b5f6129f8826129cd565b9050919050565b5f612a09826129ee565b9050919050565b612a19816129ff565b82525050565b5f602082019050612a325f830184612a10565b92915050565b612a41816127d0565b82525050565b5f602082019050612a5a5f830184612a38565b92915050565b612a698161287c565b8114612a73575f80fd5b50565b5f81359050612a8481612a60565b92915050565b5f8060408385031215612aa057612a9f6127ad565b5b5f612aad858286016127f7565b9250506020612abe85828601612a76565b9150509250929050565b5f8060408385031215612ade57612add6127ad565b5b5f612aeb858286016127f7565b9250506020612afc858286016127f7565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612b4a57607f821691505b602082108103612b5d57612b5c612b06565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612b9a8261280b565b9150612ba58361280b565b9250828201905080821115612bbd57612bbc612b63565b5b92915050565b7f466565732063616e6e6f742065786365656420393925000000000000000000005f82015250565b5f612bf7601683612727565b9150612c0282612bc3565b602082019050919050565b5f6020820190508181035f830152612c2481612beb565b9050919050565b7f546f6b656e3a206e6f2045544820746f20636c656172000000000000000000005f82015250565b5f612c5f601683612727565b9150612c6a82612c2b565b602082019050919050565b5f6020820190508181035f830152612c8c81612c53565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f612ced603983612727565b9150612cf882612c93565b604082019050919050565b5f6020820190508181035f830152612d1a81612ce1565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612d7b602583612727565b9150612d8682612d21565b604082019050919050565b5f6020820190508181035f830152612da881612d6f565b9050919050565b7f4f6e6c79206465706c6f7965722063616e20636c65617220746f6b656e7300005f82015250565b5f612de3601e83612727565b9150612dee82612daf565b602082019050919050565b5f6020820190508181035f830152612e1081612dd7565b9050919050565b5f81519050612e2581612814565b92915050565b5f60208284031215612e4057612e3f6127ad565b5b5f612e4d84828501612e17565b91505092915050565b5f612e608261280b565b9150612e6b8361280b565b9250828202612e798161280b565b91508282048414831517612e9057612e8f612b63565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612ece8261280b565b9150612ed98361280b565b925082612ee957612ee8612e97565b5b828204905092915050565b7f4e6f2065786365737320746f6b656e7320746f20636c656172000000000000005f82015250565b5f612f28601983612727565b9150612f3382612ef4565b602082019050919050565b5f6020820190508181035f830152612f5581612f1c565b9050919050565b5f612f668261280b565b9150612f718361280b565b9250828203905081811115612f8957612f88612b63565b5b92915050565b5f604082019050612fa25f830185612a38565b612faf60208301846128af565b9392505050565b5f81519050612fc481612a60565b92915050565b5f60208284031215612fdf57612fde6127ad565b5b5f612fec84828501612fb6565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61304f602683612727565b915061305a82612ff5565b604082019050919050565b5f6020820190508181035f83015261307c81613043565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6130dd602483612727565b91506130e882613083565b604082019050919050565b5f6020820190508181035f83015261310a816130d1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61316b602283612727565b915061317682613111565b604082019050919050565b5f6020820190508181035f8301526131988161315f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6131d3601d83612727565b91506131de8261319f565b602082019050919050565b5f6020820190508181035f830152613200816131c7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613261602583612727565b915061326c82613207565b604082019050919050565b5f6020820190508181035f83015261328e81613255565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6132ef602383612727565b91506132fa82613295565b604082019050919050565b5f6020820190508181035f83015261331c816132e3565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f613357601683612727565b915061336282613323565b602082019050919050565b5f6020820190508181035f8301526133848161334b565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6133e5603583612727565b91506133f08261338b565b604082019050919050565b5f6020820190508181035f830152613412816133d9565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61344d601383612727565b915061345882613419565b602082019050919050565b5f6020820190508181035f83015261347a81613441565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6134db603683612727565b91506134e682613481565b604082019050919050565b5f6020820190508181035f830152613508816134cf565b9050919050565b7f457863656564656420746865206d6178696d756d206e756d626572206f6620735f8201527f656c6c7320616c6c6f77656420696e207468697320626c6f636b000000000000602082015250565b5f613569603a83612727565b91506135748261350f565b604082019050919050565b5f6020820190508181035f8301526135968161355d565b9050919050565b5f6135a78261280b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135d9576135d8612b63565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613618602083612727565b9150613623826135e4565b602082019050919050565b5f6020820190508181035f8301526136458161360c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6136a6602683612727565b91506136b18261364c565b604082019050919050565b5f6020820190508181035f8301526136d38161369a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613742816127e1565b92915050565b5f6020828403121561375d5761375c6127ad565b5b5f61376a84828501613734565b91505092915050565b5f819050919050565b5f61379661379161378c84613773565b6129c4565b61280b565b9050919050565b6137a68161377c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6137de816127d0565b82525050565b5f6137ef83836137d5565b60208301905092915050565b5f602082019050919050565b5f613811826137ac565b61381b81856137b6565b9350613826836137c6565b805f5b8381101561385657815161383d88826137e4565b9750613848836137fb565b925050600181019050613829565b5085935050505092915050565b5f60a0820190506138765f8301886128af565b613883602083018761379d565b81810360408301526138958186613807565b90506138a46060830185612a38565b6138b160808301846128af565b969550505050505056fea2646970667358221220828185e2a0173fe95bc3158a9f7f295f8f9835994536645df92f6f4203fb253064736f6c634300081a0033000000000000000000000000b2ba47080158f2220371dd494e52f3f32a243236

Deployed Bytecode

0x608060405260043610610212575f3560e01c806389291a8f11610117578063cf9522fd1161009f578063e2f456051161006e578063e2f456051461075b578063f2a95aa914610785578063f2fde38b146107ad578063f8b45b05146107d5578063ffb54a99146107ff57610219565b8063cf9522fd146106a1578063dd62ed3e146106cb578063dd85465214610707578063e12ed13c1461073157610219565b8063a457c2d7116100e6578063a457c2d7146105d3578063a9059cbb1461060f578063bd93e6441461064b578063c8c8ebe414610661578063c9567bf91461068b57610219565b806389291a8f146105415780638da5cb5b1461055757806395d89b41146105815780639a7a23d6146105ab57610219565b80633be6e6371161019a5780634fbee193116101695780634fbee19314610473578063583e0568146104af57806370a08231146104d9578063715018a614610515578063751039fc1461052b57610219565b80633be6e637146103cd5780633d9a3d19146103f55780633e4aff1e1461041f5780634f91e48c1461044957610219565b806322a0bc81116101e157806322a0bc81146102d757806323b872dd14610301578063311028af1461033d578063313ce56714610367578063395093511461039157610219565b806306fdde031461021d578063095ea7b3146102475780630c6b67371461028357806318160ddd146102ad57610219565b3661021957005b5f80fd5b348015610228575f80fd5b50610231610829565b60405161023e919061278d565b60405180910390f35b348015610252575f80fd5b5061026d6004803603810190610268919061283e565b6108b9565b60405161027a9190612896565b60405180910390f35b34801561028e575f80fd5b506102976108db565b6040516102a491906128be565b60405180910390f35b3480156102b8575f80fd5b506102c16108e1565b6040516102ce91906128be565b60405180910390f35b3480156102e2575f80fd5b506102eb6108ea565b6040516102f891906128be565b60405180910390f35b34801561030c575f80fd5b50610327600480360381019061032291906128d7565b6108f0565b6040516103349190612896565b60405180910390f35b348015610348575f80fd5b5061035161091e565b60405161035e91906128be565b60405180910390f35b348015610372575f80fd5b5061037b610924565b6040516103889190612942565b60405180910390f35b34801561039c575f80fd5b506103b760048036038101906103b2919061283e565b61092c565b6040516103c49190612896565b60405180910390f35b3480156103d8575f80fd5b506103f360048036038101906103ee919061295b565b610962565b005b348015610400575f80fd5b506104096109cd565b60405161041691906128be565b60405180910390f35b34801561042a575f80fd5b506104336109d3565b60405161044091906128be565b60405180910390f35b348015610454575f80fd5b5061045d6109d9565b60405161046a9190612896565b60405180910390f35b34801561047e575f80fd5b5061049960048036038101906104949190612999565b6109ec565b6040516104a69190612896565b60405180910390f35b3480156104ba575f80fd5b506104c3610a3e565b6040516104d09190612a1f565b60405180910390f35b3480156104e4575f80fd5b506104ff60048036038101906104fa9190612999565b610a62565b60405161050c91906128be565b60405180910390f35b348015610520575f80fd5b50610529610aa7565b005b348015610536575f80fd5b5061053f610aba565b005b34801561054c575f80fd5b50610555610ad6565b005b348015610562575f80fd5b5061056b610bbd565b6040516105789190612a47565b60405180910390f35b34801561058c575f80fd5b50610595610be5565b6040516105a2919061278d565b60405180910390f35b3480156105b6575f80fd5b506105d160048036038101906105cc9190612a8a565b610c75565b005b3480156105de575f80fd5b506105f960048036038101906105f4919061283e565b610d1a565b6040516106069190612896565b60405180910390f35b34801561061a575f80fd5b506106356004803603810190610630919061283e565b610d8f565b6040516106429190612896565b60405180910390f35b348015610656575f80fd5b5061065f610db1565b005b34801561066c575f80fd5b50610675610e2c565b60405161068291906128be565b60405180910390f35b348015610696575f80fd5b5061069f610e32565b005b3480156106ac575f80fd5b506106b5610e56565b6040516106c291906128be565b60405180910390f35b3480156106d6575f80fd5b506106f160048036038101906106ec9190612ac8565b610e5c565b6040516106fe91906128be565b60405180910390f35b348015610712575f80fd5b5061071b610ede565b60405161072891906128be565b60405180910390f35b34801561073c575f80fd5b50610745610ee4565b60405161075291906128be565b60405180910390f35b348015610766575f80fd5b5061076f610eea565b60405161077c91906128be565b60405180910390f35b348015610790575f80fd5b506107ab60048036038101906107a6919061283e565b610ef0565b005b3480156107b8575f80fd5b506107d360048036038101906107ce9190612999565b6111c6565b005b3480156107e0575f80fd5b506107e9611248565b6040516107f691906128be565b60405180910390f35b34801561080a575f80fd5b5061081361124e565b6040516108209190612896565b60405180910390f35b60606003805461083890612b33565b80601f016020809104026020016040519081016040528092919081815260200182805461086490612b33565b80156108af5780601f10610886576101008083540402835291602001916108af565b820191905f5260205f20905b81548152906001019060200180831161089257829003601f168201915b5050505050905090565b5f806108c3611260565b90506108d0818585611267565b600191505092915050565b60115481565b5f600254905090565b600a5481565b5f806108fa611260565b905061090785828561142a565b6109128585856114b5565b60019150509392505050565b60095481565b5f6012905090565b5f80610936611260565b90506109578185856109488589610e5c565b6109529190612b90565b611267565b600191505092915050565b61096a611ec0565b602d821115801561097c575060638111155b6109bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b290612c0d565b60405180910390fd5b81601381905550806014819055505050565b600b5481565b600c5481565b601260019054906101000a900460ff1681565b5f60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610aaf611ec0565b610ab85f611f3e565b565b610ac2611ec0565b600954600d81905550600954600e81905550565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b16611260565b73ffffffffffffffffffffffffffffffffffffffff1614610b35575f80fd5b5f4711610b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6e90612c75565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610bba573d5f803e3d5ffd5b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610bf490612b33565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2090612b33565b8015610c6b5780601f10610c4257610100808354040283529160200191610c6b565b820191905f5260205f20905b815481529060010190602001808311610c4e57829003601f168201915b5050505050905090565b610c7d611ec0565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0390612d03565b60405180910390fd5b610d168282612001565b5050565b5f80610d24611260565b90505f610d318286610e5c565b905083811015610d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6d90612d91565b60405180910390fd5b610d838286868403611267565b60019250505092915050565b5f80610d99611260565b9050610da68185856114b5565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610df1611260565b73ffffffffffffffffffffffffffffffffffffffff1614610e10575f80fd5b5f601260016101000a81548160ff021916908315150217905550565b600d5481565b610e3a611ec0565b600160125f6101000a81548160ff021916908315150217905550565b60145481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135481565b60105481565b600f5481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f30611260565b73ffffffffffffffffffffffffffffffffffffffff1614610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d90612df9565b60405180910390fd5b5f8290505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fc49190612a47565b602060405180830381865afa158015610fdf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110039190612e2b565b90505f6064846009546110169190612e56565b6110209190612ec4565b9050808211611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b90612f3e565b60405180910390fd5b5f81836110719190612f5c565b90505f811115611119578373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016110d7929190612f8f565b6020604051808303815f875af11580156110f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111179190612fca565b505b5f85036111be578373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b815260040161117c929190612f8f565b6020604051808303815f875af1158015611198573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111bc9190612fca565b505b505050505050565b6111ce611ec0565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361123c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123390613065565b60405180910390fd5b61124581611f3e565b50565b600e5481565b60125f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc906130f3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133a90613181565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161141d91906128be565b60405180910390a3505050565b5f6114358484610e5c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114af57818110156114a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611498906131e9565b60405180910390fd5b6114ae8484848403611267565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151a90613277565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158890613305565b60405180910390fd5b5f81036115a8576115a383835f61209f565b611ebb565b6010544311156115c157436010819055505f6011819055505b5f60175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611660575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905061166a610bbd565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156116d857506116a8610bbd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561171057505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561174a575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117635750600860149054906101000a900460ff16155b15611ba25760125f9054906101000a900460ff166118565760155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611816575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184c9061336d565b60405180910390fd5b5b60175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156118f3575060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561199a57600d5482111561193d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611934906133fb565b60405180910390fd5b600e5461194984610a62565b836119549190612b90565b1115611995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198c90613463565b60405180910390fd5b611ba1565b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611a37575060165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611af857600d54821115611a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a78906134f1565b60405180910390fd5b601260019054906101000a900460ff1615611af357600360115410611adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad29061357f565b60405180910390fd5b60115f815480929190611aed9061359d565b91905055505b611ba0565b60165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611b9f57600e54611b5284610a62565b83611b5d9190612b90565b1115611b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9590613463565b60405180910390fd5b5b5b5b5b5f611bac30610a62565b90505f8082118015611bbc575082155b9050808015611bd85750600860149054906101000a900460ff16155b8015611c2b575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611c7e575060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611cd1575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d15576001600860146101000a81548160ff021916908315150217905550611cfa8461230b565b5f600860146101000a81548160ff0219169083151502179055505b5f600860149054906101000a900460ff16158015611d31575083155b905060155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dce575060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611dd7575f90505b5f8115611eaa5760175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611e5c57611e556064611e476014548961249590919063ffffffff16565b6124aa90919063ffffffff16565b9050611e87565b611e846064611e766013548961249590919063ffffffff16565b6124aa90919063ffffffff16565b90505b5f811115611e9b57611e9a88308361209f565b5b8086611ea79190612f5c565b95505b611eb588888861209f565b50505050505b505050565b611ec8611260565b73ffffffffffffffffffffffffffffffffffffffff16611ee6610bbd565b73ffffffffffffffffffffffffffffffffffffffff1614611f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f339061362e565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361210d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210490613277565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361217b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217290613305565b60405180910390fd5b6121868383836124bf565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612209576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612200906136bc565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122f291906128be565b60405180910390a36123058484846124c4565b50505050565b5f61231530610a62565b90505f808203612326575050612492565b5f6014546013546123379190612b90565b036123b1575f8211801561234c5750600f5482105b15612359578190506123ac565b5f61238260646123746014548761249590919063ffffffff16565b6124aa90919063ffffffff16565b905080846123909190612f5c565b9350600f548411156123a657600f5491506123aa565b8391505b505b612486565b5f821180156123d457506123d16005600f546124aa90919063ffffffff16565b82105b156123e0575050612492565b5f8211801561240357506124006005600f546124aa90919063ffffffff16565b82115b80156124105750600f5482105b156124325761242b6005600f546124aa90919063ffffffff16565b9050612485565b5f61245b606461244d6014548761249590919063ffffffff16565b6124aa90919063ffffffff16565b905080846124699190612f5c565b9350600f5484111561247f57600f549150612483565b8391505b505b5b61248f816124c9565b50505b50565b5f81836124a29190612e56565b905092915050565b5f81836124b79190612ec4565b905092915050565b505050565b505050565b5f600267ffffffffffffffff8111156124e5576124e46136da565b5b6040519080825280602002602001820160405280156125135781602001602082028036833780820191505090505b50905030815f8151811061252a57612529613707565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125f19190613748565b8160018151811061260557612604613707565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061266a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611267565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016126ec959493929190613863565b5f604051808303815f87803b158015612703575f80fd5b505af1158015612715573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61275f8261271d565b6127698185612727565b9350612779818560208601612737565b61278281612745565b840191505092915050565b5f6020820190508181035f8301526127a58184612755565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127da826127b1565b9050919050565b6127ea816127d0565b81146127f4575f80fd5b50565b5f81359050612805816127e1565b92915050565b5f819050919050565b61281d8161280b565b8114612827575f80fd5b50565b5f8135905061283881612814565b92915050565b5f8060408385031215612854576128536127ad565b5b5f612861858286016127f7565b92505060206128728582860161282a565b9150509250929050565b5f8115159050919050565b6128908161287c565b82525050565b5f6020820190506128a95f830184612887565b92915050565b6128b88161280b565b82525050565b5f6020820190506128d15f8301846128af565b92915050565b5f805f606084860312156128ee576128ed6127ad565b5b5f6128fb868287016127f7565b935050602061290c868287016127f7565b925050604061291d8682870161282a565b9150509250925092565b5f60ff82169050919050565b61293c81612927565b82525050565b5f6020820190506129555f830184612933565b92915050565b5f8060408385031215612971576129706127ad565b5b5f61297e8582860161282a565b925050602061298f8582860161282a565b9150509250929050565b5f602082840312156129ae576129ad6127ad565b5b5f6129bb848285016127f7565b91505092915050565b5f819050919050565b5f6129e76129e26129dd846127b1565b6129c4565b6127b1565b9050919050565b5f6129f8826129cd565b9050919050565b5f612a09826129ee565b9050919050565b612a19816129ff565b82525050565b5f602082019050612a325f830184612a10565b92915050565b612a41816127d0565b82525050565b5f602082019050612a5a5f830184612a38565b92915050565b612a698161287c565b8114612a73575f80fd5b50565b5f81359050612a8481612a60565b92915050565b5f8060408385031215612aa057612a9f6127ad565b5b5f612aad858286016127f7565b9250506020612abe85828601612a76565b9150509250929050565b5f8060408385031215612ade57612add6127ad565b5b5f612aeb858286016127f7565b9250506020612afc858286016127f7565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612b4a57607f821691505b602082108103612b5d57612b5c612b06565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612b9a8261280b565b9150612ba58361280b565b9250828201905080821115612bbd57612bbc612b63565b5b92915050565b7f466565732063616e6e6f742065786365656420393925000000000000000000005f82015250565b5f612bf7601683612727565b9150612c0282612bc3565b602082019050919050565b5f6020820190508181035f830152612c2481612beb565b9050919050565b7f546f6b656e3a206e6f2045544820746f20636c656172000000000000000000005f82015250565b5f612c5f601683612727565b9150612c6a82612c2b565b602082019050919050565b5f6020820190508181035f830152612c8c81612c53565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f612ced603983612727565b9150612cf882612c93565b604082019050919050565b5f6020820190508181035f830152612d1a81612ce1565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612d7b602583612727565b9150612d8682612d21565b604082019050919050565b5f6020820190508181035f830152612da881612d6f565b9050919050565b7f4f6e6c79206465706c6f7965722063616e20636c65617220746f6b656e7300005f82015250565b5f612de3601e83612727565b9150612dee82612daf565b602082019050919050565b5f6020820190508181035f830152612e1081612dd7565b9050919050565b5f81519050612e2581612814565b92915050565b5f60208284031215612e4057612e3f6127ad565b5b5f612e4d84828501612e17565b91505092915050565b5f612e608261280b565b9150612e6b8361280b565b9250828202612e798161280b565b91508282048414831517612e9057612e8f612b63565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612ece8261280b565b9150612ed98361280b565b925082612ee957612ee8612e97565b5b828204905092915050565b7f4e6f2065786365737320746f6b656e7320746f20636c656172000000000000005f82015250565b5f612f28601983612727565b9150612f3382612ef4565b602082019050919050565b5f6020820190508181035f830152612f5581612f1c565b9050919050565b5f612f668261280b565b9150612f718361280b565b9250828203905081811115612f8957612f88612b63565b5b92915050565b5f604082019050612fa25f830185612a38565b612faf60208301846128af565b9392505050565b5f81519050612fc481612a60565b92915050565b5f60208284031215612fdf57612fde6127ad565b5b5f612fec84828501612fb6565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61304f602683612727565b915061305a82612ff5565b604082019050919050565b5f6020820190508181035f83015261307c81613043565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6130dd602483612727565b91506130e882613083565b604082019050919050565b5f6020820190508181035f83015261310a816130d1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61316b602283612727565b915061317682613111565b604082019050919050565b5f6020820190508181035f8301526131988161315f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6131d3601d83612727565b91506131de8261319f565b602082019050919050565b5f6020820190508181035f830152613200816131c7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613261602583612727565b915061326c82613207565b604082019050919050565b5f6020820190508181035f83015261328e81613255565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6132ef602383612727565b91506132fa82613295565b604082019050919050565b5f6020820190508181035f83015261331c816132e3565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f613357601683612727565b915061336282613323565b602082019050919050565b5f6020820190508181035f8301526133848161334b565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6133e5603583612727565b91506133f08261338b565b604082019050919050565b5f6020820190508181035f830152613412816133d9565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61344d601383612727565b915061345882613419565b602082019050919050565b5f6020820190508181035f83015261347a81613441565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6134db603683612727565b91506134e682613481565b604082019050919050565b5f6020820190508181035f830152613508816134cf565b9050919050565b7f457863656564656420746865206d6178696d756d206e756d626572206f6620735f8201527f656c6c7320616c6c6f77656420696e207468697320626c6f636b000000000000602082015250565b5f613569603a83612727565b91506135748261350f565b604082019050919050565b5f6020820190508181035f8301526135968161355d565b9050919050565b5f6135a78261280b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135d9576135d8612b63565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613618602083612727565b9150613623826135e4565b602082019050919050565b5f6020820190508181035f8301526136458161360c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6136a6602683612727565b91506136b18261364c565b604082019050919050565b5f6020820190508181035f8301526136d38161369a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613742816127e1565b92915050565b5f6020828403121561375d5761375c6127ad565b5b5f61376a84828501613734565b91505092915050565b5f819050919050565b5f61379661379161378c84613773565b6129c4565b61280b565b9050919050565b6137a68161377c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6137de816127d0565b82525050565b5f6137ef83836137d5565b60208301905092915050565b5f602082019050919050565b5f613811826137ac565b61381b81856137b6565b9350613826836137c6565b805f5b8381101561385657815161383d88826137e4565b9750613848836137fb565b925050600181019050613829565b5085935050505092915050565b5f60a0820190506138765f8301886128af565b613883602083018761379d565b81810360408301526138958186613807565b90506138a46060830185612a38565b6138b160808301846128af565b969550505050505056fea2646970667358221220828185e2a0173fe95bc3158a9f7f295f8f9835994536645df92f6f4203fb253064736f6c634300081a0033

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

000000000000000000000000b2ba47080158f2220371dd494e52f3f32a243236

-----Decoded View---------------
Arg [0] : wallet (address): 0xb2Ba47080158F2220371dd494E52f3F32A243236

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b2ba47080158f2220371dd494e52f3f32a243236


Deployed Bytecode Sourcemap

15276:9870:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10298:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11230:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16029:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10619:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15734:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11439:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15673:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10518:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11742:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23530:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15787:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15829:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16100:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18818:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15357:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10735:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9374:103;;;;;;;;;;;;;:::i;:::-;;22286:144;;;;;;;;;;;;;:::i;:::-;;22568:225;;;;;;;;;;;;;:::i;:::-;;9139:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10406:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18374:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11988:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10870:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22438:122;;;;;;;;;;;;;:::i;:::-;;15882:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17961:81;;;;;;;;;;;;;:::i;:::-;;16170:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11071:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16137:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15995:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15955:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22801:721;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9485:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15924:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16062:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10298:100;10352:13;10385:5;10378:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10298:100;:::o;11230:201::-;11313:4;11330:13;11346:12;:10;:12::i;:::-;11330:28;;11369:32;11378:5;11385:7;11394:6;11369:8;:32::i;:::-;11419:4;11412:11;;;11230:201;;;;:::o;16029:24::-;;;;:::o;10619:108::-;10680:7;10707:12;;10700:19;;10619:108;:::o;15734:46::-;;;;:::o;11439:295::-;11570:4;11587:15;11605:12;:10;:12::i;:::-;11587:30;;11628:38;11644:4;11650:7;11659:6;11628:15;:38::i;:::-;11677:27;11687:4;11693:2;11697:6;11677:9;:27::i;:::-;11722:4;11715:11;;;11439:295;;;;;:::o;15673:52::-;;;;:::o;10518:93::-;10576:5;10601:2;10594:9;;10518:93;:::o;11742:238::-;11830:4;11847:13;11863:12;:10;:12::i;:::-;11847:28;;11886:64;11895:5;11902:7;11939:10;11911:25;11921:5;11928:7;11911:9;:25::i;:::-;:38;;;;:::i;:::-;11886:8;:64::i;:::-;11968:4;11961:11;;;11742:238;;;;:::o;23530:212::-;9098:13;:11;:13::i;:::-;23631:2:::1;23620:7;:13;;:31;;;;;23649:2;23637:8;:14;;23620:31;23612:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;23698:7;23689:6;:16;;;;23726:8;23716:7;:18;;;;23530:212:::0;;:::o;15787:35::-;;;;:::o;15829:44::-;;;;:::o;16100:28::-;;;;;;;;;;;;;:::o;18818:126::-;18884:4;18908:19;:28;18928:7;18908:28;;;;;;;;;;;;;;;;;;;;;;;;;18901:35;;18818:126;;;:::o;15357:52::-;;;:::o;10735:127::-;10809:7;10836:9;:18;10846:7;10836:18;;;;;;;;;;;;;;;;10829:25;;10735:127;;;:::o;9374:103::-;9098:13;:11;:13::i;:::-;9439:30:::1;9466:1;9439:18;:30::i;:::-;9374:103::o:0;22286:144::-;9098:13;:11;:13::i;:::-;22363:18:::1;;22340:20;:41;;;;22404:18;;22392:9;:30;;;;22286:144::o:0;22568:225::-;22637:14;;;;;;;;;;;22621:30;;:12;:10;:12::i;:::-;:30;;;22613:39;;;;;;22695:1;22671:21;:25;22663:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22742:10;22734:28;;:51;22763:21;22734:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22568:225::o;9139:87::-;9185:7;9212:6;;;;;;;;;;;9205:13;;9139:87;:::o;10406:104::-;10462:13;10495:7;10488:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10406:104;:::o;18374:242::-;9098:13;:11;:13::i;:::-;18481::::1;;;;;;;;;;;18473:21;;:4;:21;;::::0;18465:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18567:41;18596:4;18602:5;18567:28;:41::i;:::-;18374:242:::0;;:::o;11988:436::-;12081:4;12098:13;12114:12;:10;:12::i;:::-;12098:28;;12137:24;12164:25;12174:5;12181:7;12164:9;:25::i;:::-;12137:52;;12228:15;12208:16;:35;;12200:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12321:60;12330:5;12337:7;12365:15;12346:16;:34;12321:8;:60::i;:::-;12412:4;12405:11;;;;11988:436;;;;:::o;10870:193::-;10949:4;10966:13;10982:12;:10;:12::i;:::-;10966:28;;11005;11015:5;11022:2;11026:6;11005:9;:28::i;:::-;11051:4;11044:11;;;10870:193;;;;:::o;22438:122::-;22509:14;;;;;;;;;;;22493:30;;:12;:10;:12::i;:::-;:30;;;22485:39;;;;;;22547:5;22535:9;;:17;;;;;;;;;;;;;;;;;;22438:122::o;15882:35::-;;;;:::o;17961:81::-;9098:13;:11;:13::i;:::-;18030:4:::1;18016:11;;:18;;;;;;;;;;;;;;;;;;17961:81::o:0;16170:27::-;;;;:::o;11071:151::-;11160:7;11187:11;:18;11199:5;11187:18;;;;;;;;;;;;;;;:27;11206:7;11187:27;;;;;;;;;;;;;;;;11180:34;;11071:151;;;;:::o;16137:26::-;;;;:::o;15995:27::-;;;;:::o;15955:33::-;;;;:::o;22801:721::-;22909:14;;;;;;;;;;;22893:30;;:12;:10;:12::i;:::-;:30;;;22885:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22969:20;22999:12;22969:43;;23023:20;23046:13;:23;;;23078:4;23046:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23023:61;;23095:20;23150:3;23140:6;23119:18;;:27;;;;:::i;:::-;23118:35;;;;:::i;:::-;23095:58;;23187:12;23172;:27;23164:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;23240:21;23279:12;23264;:27;;;;:::i;:::-;23240:51;;23324:1;23308:13;:17;23304:103;;;23342:13;:22;;;23365:14;;;;;;;;;;;23381:13;23342:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23304:103;23433:1;23423:6;:11;23419:96;;23451:13;:22;;;23474:14;;;;;;;;;;;23490:12;23451:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23419:96;22874:648;;;;22801:721;;:::o;9485:201::-;9098:13;:11;:13::i;:::-;9594:1:::1;9574:22;;:8;:22;;::::0;9566:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9650:28;9669:8;9650:18;:28::i;:::-;9485:201:::0;:::o;15924:24::-;;;;:::o;16062:31::-;;;;;;;;;;;;;:::o;783:98::-;836:7;863:10;856:17;;783:98;:::o;14163:380::-;14316:1;14299:19;;:5;:19;;;14291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14397:1;14378:21;;:7;:21;;;14370:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14481:6;14451:11;:18;14463:5;14451:18;;;;;;;;;;;;;;;:27;14470:7;14451:27;;;;;;;;;;;;;;;:36;;;;14519:7;14503:32;;14512:5;14503:32;;;14528:6;14503:32;;;;;;:::i;:::-;;;;;;;;14163:380;;;:::o;14551:453::-;14686:24;14713:25;14723:5;14730:7;14713:9;:25::i;:::-;14686:52;;14773:17;14753:16;:37;14749:248;;14835:6;14815:16;:26;;14807:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14919:51;14928:5;14935:7;14963:6;14944:16;:25;14919:8;:51::i;:::-;14749:248;14675:329;14551:453;;;:::o;18952:2837::-;19068:1;19052:18;;:4;:18;;;19044:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19145:1;19131:16;;:2;:16;;;19123:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19214:1;19204:6;:11;19200:93;;19232:28;19248:4;19254:2;19258:1;19232:15;:28::i;:::-;19275:7;;19200:93;19324:12;;19309;:27;19305:115;;;19368:12;19353;:27;;;;19407:1;19395:9;:13;;;;19305:115;19440:15;19459:25;:31;19485:4;19459:31;;;;;;;;;;;;;;;;;;;;;;;;;19458:32;:66;;;;;19495:25;:29;19521:2;19495:29;;;;;;;;;;;;;;;;;;;;;;;;;19494:30;19458:66;19440:84;;19557:7;:5;:7::i;:::-;19549:15;;:4;:15;;;;:32;;;;;19574:7;:5;:7::i;:::-;19568:13;;:2;:13;;;;19549:32;:52;;;;;19599:1;19585:16;;:2;:16;;;;19549:52;:77;;;;;19619:6;19605:21;;:2;:21;;;;19549:77;:90;;;;;19631:8;;;;;;;;;;;19630:9;19549:90;19545:1269;;;19667:11;;;;;;;;;;;19662:148;;19711:19;:25;19731:4;19711:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19740:19;:23;19760:2;19740:23;;;;;;;;;;;;;;;;;;;;;;;;;19711:52;19703:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;19662:148;19834:25;:31;19860:4;19834:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;19870:31;:35;19902:2;19870:35;;;;;;;;;;;;;;;;;;;;;;;;;19869:36;19834:71;19830:969;;;19966:20;;19956:6;:30;;19948:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;20101:9;;20084:13;20094:2;20084:9;:13::i;:::-;20075:6;:22;;;;:::i;:::-;:35;;20067:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19830:969;;;20183:25;:29;20209:2;20183:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;20217:31;:37;20249:4;20217:37;;;;;;;;;;;;;;;;;;;;;;;;;20216:38;20183:71;20179:620;;;20297:20;;20287:6;:30;;20279:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;20403:9;;;;;;;;;;;20399:187;;;20460:1;20448:9;;:13;20440:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;20551:9;;:11;;;;;;;;;:::i;:::-;;;;;;20399:187;20179:620;;;20652:31;:35;20684:2;20652:35;;;;;;;;;;;;;;;;;;;;;;;;;20647:152;;20746:9;;20729:13;20739:2;20729:9;:13::i;:::-;20720:6;:22;;;;:::i;:::-;:35;;20712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20647:152;20179:620;19830:969;19545:1269;20826:28;20857:24;20875:4;20857:9;:24::i;:::-;20826:55;;20894:12;20932:1;20909:20;:24;:39;;;;;20938:10;20937:11;20909:39;20894:54;;20965:7;:20;;;;;20977:8;;;;;;;;;;;20976:9;20965:20;:56;;;;;20990:25;:31;21016:4;20990:31;;;;;;;;;;;;;;;;;;;;;;;;;20989:32;20965:56;:86;;;;;21026:19;:25;21046:4;21026:25;;;;;;;;;;;;;;;;;;;;;;;;;21025:26;20965:86;:114;;;;;21056:19;:23;21076:2;21056:23;;;;;;;;;;;;;;;;;;;;;;;;;21055:24;20965:114;20961:224;;;21107:4;21096:8;;:15;;;;;;;;;;;;;;;;;;21126:16;21135:6;21126:8;:16::i;:::-;21168:5;21157:8;;:16;;;;;;;;;;;;;;;;;;20961:224;21197:12;21213:8;;;;;;;;;;;21212:9;:24;;;;;21226:10;21225:11;21212:24;21197:39;;21253:19;:25;21273:4;21253:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21282:19;:23;21302:2;21282:23;;;;;;;;;;;;;;;;;;;;;;;;;21253:52;21249:100;;;21332:5;21322:15;;21249:100;21361:12;21394:7;21390:348;;;21422:25;:29;21448:2;21422:29;;;;;;;;;;;;;;;;;;;;;;;;;21418:193;;;21479:28;21503:3;21479:19;21490:7;;21479:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;21472:35;;21418:193;;;21568:27;21591:3;21568:18;21579:6;;21568;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;21561:34;;21418:193;21634:1;21627:4;:8;21623:83;;;21652:42;21668:4;21682;21689;21652:15;:42::i;:::-;21623:83;21726:4;21716:14;;;;;:::i;:::-;;;21390:348;21748:33;21764:4;21770:2;21774:6;21748:15;:33::i;:::-;19031:2758;;;;;18952:2837;;;;:::o;9234:132::-;9309:12;:10;:12::i;:::-;9298:23;;:7;:5;:7::i;:::-;:23;;;9290:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9234:132::o;9694:191::-;9768:16;9787:6;;;;;;;;;;;9768:25;;9813:8;9804:6;;:17;;;;;;;;;;;;;;;;;;9868:8;9837:40;;9858:8;9837:40;;;;;;;;;;;;9757:128;9694:191;:::o;18624:186::-;18741:5;18707:25;:31;18733:4;18707:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18796:5;18762:40;;18790:4;18762:40;;;;;;;;;;;;18624:186;;:::o;12432:675::-;12579:1;12563:18;;:4;:18;;;12555:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12656:1;12642:16;;:2;:16;;;12634:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12711:38;12732:4;12738:2;12742:6;12711:20;:38::i;:::-;12762:19;12784:9;:15;12794:4;12784:15;;;;;;;;;;;;;;;;12762:37;;12833:6;12818:11;:21;;12810:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12950:6;12936:11;:20;12918:9;:15;12928:4;12918:15;;;;;;;;;;;;;;;:38;;;;12988:6;12971:9;:13;12981:2;12971:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;13038:2;13023:26;;13032:4;13023:26;;;13042:6;13023:26;;;;;;:::i;:::-;;;;;;;;13062:37;13082:4;13088:2;13092:6;13062:19;:37::i;:::-;12544:563;12432:675;;;:::o;23750:1393::-;23803:23;23829:24;23847:4;23829:9;:24::i;:::-;23803:50;;23864:20;23921:1;23902:15;:20;23898:59;;23939:7;;;;23898:59;23989:1;23977:7;;23970:6;;:14;;;;:::i;:::-;23969:21;23965:1130;;24026:1;24008:15;:19;:59;;;;;24049:18;;24031:15;:36;24008:59;24005:443;;;24099:15;24084:30;;24005:443;;;24156:21;24180:28;24204:3;24180:19;24191:7;;24180:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;24156:52;;24233:13;24223:23;;;;;:::i;:::-;;;24274:18;;24265:6;:27;24261:176;;;24328:18;;24313:33;;24261:176;;;24415:6;24400:21;;24261:176;24141:307;24005:443;23965:1130;;;24502:1;24484:15;:19;:66;;;;;24525:25;24548:1;24525:18;;:22;;:25;;;;:::i;:::-;24507:15;:43;24484:66;24481:607;;;24567:7;;;;24481:607;24622:1;24604:15;:19;:66;;;;;24645:25;24668:1;24645:18;;:22;;:25;;;;:::i;:::-;24627:15;:43;24604:66;:106;;;;;24692:18;;24674:15;:36;24604:106;24600:488;;;24742:25;24765:1;24742:18;;:22;;:25;;;;:::i;:::-;24727:40;;24600:488;;;24809:21;24833:28;24857:3;24833:19;24844:7;;24833:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;24809:52;;24886:13;24876:23;;;;;:::i;:::-;;;24927:18;;24918:6;:27;24914:163;;;24981:18;;24966:33;;24914:163;;;25055:6;25040:21;;24914:163;24794:294;24600:488;23965:1130;25105:30;25122:12;25105:16;:30::i;:::-;23792:1351;;23750:1393;;:::o;6935:98::-;6993:7;7024:1;7020;:5;;;;:::i;:::-;7013:12;;6935:98;;;;:::o;7041:::-;7099:7;7130:1;7126;:5;;;;:::i;:::-;7119:12;;7041:98;;;;:::o;15012:125::-;;;;:::o;15145:124::-;;;;:::o;21797:482::-;21865:21;21903:1;21889:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21865:40;;21934:4;21916;21921:1;21916:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21960:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21950:4;21955:1;21950:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;21996:63;22013:4;22028:16;22047:11;21996:8;:63::i;:::-;22072:16;:67;;;22154:11;22180:1;22196:4;22215:15;;;;;;;;;;;22245;22072:199;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21852:427;21797:482;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:474::-;4814:6;4822;4871:2;4859:9;4850:7;4846:23;4842:32;4839:119;;;4877:79;;:::i;:::-;4839:119;4997:1;5022:53;5067:7;5058:6;5047:9;5043:22;5022:53;:::i;:::-;5012:63;;4968:117;5124:2;5150:53;5195:7;5186:6;5175:9;5171:22;5150:53;:::i;:::-;5140:63;;5095:118;4746:474;;;;;:::o;5226:329::-;5285:6;5334:2;5322:9;5313:7;5309:23;5305:32;5302:119;;;5340:79;;:::i;:::-;5302:119;5460:1;5485:53;5530:7;5521:6;5510:9;5506:22;5485:53;:::i;:::-;5475:63;;5431:117;5226:329;;;;:::o;5561:60::-;5589:3;5610:5;5603:12;;5561:60;;;:::o;5627:142::-;5677:9;5710:53;5728:34;5737:24;5755:5;5737:24;:::i;:::-;5728:34;:::i;:::-;5710:53;:::i;:::-;5697:66;;5627:142;;;:::o;5775:126::-;5825:9;5858:37;5889:5;5858:37;:::i;:::-;5845:50;;5775:126;;;:::o;5907:151::-;5982:9;6015:37;6046:5;6015:37;:::i;:::-;6002:50;;5907:151;;;:::o;6064:181::-;6176:62;6232:5;6176:62;:::i;:::-;6171:3;6164:75;6064:181;;:::o;6251:272::-;6369:4;6407:2;6396:9;6392:18;6384:26;;6420:96;6513:1;6502:9;6498:17;6489:6;6420:96;:::i;:::-;6251:272;;;;:::o;6529:118::-;6616:24;6634:5;6616:24;:::i;:::-;6611:3;6604:37;6529:118;;:::o;6653:222::-;6746:4;6784:2;6773:9;6769:18;6761:26;;6797:71;6865:1;6854:9;6850:17;6841:6;6797:71;:::i;:::-;6653:222;;;;:::o;6881:116::-;6951:21;6966:5;6951:21;:::i;:::-;6944:5;6941:32;6931:60;;6987:1;6984;6977:12;6931:60;6881:116;:::o;7003:133::-;7046:5;7084:6;7071:20;7062:29;;7100:30;7124:5;7100:30;:::i;:::-;7003:133;;;;:::o;7142:468::-;7207:6;7215;7264:2;7252:9;7243:7;7239:23;7235:32;7232:119;;;7270:79;;:::i;:::-;7232:119;7390:1;7415:53;7460:7;7451:6;7440:9;7436:22;7415:53;:::i;:::-;7405:63;;7361:117;7517:2;7543:50;7585:7;7576:6;7565:9;7561:22;7543:50;:::i;:::-;7533:60;;7488:115;7142:468;;;;;:::o;7616:474::-;7684:6;7692;7741:2;7729:9;7720:7;7716:23;7712:32;7709:119;;;7747:79;;:::i;:::-;7709:119;7867:1;7892:53;7937:7;7928:6;7917:9;7913:22;7892:53;:::i;:::-;7882:63;;7838:117;7994:2;8020:53;8065:7;8056:6;8045:9;8041:22;8020:53;:::i;:::-;8010:63;;7965:118;7616:474;;;;;:::o;8096:180::-;8144:77;8141:1;8134:88;8241:4;8238:1;8231:15;8265:4;8262:1;8255:15;8282:320;8326:6;8363:1;8357:4;8353:12;8343:22;;8410:1;8404:4;8400:12;8431:18;8421:81;;8487:4;8479:6;8475:17;8465:27;;8421:81;8549:2;8541:6;8538:14;8518:18;8515:38;8512:84;;8568:18;;:::i;:::-;8512:84;8333:269;8282:320;;;:::o;8608:180::-;8656:77;8653:1;8646:88;8753:4;8750:1;8743:15;8777:4;8774:1;8767:15;8794:191;8834:3;8853:20;8871:1;8853:20;:::i;:::-;8848:25;;8887:20;8905:1;8887:20;:::i;:::-;8882:25;;8930:1;8927;8923:9;8916:16;;8951:3;8948:1;8945:10;8942:36;;;8958:18;;:::i;:::-;8942:36;8794:191;;;;:::o;8991:172::-;9131:24;9127:1;9119:6;9115:14;9108:48;8991:172;:::o;9169:366::-;9311:3;9332:67;9396:2;9391:3;9332:67;:::i;:::-;9325:74;;9408:93;9497:3;9408:93;:::i;:::-;9526:2;9521:3;9517:12;9510:19;;9169:366;;;:::o;9541:419::-;9707:4;9745:2;9734:9;9730:18;9722:26;;9794:9;9788:4;9784:20;9780:1;9769:9;9765:17;9758:47;9822:131;9948:4;9822:131;:::i;:::-;9814:139;;9541:419;;;:::o;9966:172::-;10106:24;10102:1;10094:6;10090:14;10083:48;9966:172;:::o;10144:366::-;10286:3;10307:67;10371:2;10366:3;10307:67;:::i;:::-;10300:74;;10383:93;10472:3;10383:93;:::i;:::-;10501:2;10496:3;10492:12;10485:19;;10144:366;;;:::o;10516:419::-;10682:4;10720:2;10709:9;10705:18;10697:26;;10769:9;10763:4;10759:20;10755:1;10744:9;10740:17;10733:47;10797:131;10923:4;10797:131;:::i;:::-;10789:139;;10516:419;;;:::o;10941:244::-;11081:34;11077:1;11069:6;11065:14;11058:58;11150:27;11145:2;11137:6;11133:15;11126:52;10941:244;:::o;11191:366::-;11333:3;11354:67;11418:2;11413:3;11354:67;:::i;:::-;11347:74;;11430:93;11519:3;11430:93;:::i;:::-;11548:2;11543:3;11539:12;11532:19;;11191:366;;;:::o;11563:419::-;11729:4;11767:2;11756:9;11752:18;11744:26;;11816:9;11810:4;11806:20;11802:1;11791:9;11787:17;11780:47;11844:131;11970:4;11844:131;:::i;:::-;11836:139;;11563:419;;;:::o;11988:224::-;12128:34;12124:1;12116:6;12112:14;12105:58;12197:7;12192:2;12184:6;12180:15;12173:32;11988:224;:::o;12218:366::-;12360:3;12381:67;12445:2;12440:3;12381:67;:::i;:::-;12374:74;;12457:93;12546:3;12457:93;:::i;:::-;12575:2;12570:3;12566:12;12559:19;;12218:366;;;:::o;12590:419::-;12756:4;12794:2;12783:9;12779:18;12771:26;;12843:9;12837:4;12833:20;12829:1;12818:9;12814:17;12807:47;12871:131;12997:4;12871:131;:::i;:::-;12863:139;;12590:419;;;:::o;13015:180::-;13155:32;13151:1;13143:6;13139:14;13132:56;13015:180;:::o;13201:366::-;13343:3;13364:67;13428:2;13423:3;13364:67;:::i;:::-;13357:74;;13440:93;13529:3;13440:93;:::i;:::-;13558:2;13553:3;13549:12;13542:19;;13201:366;;;:::o;13573:419::-;13739:4;13777:2;13766:9;13762:18;13754:26;;13826:9;13820:4;13816:20;13812:1;13801:9;13797:17;13790:47;13854:131;13980:4;13854:131;:::i;:::-;13846:139;;13573:419;;;:::o;13998:143::-;14055:5;14086:6;14080:13;14071:22;;14102:33;14129:5;14102:33;:::i;:::-;13998:143;;;;:::o;14147:351::-;14217:6;14266:2;14254:9;14245:7;14241:23;14237:32;14234:119;;;14272:79;;:::i;:::-;14234:119;14392:1;14417:64;14473:7;14464:6;14453:9;14449:22;14417:64;:::i;:::-;14407:74;;14363:128;14147:351;;;;:::o;14504:410::-;14544:7;14567:20;14585:1;14567:20;:::i;:::-;14562:25;;14601:20;14619:1;14601:20;:::i;:::-;14596:25;;14656:1;14653;14649:9;14678:30;14696:11;14678:30;:::i;:::-;14667:41;;14857:1;14848:7;14844:15;14841:1;14838:22;14818:1;14811:9;14791:83;14768:139;;14887:18;;:::i;:::-;14768:139;14552:362;14504:410;;;;:::o;14920:180::-;14968:77;14965:1;14958:88;15065:4;15062:1;15055:15;15089:4;15086:1;15079:15;15106:185;15146:1;15163:20;15181:1;15163:20;:::i;:::-;15158:25;;15197:20;15215:1;15197:20;:::i;:::-;15192:25;;15236:1;15226:35;;15241:18;;:::i;:::-;15226:35;15283:1;15280;15276:9;15271:14;;15106:185;;;;:::o;15297:175::-;15437:27;15433:1;15425:6;15421:14;15414:51;15297:175;:::o;15478:366::-;15620:3;15641:67;15705:2;15700:3;15641:67;:::i;:::-;15634:74;;15717:93;15806:3;15717:93;:::i;:::-;15835:2;15830:3;15826:12;15819:19;;15478:366;;;:::o;15850:419::-;16016:4;16054:2;16043:9;16039:18;16031:26;;16103:9;16097:4;16093:20;16089:1;16078:9;16074:17;16067:47;16131:131;16257:4;16131:131;:::i;:::-;16123:139;;15850:419;;;:::o;16275:194::-;16315:4;16335:20;16353:1;16335:20;:::i;:::-;16330:25;;16369:20;16387:1;16369:20;:::i;:::-;16364:25;;16413:1;16410;16406:9;16398:17;;16437:1;16431:4;16428:11;16425:37;;;16442:18;;:::i;:::-;16425:37;16275:194;;;;:::o;16475:332::-;16596:4;16634:2;16623:9;16619:18;16611:26;;16647:71;16715:1;16704:9;16700:17;16691:6;16647:71;:::i;:::-;16728:72;16796:2;16785:9;16781:18;16772:6;16728:72;:::i;:::-;16475:332;;;;;:::o;16813:137::-;16867:5;16898:6;16892:13;16883:22;;16914:30;16938:5;16914:30;:::i;:::-;16813:137;;;;:::o;16956:345::-;17023:6;17072:2;17060:9;17051:7;17047:23;17043:32;17040:119;;;17078:79;;:::i;:::-;17040:119;17198:1;17223:61;17276:7;17267:6;17256:9;17252:22;17223:61;:::i;:::-;17213:71;;17169:125;16956:345;;;;:::o;17307:225::-;17447:34;17443:1;17435:6;17431:14;17424:58;17516:8;17511:2;17503:6;17499:15;17492:33;17307:225;:::o;17538:366::-;17680:3;17701:67;17765:2;17760:3;17701:67;:::i;:::-;17694:74;;17777:93;17866:3;17777:93;:::i;:::-;17895:2;17890:3;17886:12;17879:19;;17538:366;;;:::o;17910:419::-;18076:4;18114:2;18103:9;18099:18;18091:26;;18163:9;18157:4;18153:20;18149:1;18138:9;18134:17;18127:47;18191:131;18317:4;18191:131;:::i;:::-;18183:139;;17910:419;;;:::o;18335:223::-;18475:34;18471:1;18463:6;18459:14;18452:58;18544:6;18539:2;18531:6;18527:15;18520:31;18335:223;:::o;18564:366::-;18706:3;18727:67;18791:2;18786:3;18727:67;:::i;:::-;18720:74;;18803:93;18892:3;18803:93;:::i;:::-;18921:2;18916:3;18912:12;18905:19;;18564:366;;;:::o;18936:419::-;19102:4;19140:2;19129:9;19125:18;19117:26;;19189:9;19183:4;19179:20;19175:1;19164:9;19160:17;19153:47;19217:131;19343:4;19217:131;:::i;:::-;19209:139;;18936:419;;;:::o;19361:221::-;19501:34;19497:1;19489:6;19485:14;19478:58;19570:4;19565:2;19557:6;19553:15;19546:29;19361:221;:::o;19588:366::-;19730:3;19751:67;19815:2;19810:3;19751:67;:::i;:::-;19744:74;;19827:93;19916:3;19827:93;:::i;:::-;19945:2;19940:3;19936:12;19929:19;;19588:366;;;:::o;19960:419::-;20126:4;20164:2;20153:9;20149:18;20141:26;;20213:9;20207:4;20203:20;20199:1;20188:9;20184:17;20177:47;20241:131;20367:4;20241:131;:::i;:::-;20233:139;;19960:419;;;:::o;20385:179::-;20525:31;20521:1;20513:6;20509:14;20502:55;20385:179;:::o;20570:366::-;20712:3;20733:67;20797:2;20792:3;20733:67;:::i;:::-;20726:74;;20809:93;20898:3;20809:93;:::i;:::-;20927:2;20922:3;20918:12;20911:19;;20570:366;;;:::o;20942:419::-;21108:4;21146:2;21135:9;21131:18;21123:26;;21195:9;21189:4;21185:20;21181:1;21170:9;21166:17;21159:47;21223:131;21349:4;21223:131;:::i;:::-;21215:139;;20942:419;;;:::o;21367:224::-;21507:34;21503:1;21495:6;21491:14;21484:58;21576:7;21571:2;21563:6;21559:15;21552:32;21367:224;:::o;21597:366::-;21739:3;21760:67;21824:2;21819:3;21760:67;:::i;:::-;21753:74;;21836:93;21925:3;21836:93;:::i;:::-;21954:2;21949:3;21945:12;21938:19;;21597:366;;;:::o;21969:419::-;22135:4;22173:2;22162:9;22158:18;22150:26;;22222:9;22216:4;22212:20;22208:1;22197:9;22193:17;22186:47;22250:131;22376:4;22250:131;:::i;:::-;22242:139;;21969:419;;;:::o;22394:222::-;22534:34;22530:1;22522:6;22518:14;22511:58;22603:5;22598:2;22590:6;22586:15;22579:30;22394:222;:::o;22622:366::-;22764:3;22785:67;22849:2;22844:3;22785:67;:::i;:::-;22778:74;;22861:93;22950:3;22861:93;:::i;:::-;22979:2;22974:3;22970:12;22963:19;;22622:366;;;:::o;22994:419::-;23160:4;23198:2;23187:9;23183:18;23175:26;;23247:9;23241:4;23237:20;23233:1;23222:9;23218:17;23211:47;23275:131;23401:4;23275:131;:::i;:::-;23267:139;;22994:419;;;:::o;23419:172::-;23559:24;23555:1;23547:6;23543:14;23536:48;23419:172;:::o;23597:366::-;23739:3;23760:67;23824:2;23819:3;23760:67;:::i;:::-;23753:74;;23836:93;23925:3;23836:93;:::i;:::-;23954:2;23949:3;23945:12;23938:19;;23597:366;;;:::o;23969:419::-;24135:4;24173:2;24162:9;24158:18;24150:26;;24222:9;24216:4;24212:20;24208:1;24197:9;24193:17;24186:47;24250:131;24376:4;24250:131;:::i;:::-;24242:139;;23969:419;;;:::o;24394:240::-;24534:34;24530:1;24522:6;24518:14;24511:58;24603:23;24598:2;24590:6;24586:15;24579:48;24394:240;:::o;24640:366::-;24782:3;24803:67;24867:2;24862:3;24803:67;:::i;:::-;24796:74;;24879:93;24968:3;24879:93;:::i;:::-;24997:2;24992:3;24988:12;24981:19;;24640:366;;;:::o;25012:419::-;25178:4;25216:2;25205:9;25201:18;25193:26;;25265:9;25259:4;25255:20;25251:1;25240:9;25236:17;25229:47;25293:131;25419:4;25293:131;:::i;:::-;25285:139;;25012:419;;;:::o;25437:169::-;25577:21;25573:1;25565:6;25561:14;25554:45;25437:169;:::o;25612:366::-;25754:3;25775:67;25839:2;25834:3;25775:67;:::i;:::-;25768:74;;25851:93;25940:3;25851:93;:::i;:::-;25969:2;25964:3;25960:12;25953:19;;25612:366;;;:::o;25984:419::-;26150:4;26188:2;26177:9;26173:18;26165:26;;26237:9;26231:4;26227:20;26223:1;26212:9;26208:17;26201:47;26265:131;26391:4;26265:131;:::i;:::-;26257:139;;25984:419;;;:::o;26409:241::-;26549:34;26545:1;26537:6;26533:14;26526:58;26618:24;26613:2;26605:6;26601:15;26594:49;26409:241;:::o;26656:366::-;26798:3;26819:67;26883:2;26878:3;26819:67;:::i;:::-;26812:74;;26895:93;26984:3;26895:93;:::i;:::-;27013:2;27008:3;27004:12;26997:19;;26656:366;;;:::o;27028:419::-;27194:4;27232:2;27221:9;27217:18;27209:26;;27281:9;27275:4;27271:20;27267:1;27256:9;27252:17;27245:47;27309:131;27435:4;27309:131;:::i;:::-;27301:139;;27028:419;;;:::o;27453:245::-;27593:34;27589:1;27581:6;27577:14;27570:58;27662:28;27657:2;27649:6;27645:15;27638:53;27453:245;:::o;27704:366::-;27846:3;27867:67;27931:2;27926:3;27867:67;:::i;:::-;27860:74;;27943:93;28032:3;27943:93;:::i;:::-;28061:2;28056:3;28052:12;28045:19;;27704:366;;;:::o;28076:419::-;28242:4;28280:2;28269:9;28265:18;28257:26;;28329:9;28323:4;28319:20;28315:1;28304:9;28300:17;28293:47;28357:131;28483:4;28357:131;:::i;:::-;28349:139;;28076:419;;;:::o;28501:233::-;28540:3;28563:24;28581:5;28563:24;:::i;:::-;28554:33;;28609:66;28602:5;28599:77;28596:103;;28679:18;;:::i;:::-;28596:103;28726:1;28719:5;28715:13;28708:20;;28501:233;;;:::o;28740:182::-;28880:34;28876:1;28868:6;28864:14;28857:58;28740:182;:::o;28928:366::-;29070:3;29091:67;29155:2;29150:3;29091:67;:::i;:::-;29084:74;;29167:93;29256:3;29167:93;:::i;:::-;29285:2;29280:3;29276:12;29269:19;;28928:366;;;:::o;29300:419::-;29466:4;29504:2;29493:9;29489:18;29481:26;;29553:9;29547:4;29543:20;29539:1;29528:9;29524:17;29517:47;29581:131;29707:4;29581:131;:::i;:::-;29573:139;;29300:419;;;:::o;29725:225::-;29865:34;29861:1;29853:6;29849:14;29842:58;29934:8;29929:2;29921:6;29917:15;29910:33;29725:225;:::o;29956:366::-;30098:3;30119:67;30183:2;30178:3;30119:67;:::i;:::-;30112:74;;30195:93;30284:3;30195:93;:::i;:::-;30313:2;30308:3;30304:12;30297:19;;29956:366;;;:::o;30328:419::-;30494:4;30532:2;30521:9;30517:18;30509:26;;30581:9;30575:4;30571:20;30567:1;30556:9;30552:17;30545:47;30609:131;30735:4;30609:131;:::i;:::-;30601:139;;30328:419;;;:::o;30753:180::-;30801:77;30798:1;30791:88;30898:4;30895:1;30888:15;30922:4;30919:1;30912:15;30939:180;30987:77;30984:1;30977:88;31084:4;31081:1;31074:15;31108:4;31105:1;31098:15;31125:143;31182:5;31213:6;31207:13;31198:22;;31229:33;31256:5;31229:33;:::i;:::-;31125:143;;;;:::o;31274:351::-;31344:6;31393:2;31381:9;31372:7;31368:23;31364:32;31361:119;;;31399:79;;:::i;:::-;31361:119;31519:1;31544:64;31600:7;31591:6;31580:9;31576:22;31544:64;:::i;:::-;31534:74;;31490:128;31274:351;;;;:::o;31631:85::-;31676:7;31705:5;31694:16;;31631:85;;;:::o;31722:158::-;31780:9;31813:61;31831:42;31840:32;31866:5;31840:32;:::i;:::-;31831:42;:::i;:::-;31813:61;:::i;:::-;31800:74;;31722:158;;;:::o;31886:147::-;31981:45;32020:5;31981:45;:::i;:::-;31976:3;31969:58;31886:147;;:::o;32039:114::-;32106:6;32140:5;32134:12;32124:22;;32039:114;;;:::o;32159:184::-;32258:11;32292:6;32287:3;32280:19;32332:4;32327:3;32323:14;32308:29;;32159:184;;;;:::o;32349:132::-;32416:4;32439:3;32431:11;;32469:4;32464:3;32460:14;32452:22;;32349:132;;;:::o;32487:108::-;32564:24;32582:5;32564:24;:::i;:::-;32559:3;32552:37;32487:108;;:::o;32601:179::-;32670:10;32691:46;32733:3;32725:6;32691:46;:::i;:::-;32769:4;32764:3;32760:14;32746:28;;32601:179;;;;:::o;32786:113::-;32856:4;32888;32883:3;32879:14;32871:22;;32786:113;;;:::o;32935:732::-;33054:3;33083:54;33131:5;33083:54;:::i;:::-;33153:86;33232:6;33227:3;33153:86;:::i;:::-;33146:93;;33263:56;33313:5;33263:56;:::i;:::-;33342:7;33373:1;33358:284;33383:6;33380:1;33377:13;33358:284;;;33459:6;33453:13;33486:63;33545:3;33530:13;33486:63;:::i;:::-;33479:70;;33572:60;33625:6;33572:60;:::i;:::-;33562:70;;33418:224;33405:1;33402;33398:9;33393:14;;33358:284;;;33362:14;33658:3;33651:10;;33059:608;;;32935:732;;;;:::o;33673:831::-;33936:4;33974:3;33963:9;33959:19;33951:27;;33988:71;34056:1;34045:9;34041:17;34032:6;33988:71;:::i;:::-;34069:80;34145:2;34134:9;34130:18;34121:6;34069:80;:::i;:::-;34196:9;34190:4;34186:20;34181:2;34170:9;34166:18;34159:48;34224:108;34327:4;34318:6;34224:108;:::i;:::-;34216:116;;34342:72;34410:2;34399:9;34395:18;34386:6;34342:72;:::i;:::-;34424:73;34492:3;34481:9;34477:19;34468:6;34424:73;:::i;:::-;33673:831;;;;;;;;:::o

Swarm Source

ipfs://828185e2a0173fe95bc3158a9f7f295f8f9835994536645df92f6f4203fb2530

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  ]

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.