ETH Price: $3,370.78 (+0.62%)
Gas: 8 Gwei

Contract

0xa59aEB914081F20D477B884Db1e51EFacB8f3871
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve176685342023-07-11 6:16:23371 days ago1689056183IN
0xa59aEB91...acB8f3871
0 ETH0.0006794414.39627327
Approve176679152023-07-11 4:11:11371 days ago1689048671IN
0xa59aEB91...acB8f3871
0 ETH0.000686714.55011249
Approve175438772023-06-23 17:52:59388 days ago1687542779IN
0xa59aEB91...acB8f3871
0 ETH0.0004604518.48325194
Approve172671072023-05-15 18:58:47427 days ago1684177127IN
0xa59aEB91...acB8f3871
0 ETH0.0030108863.79543334
Approve171702532023-05-02 2:52:59441 days ago1682995979IN
0xa59aEB91...acB8f3871
0 ETH0.0033247570.44564724
Approve171004152023-04-22 7:31:59451 days ago1682148719IN
0xa59aEB91...acB8f3871
0 ETH0.0014227730.14599939
Approve170351992023-04-12 23:46:47460 days ago1681343207IN
0xa59aEB91...acB8f3871
0 ETH0.0005624922.57927215
Approve170345242023-04-12 21:17:47460 days ago1681334267IN
0xa59aEB91...acB8f3871
0 ETH0.0009589720.29321785
Approve170295712023-04-12 4:29:35461 days ago1681273775IN
0xa59aEB91...acB8f3871
0 ETH0.0009234119.56556754
Approve170295682023-04-12 4:28:59461 days ago1681273739IN
0xa59aEB91...acB8f3871
0 ETH0.0008843818.73848217
Approve170283252023-04-12 0:17:11461 days ago1681258631IN
0xa59aEB91...acB8f3871
0 ETH0.0005223720.96888835
Approve170283022023-04-12 0:12:35461 days ago1681258355IN
0xa59aEB91...acB8f3871
0 ETH0.0008725118.59095462
Approve170275962023-04-11 21:48:47461 days ago1681249727IN
0xa59aEB91...acB8f3871
0 ETH0.0011691124.77142618
Approve170272932023-04-11 20:47:35461 days ago1681246055IN
0xa59aEB91...acB8f3871
0 ETH0.0013315128.21252541
Approve170258642023-04-11 15:54:59461 days ago1681228499IN
0xa59aEB91...acB8f3871
0 ETH0.0016638135.25328538
Approve170250962023-04-11 13:17:35461 days ago1681219055IN
0xa59aEB91...acB8f3871
0 ETH0.0008358830.55572922
Approve170250962023-04-11 13:17:35461 days ago1681219055IN
0xa59aEB91...acB8f3871
0 ETH0.0008358830.55572922
Approve170250962023-04-11 13:17:35461 days ago1681219055IN
0xa59aEB91...acB8f3871
0 ETH0.0008358830.55572922
Approve170250962023-04-11 13:17:35461 days ago1681219055IN
0xa59aEB91...acB8f3871
0 ETH0.0014439430.55572922
Approve170242612023-04-11 10:27:47461 days ago1681208867IN
0xa59aEB91...acB8f3871
0 ETH0.0009135719.35705855
Approve170237192023-04-11 8:37:35462 days ago1681202255IN
0xa59aEB91...acB8f3871
0 ETH0.0009531120.19492024
Approve170232722023-04-11 7:06:11462 days ago1681196771IN
0xa59aEB91...acB8f3871
0 ETH0.0009797120.73203462
Approve170227322023-04-11 5:16:47462 days ago1681190207IN
0xa59aEB91...acB8f3871
0 ETH0.0010622422.50717984
Approve170211322023-04-10 23:49:47462 days ago1681170587IN
0xa59aEB91...acB8f3871
0 ETH0.0012128444.80750513
Transfer170201412023-04-10 20:28:23462 days ago1681158503IN
0xa59aEB91...acB8f3871
0 ETH0.0015624230.17147554
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
170295882023-04-12 4:32:59461 days ago1681273979
0xa59aEB91...acB8f3871
0.03271734 ETH
170295882023-04-12 4:32:59461 days ago1681273979
0xa59aEB91...acB8f3871
0.03271734 ETH
170251022023-04-11 13:18:47461 days ago1681219127
0xa59aEB91...acB8f3871
0.07164609 ETH
170251022023-04-11 13:18:47461 days ago1681219127
0xa59aEB91...acB8f3871
0.07164609 ETH
170207162023-04-10 22:25:23462 days ago1681165523
0xa59aEB91...acB8f3871
0.17779912 ETH
170207162023-04-10 22:25:23462 days ago1681165523
0xa59aEB91...acB8f3871
0.17779912 ETH
170193322023-04-10 17:42:47462 days ago1681148567
0xa59aEB91...acB8f3871
0.26378111 ETH
170193322023-04-10 17:42:47462 days ago1681148567
0xa59aEB91...acB8f3871
0.26378111 ETH
170182772023-04-10 14:05:47462 days ago1681135547
0xa59aEB91...acB8f3871
0.32158404 ETH
170182772023-04-10 14:05:47462 days ago1681135547
0xa59aEB91...acB8f3871
0.32158404 ETH
170178912023-04-10 12:47:59462 days ago1681130879
0xa59aEB91...acB8f3871
0.13386611 ETH
170178912023-04-10 12:47:59462 days ago1681130879
0xa59aEB91...acB8f3871
0.13386611 ETH
170156822023-04-10 5:17:59463 days ago1681103879
0xa59aEB91...acB8f3871
0.09617426 ETH
170156822023-04-10 5:17:59463 days ago1681103879
0xa59aEB91...acB8f3871
0.09617426 ETH
170141162023-04-09 23:59:59463 days ago1681084799
0xa59aEB91...acB8f3871
0.2263452 ETH
170141162023-04-09 23:59:59463 days ago1681084799
0xa59aEB91...acB8f3871
0.2263452 ETH
170136802023-04-09 22:30:47463 days ago1681079447
0xa59aEB91...acB8f3871
0.09243644 ETH
170136802023-04-09 22:30:47463 days ago1681079447
0xa59aEB91...acB8f3871
0.09243644 ETH
170132412023-04-09 21:00:23463 days ago1681074023
0xa59aEB91...acB8f3871
0.15299596 ETH
170132412023-04-09 21:00:23463 days ago1681074023
0xa59aEB91...acB8f3871
0.15299596 ETH
170131702023-04-09 20:46:11463 days ago1681073171
0xa59aEB91...acB8f3871
0.10277627 ETH
170131702023-04-09 20:46:11463 days ago1681073171
0xa59aEB91...acB8f3871
0.10277627 ETH
170129752023-04-09 20:05:11463 days ago1681070711
0xa59aEB91...acB8f3871
0.17124877 ETH
170129752023-04-09 20:05:11463 days ago1681070711
0xa59aEB91...acB8f3871
0.17124877 ETH
170129752023-04-09 20:05:11463 days ago1681070711
0xa59aEB91...acB8f3871
0.17124877 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SHIBELLA

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-08
*/

/*

Shibella was created as an honor to my lovely dog and the values she has always represented to me: mutual aid, protection, and safety. From this, we intend to grow a community that thinks alike and share our goals.

Website: https://shibella.org/
dApp: https://dapp.shibella.org/
Medium: https://medium.com/@hattori_takayuki/shibella-the-story-so-far-75a8d210374
Telegram: https://t.me/ShibellaERC
Twitter: https://twitter.com/ShibellaERC


*/
// SPDX-License-Identifier: MIT                                                                               
                                                    
pragma solidity = 0.8.17;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IUniswapV2Pair {
    function factory() external view returns (address);
}

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

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}


contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;
    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 recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        _beforeTokenTransfer(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, 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 = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        _beforeTokenTransfer(account, address(0), amount);
        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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



library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }
    function div(int256 a, int256 b) internal pure returns (int256) {
        require(b != -1 || a != MIN_INT256);
        return a / b;
    }
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}

library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}


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

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract SHIBELLA is ERC20, Ownable {

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public marketingWallet;
    address public devWallet;
    
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    
     // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    mapping (address => bool) public isBlacklisted;
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    
    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    
    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor() ERC20("Shibella", "shiBELLA") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        
        uint256 _buyMarketingFee = 40;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 40;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;
        
        uint256 totalSupply = 100000000 * 1e18; 
        
        maxTransactionAmount = totalSupply * 20 / 1000; // 2% maxTransactionAmountTxn
        maxWallet = totalSupply * 20 / 1000; // 2% maxWallet
        swapTokensAtAmount = totalSupply * 5 / 1000; // 0.5% swap wallet

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        
        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        
        marketingWallet = address(owner());
        devWallet = address(owner()); 

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {

  	}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }
    
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        return true;
    }
    
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
    
     // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 5 / 10, "Swap amount cannot be higher than 50% total supply.");
  	    swapTokensAtAmount = newAmount;
  	    return true;
  	}
    
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10**18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * (10**18);
    }
    
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
    
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
    
    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 40, "Must keep fees at 40% or less");
    }
    
    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 40, "Must keep fees at 40% or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _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 updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }
    
    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }
    

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

    function manage_blacklist(address _address, bool status) external onlyOwner {
        require(_address != address(0),"Address should not be 0");
        isBlacklisted[_address] = status;
    }

    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");
        require(!isBlacklisted[from] && !isBlacklisted[to],"Blacklisted");
        
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
                 
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }
        
		uint256 contractTokenBalance = balanceOf(address(this));
        
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees/100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees/100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
            }
            
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
        	
        	amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
        
    }
    
    
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadAddress,
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;

        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance - liquidityTokens;
        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(amountToSwapForETH); 
        uint256 ethBalance = address(this).balance - initialETHBalance;
        uint256 ethForMarketing = ethBalance * tokensForMarketing/totalTokensToSwap;
        uint256 ethForDev = ethBalance * tokensForDev/totalTokensToSwap;
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
        (success,) = address(devWallet).call{value: ethForDev}("");
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
        (success,) = address(marketingWallet).call{value: address(this).balance}("");
    }
    

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"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":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600881526020017f53686962656c6c610000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f73686942454c4c410000000000000000000000000000000000000000000000008152508160039081620000fb919062000dea565b5080600490816200010d919062000dea565b5050506000620001226200063d60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ed8160016200064560201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000293919062000f3b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000321919062000f3b565b6040518363ffffffff1660e01b81526004016200034092919062000f7e565b6020604051808303816000875af115801562000360573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000386919062000f3b565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003ce60a05160016200064560201b60201c565b620003e360a05160016200074260201b60201c565b60006028905060008060006028905060008060006a52b7d2dcc80cd2e400000090506103e860148262000417919062000fda565b62000423919062001054565b6008819055506103e86014826200043b919062000fda565b62000447919062001054565b600a819055506103e86005826200045f919062000fda565b6200046b919062001054565b6009819055508660108190555085601181905550846012819055506012546011546010546200049b91906200108c565b620004a791906200108c565b600f81905550836014819055508260158190555081601681905550601654601554601454620004d791906200108c565b620004e391906200108c565b601381905550620004f9620007e360201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000549620007e360201b60201c565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005ab6200059d620007e360201b60201c565b60016200080d60201b60201c565b620005be3060016200080d60201b60201c565b620005d361dead60016200080d60201b60201c565b620005f5620005e7620007e360201b60201c565b60016200064560201b60201c565b620006083060016200064560201b60201c565b6200061d61dead60016200064560201b60201c565b6200062f33826200095a60201b60201c565b505050505050505062001296565b600033905090565b620006556200063d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620006e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006de9062001128565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200081d6200063d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008a69062001128565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200094e919062001167565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009c390620011d4565b60405180910390fd5b620009e06000838362000b0860201b60201c565b620009fc8160025462000b0d60201b620027b21790919060201c565b60028190555062000a5a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b0d60201b620027b21790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000afc919062001207565b60405180910390a35050565b505050565b600080828462000b1e91906200108c565b90508381101562000b66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b5d9062001274565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bf257607f821691505b60208210810362000c085762000c0762000baa565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c33565b62000c7e868362000c33565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000ccb62000cc562000cbf8462000c96565b62000ca0565b62000c96565b9050919050565b6000819050919050565b62000ce78362000caa565b62000cff62000cf68262000cd2565b84845462000c40565b825550505050565b600090565b62000d1662000d07565b62000d2381848462000cdc565b505050565b5b8181101562000d4b5762000d3f60008262000d0c565b60018101905062000d29565b5050565b601f82111562000d9a5762000d648162000c0e565b62000d6f8462000c23565b8101602085101562000d7f578190505b62000d9762000d8e8562000c23565b83018262000d28565b50505b505050565b600082821c905092915050565b600062000dbf6000198460080262000d9f565b1980831691505092915050565b600062000dda838362000dac565b9150826002028217905092915050565b62000df58262000b70565b67ffffffffffffffff81111562000e115762000e1062000b7b565b5b62000e1d825462000bd9565b62000e2a82828562000d4f565b600060209050601f83116001811462000e62576000841562000e4d578287015190505b62000e59858262000dcc565b86555062000ec9565b601f19841662000e728662000c0e565b60005b8281101562000e9c5784890151825560018201915060208501945060208101905062000e75565b8683101562000ebc578489015162000eb8601f89168262000dac565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f038262000ed6565b9050919050565b62000f158162000ef6565b811462000f2157600080fd5b50565b60008151905062000f358162000f0a565b92915050565b60006020828403121562000f545762000f5362000ed1565b5b600062000f648482850162000f24565b91505092915050565b62000f788162000ef6565b82525050565b600060408201905062000f95600083018562000f6d565b62000fa4602083018462000f6d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000fe78262000c96565b915062000ff48362000c96565b9250828202620010048162000c96565b915082820484148315176200101e576200101d62000fab565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010618262000c96565b91506200106e8362000c96565b92508262001081576200108062001025565b5b828204905092915050565b6000620010998262000c96565b9150620010a68362000c96565b9250828201905080821115620010c157620010c062000fab565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001110602083620010c7565b91506200111d82620010d8565b602082019050919050565b60006020820190508181036000830152620011438162001101565b9050919050565b60008115159050919050565b62001161816200114a565b82525050565b60006020820190506200117e600083018462001156565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620011bc601f83620010c7565b9150620011c98262001184565b602082019050919050565b60006020820190508181036000830152620011ef81620011ad565b9050919050565b620012018162000c96565b82525050565b60006020820190506200121e6000830184620011f6565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200125c601b83620010c7565b9150620012698262001224565b602082019050919050565b600060208201905081810360008301526200128f816200124d565b9050919050565b60805160a051615550620012f4600039600081816112a301528181611c3f0152612e79015260008181610e4d01528181612e2101528181613e3801528181613f1901528181613f4001528181613fdc015261400301526155506000f3fe60806040526004361061036f5760003560e01c80638ea5220f116101c6578063c17b5b8c116100f7578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610cbf578063f637434214610ce8578063f8b45b0514610d13578063fe575a8714610d3e57610376565b8063e2f4560514610c3e578063e884f26014610c69578063f11a24d314610c9457610376565b8063c8c8ebe4116100d1578063c8c8ebe414610b6e578063d257b34f14610b99578063d85ba06314610bd6578063dd62ed3e14610c0157610376565b8063c17b5b8c14610af1578063c18bc19514610b1a578063c876d0b914610b4357610376565b8063a0d82dc511610164578063aacebbe31161013e578063aacebbe314610a37578063b62496f514610a60578063bbc0c74214610a9d578063c024666814610ac857610376565b8063a0d82dc514610992578063a457c2d7146109bd578063a9059cbb146109fa57610376565b806395d89b41116101a057806395d89b41146108e85780639a7a23d6146109135780639c3b4fdc1461093c5780639fccce321461096757610376565b80638ea5220f146108695780639213691314610894578063924de9b7146108bf57610376565b80634a62bb65116102a05780637571336a1161023e5780637bce5a04116102185780637bce5a04146107d35780638095d564146107fe5780638a8c523c146108275780638da5cb5b1461083e57610376565b80637571336a1461075657806375f0a8741461077f5780637804389f146107aa57610376565b80636ddd17131161027a5780636ddd1713146106ac57806370a08231146106d7578063715018a614610714578063751039fc1461072b57610376565b80634a62bb65146106195780634fbee193146106445780636a486a8e1461068157610376565b80631f3fed8f1161030d57806327c8f835116102e757806327c8f8351461055b578063313ce5671461058657806339509351146105b157806349bd5a5e146105ee57610376565b80631f3fed8f146104ca578063203e727e146104f557806323b872dd1461051e57610376565b80631694505e116103495780631694505e1461042057806318160ddd1461044b5780631816467f146104765780631a8145bb1461049f57610376565b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d7b565b60405161039d9190614142565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c891906141fd565b610e0d565b6040516103da9190614258565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190614273565b610e2b565b6040516104179190614258565b60405180910390f35b34801561042c57600080fd5b50610435610e4b565b60405161044291906142ff565b60405180910390f35b34801561045757600080fd5b50610460610e6f565b60405161046d9190614329565b60405180910390f35b34801561048257600080fd5b5061049d60048036038101906104989190614273565b610e79565b005b3480156104ab57600080fd5b506104b4610fd0565b6040516104c19190614329565b60405180910390f35b3480156104d657600080fd5b506104df610fd6565b6040516104ec9190614329565b60405180910390f35b34801561050157600080fd5b5061051c60048036038101906105179190614344565b610fdc565b005b34801561052a57600080fd5b5061054560048036038101906105409190614371565b611106565b6040516105529190614258565b60405180910390f35b34801561056757600080fd5b506105706111df565b60405161057d91906143d3565b60405180910390f35b34801561059257600080fd5b5061059b6111e5565b6040516105a8919061440a565b60405180910390f35b3480156105bd57600080fd5b506105d860048036038101906105d391906141fd565b6111ee565b6040516105e59190614258565b60405180910390f35b3480156105fa57600080fd5b506106036112a1565b60405161061091906143d3565b60405180910390f35b34801561062557600080fd5b5061062e6112c5565b60405161063b9190614258565b60405180910390f35b34801561065057600080fd5b5061066b60048036038101906106669190614273565b6112d8565b6040516106789190614258565b60405180910390f35b34801561068d57600080fd5b5061069661132e565b6040516106a39190614329565b60405180910390f35b3480156106b857600080fd5b506106c1611334565b6040516106ce9190614258565b60405180910390f35b3480156106e357600080fd5b506106fe60048036038101906106f99190614273565b611347565b60405161070b9190614329565b60405180910390f35b34801561072057600080fd5b5061072961138f565b005b34801561073757600080fd5b506107406114e7565b60405161074d9190614258565b60405180910390f35b34801561076257600080fd5b5061077d60048036038101906107789190614451565b6115a2565b005b34801561078b57600080fd5b50610794611694565b6040516107a191906143d3565b60405180910390f35b3480156107b657600080fd5b506107d160048036038101906107cc9190614451565b6116ba565b005b3480156107df57600080fd5b506107e861181b565b6040516107f59190614329565b60405180910390f35b34801561080a57600080fd5b5061082560048036038101906108209190614491565b611821565b005b34801561083357600080fd5b5061083c61193b565b005b34801561084a57600080fd5b50610853611a0a565b60405161086091906143d3565b60405180910390f35b34801561087557600080fd5b5061087e611a34565b60405161088b91906143d3565b60405180910390f35b3480156108a057600080fd5b506108a9611a5a565b6040516108b69190614329565b60405180910390f35b3480156108cb57600080fd5b506108e660048036038101906108e191906144e4565b611a60565b005b3480156108f457600080fd5b506108fd611b14565b60405161090a9190614142565b60405180910390f35b34801561091f57600080fd5b5061093a60048036038101906109359190614451565b611ba6565b005b34801561094857600080fd5b50610951611cd9565b60405161095e9190614329565b60405180910390f35b34801561097357600080fd5b5061097c611cdf565b6040516109899190614329565b60405180910390f35b34801561099e57600080fd5b506109a7611ce5565b6040516109b49190614329565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df91906141fd565b611ceb565b6040516109f19190614258565b60405180910390f35b348015610a0657600080fd5b50610a216004803603810190610a1c91906141fd565b611db8565b604051610a2e9190614258565b60405180910390f35b348015610a4357600080fd5b50610a5e6004803603810190610a599190614273565b611dd6565b005b348015610a6c57600080fd5b50610a876004803603810190610a829190614273565b611f2d565b604051610a949190614258565b60405180910390f35b348015610aa957600080fd5b50610ab2611f4d565b604051610abf9190614258565b60405180910390f35b348015610ad457600080fd5b50610aef6004803603810190610aea9190614451565b611f60565b005b348015610afd57600080fd5b50610b186004803603810190610b139190614491565b6120a0565b005b348015610b2657600080fd5b50610b416004803603810190610b3c9190614344565b6121ba565b005b348015610b4f57600080fd5b50610b586122e4565b604051610b659190614258565b60405180910390f35b348015610b7a57600080fd5b50610b836122f7565b604051610b909190614329565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb9190614344565b6122fd565b604051610bcd9190614258565b60405180910390f35b348015610be257600080fd5b50610beb61246c565b604051610bf89190614329565b60405180910390f35b348015610c0d57600080fd5b50610c286004803603810190610c239190614511565b612472565b604051610c359190614329565b60405180910390f35b348015610c4a57600080fd5b50610c536124f9565b604051610c609190614329565b60405180910390f35b348015610c7557600080fd5b50610c7e6124ff565b604051610c8b9190614258565b60405180910390f35b348015610ca057600080fd5b50610ca96125ba565b604051610cb69190614329565b60405180910390f35b348015610ccb57600080fd5b50610ce66004803603810190610ce19190614273565b6125c0565b005b348015610cf457600080fd5b50610cfd612786565b604051610d0a9190614329565b60405180910390f35b348015610d1f57600080fd5b50610d2861278c565b604051610d359190614329565b60405180910390f35b348015610d4a57600080fd5b50610d656004803603810190610d609190614273565b612792565b604051610d729190614258565b60405180910390f35b606060038054610d8a90614580565b80601f0160208091040260200160405190810160405280929190818152602001828054610db690614580565b8015610e035780601f10610dd857610100808354040283529160200191610e03565b820191906000526020600020905b815481529060010190602001808311610de657829003601f168201915b5050505050905090565b6000610e21610e1a612810565b8484612818565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610e81612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f07906145fd565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b60175481565b610fe4612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106a906145fd565b60405180910390fd5b670de0b6b3a76400006103e86001611089610e6f565b611093919061464c565b61109d91906146bd565b6110a791906146bd565b8110156110e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e090614760565b60405180910390fd5b670de0b6b3a7640000816110fd919061464c565b60088190555050565b60006111138484846129e1565b6111d48461111f612810565b6111cf856040518060600160405280602881526020016154ce60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611185612810565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461373f9092919063ffffffff16565b612818565b600190509392505050565b61dead81565b60006012905090565b60006112976111fb612810565b84611292856001600061120c612810565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b290919063ffffffff16565b612818565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611397612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141d906145fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006114f1612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611580576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611577906145fd565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b6115aa612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611639576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611630906145fd565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116c2612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611751576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611748906145fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b7906147cc565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b611829612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118af906145fd565b60405180910390fd5b8260108190555081601181905550806012819055506012546011546010546118e091906147ec565b6118ea91906147ec565b600f819055506028600f541115611936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192d9061486c565b60405180910390fd5b505050565b611943612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c9906145fd565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b611a68612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aee906145fd565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b606060048054611b2390614580565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4f90614580565b8015611b9c5780601f10611b7157610100808354040283529160200191611b9c565b820191906000526020600020905b815481529060010190602001808311611b7f57829003601f168201915b5050505050905090565b611bae612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c34906145fd565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc2906148fe565b60405180910390fd5b611cd582826137a3565b5050565b60125481565b60195481565b60165481565b6000611dae611cf8612810565b84611da9856040518060600160405280602581526020016154f66025913960016000611d22612810565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461373f9092919063ffffffff16565b612818565b6001905092915050565b6000611dcc611dc5612810565b84846129e1565b6001905092915050565b611dde612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e64906145fd565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611f68612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ff7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fee906145fd565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516120949190614258565b60405180910390a25050565b6120a8612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212e906145fd565b60405180910390fd5b82601481905550816015819055508060168190555060165460155460145461215f91906147ec565b61216991906147ec565b601381905550602860135411156121b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ac9061486c565b60405180910390fd5b505050565b6121c2612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612251576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612248906145fd565b60405180910390fd5b670de0b6b3a76400006103e86005612267610e6f565b612271919061464c565b61227b91906146bd565b61228591906146bd565b8110156122c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122be90614990565b60405180910390fd5b670de0b6b3a7640000816122db919061464c565b600a8190555050565b600e60009054906101000a900460ff1681565b60085481565b6000612307612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238d906145fd565b60405180910390fd5b620186a060016123a4610e6f565b6123ae919061464c565b6123b891906146bd565b8210156123fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f190614a22565b60405180910390fd5b600a6005612406610e6f565b612410919061464c565b61241a91906146bd565b82111561245c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245390614ab4565b60405180910390fd5b8160098190555060019050919050565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000612509612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258f906145fd565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b60115481565b6125c8612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264e906145fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bd90614b46565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b600a5481565b600d6020528060005260406000206000915054906101000a900460ff1681565b60008082846127c191906147ec565b905083811015612806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fd90614bb2565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287e90614c44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ed90614cd6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129d49190614329565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4790614d68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab690614dfa565b60405180910390fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b635750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9990614e66565b60405180910390fd5b60008103612bbb57612bb683836000613844565b61373a565b600b60009054906101000a900460ff161561327e57612bd8611a0a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612c465750612c16611a0a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c7f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cb9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cd25750600560149054906101000a900460ff16155b1561327d57600b60019054906101000a900460ff16612dcc57601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d8c5750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc290614ed2565b60405180910390fd5b5b600e60009054906101000a900460ff1615612f9457612de9611a0a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612e7057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ec857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612f935743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4590614f8a565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130375750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130de57600854811115613081576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130789061501c565b60405180910390fd5b600a5461308d83611347565b8261309891906147ec565b11156130d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d090615088565b60405180910390fd5b61327c565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131815750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131d0576008548111156131cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c29061511a565b60405180910390fd5b61327b565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661327a57600a5461322d83611347565b8261323891906147ec565b1115613279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327090615088565b60405180910390fd5b5b5b5b5b5b600061328930611347565b9050600060095482101590508080156132ae5750600b60029054906101000a900460ff165b80156132c75750600560149054906101000a900460ff16155b801561331d5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133735750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133c95750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561340d576001600560146101000a81548160ff0219169083151502179055506133f1613ad7565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134c35750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134cd57600090505b6000811561372a57601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561353057506000601354115b156135ef57606460135486613545919061464c565b61354f91906146bd565b905060135460155482613562919061464c565b61356c91906146bd565b6018600082825461357d91906147ec565b9250508190555060135460165482613595919061464c565b61359f91906146bd565b601960008282546135b091906147ec565b92505081905550601354601454826135c8919061464c565b6135d291906146bd565b601760008282546135e391906147ec565b92505081905550613706565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561364a57506000600f54115b15613705576064600f548661365f919061464c565b61366991906146bd565b9050600f546011548261367c919061464c565b61368691906146bd565b6018600082825461369791906147ec565b92505081905550600f54601254826136af919061464c565b6136b991906146bd565b601960008282546136ca91906147ec565b92505081905550600f54601054826136e2919061464c565b6136ec91906146bd565b601760008282546136fd91906147ec565b925050819055505b5b600081111561371b5761371a873083613844565b5b8085613727919061513a565b94505b613735878787613844565b505050505b505050565b6000838311158290613787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377e9190614142565b60405180910390fd5b5060008385613796919061513a565b9050809150509392505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036138b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138aa90614d68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161391990614dfa565b60405180910390fd5b61392d838383613d94565b613998816040518060600160405280602681526020016154a8602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461373f9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a2b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613aca9190614329565b60405180910390a3505050565b6000613ae230611347565b90506000601954601754601854613af991906147ec565b613b0391906147ec565b9050600080831480613b155750600082145b15613b2257505050613d92565b6014600954613b31919061464c565b831115613b4a576014600954613b47919061464c565b92505b600060028360185486613b5d919061464c565b613b6791906146bd565b613b7191906146bd565b905060008185613b81919061513a565b90506000479050613b9182613d99565b60008147613b9f919061513a565b905060008660175483613bb2919061464c565b613bbc91906146bd565b905060008760195484613bcf919061464c565b613bd991906146bd565b90506000818385613bea919061513a565b613bf4919061513a565b9050600060188190555060006017819055506000601981905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613c549061519f565b60006040518083038185875af1925050503d8060008114613c91576040519150601f19603f3d011682016040523d82523d6000602084013e613c96565b606091505b505080985050600087118015613cac5750600081115b15613cf957613cbb8782613fd6565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601854604051613cf0939291906151b4565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613d3f9061519f565b60006040518083038185875af1925050503d8060008114613d7c576040519150601f19603f3d011682016040523d82523d6000602084013e613d81565b606091505b505080985050505050505050505050505b565b505050565b6000600267ffffffffffffffff811115613db657613db56151eb565b5b604051908082528060200260200182016040528015613de45781602001602082028036833780820191505090505b5090503081600081518110613dfc57613dfb61521a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ec5919061525e565b81600181518110613ed957613ed861521a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f3e307f000000000000000000000000000000000000000000000000000000000000000084612818565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fa0959493929190615384565b600060405180830381600087803b158015613fba57600080fd5b505af1158015613fce573d6000803e3d6000fd5b505050505050565b614001307f000000000000000000000000000000000000000000000000000000000000000084612818565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401614068969594939291906153de565b60606040518083038185885af1158015614086573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140ab9190615454565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140ec5780820151818401526020810190506140d1565b60008484015250505050565b6000601f19601f8301169050919050565b6000614114826140b2565b61411e81856140bd565b935061412e8185602086016140ce565b614137816140f8565b840191505092915050565b6000602082019050818103600083015261415c8184614109565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061419482614169565b9050919050565b6141a481614189565b81146141af57600080fd5b50565b6000813590506141c18161419b565b92915050565b6000819050919050565b6141da816141c7565b81146141e557600080fd5b50565b6000813590506141f7816141d1565b92915050565b6000806040838503121561421457614213614164565b5b6000614222858286016141b2565b9250506020614233858286016141e8565b9150509250929050565b60008115159050919050565b6142528161423d565b82525050565b600060208201905061426d6000830184614249565b92915050565b60006020828403121561428957614288614164565b5b6000614297848285016141b2565b91505092915050565b6000819050919050565b60006142c56142c06142bb84614169565b6142a0565b614169565b9050919050565b60006142d7826142aa565b9050919050565b60006142e9826142cc565b9050919050565b6142f9816142de565b82525050565b600060208201905061431460008301846142f0565b92915050565b614323816141c7565b82525050565b600060208201905061433e600083018461431a565b92915050565b60006020828403121561435a57614359614164565b5b6000614368848285016141e8565b91505092915050565b60008060006060848603121561438a57614389614164565b5b6000614398868287016141b2565b93505060206143a9868287016141b2565b92505060406143ba868287016141e8565b9150509250925092565b6143cd81614189565b82525050565b60006020820190506143e860008301846143c4565b92915050565b600060ff82169050919050565b614404816143ee565b82525050565b600060208201905061441f60008301846143fb565b92915050565b61442e8161423d565b811461443957600080fd5b50565b60008135905061444b81614425565b92915050565b6000806040838503121561446857614467614164565b5b6000614476858286016141b2565b92505060206144878582860161443c565b9150509250929050565b6000806000606084860312156144aa576144a9614164565b5b60006144b8868287016141e8565b93505060206144c9868287016141e8565b92505060406144da868287016141e8565b9150509250925092565b6000602082840312156144fa576144f9614164565b5b60006145088482850161443c565b91505092915050565b6000806040838503121561452857614527614164565b5b6000614536858286016141b2565b9250506020614547858286016141b2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061459857607f821691505b6020821081036145ab576145aa614551565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145e76020836140bd565b91506145f2826145b1565b602082019050919050565b60006020820190508181036000830152614616816145da565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614657826141c7565b9150614662836141c7565b9250828202614670816141c7565b915082820484148315176146875761468661461d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006146c8826141c7565b91506146d3836141c7565b9250826146e3576146e261468e565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b600061474a602f836140bd565b9150614755826146ee565b604082019050919050565b600060208201905081810360008301526147798161473d565b9050919050565b7f416464726573732073686f756c64206e6f742062652030000000000000000000600082015250565b60006147b66017836140bd565b91506147c182614780565b602082019050919050565b600060208201905081810360008301526147e5816147a9565b9050919050565b60006147f7826141c7565b9150614802836141c7565b925082820190508082111561481a5761481961461d565b5b92915050565b7f4d757374206b656570206665657320617420343025206f72206c657373000000600082015250565b6000614856601d836140bd565b915061486182614820565b602082019050919050565b6000602082019050818103600083015261488581614849565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006148e86039836140bd565b91506148f38261488c565b604082019050919050565b60006020820190508181036000830152614917816148db565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061497a6024836140bd565b91506149858261491e565b604082019050919050565b600060208201905081810360008301526149a98161496d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614a0c6035836140bd565b9150614a17826149b0565b604082019050919050565b60006020820190508181036000830152614a3b816149ff565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e2035302520746f74616c20737570706c792e00000000000000000000000000602082015250565b6000614a9e6033836140bd565b9150614aa982614a42565b604082019050919050565b60006020820190508181036000830152614acd81614a91565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614b306026836140bd565b9150614b3b82614ad4565b604082019050919050565b60006020820190508181036000830152614b5f81614b23565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614b9c601b836140bd565b9150614ba782614b66565b602082019050919050565b60006020820190508181036000830152614bcb81614b8f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c2e6024836140bd565b9150614c3982614bd2565b604082019050919050565b60006020820190508181036000830152614c5d81614c21565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614cc06022836140bd565b9150614ccb82614c64565b604082019050919050565b60006020820190508181036000830152614cef81614cb3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614d526025836140bd565b9150614d5d82614cf6565b604082019050919050565b60006020820190508181036000830152614d8181614d45565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614de46023836140bd565b9150614def82614d88565b604082019050919050565b60006020820190508181036000830152614e1381614dd7565b9050919050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000614e50600b836140bd565b9150614e5b82614e1a565b602082019050919050565b60006020820190508181036000830152614e7f81614e43565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614ebc6016836140bd565b9150614ec782614e86565b602082019050919050565b60006020820190508181036000830152614eeb81614eaf565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614f746049836140bd565b9150614f7f82614ef2565b606082019050919050565b60006020820190508181036000830152614fa381614f67565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006150066035836140bd565b915061501182614faa565b604082019050919050565b6000602082019050818103600083015261503581614ff9565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006150726013836140bd565b915061507d8261503c565b602082019050919050565b600060208201905081810360008301526150a181615065565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006151046036836140bd565b915061510f826150a8565b604082019050919050565b60006020820190508181036000830152615133816150f7565b9050919050565b6000615145826141c7565b9150615150836141c7565b92508282039050818111156151685761516761461d565b5b92915050565b600081905092915050565b50565b600061518960008361516e565b915061519482615179565b600082019050919050565b60006151aa8261517c565b9150819050919050565b60006060820190506151c9600083018661431a565b6151d6602083018561431a565b6151e3604083018461431a565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506152588161419b565b92915050565b60006020828403121561527457615273614164565b5b600061528284828501615249565b91505092915050565b6000819050919050565b60006152b06152ab6152a68461528b565b6142a0565b6141c7565b9050919050565b6152c081615295565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6152fb81614189565b82525050565b600061530d83836152f2565b60208301905092915050565b6000602082019050919050565b6000615331826152c6565b61533b81856152d1565b9350615346836152e2565b8060005b8381101561537757815161535e8882615301565b975061536983615319565b92505060018101905061534a565b5085935050505092915050565b600060a082019050615399600083018861431a565b6153a660208301876152b7565b81810360408301526153b88186615326565b90506153c760608301856143c4565b6153d4608083018461431a565b9695505050505050565b600060c0820190506153f360008301896143c4565b615400602083018861431a565b61540d60408301876152b7565b61541a60608301866152b7565b61542760808301856143c4565b61543460a083018461431a565b979650505050505050565b60008151905061544e816141d1565b92915050565b60008060006060848603121561546d5761546c614164565b5b600061547b8682870161543f565b935050602061548c8682870161543f565b925050604061549d8682870161543f565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e76912481c2963936563ca697e2fa6b4b4da593345cbcb38da053e6ef6d44a9e64736f6c63430008110033

Deployed Bytecode

0x60806040526004361061036f5760003560e01c80638ea5220f116101c6578063c17b5b8c116100f7578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610cbf578063f637434214610ce8578063f8b45b0514610d13578063fe575a8714610d3e57610376565b8063e2f4560514610c3e578063e884f26014610c69578063f11a24d314610c9457610376565b8063c8c8ebe4116100d1578063c8c8ebe414610b6e578063d257b34f14610b99578063d85ba06314610bd6578063dd62ed3e14610c0157610376565b8063c17b5b8c14610af1578063c18bc19514610b1a578063c876d0b914610b4357610376565b8063a0d82dc511610164578063aacebbe31161013e578063aacebbe314610a37578063b62496f514610a60578063bbc0c74214610a9d578063c024666814610ac857610376565b8063a0d82dc514610992578063a457c2d7146109bd578063a9059cbb146109fa57610376565b806395d89b41116101a057806395d89b41146108e85780639a7a23d6146109135780639c3b4fdc1461093c5780639fccce321461096757610376565b80638ea5220f146108695780639213691314610894578063924de9b7146108bf57610376565b80634a62bb65116102a05780637571336a1161023e5780637bce5a04116102185780637bce5a04146107d35780638095d564146107fe5780638a8c523c146108275780638da5cb5b1461083e57610376565b80637571336a1461075657806375f0a8741461077f5780637804389f146107aa57610376565b80636ddd17131161027a5780636ddd1713146106ac57806370a08231146106d7578063715018a614610714578063751039fc1461072b57610376565b80634a62bb65146106195780634fbee193146106445780636a486a8e1461068157610376565b80631f3fed8f1161030d57806327c8f835116102e757806327c8f8351461055b578063313ce5671461058657806339509351146105b157806349bd5a5e146105ee57610376565b80631f3fed8f146104ca578063203e727e146104f557806323b872dd1461051e57610376565b80631694505e116103495780631694505e1461042057806318160ddd1461044b5780631816467f146104765780631a8145bb1461049f57610376565b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d7b565b60405161039d9190614142565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c891906141fd565b610e0d565b6040516103da9190614258565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190614273565b610e2b565b6040516104179190614258565b60405180910390f35b34801561042c57600080fd5b50610435610e4b565b60405161044291906142ff565b60405180910390f35b34801561045757600080fd5b50610460610e6f565b60405161046d9190614329565b60405180910390f35b34801561048257600080fd5b5061049d60048036038101906104989190614273565b610e79565b005b3480156104ab57600080fd5b506104b4610fd0565b6040516104c19190614329565b60405180910390f35b3480156104d657600080fd5b506104df610fd6565b6040516104ec9190614329565b60405180910390f35b34801561050157600080fd5b5061051c60048036038101906105179190614344565b610fdc565b005b34801561052a57600080fd5b5061054560048036038101906105409190614371565b611106565b6040516105529190614258565b60405180910390f35b34801561056757600080fd5b506105706111df565b60405161057d91906143d3565b60405180910390f35b34801561059257600080fd5b5061059b6111e5565b6040516105a8919061440a565b60405180910390f35b3480156105bd57600080fd5b506105d860048036038101906105d391906141fd565b6111ee565b6040516105e59190614258565b60405180910390f35b3480156105fa57600080fd5b506106036112a1565b60405161061091906143d3565b60405180910390f35b34801561062557600080fd5b5061062e6112c5565b60405161063b9190614258565b60405180910390f35b34801561065057600080fd5b5061066b60048036038101906106669190614273565b6112d8565b6040516106789190614258565b60405180910390f35b34801561068d57600080fd5b5061069661132e565b6040516106a39190614329565b60405180910390f35b3480156106b857600080fd5b506106c1611334565b6040516106ce9190614258565b60405180910390f35b3480156106e357600080fd5b506106fe60048036038101906106f99190614273565b611347565b60405161070b9190614329565b60405180910390f35b34801561072057600080fd5b5061072961138f565b005b34801561073757600080fd5b506107406114e7565b60405161074d9190614258565b60405180910390f35b34801561076257600080fd5b5061077d60048036038101906107789190614451565b6115a2565b005b34801561078b57600080fd5b50610794611694565b6040516107a191906143d3565b60405180910390f35b3480156107b657600080fd5b506107d160048036038101906107cc9190614451565b6116ba565b005b3480156107df57600080fd5b506107e861181b565b6040516107f59190614329565b60405180910390f35b34801561080a57600080fd5b5061082560048036038101906108209190614491565b611821565b005b34801561083357600080fd5b5061083c61193b565b005b34801561084a57600080fd5b50610853611a0a565b60405161086091906143d3565b60405180910390f35b34801561087557600080fd5b5061087e611a34565b60405161088b91906143d3565b60405180910390f35b3480156108a057600080fd5b506108a9611a5a565b6040516108b69190614329565b60405180910390f35b3480156108cb57600080fd5b506108e660048036038101906108e191906144e4565b611a60565b005b3480156108f457600080fd5b506108fd611b14565b60405161090a9190614142565b60405180910390f35b34801561091f57600080fd5b5061093a60048036038101906109359190614451565b611ba6565b005b34801561094857600080fd5b50610951611cd9565b60405161095e9190614329565b60405180910390f35b34801561097357600080fd5b5061097c611cdf565b6040516109899190614329565b60405180910390f35b34801561099e57600080fd5b506109a7611ce5565b6040516109b49190614329565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df91906141fd565b611ceb565b6040516109f19190614258565b60405180910390f35b348015610a0657600080fd5b50610a216004803603810190610a1c91906141fd565b611db8565b604051610a2e9190614258565b60405180910390f35b348015610a4357600080fd5b50610a5e6004803603810190610a599190614273565b611dd6565b005b348015610a6c57600080fd5b50610a876004803603810190610a829190614273565b611f2d565b604051610a949190614258565b60405180910390f35b348015610aa957600080fd5b50610ab2611f4d565b604051610abf9190614258565b60405180910390f35b348015610ad457600080fd5b50610aef6004803603810190610aea9190614451565b611f60565b005b348015610afd57600080fd5b50610b186004803603810190610b139190614491565b6120a0565b005b348015610b2657600080fd5b50610b416004803603810190610b3c9190614344565b6121ba565b005b348015610b4f57600080fd5b50610b586122e4565b604051610b659190614258565b60405180910390f35b348015610b7a57600080fd5b50610b836122f7565b604051610b909190614329565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb9190614344565b6122fd565b604051610bcd9190614258565b60405180910390f35b348015610be257600080fd5b50610beb61246c565b604051610bf89190614329565b60405180910390f35b348015610c0d57600080fd5b50610c286004803603810190610c239190614511565b612472565b604051610c359190614329565b60405180910390f35b348015610c4a57600080fd5b50610c536124f9565b604051610c609190614329565b60405180910390f35b348015610c7557600080fd5b50610c7e6124ff565b604051610c8b9190614258565b60405180910390f35b348015610ca057600080fd5b50610ca96125ba565b604051610cb69190614329565b60405180910390f35b348015610ccb57600080fd5b50610ce66004803603810190610ce19190614273565b6125c0565b005b348015610cf457600080fd5b50610cfd612786565b604051610d0a9190614329565b60405180910390f35b348015610d1f57600080fd5b50610d2861278c565b604051610d359190614329565b60405180910390f35b348015610d4a57600080fd5b50610d656004803603810190610d609190614273565b612792565b604051610d729190614258565b60405180910390f35b606060038054610d8a90614580565b80601f0160208091040260200160405190810160405280929190818152602001828054610db690614580565b8015610e035780601f10610dd857610100808354040283529160200191610e03565b820191906000526020600020905b815481529060010190602001808311610de657829003601f168201915b5050505050905090565b6000610e21610e1a612810565b8484612818565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610e81612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f07906145fd565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b60175481565b610fe4612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106a906145fd565b60405180910390fd5b670de0b6b3a76400006103e86001611089610e6f565b611093919061464c565b61109d91906146bd565b6110a791906146bd565b8110156110e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e090614760565b60405180910390fd5b670de0b6b3a7640000816110fd919061464c565b60088190555050565b60006111138484846129e1565b6111d48461111f612810565b6111cf856040518060600160405280602881526020016154ce60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611185612810565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461373f9092919063ffffffff16565b612818565b600190509392505050565b61dead81565b60006012905090565b60006112976111fb612810565b84611292856001600061120c612810565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b290919063ffffffff16565b612818565b6001905092915050565b7f000000000000000000000000bcf3e7609ba3a056546bcf787bb87e16dea9409c81565b600b60009054906101000a900460ff1681565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611397612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141d906145fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006114f1612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611580576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611577906145fd565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b6115aa612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611639576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611630906145fd565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116c2612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611751576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611748906145fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b7906147cc565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b611829612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118af906145fd565b60405180910390fd5b8260108190555081601181905550806012819055506012546011546010546118e091906147ec565b6118ea91906147ec565b600f819055506028600f541115611936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192d9061486c565b60405180910390fd5b505050565b611943612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c9906145fd565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b611a68612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aee906145fd565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b606060048054611b2390614580565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4f90614580565b8015611b9c5780601f10611b7157610100808354040283529160200191611b9c565b820191906000526020600020905b815481529060010190602001808311611b7f57829003601f168201915b5050505050905090565b611bae612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c34906145fd565b60405180910390fd5b7f000000000000000000000000bcf3e7609ba3a056546bcf787bb87e16dea9409c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc2906148fe565b60405180910390fd5b611cd582826137a3565b5050565b60125481565b60195481565b60165481565b6000611dae611cf8612810565b84611da9856040518060600160405280602581526020016154f66025913960016000611d22612810565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461373f9092919063ffffffff16565b612818565b6001905092915050565b6000611dcc611dc5612810565b84846129e1565b6001905092915050565b611dde612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e64906145fd565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611f68612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ff7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fee906145fd565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516120949190614258565b60405180910390a25050565b6120a8612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212e906145fd565b60405180910390fd5b82601481905550816015819055508060168190555060165460155460145461215f91906147ec565b61216991906147ec565b601381905550602860135411156121b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ac9061486c565b60405180910390fd5b505050565b6121c2612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612251576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612248906145fd565b60405180910390fd5b670de0b6b3a76400006103e86005612267610e6f565b612271919061464c565b61227b91906146bd565b61228591906146bd565b8110156122c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122be90614990565b60405180910390fd5b670de0b6b3a7640000816122db919061464c565b600a8190555050565b600e60009054906101000a900460ff1681565b60085481565b6000612307612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238d906145fd565b60405180910390fd5b620186a060016123a4610e6f565b6123ae919061464c565b6123b891906146bd565b8210156123fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f190614a22565b60405180910390fd5b600a6005612406610e6f565b612410919061464c565b61241a91906146bd565b82111561245c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245390614ab4565b60405180910390fd5b8160098190555060019050919050565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000612509612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258f906145fd565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b60115481565b6125c8612810565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264e906145fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bd90614b46565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b600a5481565b600d6020528060005260406000206000915054906101000a900460ff1681565b60008082846127c191906147ec565b905083811015612806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fd90614bb2565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287e90614c44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ed90614cd6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129d49190614329565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4790614d68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab690614dfa565b60405180910390fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b635750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9990614e66565b60405180910390fd5b60008103612bbb57612bb683836000613844565b61373a565b600b60009054906101000a900460ff161561327e57612bd8611a0a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612c465750612c16611a0a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c7f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cb9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cd25750600560149054906101000a900460ff16155b1561327d57600b60019054906101000a900460ff16612dcc57601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d8c5750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc290614ed2565b60405180910390fd5b5b600e60009054906101000a900460ff1615612f9457612de9611a0a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612e7057507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ec857507f000000000000000000000000bcf3e7609ba3a056546bcf787bb87e16dea9409c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612f935743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4590614f8a565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130375750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130de57600854811115613081576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130789061501c565b60405180910390fd5b600a5461308d83611347565b8261309891906147ec565b11156130d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d090615088565b60405180910390fd5b61327c565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131815750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131d0576008548111156131cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c29061511a565b60405180910390fd5b61327b565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661327a57600a5461322d83611347565b8261323891906147ec565b1115613279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327090615088565b60405180910390fd5b5b5b5b5b5b600061328930611347565b9050600060095482101590508080156132ae5750600b60029054906101000a900460ff165b80156132c75750600560149054906101000a900460ff16155b801561331d5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133735750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133c95750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561340d576001600560146101000a81548160ff0219169083151502179055506133f1613ad7565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134c35750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134cd57600090505b6000811561372a57601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561353057506000601354115b156135ef57606460135486613545919061464c565b61354f91906146bd565b905060135460155482613562919061464c565b61356c91906146bd565b6018600082825461357d91906147ec565b9250508190555060135460165482613595919061464c565b61359f91906146bd565b601960008282546135b091906147ec565b92505081905550601354601454826135c8919061464c565b6135d291906146bd565b601760008282546135e391906147ec565b92505081905550613706565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561364a57506000600f54115b15613705576064600f548661365f919061464c565b61366991906146bd565b9050600f546011548261367c919061464c565b61368691906146bd565b6018600082825461369791906147ec565b92505081905550600f54601254826136af919061464c565b6136b991906146bd565b601960008282546136ca91906147ec565b92505081905550600f54601054826136e2919061464c565b6136ec91906146bd565b601760008282546136fd91906147ec565b925050819055505b5b600081111561371b5761371a873083613844565b5b8085613727919061513a565b94505b613735878787613844565b505050505b505050565b6000838311158290613787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377e9190614142565b60405180910390fd5b5060008385613796919061513a565b9050809150509392505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036138b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138aa90614d68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161391990614dfa565b60405180910390fd5b61392d838383613d94565b613998816040518060600160405280602681526020016154a8602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461373f9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a2b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613aca9190614329565b60405180910390a3505050565b6000613ae230611347565b90506000601954601754601854613af991906147ec565b613b0391906147ec565b9050600080831480613b155750600082145b15613b2257505050613d92565b6014600954613b31919061464c565b831115613b4a576014600954613b47919061464c565b92505b600060028360185486613b5d919061464c565b613b6791906146bd565b613b7191906146bd565b905060008185613b81919061513a565b90506000479050613b9182613d99565b60008147613b9f919061513a565b905060008660175483613bb2919061464c565b613bbc91906146bd565b905060008760195484613bcf919061464c565b613bd991906146bd565b90506000818385613bea919061513a565b613bf4919061513a565b9050600060188190555060006017819055506000601981905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613c549061519f565b60006040518083038185875af1925050503d8060008114613c91576040519150601f19603f3d011682016040523d82523d6000602084013e613c96565b606091505b505080985050600087118015613cac5750600081115b15613cf957613cbb8782613fd6565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601854604051613cf0939291906151b4565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613d3f9061519f565b60006040518083038185875af1925050503d8060008114613d7c576040519150601f19603f3d011682016040523d82523d6000602084013e613d81565b606091505b505080985050505050505050505050505b565b505050565b6000600267ffffffffffffffff811115613db657613db56151eb565b5b604051908082528060200260200182016040528015613de45781602001602082028036833780820191505090505b5090503081600081518110613dfc57613dfb61521a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ec5919061525e565b81600181518110613ed957613ed861521a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f3e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612818565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fa0959493929190615384565b600060405180830381600087803b158015613fba57600080fd5b505af1158015613fce573d6000803e3d6000fd5b505050505050565b614001307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612818565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401614068969594939291906153de565b60606040518083038185885af1158015614086573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140ab9190615454565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140ec5780820151818401526020810190506140d1565b60008484015250505050565b6000601f19601f8301169050919050565b6000614114826140b2565b61411e81856140bd565b935061412e8185602086016140ce565b614137816140f8565b840191505092915050565b6000602082019050818103600083015261415c8184614109565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061419482614169565b9050919050565b6141a481614189565b81146141af57600080fd5b50565b6000813590506141c18161419b565b92915050565b6000819050919050565b6141da816141c7565b81146141e557600080fd5b50565b6000813590506141f7816141d1565b92915050565b6000806040838503121561421457614213614164565b5b6000614222858286016141b2565b9250506020614233858286016141e8565b9150509250929050565b60008115159050919050565b6142528161423d565b82525050565b600060208201905061426d6000830184614249565b92915050565b60006020828403121561428957614288614164565b5b6000614297848285016141b2565b91505092915050565b6000819050919050565b60006142c56142c06142bb84614169565b6142a0565b614169565b9050919050565b60006142d7826142aa565b9050919050565b60006142e9826142cc565b9050919050565b6142f9816142de565b82525050565b600060208201905061431460008301846142f0565b92915050565b614323816141c7565b82525050565b600060208201905061433e600083018461431a565b92915050565b60006020828403121561435a57614359614164565b5b6000614368848285016141e8565b91505092915050565b60008060006060848603121561438a57614389614164565b5b6000614398868287016141b2565b93505060206143a9868287016141b2565b92505060406143ba868287016141e8565b9150509250925092565b6143cd81614189565b82525050565b60006020820190506143e860008301846143c4565b92915050565b600060ff82169050919050565b614404816143ee565b82525050565b600060208201905061441f60008301846143fb565b92915050565b61442e8161423d565b811461443957600080fd5b50565b60008135905061444b81614425565b92915050565b6000806040838503121561446857614467614164565b5b6000614476858286016141b2565b92505060206144878582860161443c565b9150509250929050565b6000806000606084860312156144aa576144a9614164565b5b60006144b8868287016141e8565b93505060206144c9868287016141e8565b92505060406144da868287016141e8565b9150509250925092565b6000602082840312156144fa576144f9614164565b5b60006145088482850161443c565b91505092915050565b6000806040838503121561452857614527614164565b5b6000614536858286016141b2565b9250506020614547858286016141b2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061459857607f821691505b6020821081036145ab576145aa614551565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145e76020836140bd565b91506145f2826145b1565b602082019050919050565b60006020820190508181036000830152614616816145da565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614657826141c7565b9150614662836141c7565b9250828202614670816141c7565b915082820484148315176146875761468661461d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006146c8826141c7565b91506146d3836141c7565b9250826146e3576146e261468e565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b600061474a602f836140bd565b9150614755826146ee565b604082019050919050565b600060208201905081810360008301526147798161473d565b9050919050565b7f416464726573732073686f756c64206e6f742062652030000000000000000000600082015250565b60006147b66017836140bd565b91506147c182614780565b602082019050919050565b600060208201905081810360008301526147e5816147a9565b9050919050565b60006147f7826141c7565b9150614802836141c7565b925082820190508082111561481a5761481961461d565b5b92915050565b7f4d757374206b656570206665657320617420343025206f72206c657373000000600082015250565b6000614856601d836140bd565b915061486182614820565b602082019050919050565b6000602082019050818103600083015261488581614849565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006148e86039836140bd565b91506148f38261488c565b604082019050919050565b60006020820190508181036000830152614917816148db565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061497a6024836140bd565b91506149858261491e565b604082019050919050565b600060208201905081810360008301526149a98161496d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614a0c6035836140bd565b9150614a17826149b0565b604082019050919050565b60006020820190508181036000830152614a3b816149ff565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e2035302520746f74616c20737570706c792e00000000000000000000000000602082015250565b6000614a9e6033836140bd565b9150614aa982614a42565b604082019050919050565b60006020820190508181036000830152614acd81614a91565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614b306026836140bd565b9150614b3b82614ad4565b604082019050919050565b60006020820190508181036000830152614b5f81614b23565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614b9c601b836140bd565b9150614ba782614b66565b602082019050919050565b60006020820190508181036000830152614bcb81614b8f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c2e6024836140bd565b9150614c3982614bd2565b604082019050919050565b60006020820190508181036000830152614c5d81614c21565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614cc06022836140bd565b9150614ccb82614c64565b604082019050919050565b60006020820190508181036000830152614cef81614cb3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614d526025836140bd565b9150614d5d82614cf6565b604082019050919050565b60006020820190508181036000830152614d8181614d45565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614de46023836140bd565b9150614def82614d88565b604082019050919050565b60006020820190508181036000830152614e1381614dd7565b9050919050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000614e50600b836140bd565b9150614e5b82614e1a565b602082019050919050565b60006020820190508181036000830152614e7f81614e43565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614ebc6016836140bd565b9150614ec782614e86565b602082019050919050565b60006020820190508181036000830152614eeb81614eaf565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614f746049836140bd565b9150614f7f82614ef2565b606082019050919050565b60006020820190508181036000830152614fa381614f67565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006150066035836140bd565b915061501182614faa565b604082019050919050565b6000602082019050818103600083015261503581614ff9565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006150726013836140bd565b915061507d8261503c565b602082019050919050565b600060208201905081810360008301526150a181615065565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006151046036836140bd565b915061510f826150a8565b604082019050919050565b60006020820190508181036000830152615133816150f7565b9050919050565b6000615145826141c7565b9150615150836141c7565b92508282039050818111156151685761516761461d565b5b92915050565b600081905092915050565b50565b600061518960008361516e565b915061519482615179565b600082019050919050565b60006151aa8261517c565b9150819050919050565b60006060820190506151c9600083018661431a565b6151d6602083018561431a565b6151e3604083018461431a565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506152588161419b565b92915050565b60006020828403121561527457615273614164565b5b600061528284828501615249565b91505092915050565b6000819050919050565b60006152b06152ab6152a68461528b565b6142a0565b6141c7565b9050919050565b6152c081615295565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6152fb81614189565b82525050565b600061530d83836152f2565b60208301905092915050565b6000602082019050919050565b6000615331826152c6565b61533b81856152d1565b9350615346836152e2565b8060005b8381101561537757815161535e8882615301565b975061536983615319565b92505060018101905061534a565b5085935050505092915050565b600060a082019050615399600083018861431a565b6153a660208301876152b7565b81810360408301526153b88186615326565b90506153c760608301856143c4565b6153d4608083018461431a565b9695505050505050565b600060c0820190506153f360008301896143c4565b615400602083018861431a565b61540d60408301876152b7565b61541a60608301866152b7565b61542760808301856143c4565b61543460a083018461431a565b979650505050505050565b60008151905061544e816141d1565b92915050565b60008060006060848603121561546d5761546c614164565b5b600061547b8682870161543f565b935050602061548c8682870161543f565b925050604061549d8682870161543f565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e76912481c2963936563ca697e2fa6b4b4da593345cbcb38da053e6ef6d44a9e64736f6c63430008110033

Deployed Bytecode Sourcemap

10758:15221:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2615:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3435:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12146:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10803:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2882:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18666:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11925:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11885;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16215:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3610:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10906:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2799:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3971:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10861:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11187:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18837:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11736:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11267:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2980:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8310:148;;;;;;;;;;;;;:::i;:::-;;15431:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16684:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10998:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18970:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11625:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17041:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15263:112;;;;;;;;;;;;;:::i;:::-;;8116:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11035:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11771:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16928:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2705:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17998:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11699:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11965:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11847:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4195:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3097:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18446:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12368:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11227:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17808:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17422:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16457:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11543:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11072:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15825:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11591:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3278:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11114:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15616:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11662:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8464:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11809:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11154:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11490:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2615:84;2669:13;2692:5;2685:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2615:84;:::o;3435:169::-;3518:4;3535:39;3544:12;:10;:12::i;:::-;3558:7;3567:6;3535:8;:39::i;:::-;3592:4;3585:11;;3435:169;;;;:::o;12146:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;10803:51::-;;;:::o;2882:92::-;2943:7;2960:12;;2953:19;;2882:92;:::o;18666:157::-;8235:12;:10;:12::i;:::-;8225:22;;:6;;;;;;;;;;;:22;;;8217:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18773:9:::1;;;;;;;;;;;18745:38;;18762:9;18745:38;;;;;;;;;;;;18806:9;18794;;:21;;;;;;;;;;;;;;;;;;18666:157:::0;:::o;11925:33::-;;;;:::o;11885:::-;;;;:::o;16215:234::-;8235:12;:10;:12::i;:::-;8225:22;;:6;;;;;;;;;;;:22;;;8217:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16334:4:::1;16328;16324:1;16308:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;16307:31;;;;:::i;:::-;16297:6;:41;;16289:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;16434:6;16424;:17;;;;:::i;:::-;16401:20;:40;;;;16215:234:::0;:::o;3610:355::-;3750:4;3767:36;3777:6;3785:9;3796:6;3767:9;:36::i;:::-;3814:121;3823:6;3831:12;:10;:12::i;:::-;3845:89;3883:6;3845:89;;;;;;;;;;;;;;;;;:11;:19;3857:6;3845:19;;;;;;;;;;;;;;;:33;3865:12;:10;:12::i;:::-;3845:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;3814:8;:121::i;:::-;3953:4;3946:11;;3610:355;;;;;:::o;10906:53::-;10952:6;10906:53;:::o;2799:77::-;2857:5;2872:2;2865:9;;2799:77;:::o;3971:218::-;4059:4;4076:83;4085:12;:10;:12::i;:::-;4099:7;4108:50;4147:10;4108:11;:25;4120:12;:10;:12::i;:::-;4108:25;;;;;;;;;;;;;;;:34;4134:7;4108:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4076:8;:83::i;:::-;4177:4;4170:11;;3971:218;;;;:::o;10861:38::-;;;:::o;11187:33::-;;;;;;;;;;;;;:::o;18837:125::-;18902:4;18926:19;:28;18946:7;18926:28;;;;;;;;;;;;;;;;;;;;;;;;;18919:35;;18837:125;;;:::o;11736:28::-;;;;:::o;11267:31::-;;;;;;;;;;;;;:::o;2980:111::-;3054:7;3071:9;:18;3081:7;3071:18;;;;;;;;;;;;;;;;3064:25;;2980:111;;;:::o;8310:148::-;8235:12;:10;:12::i;:::-;8225:22;;:6;;;;;;;;;;;:22;;;8217:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8417:1:::1;8380:40;;8401:6;;;;;;;;;;;8380:40;;;;;;;;;;;;8448:1;8431:6;;:19;;;;;;;;;;;;;;;;;;8310:148::o:0;15431:120::-;15483:4;8235:12;:10;:12::i;:::-;8225:22;;:6;;;;;;;;;;;:22;;;8217:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15516:5:::1;15499:14;;:22;;;;;;;;;;;;;;;;;;15539:4;15532:11;;15431:120:::0;:::o;16684:144::-;8235:12;:10;:12::i;:::-;8225:22;;:6;;;;;;;;;;;:22;;;8217:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16816:4:::1;16774:31;:39;16806:6;16774:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;16684:144:::0;;:::o;10998:30::-;;;;;;;;;;;;;:::o;18970:195::-;8235:12;:10;:12::i;:::-;8225:22;;:6;;;;;;;;;;;:22;;;8217:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19085:1:::1;19065:22;;:8;:22;;::::0;19057:57:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19151:6;19125:13;:23;19139:8;19125:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18970:195:::0;;:::o;11625:30::-;;;;:::o;17041:369::-;8235:12;:10;:12::i;:::-;8225:22;;:6;;;;;;;;;;;:22;;;8217:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17175:13:::1;17157:15;:31;;;;17217:13;17199:15;:31;;;;17253:7;17241:9;:19;;;;17322:9;;17304:15;;17286;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;17271:12;:60;;;;17366:2;17350:12;;:18;;17342:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;17041:369:::0;;;:::o;15263:112::-;8235:12;:10;:12::i;:::-;8225:22;;:6;;;;;;;;;;;:22;;;8217:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15334:4:::1;15318:13;;:20;;;;;;;;;;;;;;;;;;15363:4;15349:11;;:18;;;;;;;;;;;;;;;;;;15263:112::o:0;8116:63::-;8154:7;8171:6;;;;;;;;;;;8164:13;;8116:63;:::o;11035:24::-;;;;;;;;;;;;;:::o;11771:31::-;;;;:::o;16928:101::-;8235:12;:10;:12::i;:::-;8225:22;;:6;;;;;;;;;;;:22;;;8217:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17014:7:::1;17000:11;;:21;;;;;;;;;;;;;;;;;;16928:101:::0;:::o;2705:88::-;2761:13;2784:7;2777:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2705:88;:::o;17998:244::-;8235:12;:10;:12::i;:::-;8225:22;;:6;;;;;;;;;;;:22;;;8217:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18105:13:::1;18097:21;;:4;:21;;::::0;18089:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18193:41;18222:4;18228:5;18193:28;:41::i;:::-;17998:244:::0;;:::o;11699:24::-;;;;:::o;11965:27::-;;;;:::o;11847:25::-;;;;:::o;4195:269::-;4288:4;4305:129;4314:12;:10;:12::i;:::-;4328:7;4337:96;4376:15;4337:96;;;;;;;;;;;;;;;;;:11;:25;4349:12;:10;:12::i;:::-;4337:25;;;;;;;;;;;;;;;:34;4363:7;4337:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;4305:8;:129::i;:::-;4452:4;4445:11;;4195:269;;;;:::o;3097:175::-;3183:4;3200:42;3210:12;:10;:12::i;:::-;3224:9;3235:6;3200:9;:42::i;:::-;3260:4;3253:11;;3097:175;;;;:::o;18446:208::-;8235:12;:10;:12::i;:::-;8225:22;;:6;;;;;;;;;;;:22;;;8217:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18583:15:::1;;;;;;;;;;;18540:59;;18563:18;18540:59;;;;;;;;;;;;18628:18;18610:15;;:36;;;;;;;;;;;;;;;;;;18446:208:::0;:::o;12368:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;11227:33::-;;;;;;;;;;;;;:::o;17808:182::-;8235:12;:10;:12::i;:::-;8225:22;;:6;;;;;;;;;;;:22;;;8217:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17924:8:::1;17893:19;:28;17913:7;17893:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17964:7;17948:34;;;17973:8;17948:34;;;;;;:::i;:::-;;;;;;;;17808:182:::0;;:::o;17422:378::-;8235:12;:10;:12::i;:::-;8225:22;;:6;;;;;;;;;;;:22;;;8217:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17558:13:::1;17539:16;:32;;;;17601:13;17582:16;:32;;;;17638:7;17625:10;:20;;;;17710:10;;17691:16;;17672;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;17656:13;:64;;;;17756:2;17739:13;;:19;;17731:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17422:378:::0;;;:::o;16457:215::-;8235:12;:10;:12::i;:::-;8225:22;;:6;;;;;;;;;;;:22;;;8217:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16579:4:::1;16573;16569:1;16553:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;16552:31;;;;:::i;:::-;16542:6;:41;;16534:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;16657:6;16647;:17;;;;:::i;:::-;16635:9;:29;;;;16457:215:::0;:::o;11543:39::-;;;;;;;;;;;;;:::o;11072:35::-;;;;:::o;15825:378::-;15906:4;8235:12;:10;:12::i;:::-;8225:22;;:6;;;;;;;;;;;:22;;;8217:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15962:6:::1;15958:1;15942:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;15929:9;:39;;15921:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;16077:2;16073:1;16057:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:22;;;;:::i;:::-;16044:9;:35;;16036:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;16166:9;16145:18;:30;;;;16192:4;16185:11;;15825:378:::0;;;:::o;11591:27::-;;;;:::o;3278:151::-;3367:7;3394:11;:18;3406:5;3394:18;;;;;;;;;;;;;;;:27;3413:7;3394:27;;;;;;;;;;;;;;;;3387:34;;3278:151;;;;:::o;11114:33::-;;;;:::o;15616:134::-;15676:4;8235:12;:10;:12::i;:::-;8225:22;;:6;;;;;;;;;;;:22;;;8217:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15715:5:::1;15692:20;;:28;;;;;;;;;;;;;;;;;;15738:4;15731:11;;15616:134:::0;:::o;11662:30::-;;;;:::o;8464:244::-;8235:12;:10;:12::i;:::-;8225:22;;:6;;;;;;;;;;;:22;;;8217:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8573:1:::1;8553:22;;:8;:22;;::::0;8545:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8663:8;8634:38;;8655:6;;;;;;;;;;;8634:38;;;;;;;;;;;;8692:8;8683:6;;:17;;;;;;;;;;;;;;;;;;8464:244:::0;:::o;11809:31::-;;;;:::o;11154:24::-;;;;:::o;11490:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;6385:179::-;6443:7;6463:9;6479:1;6475;:5;;;;:::i;:::-;6463:17;;6504:1;6499;:6;;6491:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;6555:1;6548:8;;;6385:179;;;;:::o;688:98::-;741:7;768:10;761:17;;688:98;:::o;5845:378::-;5998:1;5981:19;;:5;:19;;;5973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6079:1;6060:21;;:7;:21;;;6052:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6161:6;6131:11;:18;6143:5;6131:18;;;;;;;;;;;;;;;:27;6150:7;6131:27;;;;;;;;;;;;;;;:36;;;;6199:7;6183:32;;6192:5;6183:32;;;6208:6;6183:32;;;;;;:::i;:::-;;;;;;;;5845:378;;;:::o;19173:4174::-;19321:1;19305:18;;:4;:18;;;19297:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19398:1;19384:16;;:2;:16;;;19376:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19460:13;:19;19474:4;19460:19;;;;;;;;;;;;;;;;;;;;;;;;;19459:20;:42;;;;;19484:13;:17;19498:2;19484:17;;;;;;;;;;;;;;;;;;;;;;;;;19483:18;19459:42;19451:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;19551:1;19541:6;:11;19538:92;;19569:28;19585:4;19591:2;19595:1;19569:15;:28::i;:::-;19612:7;;19538:92;19653:14;;;;;;;;;;;19650:1841;;;19713:7;:5;:7::i;:::-;19705:15;;:4;:15;;;;:49;;;;;19747:7;:5;:7::i;:::-;19741:13;;:2;:13;;;;19705:49;:86;;;;;19789:1;19775:16;;:2;:16;;;;19705:86;:128;;;;;19826:6;19812:21;;:2;:21;;;;19705:128;:158;;;;;19855:8;;;;;;;;;;;19854:9;19705:158;19683:1797;;;19901:13;;;;;;;;;;;19897:148;;19946:19;:25;19966:4;19946:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19975:19;:23;19995:2;19975:23;;;;;;;;;;;;;;;;;;;;;;;;;19946:52;19938:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;19897:148;20203:20;;;;;;;;;;;20199:423;;;20257:7;:5;:7::i;:::-;20251:13;;:2;:13;;;;:47;;;;;20282:15;20268:30;;:2;:30;;;;20251:47;:79;;;;;20316:13;20302:28;;:2;:28;;;;20251:79;20247:356;;;20408:12;20366:28;:39;20395:9;20366:39;;;;;;;;;;;;;;;;:54;20358:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;20567:12;20525:28;:39;20554:9;20525:39;;;;;;;;;;;;;;;:54;;;;20247:356;20199:423;20691:25;:31;20717:4;20691:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;20727:31;:35;20759:2;20727:35;;;;;;;;;;;;;;;;;;;;;;;;;20726:36;20691:71;20687:778;;;20809:20;;20799:6;:30;;20791:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;20948:9;;20931:13;20941:2;20931:9;:13::i;:::-;20922:6;:22;;;;:::i;:::-;:35;;20914:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20687:778;;;21075:25;:29;21101:2;21075:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;21109:31;:37;21141:4;21109:37;;;;;;;;;;;;;;;;;;;;;;;;;21108:38;21075:71;21071:394;;;21193:20;;21183:6;:30;;21175:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;21071:394;;;21319:31;:35;21351:2;21319:35;;;;;;;;;;;;;;;;;;;;;;;;;21315:150;;21412:9;;21395:13;21405:2;21395:9;:13::i;:::-;21386:6;:22;;;;:::i;:::-;:35;;21378:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21315:150;21071:394;20687:778;19683:1797;19650:1841;21505:28;21536:24;21554:4;21536:9;:24::i;:::-;21505:55;;21581:12;21620:18;;21596:20;:42;;21581:57;;21669:7;:35;;;;;21693:11;;;;;;;;;;;21669:35;:61;;;;;21722:8;;;;;;;;;;;21721:9;21669:61;:110;;;;;21748:25;:31;21774:4;21748:31;;;;;;;;;;;;;;;;;;;;;;;;;21747:32;21669:110;:153;;;;;21797:19;:25;21817:4;21797:25;;;;;;;;;;;;;;;;;;;;;;;;;21796:26;21669:153;:194;;;;;21840:19;:23;21860:2;21840:23;;;;;;;;;;;;;;;;;;;;;;;;;21839:24;21669:194;21651:338;;;21901:4;21890:8;;:15;;;;;;;;;;;;;;;;;;21934:10;:8;:10::i;:::-;21972:5;21961:8;;:16;;;;;;;;;;;;;;;;;;21651:338;22001:12;22017:8;;;;;;;;;;;22016:9;22001:24;;22126:19;:25;22146:4;22126:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22155:19;:23;22175:2;22155:23;;;;;;;;;;;;;;;;;;;;;;;;;22126:52;22123:99;;;22205:5;22195:15;;22123:99;22242:12;22346:7;22343:951;;;22397:25;:29;22423:2;22397:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;22446:1;22430:13;;:17;22397:50;22393:732;;;22497:3;22483:13;;22474:6;:22;;;;:::i;:::-;:26;;;;:::i;:::-;22467:33;;22567:13;;22548:16;;22541:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;22519:18;;:61;;;;;;;:::i;:::-;;;;;;;;22635:13;;22622:10;;22615:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;22599:12;;:49;;;;;;;:::i;:::-;;;;;;;;22715:13;;22696:16;;22689:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;22667:18;;:61;;;;;;;:::i;:::-;;;;;;;;22393:732;;;22789:25;:31;22815:4;22789:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;22839:1;22824:12;;:16;22789:51;22786:339;;;22887:3;22874:12;;22865:6;:21;;;;:::i;:::-;:25;;;;:::i;:::-;22858:32;;22953:12;;22935:15;;22928:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;22906:18;;:59;;;;;;;:::i;:::-;;;;;;;;23019:12;;23007:9;;23000:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;22984:12;;:47;;;;;;;:::i;:::-;;;;;;;;23097:12;;23079:15;;23072:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;23050:18;;:59;;;;;;;:::i;:::-;;;;;;;;22786:339;22393:732;23163:1;23156:4;:8;23153:93;;;23188:42;23204:4;23218;23225;23188:15;:42::i;:::-;23153:93;23278:4;23268:14;;;;;:::i;:::-;;;22343:951;23306:33;23322:4;23328:2;23332:6;23306:15;:33::i;:::-;19286:4061;;;;19173:4174;;;;:::o;6712:190::-;6798:7;6831:1;6826;:6;;6834:12;6818:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6858:9;6874:1;6870;:5;;;;:::i;:::-;6858:17;;6893:1;6886:8;;;6712:190;;;;;:::o;18250:188::-;18367:5;18333:25;:31;18359:4;18333:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18424:5;18390:40;;18418:4;18390:40;;;;;;;;;;;;18250:188;;:::o;4470:569::-;4628:1;4610:20;;:6;:20;;;4602:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4712:1;4691:23;;:9;:23;;;4683:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4765:47;4786:6;4794:9;4805:6;4765:20;:47::i;:::-;4843:71;4865:6;4843:71;;;;;;;;;;;;;;;;;:9;:17;4853:6;4843:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;4823:9;:17;4833:6;4823:17;;;;;;;;;;;;;;;:91;;;;4948:32;4973:6;4948:9;:20;4958:9;4948:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;4925:9;:20;4935:9;4925:20;;;;;;;;;;;;;;;:55;;;;5013:9;4996:35;;5005:6;4996:35;;;5024:6;4996:35;;;;;;:::i;:::-;;;;;;;;4470:569;;;:::o;24505:1463::-;24544:23;24570:24;24588:4;24570:9;:24::i;:::-;24544:50;;24605:25;24675:12;;24654:18;;24633;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;24605:82;;24698:12;24745:1;24726:15;:20;:46;;;;24771:1;24750:17;:22;24726:46;24723:60;;;24775:7;;;;;24723:60;24835:2;24814:18;;:23;;;;:::i;:::-;24796:15;:41;24793:111;;;24890:2;24869:18;;:23;;;;:::i;:::-;24851:41;;24793:111;24914:23;24999:1;24979:17;24958:18;;24940:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;24914:86;;25011:26;25058:15;25040;:33;;;;:::i;:::-;25011:62;;25084:25;25112:21;25084:49;;25144:36;25161:18;25144:16;:36::i;:::-;25192:18;25237:17;25213:21;:41;;;;:::i;:::-;25192:62;;25265:23;25323:17;25304:18;;25291:10;:31;;;;:::i;:::-;:49;;;;:::i;:::-;25265:75;;25351:17;25397;25384:12;;25371:10;:25;;;;:::i;:::-;:43;;;;:::i;:::-;25351:63;;25425:23;25482:9;25464:15;25451:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;25425:66;;25523:1;25502:18;:22;;;;25556:1;25535:18;:22;;;;25583:1;25568:12;:16;;;;25616:9;;;;;;;;;;;25608:23;;25639:9;25608:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25595:58;;;;;25685:1;25667:15;:19;:42;;;;;25708:1;25690:15;:19;25667:42;25664:210;;;25725:46;25738:15;25755;25725:12;:46::i;:::-;25791:71;25806:18;25826:15;25843:18;;25791:71;;;;;;;;:::i;:::-;;;;;;;;25664:210;25905:15;;;;;;;;;;;25897:29;;25934:21;25897:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25884:76;;;;;24533:1435;;;;;;;;;;24505:1463;:::o;6229:125::-;;;;:::o;23355:601::-;23483:21;23521:1;23507:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23483:40;;23552:4;23534;23539:1;23534:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23578:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23568:4;23573:1;23568:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23613:62;23630:4;23645:15;23663:11;23613:8;:62::i;:::-;23714:15;:66;;;23795:11;23821:1;23865:4;23892;23912:15;23714:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23410:546;23355:601;:::o;23980:517::-;24128:62;24145:4;24160:15;24178:11;24128:8;:62::i;:::-;24233:15;:31;;;24272:9;24305:4;24325:11;24351:1;24394;10952:6;24463:15;24233:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23980:517;;:::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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:329::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:118::-;6158:24;6176:5;6158:24;:::i;:::-;6153:3;6146:37;6071:118;;:::o;6195:222::-;6288:4;6326:2;6315:9;6311:18;6303:26;;6339:71;6407:1;6396:9;6392:17;6383:6;6339:71;:::i;:::-;6195:222;;;;:::o;6423:86::-;6458:7;6498:4;6491:5;6487:16;6476:27;;6423:86;;;:::o;6515:112::-;6598:22;6614:5;6598:22;:::i;:::-;6593:3;6586:35;6515:112;;:::o;6633:214::-;6722:4;6760:2;6749:9;6745:18;6737:26;;6773:67;6837:1;6826:9;6822:17;6813:6;6773:67;:::i;:::-;6633:214;;;;:::o;6853:116::-;6923:21;6938:5;6923:21;:::i;:::-;6916:5;6913:32;6903:60;;6959:1;6956;6949:12;6903:60;6853:116;:::o;6975:133::-;7018:5;7056:6;7043:20;7034:29;;7072:30;7096:5;7072:30;:::i;:::-;6975:133;;;;:::o;7114:468::-;7179:6;7187;7236:2;7224:9;7215:7;7211:23;7207:32;7204:119;;;7242:79;;:::i;:::-;7204:119;7362:1;7387:53;7432:7;7423:6;7412:9;7408:22;7387:53;:::i;:::-;7377:63;;7333:117;7489:2;7515:50;7557:7;7548:6;7537:9;7533:22;7515:50;:::i;:::-;7505:60;;7460:115;7114:468;;;;;:::o;7588:619::-;7665:6;7673;7681;7730:2;7718:9;7709:7;7705:23;7701:32;7698:119;;;7736:79;;:::i;:::-;7698:119;7856:1;7881:53;7926:7;7917:6;7906:9;7902:22;7881:53;:::i;:::-;7871:63;;7827:117;7983:2;8009:53;8054:7;8045:6;8034:9;8030:22;8009:53;:::i;:::-;7999:63;;7954:118;8111:2;8137:53;8182:7;8173:6;8162:9;8158:22;8137:53;:::i;:::-;8127:63;;8082:118;7588:619;;;;;:::o;8213:323::-;8269:6;8318:2;8306:9;8297:7;8293:23;8289:32;8286:119;;;8324:79;;:::i;:::-;8286:119;8444:1;8469:50;8511:7;8502:6;8491:9;8487:22;8469:50;:::i;:::-;8459:60;;8415:114;8213:323;;;;:::o;8542:474::-;8610:6;8618;8667:2;8655:9;8646:7;8642:23;8638:32;8635:119;;;8673:79;;:::i;:::-;8635:119;8793:1;8818:53;8863:7;8854:6;8843:9;8839:22;8818:53;:::i;:::-;8808:63;;8764:117;8920:2;8946:53;8991:7;8982:6;8971:9;8967:22;8946:53;:::i;:::-;8936:63;;8891:118;8542:474;;;;;:::o;9022:180::-;9070:77;9067:1;9060:88;9167:4;9164:1;9157:15;9191:4;9188:1;9181:15;9208:320;9252:6;9289:1;9283:4;9279:12;9269:22;;9336:1;9330:4;9326:12;9357:18;9347:81;;9413:4;9405:6;9401:17;9391:27;;9347:81;9475:2;9467:6;9464:14;9444:18;9441:38;9438:84;;9494:18;;:::i;:::-;9438:84;9259:269;9208:320;;;:::o;9534:182::-;9674:34;9670:1;9662:6;9658:14;9651:58;9534:182;:::o;9722:366::-;9864:3;9885:67;9949:2;9944:3;9885:67;:::i;:::-;9878:74;;9961:93;10050:3;9961:93;:::i;:::-;10079:2;10074:3;10070:12;10063:19;;9722:366;;;:::o;10094:419::-;10260:4;10298:2;10287:9;10283:18;10275:26;;10347:9;10341:4;10337:20;10333:1;10322:9;10318:17;10311:47;10375:131;10501:4;10375:131;:::i;:::-;10367:139;;10094:419;;;:::o;10519:180::-;10567:77;10564:1;10557:88;10664:4;10661:1;10654:15;10688:4;10685:1;10678:15;10705:410;10745:7;10768:20;10786:1;10768:20;:::i;:::-;10763:25;;10802:20;10820:1;10802:20;:::i;:::-;10797:25;;10857:1;10854;10850:9;10879:30;10897:11;10879:30;:::i;:::-;10868:41;;11058:1;11049:7;11045:15;11042:1;11039:22;11019:1;11012:9;10992:83;10969:139;;11088:18;;:::i;:::-;10969:139;10753:362;10705:410;;;;:::o;11121:180::-;11169:77;11166:1;11159:88;11266:4;11263:1;11256:15;11290:4;11287:1;11280:15;11307:185;11347:1;11364:20;11382:1;11364:20;:::i;:::-;11359:25;;11398:20;11416:1;11398:20;:::i;:::-;11393:25;;11437:1;11427:35;;11442:18;;:::i;:::-;11427:35;11484:1;11481;11477:9;11472:14;;11307:185;;;;:::o;11498:234::-;11638:34;11634:1;11626:6;11622:14;11615:58;11707:17;11702:2;11694:6;11690:15;11683:42;11498:234;:::o;11738:366::-;11880:3;11901:67;11965:2;11960:3;11901:67;:::i;:::-;11894:74;;11977:93;12066:3;11977:93;:::i;:::-;12095:2;12090:3;12086:12;12079:19;;11738:366;;;:::o;12110:419::-;12276:4;12314:2;12303:9;12299:18;12291:26;;12363:9;12357:4;12353:20;12349:1;12338:9;12334:17;12327:47;12391:131;12517:4;12391:131;:::i;:::-;12383:139;;12110:419;;;:::o;12535:173::-;12675:25;12671:1;12663:6;12659:14;12652:49;12535:173;:::o;12714:366::-;12856:3;12877:67;12941:2;12936:3;12877:67;:::i;:::-;12870:74;;12953:93;13042:3;12953:93;:::i;:::-;13071:2;13066:3;13062:12;13055:19;;12714:366;;;:::o;13086:419::-;13252:4;13290:2;13279:9;13275:18;13267:26;;13339:9;13333:4;13329:20;13325:1;13314:9;13310:17;13303:47;13367:131;13493:4;13367:131;:::i;:::-;13359:139;;13086:419;;;:::o;13511:191::-;13551:3;13570:20;13588:1;13570:20;:::i;:::-;13565:25;;13604:20;13622:1;13604:20;:::i;:::-;13599:25;;13647:1;13644;13640:9;13633:16;;13668:3;13665:1;13662:10;13659:36;;;13675:18;;:::i;:::-;13659:36;13511:191;;;;:::o;13708:179::-;13848:31;13844:1;13836:6;13832:14;13825:55;13708:179;:::o;13893:366::-;14035:3;14056:67;14120:2;14115:3;14056:67;:::i;:::-;14049:74;;14132:93;14221:3;14132:93;:::i;:::-;14250:2;14245:3;14241:12;14234:19;;13893:366;;;:::o;14265:419::-;14431:4;14469:2;14458:9;14454:18;14446:26;;14518:9;14512:4;14508:20;14504:1;14493:9;14489:17;14482:47;14546:131;14672:4;14546:131;:::i;:::-;14538:139;;14265:419;;;:::o;14690:244::-;14830:34;14826:1;14818:6;14814:14;14807:58;14899:27;14894:2;14886:6;14882:15;14875:52;14690:244;:::o;14940:366::-;15082:3;15103:67;15167:2;15162:3;15103:67;:::i;:::-;15096:74;;15179:93;15268:3;15179:93;:::i;:::-;15297:2;15292:3;15288:12;15281:19;;14940:366;;;:::o;15312:419::-;15478:4;15516:2;15505:9;15501:18;15493:26;;15565:9;15559:4;15555:20;15551:1;15540:9;15536:17;15529:47;15593:131;15719:4;15593:131;:::i;:::-;15585:139;;15312:419;;;:::o;15737:223::-;15877:34;15873:1;15865:6;15861:14;15854:58;15946:6;15941:2;15933:6;15929:15;15922:31;15737:223;:::o;15966:366::-;16108:3;16129:67;16193:2;16188:3;16129:67;:::i;:::-;16122:74;;16205:93;16294:3;16205:93;:::i;:::-;16323:2;16318:3;16314:12;16307:19;;15966:366;;;:::o;16338:419::-;16504:4;16542:2;16531:9;16527:18;16519:26;;16591:9;16585:4;16581:20;16577:1;16566:9;16562:17;16555:47;16619:131;16745:4;16619:131;:::i;:::-;16611:139;;16338:419;;;:::o;16763:240::-;16903:34;16899:1;16891:6;16887:14;16880:58;16972:23;16967:2;16959:6;16955:15;16948:48;16763:240;:::o;17009:366::-;17151:3;17172:67;17236:2;17231:3;17172:67;:::i;:::-;17165:74;;17248:93;17337:3;17248:93;:::i;:::-;17366:2;17361:3;17357:12;17350:19;;17009:366;;;:::o;17381:419::-;17547:4;17585:2;17574:9;17570:18;17562:26;;17634:9;17628:4;17624:20;17620:1;17609:9;17605:17;17598:47;17662:131;17788:4;17662:131;:::i;:::-;17654:139;;17381:419;;;:::o;17806:238::-;17946:34;17942:1;17934:6;17930:14;17923:58;18015:21;18010:2;18002:6;17998:15;17991:46;17806:238;:::o;18050:366::-;18192:3;18213:67;18277:2;18272:3;18213:67;:::i;:::-;18206:74;;18289:93;18378:3;18289:93;:::i;:::-;18407:2;18402:3;18398:12;18391:19;;18050:366;;;:::o;18422:419::-;18588:4;18626:2;18615:9;18611:18;18603:26;;18675:9;18669:4;18665:20;18661:1;18650:9;18646:17;18639:47;18703:131;18829:4;18703:131;:::i;:::-;18695:139;;18422:419;;;:::o;18847:225::-;18987:34;18983:1;18975:6;18971:14;18964:58;19056:8;19051:2;19043:6;19039:15;19032:33;18847:225;:::o;19078:366::-;19220:3;19241:67;19305:2;19300:3;19241:67;:::i;:::-;19234:74;;19317:93;19406:3;19317:93;:::i;:::-;19435:2;19430:3;19426:12;19419:19;;19078:366;;;:::o;19450:419::-;19616:4;19654:2;19643:9;19639:18;19631:26;;19703:9;19697:4;19693:20;19689:1;19678:9;19674:17;19667:47;19731:131;19857:4;19731:131;:::i;:::-;19723:139;;19450:419;;;:::o;19875:177::-;20015:29;20011:1;20003:6;19999:14;19992:53;19875:177;:::o;20058:366::-;20200:3;20221:67;20285:2;20280:3;20221:67;:::i;:::-;20214:74;;20297:93;20386:3;20297:93;:::i;:::-;20415:2;20410:3;20406:12;20399:19;;20058:366;;;:::o;20430:419::-;20596:4;20634:2;20623:9;20619:18;20611:26;;20683:9;20677:4;20673:20;20669:1;20658:9;20654:17;20647:47;20711:131;20837:4;20711:131;:::i;:::-;20703:139;;20430:419;;;:::o;20855:223::-;20995:34;20991:1;20983:6;20979:14;20972:58;21064:6;21059:2;21051:6;21047:15;21040:31;20855:223;:::o;21084:366::-;21226:3;21247:67;21311:2;21306:3;21247:67;:::i;:::-;21240:74;;21323:93;21412:3;21323:93;:::i;:::-;21441:2;21436:3;21432:12;21425:19;;21084:366;;;:::o;21456:419::-;21622:4;21660:2;21649:9;21645:18;21637:26;;21709:9;21703:4;21699:20;21695:1;21684:9;21680:17;21673:47;21737:131;21863:4;21737:131;:::i;:::-;21729:139;;21456:419;;;:::o;21881:221::-;22021:34;22017:1;22009:6;22005:14;21998:58;22090:4;22085:2;22077:6;22073:15;22066:29;21881:221;:::o;22108:366::-;22250:3;22271:67;22335:2;22330:3;22271:67;:::i;:::-;22264:74;;22347:93;22436:3;22347:93;:::i;:::-;22465:2;22460:3;22456:12;22449:19;;22108:366;;;:::o;22480:419::-;22646:4;22684:2;22673:9;22669:18;22661:26;;22733:9;22727:4;22723:20;22719:1;22708:9;22704:17;22697:47;22761:131;22887:4;22761:131;:::i;:::-;22753:139;;22480:419;;;:::o;22905:224::-;23045:34;23041:1;23033:6;23029:14;23022:58;23114:7;23109:2;23101:6;23097:15;23090:32;22905:224;:::o;23135:366::-;23277:3;23298:67;23362:2;23357:3;23298:67;:::i;:::-;23291:74;;23374:93;23463:3;23374:93;:::i;:::-;23492:2;23487:3;23483:12;23476:19;;23135:366;;;:::o;23507:419::-;23673:4;23711:2;23700:9;23696:18;23688:26;;23760:9;23754:4;23750:20;23746:1;23735:9;23731:17;23724:47;23788:131;23914:4;23788:131;:::i;:::-;23780:139;;23507:419;;;:::o;23932:222::-;24072:34;24068:1;24060:6;24056:14;24049:58;24141:5;24136:2;24128:6;24124:15;24117:30;23932:222;:::o;24160:366::-;24302:3;24323:67;24387:2;24382:3;24323:67;:::i;:::-;24316:74;;24399:93;24488:3;24399:93;:::i;:::-;24517:2;24512:3;24508:12;24501:19;;24160:366;;;:::o;24532:419::-;24698:4;24736:2;24725:9;24721:18;24713:26;;24785:9;24779:4;24775:20;24771:1;24760:9;24756:17;24749:47;24813:131;24939:4;24813:131;:::i;:::-;24805:139;;24532:419;;;:::o;24957:161::-;25097:13;25093:1;25085:6;25081:14;25074:37;24957:161;:::o;25124:366::-;25266:3;25287:67;25351:2;25346:3;25287:67;:::i;:::-;25280:74;;25363:93;25452:3;25363:93;:::i;:::-;25481:2;25476:3;25472:12;25465:19;;25124:366;;;:::o;25496:419::-;25662:4;25700:2;25689:9;25685:18;25677:26;;25749:9;25743:4;25739:20;25735:1;25724:9;25720:17;25713:47;25777:131;25903:4;25777:131;:::i;:::-;25769:139;;25496:419;;;:::o;25921:172::-;26061:24;26057:1;26049:6;26045:14;26038:48;25921:172;:::o;26099:366::-;26241:3;26262:67;26326:2;26321:3;26262:67;:::i;:::-;26255:74;;26338:93;26427:3;26338:93;:::i;:::-;26456:2;26451:3;26447:12;26440:19;;26099:366;;;:::o;26471:419::-;26637:4;26675:2;26664:9;26660:18;26652:26;;26724:9;26718:4;26714:20;26710:1;26699:9;26695:17;26688:47;26752:131;26878:4;26752:131;:::i;:::-;26744:139;;26471:419;;;:::o;26896:297::-;27036:34;27032:1;27024:6;27020:14;27013:58;27105:34;27100:2;27092:6;27088:15;27081:59;27174:11;27169:2;27161:6;27157:15;27150:36;26896:297;:::o;27199:366::-;27341:3;27362:67;27426:2;27421:3;27362:67;:::i;:::-;27355:74;;27438:93;27527:3;27438:93;:::i;:::-;27556:2;27551:3;27547:12;27540:19;;27199:366;;;:::o;27571:419::-;27737:4;27775:2;27764:9;27760:18;27752:26;;27824:9;27818:4;27814:20;27810:1;27799:9;27795:17;27788:47;27852:131;27978:4;27852:131;:::i;:::-;27844:139;;27571:419;;;:::o;27996:240::-;28136:34;28132:1;28124:6;28120:14;28113:58;28205:23;28200:2;28192:6;28188:15;28181:48;27996:240;:::o;28242:366::-;28384:3;28405:67;28469:2;28464:3;28405:67;:::i;:::-;28398:74;;28481:93;28570:3;28481:93;:::i;:::-;28599:2;28594:3;28590:12;28583:19;;28242:366;;;:::o;28614:419::-;28780:4;28818:2;28807:9;28803:18;28795:26;;28867:9;28861:4;28857:20;28853:1;28842:9;28838:17;28831:47;28895:131;29021:4;28895:131;:::i;:::-;28887:139;;28614:419;;;:::o;29039:169::-;29179:21;29175:1;29167:6;29163:14;29156:45;29039:169;:::o;29214:366::-;29356:3;29377:67;29441:2;29436:3;29377:67;:::i;:::-;29370:74;;29453:93;29542:3;29453:93;:::i;:::-;29571:2;29566:3;29562:12;29555:19;;29214:366;;;:::o;29586:419::-;29752:4;29790:2;29779:9;29775:18;29767:26;;29839:9;29833:4;29829:20;29825:1;29814:9;29810:17;29803:47;29867:131;29993:4;29867:131;:::i;:::-;29859:139;;29586:419;;;:::o;30011:241::-;30151:34;30147:1;30139:6;30135:14;30128:58;30220:24;30215:2;30207:6;30203:15;30196:49;30011:241;:::o;30258:366::-;30400:3;30421:67;30485:2;30480:3;30421:67;:::i;:::-;30414:74;;30497:93;30586:3;30497:93;:::i;:::-;30615:2;30610:3;30606:12;30599:19;;30258:366;;;:::o;30630:419::-;30796:4;30834:2;30823:9;30819:18;30811:26;;30883:9;30877:4;30873:20;30869:1;30858:9;30854:17;30847:47;30911:131;31037:4;30911:131;:::i;:::-;30903:139;;30630:419;;;:::o;31055:194::-;31095:4;31115:20;31133:1;31115:20;:::i;:::-;31110:25;;31149:20;31167:1;31149:20;:::i;:::-;31144:25;;31193:1;31190;31186:9;31178:17;;31217:1;31211:4;31208:11;31205:37;;;31222:18;;:::i;:::-;31205:37;31055:194;;;;:::o;31255:147::-;31356:11;31393:3;31378:18;;31255:147;;;;:::o;31408:114::-;;:::o;31528:398::-;31687:3;31708:83;31789:1;31784:3;31708:83;:::i;:::-;31701:90;;31800:93;31889:3;31800:93;:::i;:::-;31918:1;31913:3;31909:11;31902:18;;31528:398;;;:::o;31932:379::-;32116:3;32138:147;32281:3;32138:147;:::i;:::-;32131:154;;32302:3;32295:10;;31932:379;;;:::o;32317:442::-;32466:4;32504:2;32493:9;32489:18;32481:26;;32517:71;32585:1;32574:9;32570:17;32561:6;32517:71;:::i;:::-;32598:72;32666:2;32655:9;32651:18;32642:6;32598:72;:::i;:::-;32680;32748:2;32737:9;32733:18;32724:6;32680:72;:::i;:::-;32317:442;;;;;;:::o;32765:180::-;32813:77;32810:1;32803:88;32910:4;32907:1;32900:15;32934:4;32931:1;32924:15;32951:180;32999:77;32996:1;32989:88;33096:4;33093:1;33086:15;33120:4;33117:1;33110:15;33137:143;33194:5;33225:6;33219:13;33210:22;;33241:33;33268:5;33241:33;:::i;:::-;33137:143;;;;:::o;33286:351::-;33356:6;33405:2;33393:9;33384:7;33380:23;33376:32;33373:119;;;33411:79;;:::i;:::-;33373:119;33531:1;33556:64;33612:7;33603:6;33592:9;33588:22;33556:64;:::i;:::-;33546:74;;33502:128;33286:351;;;;:::o;33643:85::-;33688:7;33717:5;33706:16;;33643:85;;;:::o;33734:158::-;33792:9;33825:61;33843:42;33852:32;33878:5;33852:32;:::i;:::-;33843:42;:::i;:::-;33825:61;:::i;:::-;33812:74;;33734:158;;;:::o;33898:147::-;33993:45;34032:5;33993:45;:::i;:::-;33988:3;33981:58;33898:147;;:::o;34051:114::-;34118:6;34152:5;34146:12;34136:22;;34051:114;;;:::o;34171:184::-;34270:11;34304:6;34299:3;34292:19;34344:4;34339:3;34335:14;34320:29;;34171:184;;;;:::o;34361:132::-;34428:4;34451:3;34443:11;;34481:4;34476:3;34472:14;34464:22;;34361:132;;;:::o;34499:108::-;34576:24;34594:5;34576:24;:::i;:::-;34571:3;34564:37;34499:108;;:::o;34613:179::-;34682:10;34703:46;34745:3;34737:6;34703:46;:::i;:::-;34781:4;34776:3;34772:14;34758:28;;34613:179;;;;:::o;34798:113::-;34868:4;34900;34895:3;34891:14;34883:22;;34798:113;;;:::o;34947:732::-;35066:3;35095:54;35143:5;35095:54;:::i;:::-;35165:86;35244:6;35239:3;35165:86;:::i;:::-;35158:93;;35275:56;35325:5;35275:56;:::i;:::-;35354:7;35385:1;35370:284;35395:6;35392:1;35389:13;35370:284;;;35471:6;35465:13;35498:63;35557:3;35542:13;35498:63;:::i;:::-;35491:70;;35584:60;35637:6;35584:60;:::i;:::-;35574:70;;35430:224;35417:1;35414;35410:9;35405:14;;35370:284;;;35374:14;35670:3;35663:10;;35071:608;;;34947:732;;;;:::o;35685:831::-;35948:4;35986:3;35975:9;35971:19;35963:27;;36000:71;36068:1;36057:9;36053:17;36044:6;36000:71;:::i;:::-;36081:80;36157:2;36146:9;36142:18;36133:6;36081:80;:::i;:::-;36208:9;36202:4;36198:20;36193:2;36182:9;36178:18;36171:48;36236:108;36339:4;36330:6;36236:108;:::i;:::-;36228:116;;36354:72;36422:2;36411:9;36407:18;36398:6;36354:72;:::i;:::-;36436:73;36504:3;36493:9;36489:19;36480:6;36436:73;:::i;:::-;35685:831;;;;;;;;:::o;36522:807::-;36771:4;36809:3;36798:9;36794:19;36786:27;;36823:71;36891:1;36880:9;36876:17;36867:6;36823:71;:::i;:::-;36904:72;36972:2;36961:9;36957:18;36948:6;36904:72;:::i;:::-;36986:80;37062:2;37051:9;37047:18;37038:6;36986:80;:::i;:::-;37076;37152:2;37141:9;37137:18;37128:6;37076:80;:::i;:::-;37166:73;37234:3;37223:9;37219:19;37210:6;37166:73;:::i;:::-;37249;37317:3;37306:9;37302:19;37293:6;37249:73;:::i;:::-;36522:807;;;;;;;;;:::o;37335:143::-;37392:5;37423:6;37417:13;37408:22;;37439:33;37466:5;37439:33;:::i;:::-;37335:143;;;;:::o;37484:663::-;37572:6;37580;37588;37637:2;37625:9;37616:7;37612:23;37608:32;37605:119;;;37643:79;;:::i;:::-;37605:119;37763:1;37788:64;37844:7;37835:6;37824:9;37820:22;37788:64;:::i;:::-;37778:74;;37734:128;37901:2;37927:64;37983:7;37974:6;37963:9;37959:22;37927:64;:::i;:::-;37917:74;;37872:129;38040:2;38066:64;38122:7;38113:6;38102:9;38098:22;38066:64;:::i;:::-;38056:74;;38011:129;37484:663;;;;;:::o

Swarm Source

ipfs://e76912481c2963936563ca697e2fa6b4b4da593345cbcb38da053e6ef6d44a9e

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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