ETH Price: $2,576.73 (+2.60%)

Contract

0x91c6C748f43cC4F3c5Bb6DF9BdA0179e47ec39a2
 

Overview

ETH Balance

272 wei

Eth Value

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

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve176408702023-07-07 8:54:35479 days ago1688720075IN
0x91c6C748...e47ec39a2
0 ETH0.0011739924.94411977
Approve175873082023-06-29 20:23:11487 days ago1688070191IN
0x91c6C748...e47ec39a2
0 ETH0.001328153.07948727
Approve175500632023-06-24 14:46:23492 days ago1687617983IN
0x91c6C748...e47ec39a2
0 ETH0.0007221615.36360401
Approve174172852023-06-05 22:32:23510 days ago1686004343IN
0x91c6C748...e47ec39a2
0 ETH0.0011038923.45471915
Approve174172632023-06-05 22:27:59510 days ago1686004079IN
0x91c6C748...e47ec39a2
0 ETH0.0011214523.85824747
Approve174166202023-06-05 20:16:23511 days ago1685996183IN
0x91c6C748...e47ec39a2
0 ETH0.0017175436.53955151
Approve174164292023-06-05 19:36:47511 days ago1685993807IN
0x91c6C748...e47ec39a2
0 ETH0.0020814244
Approve174164272023-06-05 19:36:23511 days ago1685993783IN
0x91c6C748...e47ec39a2
0 ETH0.0017125236.42357313
Renounce Ownersh...174164252023-06-05 19:35:59511 days ago1685993759IN
0x91c6C748...e47ec39a2
0 ETH0.0009028438.30326143
Approve174164232023-06-05 19:35:35511 days ago1685993735IN
0x91c6C748...e47ec39a2
0 ETH0.0017996338.23727459
Approve174164212023-06-05 19:35:11511 days ago1685993711IN
0x91c6C748...e47ec39a2
0 ETH0.0021444745.33302388
Set Sell Taxes174164142023-06-05 19:33:47511 days ago1685993627IN
0x91c6C748...e47ec39a2
0 ETH0.0015373638.90687489
Approve174164042023-06-05 19:31:47511 days ago1685993507IN
0x91c6C748...e47ec39a2
0 ETH0.0021640245.99131054
Approve174164022023-06-05 19:31:23511 days ago1685993483IN
0x91c6C748...e47ec39a2
0 ETH0.0028128859.5382456
Approve174163962023-06-05 19:30:11511 days ago1685993411IN
0x91c6C748...e47ec39a2
0 ETH0.0019699541.64378373
Approve174163902023-06-05 19:28:59511 days ago1685993339IN
0x91c6C748...e47ec39a2
0 ETH0.0018188438.70458708
Set Is Bot174163852023-06-05 19:27:59511 days ago1685993279IN
0x91c6C748...e47ec39a2
0 ETH0.0018138.7763309
Approve174163712023-06-05 19:25:11511 days ago1685993111IN
0x91c6C748...e47ec39a2
0 ETH0.0021264144.95121387
Approve174163702023-06-05 19:24:59511 days ago1685993099IN
0x91c6C748...e47ec39a2
0 ETH0.0020564543.52739437
Approve174162912023-06-05 19:08:59511 days ago1685992139IN
0x91c6C748...e47ec39a2
0 ETH0.0028851260.98987527
Approve174162832023-06-05 19:07:23511 days ago1685992043IN
0x91c6C748...e47ec39a2
0 ETH0.002650356.02581618
Approve174162462023-06-05 18:59:59511 days ago1685991599IN
0x91c6C748...e47ec39a2
0 ETH0.0021231644.9395294
Transfer174162432023-06-05 18:59:23511 days ago1685991563IN
0x91c6C748...e47ec39a2
0 ETH0.00387264.0975684
Approve174162152023-06-05 18:53:47511 days ago1685991227IN
0x91c6C748...e47ec39a2
0 ETH0.0025426953.75100684
Approve174162132023-06-05 18:53:23511 days ago1685991203IN
0x91c6C748...e47ec39a2
0 ETH0.0021220744.85944772
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
174166232023-06-05 20:16:59511 days ago1685996219
0x91c6C748...e47ec39a2
0.01634586 ETH
174166232023-06-05 20:16:59511 days ago1685996219
0x91c6C748...e47ec39a2
0.01634586 ETH
174164452023-06-05 19:40:23511 days ago1685994023
0x91c6C748...e47ec39a2
0.02628791 ETH
174164452023-06-05 19:40:23511 days ago1685994023
0x91c6C748...e47ec39a2
0.02628791 ETH
174164372023-06-05 19:38:35511 days ago1685993915
0x91c6C748...e47ec39a2
0.04096099 ETH
174164372023-06-05 19:38:35511 days ago1685993915
0x91c6C748...e47ec39a2
0.04096099 ETH
174164172023-06-05 19:34:23511 days ago1685993663
0x91c6C748...e47ec39a2
0.08517537 ETH
174164172023-06-05 19:34:23511 days ago1685993663
0x91c6C748...e47ec39a2
0.08517537 ETH
174163962023-06-05 19:30:11511 days ago1685993411
0x91c6C748...e47ec39a2
0.10109597 ETH
174163962023-06-05 19:30:11511 days ago1685993411
0x91c6C748...e47ec39a2
0.10109597 ETH
174163882023-06-05 19:28:35511 days ago1685993315
0x91c6C748...e47ec39a2
0.10109597 ETH
174163382023-06-05 19:18:23511 days ago1685992703
0x91c6C748...e47ec39a2
0.10966949 ETH
174163382023-06-05 19:18:23511 days ago1685992703
0x91c6C748...e47ec39a2
0.10966949 ETH
174163342023-06-05 19:17:35511 days ago1685992655
0x91c6C748...e47ec39a2
0.0782331 ETH
174163342023-06-05 19:17:35511 days ago1685992655
0x91c6C748...e47ec39a2
0.0782331 ETH
174162932023-06-05 19:09:23511 days ago1685992163
0x91c6C748...e47ec39a2
0.15939996 ETH
174162932023-06-05 19:09:23511 days ago1685992163
0x91c6C748...e47ec39a2
0.15939996 ETH
174162202023-06-05 18:54:47511 days ago1685991287
0x91c6C748...e47ec39a2
0.1093403 ETH
174162202023-06-05 18:54:47511 days ago1685991287
0x91c6C748...e47ec39a2
0.1093403 ETH
174161962023-06-05 18:49:59511 days ago1685990999
0x91c6C748...e47ec39a2
0.1223985 ETH
174161962023-06-05 18:49:59511 days ago1685990999
0x91c6C748...e47ec39a2
0.1223985 ETH
174161942023-06-05 18:49:35511 days ago1685990975
0x91c6C748...e47ec39a2
0.0953811 ETH
174161942023-06-05 18:49:35511 days ago1685990975
0x91c6C748...e47ec39a2
0.0953811 ETH
174161922023-06-05 18:49:11511 days ago1685990951
0x91c6C748...e47ec39a2
0.10715983 ETH
174161922023-06-05 18:49:11511 days ago1685990951
0x91c6C748...e47ec39a2
0.10715983 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SecToken

Compiler Version
v0.8.3+commit.8d00100c

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-05
*/

// THE FIRST SEC TOKEN | sectoken.wtf | t.me/sectokenwtf

//SPDX-License-Identifier: MIT

pragma solidity 0.8.3;

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 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 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}


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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    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);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract SecToken is ERC20, Ownable{
    using Address for address payable;
    
    IRouter public router;
    address public pair;
    bool private swapping;
    bool public swapEnabled;
    bool public tradingEnabled;

    uint256 public genesis_block;
    uint256 public deadblocks = 0;
    
    uint256 public swapThreshold = 35_000_000 * 10e18;
    uint256 public maxTxAmount = 69_420_000_000 * 10**18;
    uint256 public maxWalletAmount = 69_420_000_000 * 10**18;
    
    address public marketingWallet = 0x2B724483cA1c98BADB2B885Fc8a6A127c9592D51;
    address public devWallet = 0x2B724483cA1c98BADB2B885Fc8a6A127c9592D51;
    
    struct Taxes {
        uint256 marketing;
        uint256 liquidity; 
        uint256 dev;
    }
    
    Taxes public taxes = Taxes(0,0,0);
    Taxes public sellTaxes = Taxes(0,0,0);
    uint256 public totTax = 0;
    uint256 public totSellTax = 0;
    
    mapping (address => bool) public excludedFromFees;
    mapping (address => bool) public isBot;
    
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
        
    constructor() ERC20("Security", "SEC") {
        _mint(msg.sender, 69420000000 * 10 ** decimals());
        excludedFromFees[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        excludedFromFees[address(this)] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[devWallet] = true;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!isBot[sender] && !isBot[recipient], "You can't transfer tokens");
                
        
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){
            require(tradingEnabled, "Trading not active yet");
            if(genesis_block + deadblocks > block.number){
                if(recipient != pair) isBot[recipient] = true;
                if(sender != pair) isBot[sender] = true;
            }
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            }
        }

        uint256 fee;
        
        //set fee to zero if fees in contract are handled or exempted
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
        
        //calculate fee
        else{
            if(recipient == pair) fee = amount * totSellTax / 100;
            else fee = amount * totTax / 100;
        }
        
        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();

        super._transfer(sender, recipient, amount - fee);
        if(fee > 0) super._transfer(sender, address(this) ,fee);

    }

    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapThreshold) {

            // Split the contract balance into halves
            uint256 denominator = totSellTax * 2;
            uint256 tokensToAddLiquidityWith = contractBalance * sellTaxes.liquidity / denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
    
            uint256 initialBalance = address(this).balance;
    
            swapTokensForETH(toSwap);
    
            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * sellTaxes.liquidity;
    
            if(ethToAddLiquidityWith > 0){
                // Add liquidity to Uniswap
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }
    
            uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing;
            if(marketingAmt > 0){
                payable(marketingWallet).sendValue(marketingAmt);
            }
            
            uint256 devAmt = unitBalance * 2 * sellTaxes.dev;
            if(devAmt > 0){
                payable(devWallet).sendValue(devAmt);
            }
        }
    }


    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);

    }

    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            devWallet,
            block.timestamp
        );
    }

    function setSwapEnabled(bool state) external onlyOwner {
        swapEnabled = state;
    }

    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        swapThreshold = new_amount;
    }

    function enableTrading(uint256 numOfDeadBlocks) external onlyOwner{
        require(!tradingEnabled, "Trading already active");
        tradingEnabled = true;
        swapEnabled = true;
        genesis_block = block.number;
        deadblocks = numOfDeadBlocks;
    }

    function setTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{
        taxes = Taxes(_marketing, _liquidity, _dev);
        totTax = _marketing + _liquidity + _dev;
    }

    function setSellTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{
        sellTaxes = Taxes(_marketing, _liquidity, _dev);
        totSellTax = _marketing + _liquidity + _dev;
    }
    
    function updateMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }
    
    function updateDevWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }

    function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner{
        router = _router;
        pair = _pair;
    }
    
    function setIsBot(address account, bool state) external onlyOwner{
        isBot[account] = state;
    }

    function updateExcludedFromFees(address _address, bool state) external onlyOwner {
        excludedFromFees[_address] = state;
    }
    
    function updateMaxTxAmount(uint256 amount) external onlyOwner{
        maxTxAmount = amount * 10**18;
    }
    
    function updateMaxWalletAmount(uint256 amount) external onlyOwner{
        maxWalletAmount = amount * 10**18;
    }

    function rescueERC20(address tokenAddress, uint256 amount) external onlyOwner{
        IERC20(tokenAddress).transfer(owner(), amount);
    }

    function rescueETH(uint256 weiAmount) external onlyOwner{
        payable(owner()).sendValue(weiAmount);
    }

    function manualSwap(uint256 amount, uint256 devPercentage, uint256 marketingPercentage) external onlyOwner{
        uint256 initBalance = address(this).balance;
        swapTokensForETH(amount);
        uint256 newBalance = address(this).balance - initBalance;
        if(marketingPercentage > 0) payable(marketingWallet).sendValue(newBalance * marketingPercentage / (devPercentage + marketingPercentage));
        if(devPercentage > 0) payable(devWallet).sendValue(newBalance * devPercentage / (devPercentage + marketingPercentage));
    }

    // fallbacks
    receive() external payable {}
    
}

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadblocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numOfDeadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"devPercentage","type":"uint256"},{"internalType":"uint256","name":"marketingPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setIsBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totTax","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":"tradingEnabled","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":[{"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":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRouter","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006009556b0121836204bc2ce21e000000600a556be04ee0ccb27ac646ac000000600b556be04ee0ccb27ac646ac000000600c55732b724483ca1c98badb2b885fc8a6a127c9592d51600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732b724483ca1c98badb2b885fc8a6a127c9592d51600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806060016040528060008152602001600081526020016000815250600f600082015181600001556020820151816001015560408201518160020155505060405180606001604052806000815260200160008152602001600081525060126000820151816000015560208201518160010155604082015181600201555050600060155560006016553480156200017a57600080fd5b506040518060400160405280600881526020017f53656375726974790000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f53454300000000000000000000000000000000000000000000000000000000008152508160039080519060200190620001ff9291906200089d565b508060049080519060200190620002189291906200089d565b5050506200023b6200022f6200065c60201b60201c565b6200066460201b60201c565b6200027c33620002506200072a60201b60201c565b600a6200025e919062000b0e565b641029c1230062000270919062000c4b565b6200073360201b60201c565b6001601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033657600080fd5b505afa1580156200034b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000371919062000964565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003d457600080fd5b505afa158015620003e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040f919062000964565b6040518363ffffffff1660e01b81526004016200042e929190620009d9565b602060405180830381600087803b1580156200044957600080fd5b505af11580156200045e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000484919062000964565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000ddb565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620007a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200079d9062000a06565b60405180910390fd5b620007ba600083836200089860201b60201c565b8060026000828254620007ce919062000a56565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000825919062000a56565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200088c919062000a28565b60405180910390a35050565b505050565b828054620008ab9062000cf7565b90600052602060002090601f016020900481019282620008cf57600085556200091b565b82601f10620008ea57805160ff19168380011785556200091b565b828001600101855582156200091b579182015b828111156200091a578251825591602001919060010190620008fd565b5b5090506200092a91906200092e565b5090565b5b80821115620009495760008160009055506001016200092f565b5090565b6000815190506200095e8162000dc1565b92915050565b6000602082840312156200097757600080fd5b600062000987848285016200094d565b91505092915050565b6200099b8162000cac565b82525050565b6000620009b0601f8362000a45565b9150620009bd8262000d98565b602082019050919050565b620009d38162000ce0565b82525050565b6000604082019050620009f0600083018562000990565b620009ff602083018462000990565b9392505050565b6000602082019050818103600083015262000a2181620009a1565b9050919050565b600060208201905062000a3f6000830184620009c8565b92915050565b600082825260208201905092915050565b600062000a638262000ce0565b915062000a708362000ce0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000aa85762000aa762000d2d565b5b828201905092915050565b6000808291508390505b600185111562000b055780860481111562000add5762000adc62000d2d565b5b600185161562000aed5780820291505b808102905062000afd8562000d8b565b945062000abd565b94509492505050565b600062000b1b8262000ce0565b915062000b288362000cea565b925062000b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b5f565b905092915050565b60008262000b71576001905062000c44565b8162000b81576000905062000c44565b816001811462000b9a576002811462000ba55762000bdb565b600191505062000c44565b60ff84111562000bba5762000bb962000d2d565b5b8360020a91508482111562000bd45762000bd362000d2d565b5b5062000c44565b5060208310610133831016604e8410600b841016171562000c155782820a90508381111562000c0f5762000c0e62000d2d565b5b62000c44565b62000c24848484600162000ab3565b9250905081840481111562000c3e5762000c3d62000d2d565b5b81810290505b9392505050565b600062000c588262000ce0565b915062000c658362000ce0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000ca15762000ca062000d2d565b5b828202905092915050565b600062000cb98262000cc0565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000d1057607f821691505b6020821081141562000d275762000d2662000d5c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b62000dcc8162000cac565b811462000dd857600080fd5b50565b6144b68062000deb6000396000f3fe6080604052600436106102815760003560e01c806375f0a8741161014f578063a9059cbb116100c1578063e01af92c1161007a578063e01af92c146109bd578063e545fd6d146109e6578063e9dae5ed14610a0f578063f2fde38b14610a38578063f66895a314610a61578063f887ea4014610a8e57610288565b8063a9059cbb14610889578063aa4bde28146108c6578063aacebbe3146108f1578063c18bc1951461091a578063dbe66ca014610943578063dd62ed3e1461098057610288565b80638ea5220f116101135780638ea5220f1461077957806395d89b41146107a45780639d0014b1146107cf5780639e252f00146107f8578063a457c2d714610821578063a8aa1b311461085e57610288565b806375f0a874146106a657806382aa7c68146106d15780638c0b5e22146106fa5780638cd4426d146107255780638da5cb5b1461074e57610288565b8063293b7ef4116101f357806350c9a88f116101ac57806350c9a88f146105a65780636256d181146105d15780636ddd1713146105fa57806370a0823114610625578063715018a614610662578063728f8eea1461067957610288565b8063293b7ef414610482578063313ce567146104ad57806339509351146104d85780633bbac5791461051557806340b28c2f146105525780634ada218b1461057b57610288565b806318160ddd1161024557806318160ddd146103725780631816467f1461039d5780632253163d146103c657806323b872dd146103f157806326b5d32f1461042e578063274a533c1461045757610288565b806303c0f5d41461028d5780630445b667146102b657806306fdde03146102e1578063087332141461030c578063095ea7b31461033557610288565b3661028857005b600080fd5b34801561029957600080fd5b506102b460048036038101906102af919061335d565b610ab9565b005b3480156102c257600080fd5b506102cb610b90565b6040516102d89190613bea565b60405180910390f35b3480156102ed57600080fd5b506102f6610b96565b60405161030391906139a8565b60405180910390f35b34801561031857600080fd5b50610333600480360381019061032e919061348c565b610c28565b005b34801561034157600080fd5b5061035c60048036038101906103579190613399565b610d04565b6040516103699190613972565b60405180910390f35b34801561037e57600080fd5b50610387610d22565b6040516103949190613bea565b60405180910390f35b3480156103a957600080fd5b506103c460048036038101906103bf9190613280565b610d2c565b005b3480156103d257600080fd5b506103db610dec565b6040516103e89190613bea565b60405180910390f35b3480156103fd57600080fd5b506104186004803603810190610413919061330e565b610df2565b6040516104259190613972565b60405180910390f35b34801561043a57600080fd5b506104556004803603810190610450919061348c565b610ef3565b005b34801561046357600080fd5b5061046c611080565b6040516104799190613bea565b60405180910390f35b34801561048e57600080fd5b50610497611086565b6040516104a49190613bea565b60405180910390f35b3480156104b957600080fd5b506104c261108c565b6040516104cf9190613c96565b60405180910390f35b3480156104e457600080fd5b506104ff60048036038101906104fa9190613399565b611095565b60405161050c9190613972565b60405180910390f35b34801561052157600080fd5b5061053c60048036038101906105379190613280565b611141565b6040516105499190613972565b60405180910390f35b34801561055e57600080fd5b5061057960048036038101906105749190613427565b611161565b005b34801561058757600080fd5b50610590611263565b60405161059d9190613972565b60405180910390f35b3480156105b257600080fd5b506105bb611276565b6040516105c89190613bea565b60405180910390f35b3480156105dd57600080fd5b506105f860048036038101906105f39190613463565b61127c565b005b34801561060657600080fd5b5061060f611315565b60405161061c9190613972565b60405180910390f35b34801561063157600080fd5b5061064c60048036038101906106479190613280565b611328565b6040516106599190613bea565b60405180910390f35b34801561066e57600080fd5b50610677611370565b005b34801561068557600080fd5b5061068e6113f8565b60405161069d93929190613c5f565b60405180910390f35b3480156106b257600080fd5b506106bb611410565b6040516106c891906138cd565b60405180910390f35b3480156106dd57600080fd5b506106f860048036038101906106f39190613463565b611436565b005b34801561070657600080fd5b5061070f611549565b60405161071c9190613bea565b60405180910390f35b34801561073157600080fd5b5061074c60048036038101906107479190613399565b61154f565b005b34801561075a57600080fd5b50610763611664565b60405161077091906138cd565b60405180910390f35b34801561078557600080fd5b5061078e61168e565b60405161079b91906138cd565b60405180910390f35b3480156107b057600080fd5b506107b96116b4565b6040516107c691906139a8565b60405180910390f35b3480156107db57600080fd5b506107f660048036038101906107f19190613463565b611746565b005b34801561080457600080fd5b5061081f600480360381019061081a9190613463565b6117cc565b005b34801561082d57600080fd5b5061084860048036038101906108439190613399565b61187b565b6040516108559190613972565b60405180910390f35b34801561086a57600080fd5b5061087361196f565b60405161088091906138cd565b60405180910390f35b34801561089557600080fd5b506108b060048036038101906108ab9190613399565b611995565b6040516108bd9190613972565b60405180910390f35b3480156108d257600080fd5b506108db6119b3565b6040516108e89190613bea565b60405180910390f35b3480156108fd57600080fd5b5061091860048036038101906109139190613280565b6119b9565b005b34801561092657600080fd5b50610941600480360381019061093c9190613463565b611a79565b005b34801561094f57600080fd5b5061096a60048036038101906109659190613280565b611b12565b6040516109779190613972565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a291906132d2565b611b32565b6040516109b49190613bea565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df91906133d5565b611bb9565b005b3480156109f257600080fd5b50610a0d6004803603810190610a08919061335d565b611c52565b005b348015610a1b57600080fd5b50610a366004803603810190610a31919061348c565b611d29565b005b348015610a4457600080fd5b50610a5f6004803603810190610a5a9190613280565b611e05565b005b348015610a6d57600080fd5b50610a76611efd565b604051610a8593929190613c5f565b60405180910390f35b348015610a9a57600080fd5b50610aa3611f15565b604051610ab0919061398d565b60405180910390f35b610ac1611f3b565b73ffffffffffffffffffffffffffffffffffffffff16610adf611664565b73ffffffffffffffffffffffffffffffffffffffff1614610b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2c90613b2a565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a5481565b606060038054610ba590613ef6565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd190613ef6565b8015610c1e5780601f10610bf357610100808354040283529160200191610c1e565b820191906000526020600020905b815481529060010190602001808311610c0157829003601f168201915b5050505050905090565b610c30611f3b565b73ffffffffffffffffffffffffffffffffffffffff16610c4e611664565b73ffffffffffffffffffffffffffffffffffffffff1614610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b90613b2a565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506012600082015181600001556020820151816001015560408201518160020155905050808284610cef9190613d11565b610cf99190613d11565b601681905550505050565b6000610d18610d11611f3b565b8484611f43565b6001905092915050565b6000600254905090565b610d34611f3b565b73ffffffffffffffffffffffffffffffffffffffff16610d52611664565b73ffffffffffffffffffffffffffffffffffffffff1614610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f90613b2a565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b6000610dff84848461210e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e4a611f3b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec190613b0a565b60405180910390fd5b610ee785610ed6611f3b565b8584610ee29190613df2565b611f43565b60019150509392505050565b610efb611f3b565b73ffffffffffffffffffffffffffffffffffffffff16610f19611664565b73ffffffffffffffffffffffffffffffffffffffff1614610f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6690613b2a565b60405180910390fd5b6000479050610f7d846127d8565b60008147610f8b9190613df2565b90506000831115611003576110028385610fa59190613d11565b8483610fb19190613d98565b610fbb9190613d67565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a9c90919063ffffffff16565b5b600084111561107957611078838561101b9190613d11565b85836110279190613d98565b6110319190613d67565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a9c90919063ffffffff16565b5b5050505050565b60085481565b60155481565b60006012905090565b60006111376110a2611f3b565b8484600160006110b0611f3b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111329190613d11565b611f43565b6001905092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b611169611f3b565b73ffffffffffffffffffffffffffffffffffffffff16611187611664565b73ffffffffffffffffffffffffffffffffffffffff16146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d490613b2a565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b60095481565b611284611f3b565b73ffffffffffffffffffffffffffffffffffffffff166112a2611664565b73ffffffffffffffffffffffffffffffffffffffff16146112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef90613b2a565b60405180910390fd5b670de0b6b3a76400008161130c9190613d98565b600b8190555050565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611378611f3b565b73ffffffffffffffffffffffffffffffffffffffff16611396611664565b73ffffffffffffffffffffffffffffffffffffffff16146113ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e390613b2a565b60405180910390fd5b6113f66000612b90565b565b600f8060000154908060010154908060020154905083565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61143e611f3b565b73ffffffffffffffffffffffffffffffffffffffff1661145c611664565b73ffffffffffffffffffffffffffffffffffffffff16146114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990613b2a565b60405180910390fd5b600760169054906101000a900460ff1615611502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f9906139ca565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b611557611f3b565b73ffffffffffffffffffffffffffffffffffffffff16611575611664565b73ffffffffffffffffffffffffffffffffffffffff16146115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c290613b2a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6115ef611664565b836040518363ffffffff1660e01b815260040161160d9291906138e8565b602060405180830381600087803b15801561162757600080fd5b505af115801561163b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165f91906133fe565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546116c390613ef6565b80601f01602080910402602001604051908101604052809291908181526020018280546116ef90613ef6565b801561173c5780601f106117115761010080835404028352916020019161173c565b820191906000526020600020905b81548152906001019060200180831161171f57829003601f168201915b5050505050905090565b61174e611f3b565b73ffffffffffffffffffffffffffffffffffffffff1661176c611664565b73ffffffffffffffffffffffffffffffffffffffff16146117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b990613b2a565b60405180910390fd5b80600a8190555050565b6117d4611f3b565b73ffffffffffffffffffffffffffffffffffffffff166117f2611664565b73ffffffffffffffffffffffffffffffffffffffff1614611848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183f90613b2a565b60405180910390fd5b61187881611854611664565b73ffffffffffffffffffffffffffffffffffffffff16612a9c90919063ffffffff16565b50565b6000806001600061188a611f3b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193e90613bca565b60405180910390fd5b611964611952611f3b565b85858461195f9190613df2565b611f43565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119a96119a2611f3b565b848461210e565b6001905092915050565b600c5481565b6119c1611f3b565b73ffffffffffffffffffffffffffffffffffffffff166119df611664565b73ffffffffffffffffffffffffffffffffffffffff1614611a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2c90613b2a565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a81611f3b565b73ffffffffffffffffffffffffffffffffffffffff16611a9f611664565b73ffffffffffffffffffffffffffffffffffffffff1614611af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aec90613b2a565b60405180910390fd5b670de0b6b3a764000081611b099190613d98565b600c8190555050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611bc1611f3b565b73ffffffffffffffffffffffffffffffffffffffff16611bdf611664565b73ffffffffffffffffffffffffffffffffffffffff1614611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2c90613b2a565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611c5a611f3b565b73ffffffffffffffffffffffffffffffffffffffff16611c78611664565b73ffffffffffffffffffffffffffffffffffffffff1614611cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc590613b2a565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d31611f3b565b73ffffffffffffffffffffffffffffffffffffffff16611d4f611664565b73ffffffffffffffffffffffffffffffffffffffff1614611da5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9c90613b2a565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f600082015181600001556020820151816001015560408201518160020155905050808284611df09190613d11565b611dfa9190613d11565b601581905550505050565b611e0d611f3b565b73ffffffffffffffffffffffffffffffffffffffff16611e2b611664565b73ffffffffffffffffffffffffffffffffffffffff1614611e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7890613b2a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee890613a4a565b60405180910390fd5b611efa81612b90565b50565b60128060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faa90613baa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201a90613a6a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121019190613bea565b60405180910390a3505050565b60008111612151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214890613b4a565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121f55750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222b90613b6a565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122d85750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122f15750600760149054906101000a900460ff16155b156125ad57600760169054906101000a900460ff16612345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233c90613a2a565b60405180910390fd5b436009546008546123569190613d11565b11156124b957600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461240a576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146124b8576001601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600b548111156124fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f590613a0a565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125ac57600c548161256084611328565b61256a9190613d11565b11156125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a290613aaa565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806126135750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806126675750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612675576000905061270a565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126ec576064601654836126db9190613d98565b6126e59190613d67565b9050612709565b6064601554836126fc9190613d98565b6127069190613d67565b90505b5b600760159054906101000a900460ff1680156127335750600760149054906101000a900460ff16155b801561278d5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127995750600081115b156127a7576127a6612c56565b5b6127bd848483856127b89190613df2565b612e5a565b60008111156127d2576127d1843083612e5a565b5b50505050565b6000600267ffffffffffffffff81111561281b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156128495781602001602082028036833780820191505090505b5090503081600081518110612887577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561292957600080fd5b505afa15801561293d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061296191906132a9565b8160018151811061299b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a0230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f43565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a66959493929190613c05565b600060405180830381600087803b158015612a8057600080fd5b505af1158015612a94573d6000803e3d6000fd5b505050505050565b80471015612adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad690613aea565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612b05906138b8565b60006040518083038185875af1925050503d8060008114612b42576040519150601f19603f3d011682016040523d82523d6000602084013e612b47565b606091505b5050905080612b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8290613aca565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612e58576001600760146101000a81548160ff0219169083151502179055506000612c9030611328565b9050600a548110612e3b5760006002601654612cac9190613d98565b905060008160126001015484612cc29190613d98565b612ccc9190613d67565b905060008184612cdc9190613df2565b90506000479050612cec826127d8565b60008147612cfa9190613df2565b9050600060126001015486612d0f9190613df2565b82612d1a9190613d67565b9050600060126001015482612d2f9190613d98565b90506000811115612d4557612d4486826130d9565b5b6000601260000154600284612d5a9190613d98565b612d649190613d98565b90506000811115612dbb57612dba81600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a9c90919063ffffffff16565b5b6000601260020154600285612dd09190613d98565b612dda9190613d98565b90506000811115612e3157612e3081600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a9c90919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec190613b8a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f31906139ea565b60405180910390fd5b612f458383836131e8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc290613a8a565b60405180910390fd5b8181612fd79190613df2565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130679190613d11565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130cb9190613bea565b60405180910390a350505050565b61310630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f43565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161318f96959493929190613911565b6060604051808303818588803b1580156131a857600080fd5b505af11580156131bc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131e191906134db565b5050505050565b505050565b6000813590506131fc81614424565b92915050565b60008151905061321181614424565b92915050565b6000813590506132268161443b565b92915050565b60008151905061323b8161443b565b92915050565b60008135905061325081614452565b92915050565b60008135905061326581614469565b92915050565b60008151905061327a81614469565b92915050565b60006020828403121561329257600080fd5b60006132a0848285016131ed565b91505092915050565b6000602082840312156132bb57600080fd5b60006132c984828501613202565b91505092915050565b600080604083850312156132e557600080fd5b60006132f3858286016131ed565b9250506020613304858286016131ed565b9150509250929050565b60008060006060848603121561332357600080fd5b6000613331868287016131ed565b9350506020613342868287016131ed565b925050604061335386828701613256565b9150509250925092565b6000806040838503121561337057600080fd5b600061337e858286016131ed565b925050602061338f85828601613217565b9150509250929050565b600080604083850312156133ac57600080fd5b60006133ba858286016131ed565b92505060206133cb85828601613256565b9150509250929050565b6000602082840312156133e757600080fd5b60006133f584828501613217565b91505092915050565b60006020828403121561341057600080fd5b600061341e8482850161322c565b91505092915050565b6000806040838503121561343a57600080fd5b600061344885828601613241565b9250506020613459858286016131ed565b9150509250929050565b60006020828403121561347557600080fd5b600061348384828501613256565b91505092915050565b6000806000606084860312156134a157600080fd5b60006134af86828701613256565b93505060206134c086828701613256565b92505060406134d186828701613256565b9150509250925092565b6000806000606084860312156134f057600080fd5b60006134fe8682870161326b565b935050602061350f8682870161326b565b92505060406135208682870161326b565b9150509250925092565b60006135368383613542565b60208301905092915050565b61354b81613e26565b82525050565b61355a81613e26565b82525050565b600061356b82613cc1565b6135758185613ce4565b935061358083613cb1565b8060005b838110156135b1578151613598888261352a565b97506135a383613cd7565b925050600181019050613584565b5085935050505092915050565b6135c781613e38565b82525050565b6135d681613e8d565b82525050565b6135e581613eb1565b82525050565b60006135f682613ccc565b6136008185613d00565b9350613610818560208601613ec3565b61361981613fb5565b840191505092915050565b6000613631601683613d00565b915061363c82613fc6565b602082019050919050565b6000613654602383613d00565b915061365f82613fef565b604082019050919050565b6000613677601d83613d00565b91506136828261403e565b602082019050919050565b600061369a601683613d00565b91506136a582614067565b602082019050919050565b60006136bd602683613d00565b91506136c882614090565b604082019050919050565b60006136e0602283613d00565b91506136eb826140df565b604082019050919050565b6000613703602683613d00565b915061370e8261412e565b604082019050919050565b6000613726602183613d00565b91506137318261417d565b604082019050919050565b6000613749603a83613d00565b9150613754826141cc565b604082019050919050565b600061376c601d83613d00565b91506137778261421b565b602082019050919050565b600061378f602883613d00565b915061379a82614244565b604082019050919050565b60006137b2602083613d00565b91506137bd82614293565b602082019050919050565b60006137d5602983613d00565b91506137e0826142bc565b604082019050919050565b60006137f8601983613d00565b91506138038261430b565b602082019050919050565b600061381b602583613d00565b915061382682614334565b604082019050919050565b600061383e600083613cf5565b915061384982614383565b600082019050919050565b6000613861602483613d00565b915061386c82614386565b604082019050919050565b6000613884602583613d00565b915061388f826143d5565b604082019050919050565b6138a381613e76565b82525050565b6138b281613e80565b82525050565b60006138c382613831565b9150819050919050565b60006020820190506138e26000830184613551565b92915050565b60006040820190506138fd6000830185613551565b61390a602083018461389a565b9392505050565b600060c0820190506139266000830189613551565b613933602083018861389a565b61394060408301876135dc565b61394d60608301866135dc565b61395a6080830185613551565b61396760a083018461389a565b979650505050505050565b600060208201905061398760008301846135be565b92915050565b60006020820190506139a260008301846135cd565b92915050565b600060208201905081810360008301526139c281846135eb565b905092915050565b600060208201905081810360008301526139e381613624565b9050919050565b60006020820190508181036000830152613a0381613647565b9050919050565b60006020820190508181036000830152613a238161366a565b9050919050565b60006020820190508181036000830152613a438161368d565b9050919050565b60006020820190508181036000830152613a63816136b0565b9050919050565b60006020820190508181036000830152613a83816136d3565b9050919050565b60006020820190508181036000830152613aa3816136f6565b9050919050565b60006020820190508181036000830152613ac381613719565b9050919050565b60006020820190508181036000830152613ae38161373c565b9050919050565b60006020820190508181036000830152613b038161375f565b9050919050565b60006020820190508181036000830152613b2381613782565b9050919050565b60006020820190508181036000830152613b43816137a5565b9050919050565b60006020820190508181036000830152613b63816137c8565b9050919050565b60006020820190508181036000830152613b83816137eb565b9050919050565b60006020820190508181036000830152613ba38161380e565b9050919050565b60006020820190508181036000830152613bc381613854565b9050919050565b60006020820190508181036000830152613be381613877565b9050919050565b6000602082019050613bff600083018461389a565b92915050565b600060a082019050613c1a600083018861389a565b613c2760208301876135dc565b8181036040830152613c398186613560565b9050613c486060830185613551565b613c55608083018461389a565b9695505050505050565b6000606082019050613c74600083018661389a565b613c81602083018561389a565b613c8e604083018461389a565b949350505050565b6000602082019050613cab60008301846138a9565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613d1c82613e76565b9150613d2783613e76565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613d5c57613d5b613f28565b5b828201905092915050565b6000613d7282613e76565b9150613d7d83613e76565b925082613d8d57613d8c613f57565b5b828204905092915050565b6000613da382613e76565b9150613dae83613e76565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613de757613de6613f28565b5b828202905092915050565b6000613dfd82613e76565b9150613e0883613e76565b925082821015613e1b57613e1a613f28565b5b828203905092915050565b6000613e3182613e56565b9050919050565b60008115159050919050565b6000613e4f82613e26565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613e9882613e9f565b9050919050565b6000613eaa82613e56565b9050919050565b6000613ebc82613e76565b9050919050565b60005b83811015613ee1578082015181840152602081019050613ec6565b83811115613ef0576000848401525b50505050565b60006002820490506001821680613f0e57607f821691505b60208210811415613f2257613f21613f86565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61442d81613e26565b811461443857600080fd5b50565b61444481613e38565b811461444f57600080fd5b50565b61445b81613e44565b811461446657600080fd5b50565b61447281613e76565b811461447d57600080fd5b5056fea26469706673582212204f56e29387c3f3ccfc06acddfd5cc20e24bf8a9d0646e5ead6b58789bc758a7564736f6c63430008030033

Deployed Bytecode

0x6080604052600436106102815760003560e01c806375f0a8741161014f578063a9059cbb116100c1578063e01af92c1161007a578063e01af92c146109bd578063e545fd6d146109e6578063e9dae5ed14610a0f578063f2fde38b14610a38578063f66895a314610a61578063f887ea4014610a8e57610288565b8063a9059cbb14610889578063aa4bde28146108c6578063aacebbe3146108f1578063c18bc1951461091a578063dbe66ca014610943578063dd62ed3e1461098057610288565b80638ea5220f116101135780638ea5220f1461077957806395d89b41146107a45780639d0014b1146107cf5780639e252f00146107f8578063a457c2d714610821578063a8aa1b311461085e57610288565b806375f0a874146106a657806382aa7c68146106d15780638c0b5e22146106fa5780638cd4426d146107255780638da5cb5b1461074e57610288565b8063293b7ef4116101f357806350c9a88f116101ac57806350c9a88f146105a65780636256d181146105d15780636ddd1713146105fa57806370a0823114610625578063715018a614610662578063728f8eea1461067957610288565b8063293b7ef414610482578063313ce567146104ad57806339509351146104d85780633bbac5791461051557806340b28c2f146105525780634ada218b1461057b57610288565b806318160ddd1161024557806318160ddd146103725780631816467f1461039d5780632253163d146103c657806323b872dd146103f157806326b5d32f1461042e578063274a533c1461045757610288565b806303c0f5d41461028d5780630445b667146102b657806306fdde03146102e1578063087332141461030c578063095ea7b31461033557610288565b3661028857005b600080fd5b34801561029957600080fd5b506102b460048036038101906102af919061335d565b610ab9565b005b3480156102c257600080fd5b506102cb610b90565b6040516102d89190613bea565b60405180910390f35b3480156102ed57600080fd5b506102f6610b96565b60405161030391906139a8565b60405180910390f35b34801561031857600080fd5b50610333600480360381019061032e919061348c565b610c28565b005b34801561034157600080fd5b5061035c60048036038101906103579190613399565b610d04565b6040516103699190613972565b60405180910390f35b34801561037e57600080fd5b50610387610d22565b6040516103949190613bea565b60405180910390f35b3480156103a957600080fd5b506103c460048036038101906103bf9190613280565b610d2c565b005b3480156103d257600080fd5b506103db610dec565b6040516103e89190613bea565b60405180910390f35b3480156103fd57600080fd5b506104186004803603810190610413919061330e565b610df2565b6040516104259190613972565b60405180910390f35b34801561043a57600080fd5b506104556004803603810190610450919061348c565b610ef3565b005b34801561046357600080fd5b5061046c611080565b6040516104799190613bea565b60405180910390f35b34801561048e57600080fd5b50610497611086565b6040516104a49190613bea565b60405180910390f35b3480156104b957600080fd5b506104c261108c565b6040516104cf9190613c96565b60405180910390f35b3480156104e457600080fd5b506104ff60048036038101906104fa9190613399565b611095565b60405161050c9190613972565b60405180910390f35b34801561052157600080fd5b5061053c60048036038101906105379190613280565b611141565b6040516105499190613972565b60405180910390f35b34801561055e57600080fd5b5061057960048036038101906105749190613427565b611161565b005b34801561058757600080fd5b50610590611263565b60405161059d9190613972565b60405180910390f35b3480156105b257600080fd5b506105bb611276565b6040516105c89190613bea565b60405180910390f35b3480156105dd57600080fd5b506105f860048036038101906105f39190613463565b61127c565b005b34801561060657600080fd5b5061060f611315565b60405161061c9190613972565b60405180910390f35b34801561063157600080fd5b5061064c60048036038101906106479190613280565b611328565b6040516106599190613bea565b60405180910390f35b34801561066e57600080fd5b50610677611370565b005b34801561068557600080fd5b5061068e6113f8565b60405161069d93929190613c5f565b60405180910390f35b3480156106b257600080fd5b506106bb611410565b6040516106c891906138cd565b60405180910390f35b3480156106dd57600080fd5b506106f860048036038101906106f39190613463565b611436565b005b34801561070657600080fd5b5061070f611549565b60405161071c9190613bea565b60405180910390f35b34801561073157600080fd5b5061074c60048036038101906107479190613399565b61154f565b005b34801561075a57600080fd5b50610763611664565b60405161077091906138cd565b60405180910390f35b34801561078557600080fd5b5061078e61168e565b60405161079b91906138cd565b60405180910390f35b3480156107b057600080fd5b506107b96116b4565b6040516107c691906139a8565b60405180910390f35b3480156107db57600080fd5b506107f660048036038101906107f19190613463565b611746565b005b34801561080457600080fd5b5061081f600480360381019061081a9190613463565b6117cc565b005b34801561082d57600080fd5b5061084860048036038101906108439190613399565b61187b565b6040516108559190613972565b60405180910390f35b34801561086a57600080fd5b5061087361196f565b60405161088091906138cd565b60405180910390f35b34801561089557600080fd5b506108b060048036038101906108ab9190613399565b611995565b6040516108bd9190613972565b60405180910390f35b3480156108d257600080fd5b506108db6119b3565b6040516108e89190613bea565b60405180910390f35b3480156108fd57600080fd5b5061091860048036038101906109139190613280565b6119b9565b005b34801561092657600080fd5b50610941600480360381019061093c9190613463565b611a79565b005b34801561094f57600080fd5b5061096a60048036038101906109659190613280565b611b12565b6040516109779190613972565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a291906132d2565b611b32565b6040516109b49190613bea565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df91906133d5565b611bb9565b005b3480156109f257600080fd5b50610a0d6004803603810190610a08919061335d565b611c52565b005b348015610a1b57600080fd5b50610a366004803603810190610a31919061348c565b611d29565b005b348015610a4457600080fd5b50610a5f6004803603810190610a5a9190613280565b611e05565b005b348015610a6d57600080fd5b50610a76611efd565b604051610a8593929190613c5f565b60405180910390f35b348015610a9a57600080fd5b50610aa3611f15565b604051610ab0919061398d565b60405180910390f35b610ac1611f3b565b73ffffffffffffffffffffffffffffffffffffffff16610adf611664565b73ffffffffffffffffffffffffffffffffffffffff1614610b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2c90613b2a565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a5481565b606060038054610ba590613ef6565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd190613ef6565b8015610c1e5780601f10610bf357610100808354040283529160200191610c1e565b820191906000526020600020905b815481529060010190602001808311610c0157829003601f168201915b5050505050905090565b610c30611f3b565b73ffffffffffffffffffffffffffffffffffffffff16610c4e611664565b73ffffffffffffffffffffffffffffffffffffffff1614610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b90613b2a565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506012600082015181600001556020820151816001015560408201518160020155905050808284610cef9190613d11565b610cf99190613d11565b601681905550505050565b6000610d18610d11611f3b565b8484611f43565b6001905092915050565b6000600254905090565b610d34611f3b565b73ffffffffffffffffffffffffffffffffffffffff16610d52611664565b73ffffffffffffffffffffffffffffffffffffffff1614610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f90613b2a565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b6000610dff84848461210e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e4a611f3b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec190613b0a565b60405180910390fd5b610ee785610ed6611f3b565b8584610ee29190613df2565b611f43565b60019150509392505050565b610efb611f3b565b73ffffffffffffffffffffffffffffffffffffffff16610f19611664565b73ffffffffffffffffffffffffffffffffffffffff1614610f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6690613b2a565b60405180910390fd5b6000479050610f7d846127d8565b60008147610f8b9190613df2565b90506000831115611003576110028385610fa59190613d11565b8483610fb19190613d98565b610fbb9190613d67565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a9c90919063ffffffff16565b5b600084111561107957611078838561101b9190613d11565b85836110279190613d98565b6110319190613d67565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a9c90919063ffffffff16565b5b5050505050565b60085481565b60155481565b60006012905090565b60006111376110a2611f3b565b8484600160006110b0611f3b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111329190613d11565b611f43565b6001905092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b611169611f3b565b73ffffffffffffffffffffffffffffffffffffffff16611187611664565b73ffffffffffffffffffffffffffffffffffffffff16146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d490613b2a565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b60095481565b611284611f3b565b73ffffffffffffffffffffffffffffffffffffffff166112a2611664565b73ffffffffffffffffffffffffffffffffffffffff16146112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef90613b2a565b60405180910390fd5b670de0b6b3a76400008161130c9190613d98565b600b8190555050565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611378611f3b565b73ffffffffffffffffffffffffffffffffffffffff16611396611664565b73ffffffffffffffffffffffffffffffffffffffff16146113ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e390613b2a565b60405180910390fd5b6113f66000612b90565b565b600f8060000154908060010154908060020154905083565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61143e611f3b565b73ffffffffffffffffffffffffffffffffffffffff1661145c611664565b73ffffffffffffffffffffffffffffffffffffffff16146114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990613b2a565b60405180910390fd5b600760169054906101000a900460ff1615611502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f9906139ca565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b611557611f3b565b73ffffffffffffffffffffffffffffffffffffffff16611575611664565b73ffffffffffffffffffffffffffffffffffffffff16146115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c290613b2a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6115ef611664565b836040518363ffffffff1660e01b815260040161160d9291906138e8565b602060405180830381600087803b15801561162757600080fd5b505af115801561163b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165f91906133fe565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546116c390613ef6565b80601f01602080910402602001604051908101604052809291908181526020018280546116ef90613ef6565b801561173c5780601f106117115761010080835404028352916020019161173c565b820191906000526020600020905b81548152906001019060200180831161171f57829003601f168201915b5050505050905090565b61174e611f3b565b73ffffffffffffffffffffffffffffffffffffffff1661176c611664565b73ffffffffffffffffffffffffffffffffffffffff16146117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b990613b2a565b60405180910390fd5b80600a8190555050565b6117d4611f3b565b73ffffffffffffffffffffffffffffffffffffffff166117f2611664565b73ffffffffffffffffffffffffffffffffffffffff1614611848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183f90613b2a565b60405180910390fd5b61187881611854611664565b73ffffffffffffffffffffffffffffffffffffffff16612a9c90919063ffffffff16565b50565b6000806001600061188a611f3b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193e90613bca565b60405180910390fd5b611964611952611f3b565b85858461195f9190613df2565b611f43565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119a96119a2611f3b565b848461210e565b6001905092915050565b600c5481565b6119c1611f3b565b73ffffffffffffffffffffffffffffffffffffffff166119df611664565b73ffffffffffffffffffffffffffffffffffffffff1614611a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2c90613b2a565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a81611f3b565b73ffffffffffffffffffffffffffffffffffffffff16611a9f611664565b73ffffffffffffffffffffffffffffffffffffffff1614611af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aec90613b2a565b60405180910390fd5b670de0b6b3a764000081611b099190613d98565b600c8190555050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611bc1611f3b565b73ffffffffffffffffffffffffffffffffffffffff16611bdf611664565b73ffffffffffffffffffffffffffffffffffffffff1614611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2c90613b2a565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611c5a611f3b565b73ffffffffffffffffffffffffffffffffffffffff16611c78611664565b73ffffffffffffffffffffffffffffffffffffffff1614611cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc590613b2a565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d31611f3b565b73ffffffffffffffffffffffffffffffffffffffff16611d4f611664565b73ffffffffffffffffffffffffffffffffffffffff1614611da5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9c90613b2a565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f600082015181600001556020820151816001015560408201518160020155905050808284611df09190613d11565b611dfa9190613d11565b601581905550505050565b611e0d611f3b565b73ffffffffffffffffffffffffffffffffffffffff16611e2b611664565b73ffffffffffffffffffffffffffffffffffffffff1614611e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7890613b2a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee890613a4a565b60405180910390fd5b611efa81612b90565b50565b60128060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faa90613baa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201a90613a6a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121019190613bea565b60405180910390a3505050565b60008111612151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214890613b4a565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121f55750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222b90613b6a565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122d85750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122f15750600760149054906101000a900460ff16155b156125ad57600760169054906101000a900460ff16612345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233c90613a2a565b60405180910390fd5b436009546008546123569190613d11565b11156124b957600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461240a576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146124b8576001601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600b548111156124fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f590613a0a565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125ac57600c548161256084611328565b61256a9190613d11565b11156125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a290613aaa565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806126135750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806126675750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612675576000905061270a565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126ec576064601654836126db9190613d98565b6126e59190613d67565b9050612709565b6064601554836126fc9190613d98565b6127069190613d67565b90505b5b600760159054906101000a900460ff1680156127335750600760149054906101000a900460ff16155b801561278d5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127995750600081115b156127a7576127a6612c56565b5b6127bd848483856127b89190613df2565b612e5a565b60008111156127d2576127d1843083612e5a565b5b50505050565b6000600267ffffffffffffffff81111561281b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156128495781602001602082028036833780820191505090505b5090503081600081518110612887577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561292957600080fd5b505afa15801561293d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061296191906132a9565b8160018151811061299b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a0230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f43565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a66959493929190613c05565b600060405180830381600087803b158015612a8057600080fd5b505af1158015612a94573d6000803e3d6000fd5b505050505050565b80471015612adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad690613aea565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612b05906138b8565b60006040518083038185875af1925050503d8060008114612b42576040519150601f19603f3d011682016040523d82523d6000602084013e612b47565b606091505b5050905080612b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8290613aca565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612e58576001600760146101000a81548160ff0219169083151502179055506000612c9030611328565b9050600a548110612e3b5760006002601654612cac9190613d98565b905060008160126001015484612cc29190613d98565b612ccc9190613d67565b905060008184612cdc9190613df2565b90506000479050612cec826127d8565b60008147612cfa9190613df2565b9050600060126001015486612d0f9190613df2565b82612d1a9190613d67565b9050600060126001015482612d2f9190613d98565b90506000811115612d4557612d4486826130d9565b5b6000601260000154600284612d5a9190613d98565b612d649190613d98565b90506000811115612dbb57612dba81600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a9c90919063ffffffff16565b5b6000601260020154600285612dd09190613d98565b612dda9190613d98565b90506000811115612e3157612e3081600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a9c90919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec190613b8a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f31906139ea565b60405180910390fd5b612f458383836131e8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc290613a8a565b60405180910390fd5b8181612fd79190613df2565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130679190613d11565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130cb9190613bea565b60405180910390a350505050565b61310630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f43565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161318f96959493929190613911565b6060604051808303818588803b1580156131a857600080fd5b505af11580156131bc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131e191906134db565b5050505050565b505050565b6000813590506131fc81614424565b92915050565b60008151905061321181614424565b92915050565b6000813590506132268161443b565b92915050565b60008151905061323b8161443b565b92915050565b60008135905061325081614452565b92915050565b60008135905061326581614469565b92915050565b60008151905061327a81614469565b92915050565b60006020828403121561329257600080fd5b60006132a0848285016131ed565b91505092915050565b6000602082840312156132bb57600080fd5b60006132c984828501613202565b91505092915050565b600080604083850312156132e557600080fd5b60006132f3858286016131ed565b9250506020613304858286016131ed565b9150509250929050565b60008060006060848603121561332357600080fd5b6000613331868287016131ed565b9350506020613342868287016131ed565b925050604061335386828701613256565b9150509250925092565b6000806040838503121561337057600080fd5b600061337e858286016131ed565b925050602061338f85828601613217565b9150509250929050565b600080604083850312156133ac57600080fd5b60006133ba858286016131ed565b92505060206133cb85828601613256565b9150509250929050565b6000602082840312156133e757600080fd5b60006133f584828501613217565b91505092915050565b60006020828403121561341057600080fd5b600061341e8482850161322c565b91505092915050565b6000806040838503121561343a57600080fd5b600061344885828601613241565b9250506020613459858286016131ed565b9150509250929050565b60006020828403121561347557600080fd5b600061348384828501613256565b91505092915050565b6000806000606084860312156134a157600080fd5b60006134af86828701613256565b93505060206134c086828701613256565b92505060406134d186828701613256565b9150509250925092565b6000806000606084860312156134f057600080fd5b60006134fe8682870161326b565b935050602061350f8682870161326b565b92505060406135208682870161326b565b9150509250925092565b60006135368383613542565b60208301905092915050565b61354b81613e26565b82525050565b61355a81613e26565b82525050565b600061356b82613cc1565b6135758185613ce4565b935061358083613cb1565b8060005b838110156135b1578151613598888261352a565b97506135a383613cd7565b925050600181019050613584565b5085935050505092915050565b6135c781613e38565b82525050565b6135d681613e8d565b82525050565b6135e581613eb1565b82525050565b60006135f682613ccc565b6136008185613d00565b9350613610818560208601613ec3565b61361981613fb5565b840191505092915050565b6000613631601683613d00565b915061363c82613fc6565b602082019050919050565b6000613654602383613d00565b915061365f82613fef565b604082019050919050565b6000613677601d83613d00565b91506136828261403e565b602082019050919050565b600061369a601683613d00565b91506136a582614067565b602082019050919050565b60006136bd602683613d00565b91506136c882614090565b604082019050919050565b60006136e0602283613d00565b91506136eb826140df565b604082019050919050565b6000613703602683613d00565b915061370e8261412e565b604082019050919050565b6000613726602183613d00565b91506137318261417d565b604082019050919050565b6000613749603a83613d00565b9150613754826141cc565b604082019050919050565b600061376c601d83613d00565b91506137778261421b565b602082019050919050565b600061378f602883613d00565b915061379a82614244565b604082019050919050565b60006137b2602083613d00565b91506137bd82614293565b602082019050919050565b60006137d5602983613d00565b91506137e0826142bc565b604082019050919050565b60006137f8601983613d00565b91506138038261430b565b602082019050919050565b600061381b602583613d00565b915061382682614334565b604082019050919050565b600061383e600083613cf5565b915061384982614383565b600082019050919050565b6000613861602483613d00565b915061386c82614386565b604082019050919050565b6000613884602583613d00565b915061388f826143d5565b604082019050919050565b6138a381613e76565b82525050565b6138b281613e80565b82525050565b60006138c382613831565b9150819050919050565b60006020820190506138e26000830184613551565b92915050565b60006040820190506138fd6000830185613551565b61390a602083018461389a565b9392505050565b600060c0820190506139266000830189613551565b613933602083018861389a565b61394060408301876135dc565b61394d60608301866135dc565b61395a6080830185613551565b61396760a083018461389a565b979650505050505050565b600060208201905061398760008301846135be565b92915050565b60006020820190506139a260008301846135cd565b92915050565b600060208201905081810360008301526139c281846135eb565b905092915050565b600060208201905081810360008301526139e381613624565b9050919050565b60006020820190508181036000830152613a0381613647565b9050919050565b60006020820190508181036000830152613a238161366a565b9050919050565b60006020820190508181036000830152613a438161368d565b9050919050565b60006020820190508181036000830152613a63816136b0565b9050919050565b60006020820190508181036000830152613a83816136d3565b9050919050565b60006020820190508181036000830152613aa3816136f6565b9050919050565b60006020820190508181036000830152613ac381613719565b9050919050565b60006020820190508181036000830152613ae38161373c565b9050919050565b60006020820190508181036000830152613b038161375f565b9050919050565b60006020820190508181036000830152613b2381613782565b9050919050565b60006020820190508181036000830152613b43816137a5565b9050919050565b60006020820190508181036000830152613b63816137c8565b9050919050565b60006020820190508181036000830152613b83816137eb565b9050919050565b60006020820190508181036000830152613ba38161380e565b9050919050565b60006020820190508181036000830152613bc381613854565b9050919050565b60006020820190508181036000830152613be381613877565b9050919050565b6000602082019050613bff600083018461389a565b92915050565b600060a082019050613c1a600083018861389a565b613c2760208301876135dc565b8181036040830152613c398186613560565b9050613c486060830185613551565b613c55608083018461389a565b9695505050505050565b6000606082019050613c74600083018661389a565b613c81602083018561389a565b613c8e604083018461389a565b949350505050565b6000602082019050613cab60008301846138a9565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613d1c82613e76565b9150613d2783613e76565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613d5c57613d5b613f28565b5b828201905092915050565b6000613d7282613e76565b9150613d7d83613e76565b925082613d8d57613d8c613f57565b5b828204905092915050565b6000613da382613e76565b9150613dae83613e76565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613de757613de6613f28565b5b828202905092915050565b6000613dfd82613e76565b9150613e0883613e76565b925082821015613e1b57613e1a613f28565b5b828203905092915050565b6000613e3182613e56565b9050919050565b60008115159050919050565b6000613e4f82613e26565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613e9882613e9f565b9050919050565b6000613eaa82613e56565b9050919050565b6000613ebc82613e76565b9050919050565b60005b83811015613ee1578082015181840152602081019050613ec6565b83811115613ef0576000848401525b50505050565b60006002820490506001821680613f0e57607f821691505b60208210811415613f2257613f21613f86565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61442d81613e26565b811461443857600080fd5b50565b61444481613e38565b811461444f57600080fd5b50565b61445b81613e44565b811461446657600080fd5b50565b61447281613e76565b811461447d57600080fd5b5056fea26469706673582212204f56e29387c3f3ccfc06acddfd5cc20e24bf8a9d0646e5ead6b58789bc758a7564736f6c63430008030033

Deployed Bytecode Sourcemap

13231:8333:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20178:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13543:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2437:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19567:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4604:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3557:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19919:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14119:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5255:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20954:546;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13466:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14087:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3399:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6086:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14217:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20029:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13431:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13501:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20438:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13401:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3728:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12008:94;;;;;;;;;;;;;:::i;:::-;;14003:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13727:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19075:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13599:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20684:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11785:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13809:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2656:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18957:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20834:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6804:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13347:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4068:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13658:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19793:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20559:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14161:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4306:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18856:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20292:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19357:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12110:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14043:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13319:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20178:106;11931:12;:10;:12::i;:::-;11920:23;;:7;:5;:7::i;:::-;:23;;;11912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20271:5:::1;20254;:14;20260:7;20254:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;20178:106:::0;;:::o;13543:49::-;;;;:::o;2437:100::-;2491:13;2524:5;2517:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2437:100;:::o;19567:214::-;11931:12;:10;:12::i;:::-;11920:23;;:7;:5;:7::i;:::-;:23;;;11912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19684:35:::1;;;;;;;;19690:10;19684:35;;;;19702:10;19684:35;;;;19714:4;19684:35;;::::0;19672:9:::1;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;19769:4;19756:10;19743;:23;;;;:::i;:::-;:30;;;;:::i;:::-;19730:10;:43;;;;19567:214:::0;;;:::o;4604:169::-;4687:4;4704:39;4713:12;:10;:12::i;:::-;4727:7;4736:6;4704:8;:39::i;:::-;4761:4;4754:11;;4604:169;;;;:::o;3557:108::-;3618:7;3645:12;;3638:19;;3557:108;:::o;19919:102::-;11931:12;:10;:12::i;:::-;11920:23;;:7;:5;:7::i;:::-;:23;;;11912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20004:9:::1;19992;;:21;;;;;;;;;;;;;;;;;;19919:102:::0;:::o;14119:29::-;;;;:::o;5255:422::-;5361:4;5378:36;5388:6;5396:9;5407:6;5378:9;:36::i;:::-;5427:24;5454:11;:19;5466:6;5454:19;;;;;;;;;;;;;;;:33;5474:12;:10;:12::i;:::-;5454:33;;;;;;;;;;;;;;;;5427:60;;5526:6;5506:16;:26;;5498:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5588:57;5597:6;5605:12;:10;:12::i;:::-;5638:6;5619:16;:25;;;;:::i;:::-;5588:8;:57::i;:::-;5665:4;5658:11;;;5255:422;;;;;:::o;20954:546::-;11931:12;:10;:12::i;:::-;11920:23;;:7;:5;:7::i;:::-;:23;;;11912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21071:19:::1;21093:21;21071:43;;21125:24;21142:6;21125:16;:24::i;:::-;21160:18;21205:11;21181:21;:35;;;;:::i;:::-;21160:56;;21252:1;21230:19;:23;21227:136;;;21255:108;21342:19;21326:13;:35;;;;:::i;:::-;21303:19;21290:10;:32;;;;:::i;:::-;:72;;;;:::i;:::-;21263:15;;;;;;;;;;;21255:34;;;;:108;;;;:::i;:::-;21227:136;21393:1;21377:13;:17;21374:118;;;21396:96;21471:19;21455:13;:35;;;;:::i;:::-;21438:13;21425:10;:26;;;;:::i;:::-;:66;;;;:::i;:::-;21404:9;;;;;;;;;;;21396:28;;;;:96;;;;:::i;:::-;21374:118;11991:1;;20954:546:::0;;;:::o;13466:28::-;;;;:::o;14087:25::-;;;;:::o;3399:93::-;3457:5;3482:2;3475:9;;3399:93;:::o;6086:215::-;6174:4;6191:80;6200:12;:10;:12::i;:::-;6214:7;6260:10;6223:11;:25;6235:12;:10;:12::i;:::-;6223:25;;;;;;;;;;;;;;;:34;6249:7;6223:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6191:8;:80::i;:::-;6289:4;6282:11;;6086:215;;;;:::o;14217:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;20029:137::-;11931:12;:10;:12::i;:::-;11920:23;;:7;:5;:7::i;:::-;:23;;;11912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20128:7:::1;20119:6;;:16;;;;;;;;;;;;;;;;;;20153:5;20146:4;;:12;;;;;;;;;;;;;;;;;;20029:137:::0;;:::o;13431:26::-;;;;;;;;;;;;;:::o;13501:29::-;;;;:::o;20438:109::-;11931:12;:10;:12::i;:::-;11920:23;;:7;:5;:7::i;:::-;:23;;;11912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20533:6:::1;20524;:15;;;;:::i;:::-;20510:11;:29;;;;20438:109:::0;:::o;13401:23::-;;;;;;;;;;;;;:::o;3728:127::-;3802:7;3829:9;:18;3839:7;3829:18;;;;;;;;;;;;;;;;3822:25;;3728:127;;;:::o;12008:94::-;11931:12;:10;:12::i;:::-;11920:23;;:7;:5;:7::i;:::-;:23;;;11912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12073:21:::1;12091:1;12073:9;:21::i;:::-;12008:94::o:0;14003:33::-;;;;;;;;;;;;;;;;;;;:::o;13727:75::-;;;;;;;;;;;;;:::o;19075:274::-;11931:12;:10;:12::i;:::-;11920:23;;:7;:5;:7::i;:::-;:23;;;11912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19161:14:::1;;;;;;;;;;;19160:15;19152:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;19230:4;19213:14;;:21;;;;;;;;;;;;;;;;;;19259:4;19245:11;;:18;;;;;;;;;;;;;;;;;;19290:12;19274:13;:28;;;;19326:15;19313:10;:28;;;;19075:274:::0;:::o;13599:52::-;;;;:::o;20684:142::-;11931:12;:10;:12::i;:::-;11920:23;;:7;:5;:7::i;:::-;:23;;;11912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20779:12:::1;20772:29;;;20802:7;:5;:7::i;:::-;20811:6;20772:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20684:142:::0;;:::o;11785:87::-;11831:7;11858:6;;;;;;;;;;;11851:13;;11785:87;:::o;13809:69::-;;;;;;;;;;;;;:::o;2656:104::-;2712:13;2745:7;2738:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2656:104;:::o;18957:110::-;11931:12;:10;:12::i;:::-;11920:23;;:7;:5;:7::i;:::-;:23;;;11912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19049:10:::1;19033:13;:26;;;;18957:110:::0;:::o;20834:112::-;11931:12;:10;:12::i;:::-;11920:23;;:7;:5;:7::i;:::-;:23;;;11912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20901:37:::1;20928:9;20909:7;:5;:7::i;:::-;20901:26;;;;:37;;;;:::i;:::-;20834:112:::0;:::o;6804:377::-;6897:4;6914:24;6941:11;:25;6953:12;:10;:12::i;:::-;6941:25;;;;;;;;;;;;;;;:34;6967:7;6941:34;;;;;;;;;;;;;;;;6914:61;;7014:15;6994:16;:35;;6986:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7082:67;7091:12;:10;:12::i;:::-;7105:7;7133:15;7114:16;:34;;;;:::i;:::-;7082:8;:67::i;:::-;7169:4;7162:11;;;6804:377;;;;:::o;13347:19::-;;;;;;;;;;;;;:::o;4068:175::-;4154:4;4171:42;4181:12;:10;:12::i;:::-;4195:9;4206:6;4171:9;:42::i;:::-;4231:4;4224:11;;4068:175;;;;:::o;13658:56::-;;;;:::o;19793:114::-;11931:12;:10;:12::i;:::-;11920:23;;:7;:5;:7::i;:::-;:23;;;11912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19890:9:::1;19872:15;;:27;;;;;;;;;;;;;;;;;;19793:114:::0;:::o;20559:117::-;11931:12;:10;:12::i;:::-;11920:23;;:7;:5;:7::i;:::-;:23;;;11912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20662:6:::1;20653;:15;;;;:::i;:::-;20635;:33;;;;20559:117:::0;:::o;14161:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;4306:151::-;4395:7;4422:11;:18;4434:5;4422:18;;;;;;;;;;;;;;;:27;4441:7;4422:27;;;;;;;;;;;;;;;;4415:34;;4306:151;;;;:::o;18856:93::-;11931:12;:10;:12::i;:::-;11920:23;;:7;:5;:7::i;:::-;:23;;;11912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18936:5:::1;18922:11;;:19;;;;;;;;;;;;;;;;;;18856:93:::0;:::o;20292:134::-;11931:12;:10;:12::i;:::-;11920:23;;:7;:5;:7::i;:::-;:23;;;11912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20413:5:::1;20384:16;:26;20401:8;20384:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;20292:134:::0;;:::o;19357:202::-;11931:12;:10;:12::i;:::-;11920:23;;:7;:5;:7::i;:::-;:23;;;11912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19466:35:::1;;;;;;;;19472:10;19466:35;;;;19484:10;19466:35;;;;19496:4;19466:35;;::::0;19458:5:::1;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;19547:4;19534:10;19521;:23;;;;:::i;:::-;:30;;;;:::i;:::-;19512:6;:39;;;;19357:202:::0;;;:::o;12110:192::-;11931:12;:10;:12::i;:::-;11920:23;;:7;:5;:7::i;:::-;:23;;;11912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12219:1:::1;12199:22;;:8;:22;;;;12191:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12275:19;12285:8;12275:9;:19::i;:::-;12110:192:::0;:::o;14043:37::-;;;;;;;;;;;;;;;;;;;:::o;13319:21::-;;;;;;;;;;;;;:::o;153:98::-;206:7;233:10;226:17;;153:98;:::o;10160:346::-;10279:1;10262:19;;:5;:19;;;;10254:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10360:1;10341:21;;:7;:21;;;;10333:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10444:6;10414:11;:18;10426:5;10414:18;;;;;;;;;;;;;;;:27;10433:7;10414:27;;;;;;;;;;;;;;;:36;;;;10482:7;10466:32;;10475:5;10466:32;;;10491:6;10466:32;;;;;;:::i;:::-;;;;;;;;10160:346;;;:::o;14978:1573::-;15094:1;15085:6;:10;15077:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15161:5;:13;15167:6;15161:13;;;;;;;;;;;;;;;;;;;;;;;;;15160:14;:35;;;;;15179:5;:16;15185:9;15179:16;;;;;;;;;;;;;;;;;;;;;;;;;15178:17;15160:35;15152:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15268:16;:24;15285:6;15268:24;;;;;;;;;;;;;;;;;;;;;;;;;15267:25;:57;;;;;15297:16;:27;15314:9;15297:27;;;;;;;;;;;;;;;;;;;;;;;;;15296:28;15267:57;:70;;;;;15329:8;;;;;;;;;;;15328:9;15267:70;15264:589;;;15361:14;;;;;;;;;;;15353:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;15449:12;15436:10;;15420:13;;:26;;;;:::i;:::-;:41;15417:183;;;15497:4;;;;;;;;;;;15484:17;;:9;:17;;;15481:45;;15522:4;15503:5;:16;15509:9;15503:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;15481:45;15558:4;;;;;;;;;;;15548:14;;:6;:14;;;15545:39;;15580:4;15564:5;:13;15570:6;15564:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15545:39;15417:183;15632:11;;15622:6;:21;;15614:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;15708:4;;;;;;;;;;;15695:17;;:9;:17;;;15692:150;;15773:15;;15763:6;15740:20;15750:9;15740;:20::i;:::-;:29;;;;:::i;:::-;:48;;15732:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;15692:150;15264:589;15865:11;15972:8;;;;;;;;;;;:36;;;;15984:16;:24;16001:6;15984:24;;;;;;;;;;;;;;;;;;;;;;;;;15972:36;:67;;;;16012:16;:27;16029:9;16012:27;;;;;;;;;;;;;;;;;;;;;;;;;15972:67;15968:257;;;16047:1;16041:7;;15968:257;;;16129:4;;;;;;;;;;;16116:17;;:9;:17;;;16113:100;;;16163:3;16150:10;;16141:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;16135:31;;16113:100;;;16210:3;16201:6;;16192;:15;;;;:::i;:::-;:21;;;;:::i;:::-;16186:27;;16113:100;15968:257;16346:11;;;;;;;;;;;:24;;;;;16362:8;;;;;;;;;;;16361:9;16346:24;:42;;;;;16384:4;;;;;;;;;;;16374:14;;:6;:14;;;;16346:42;:53;;;;;16398:1;16392:3;:7;16346:53;16342:72;;;16401:13;:11;:13::i;:::-;16342:72;16427:48;16443:6;16451:9;16471:3;16462:6;:12;;;;:::i;:::-;16427:15;:48::i;:::-;16495:1;16489:3;:7;16486:55;;;16498:43;16514:6;16530:4;16537:3;16498:15;:43::i;:::-;16486:55;14978:1573;;;;:::o;17943:400::-;18009:21;18047:1;18033:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18009:40;;18078:4;18060;18065:1;18060:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;18104:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18094:4;18099:1;18094:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;18130:53;18147:4;18162:6;;;;;;;;;;;18171:11;18130:8;:53::i;:::-;18222:6;;;;;;;;;;;:57;;;18280:11;18293:1;18296:4;18310;18317:15;18222:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17943:400;;:::o;11230:317::-;11345:6;11320:21;:31;;11312:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11399:12;11417:9;:14;;11439:6;11417:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11398:52;;;11469:7;11461:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;11230:317;;;:::o;12310:173::-;12366:16;12385:6;;;;;;;;;;;12366:25;;12411:8;12402:6;;:17;;;;;;;;;;;;;;;;;;12466:8;12435:40;;12456:8;12435:40;;;;;;;;;;;;12310:173;;:::o;16559:1374::-;14302:8;;;;;;;;;;;14297:104;;14338:4;14327:8;;:15;;;;;;;;;;;;;;;;;;16608:23:::1;16634:24;16652:4;16634:9;:24::i;:::-;16608:50;;16692:13;;16673:15;:32;16669:1257;;16779:19;16814:1;16801:10;;:14;;;;:::i;:::-;16779:36;;16830:32;16905:11;16883:9;:19;;;16865:15;:37;;;;:::i;:::-;:51;;;;:::i;:::-;16830:86;;16931:14;16966:24;16948:15;:42;;;;:::i;:::-;16931:59;;17011:22;17036:21;17011:46;;17078:24;17095:6;17078:16;:24::i;:::-;17123:20;17170:14;17146:21;:38;;;;:::i;:::-;17123:61;;17199:19;17250:9;:19;;;17236:11;:33;;;;:::i;:::-;17220:12;:50;;;;:::i;:::-;17199:71;;17285:29;17331:9;:19;;;17317:11;:33;;;;:::i;:::-;17285:65;;17398:1;17374:21;:25;17371:170;;;17464:61;17477:24;17503:21;17464:12;:61::i;:::-;17371:170;17561:20;17602:9;:19;;;17598:1;17584:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;17561:60;;17654:1;17639:12;:16;17636:103;;;17675:48;17710:12;17683:15;;;;;;;;;;;17675:34;;;;:48;;;;:::i;:::-;17636:103;17767:14;17802:9;:13;;;17798:1;17784:11;:15;;;;:::i;:::-;:31;;;;:::i;:::-;17767:48;;17842:1;17833:6;:10;17830:85;;;17863:36;17892:6;17871:9;;;;;;;;;;;17863:28;;;;:36;;;;:::i;:::-;17830:85;16669:1257;;;;;;;;;;14357:1;14384:5:::0;14373:8;;:16;;;;;;;;;;;;;;;;;;14297:104;16559:1374::o;7671:604::-;7795:1;7777:20;;:6;:20;;;;7769:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7879:1;7858:23;;:9;:23;;;;7850:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7934:47;7955:6;7963:9;7974:6;7934:20;:47::i;:::-;7994:21;8018:9;:17;8028:6;8018:17;;;;;;;;;;;;;;;;7994:41;;8071:6;8054:13;:23;;8046:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8167:6;8151:13;:22;;;;:::i;:::-;8131:9;:17;8141:6;8131:17;;;;;;;;;;;;;;;:42;;;;8208:6;8184:9;:20;8194:9;8184:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8249:9;8232:35;;8241:6;8232:35;;;8260:6;8232:35;;;;;;:::i;:::-;;;;;;;;7671:604;;;;:::o;18351:497::-;18499:53;18516:4;18531:6;;;;;;;;;;;18540:11;18499:8;:53::i;:::-;18595:6;;;;;;;;;;;:22;;;18625:9;18658:4;18678:11;18704:1;18747;18790:9;;;;;;;;;;;18814:15;18595:245;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18351:497;;:::o;11109:92::-;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:137::-;;525:6;519:13;510:22;;541:30;565:5;541:30;:::i;:::-;500:77;;;;:::o;583:169::-;;682:6;669:20;660:29;;698:48;740:5;698:48;:::i;:::-;650:102;;;;:::o;758:139::-;;842:6;829:20;820:29;;858:33;885:5;858:33;:::i;:::-;810:87;;;;:::o;903:143::-;;991:6;985:13;976:22;;1007:33;1034:5;1007:33;:::i;:::-;966:80;;;;:::o;1052:262::-;;1160:2;1148:9;1139:7;1135:23;1131:32;1128:2;;;1176:1;1173;1166:12;1128:2;1219:1;1244:53;1289:7;1280:6;1269:9;1265:22;1244:53;:::i;:::-;1234:63;;1190:117;1118:196;;;;:::o;1320:284::-;;1439:2;1427:9;1418:7;1414:23;1410:32;1407:2;;;1455:1;1452;1445:12;1407:2;1498:1;1523:64;1579:7;1570:6;1559:9;1555:22;1523:64;:::i;:::-;1513:74;;1469:128;1397:207;;;;:::o;1610:407::-;;;1735:2;1723:9;1714:7;1710:23;1706:32;1703:2;;;1751:1;1748;1741:12;1703:2;1794:1;1819:53;1864:7;1855:6;1844:9;1840:22;1819:53;:::i;:::-;1809:63;;1765:117;1921:2;1947:53;1992:7;1983:6;1972:9;1968:22;1947:53;:::i;:::-;1937:63;;1892:118;1693:324;;;;;:::o;2023:552::-;;;;2165:2;2153:9;2144:7;2140:23;2136:32;2133:2;;;2181:1;2178;2171:12;2133:2;2224:1;2249:53;2294:7;2285:6;2274:9;2270:22;2249:53;:::i;:::-;2239:63;;2195:117;2351:2;2377:53;2422:7;2413:6;2402:9;2398:22;2377:53;:::i;:::-;2367:63;;2322:118;2479:2;2505:53;2550:7;2541:6;2530:9;2526:22;2505:53;:::i;:::-;2495:63;;2450:118;2123:452;;;;;:::o;2581:401::-;;;2703:2;2691:9;2682:7;2678:23;2674:32;2671:2;;;2719:1;2716;2709:12;2671:2;2762:1;2787:53;2832:7;2823:6;2812:9;2808:22;2787:53;:::i;:::-;2777:63;;2733:117;2889:2;2915:50;2957:7;2948:6;2937:9;2933:22;2915:50;:::i;:::-;2905:60;;2860:115;2661:321;;;;;:::o;2988:407::-;;;3113:2;3101:9;3092:7;3088:23;3084:32;3081:2;;;3129:1;3126;3119:12;3081:2;3172:1;3197:53;3242:7;3233:6;3222:9;3218:22;3197:53;:::i;:::-;3187:63;;3143:117;3299:2;3325:53;3370:7;3361:6;3350:9;3346:22;3325:53;:::i;:::-;3315:63;;3270:118;3071:324;;;;;:::o;3401:256::-;;3506:2;3494:9;3485:7;3481:23;3477:32;3474:2;;;3522:1;3519;3512:12;3474:2;3565:1;3590:50;3632:7;3623:6;3612:9;3608:22;3590:50;:::i;:::-;3580:60;;3536:114;3464:193;;;;:::o;3663:278::-;;3779:2;3767:9;3758:7;3754:23;3750:32;3747:2;;;3795:1;3792;3785:12;3747:2;3838:1;3863:61;3916:7;3907:6;3896:9;3892:22;3863:61;:::i;:::-;3853:71;;3809:125;3737:204;;;;:::o;3947:437::-;;;4087:2;4075:9;4066:7;4062:23;4058:32;4055:2;;;4103:1;4100;4093:12;4055:2;4146:1;4171:68;4231:7;4222:6;4211:9;4207:22;4171:68;:::i;:::-;4161:78;;4117:132;4288:2;4314:53;4359:7;4350:6;4339:9;4335:22;4314:53;:::i;:::-;4304:63;;4259:118;4045:339;;;;;:::o;4390:262::-;;4498:2;4486:9;4477:7;4473:23;4469:32;4466:2;;;4514:1;4511;4504:12;4466:2;4557:1;4582:53;4627:7;4618:6;4607:9;4603:22;4582:53;:::i;:::-;4572:63;;4528:117;4456:196;;;;:::o;4658:552::-;;;;4800:2;4788:9;4779:7;4775:23;4771:32;4768:2;;;4816:1;4813;4806:12;4768:2;4859:1;4884:53;4929:7;4920:6;4909:9;4905:22;4884:53;:::i;:::-;4874:63;;4830:117;4986:2;5012:53;5057:7;5048:6;5037:9;5033:22;5012:53;:::i;:::-;5002:63;;4957:118;5114:2;5140:53;5185:7;5176:6;5165:9;5161:22;5140:53;:::i;:::-;5130:63;;5085:118;4758:452;;;;;:::o;5216:596::-;;;;5369:2;5357:9;5348:7;5344:23;5340:32;5337:2;;;5385:1;5382;5375:12;5337:2;5428:1;5453:64;5509:7;5500:6;5489:9;5485:22;5453:64;:::i;:::-;5443:74;;5399:128;5566:2;5592:64;5648:7;5639:6;5628:9;5624:22;5592:64;:::i;:::-;5582:74;;5537:129;5705:2;5731:64;5787:7;5778:6;5767:9;5763:22;5731:64;:::i;:::-;5721:74;;5676:129;5327:485;;;;;:::o;5818:179::-;;5908:46;5950:3;5942:6;5908:46;:::i;:::-;5986:4;5981:3;5977:14;5963:28;;5898:99;;;;:::o;6003:108::-;6080:24;6098:5;6080:24;:::i;:::-;6075:3;6068:37;6058:53;;:::o;6117:118::-;6204:24;6222:5;6204:24;:::i;:::-;6199:3;6192:37;6182:53;;:::o;6271:732::-;;6419:54;6467:5;6419:54;:::i;:::-;6489:86;6568:6;6563:3;6489:86;:::i;:::-;6482:93;;6599:56;6649:5;6599:56;:::i;:::-;6678:7;6709:1;6694:284;6719:6;6716:1;6713:13;6694:284;;;6795:6;6789:13;6822:63;6881:3;6866:13;6822:63;:::i;:::-;6815:70;;6908:60;6961:6;6908:60;:::i;:::-;6898:70;;6754:224;6741:1;6738;6734:9;6729:14;;6694:284;;;6698:14;6994:3;6987:10;;6395:608;;;;;;;:::o;7009:109::-;7090:21;7105:5;7090:21;:::i;:::-;7085:3;7078:34;7068:50;;:::o;7124:161::-;7226:52;7272:5;7226:52;:::i;:::-;7221:3;7214:65;7204:81;;:::o;7291:147::-;7386:45;7425:5;7386:45;:::i;:::-;7381:3;7374:58;7364:74;;:::o;7444:364::-;;7560:39;7593:5;7560:39;:::i;:::-;7615:71;7679:6;7674:3;7615:71;:::i;:::-;7608:78;;7695:52;7740:6;7735:3;7728:4;7721:5;7717:16;7695:52;:::i;:::-;7772:29;7794:6;7772:29;:::i;:::-;7767:3;7763:39;7756:46;;7536:272;;;;;:::o;7814:366::-;;7977:67;8041:2;8036:3;7977:67;:::i;:::-;7970:74;;8053:93;8142:3;8053:93;:::i;:::-;8171:2;8166:3;8162:12;8155:19;;7960:220;;;:::o;8186:366::-;;8349:67;8413:2;8408:3;8349:67;:::i;:::-;8342:74;;8425:93;8514:3;8425:93;:::i;:::-;8543:2;8538:3;8534:12;8527:19;;8332:220;;;:::o;8558:366::-;;8721:67;8785:2;8780:3;8721:67;:::i;:::-;8714:74;;8797:93;8886:3;8797:93;:::i;:::-;8915:2;8910:3;8906:12;8899:19;;8704:220;;;:::o;8930:366::-;;9093:67;9157:2;9152:3;9093:67;:::i;:::-;9086:74;;9169:93;9258:3;9169:93;:::i;:::-;9287:2;9282:3;9278:12;9271:19;;9076:220;;;:::o;9302:366::-;;9465:67;9529:2;9524:3;9465:67;:::i;:::-;9458:74;;9541:93;9630:3;9541:93;:::i;:::-;9659:2;9654:3;9650:12;9643:19;;9448:220;;;:::o;9674:366::-;;9837:67;9901:2;9896:3;9837:67;:::i;:::-;9830:74;;9913:93;10002:3;9913:93;:::i;:::-;10031:2;10026:3;10022:12;10015:19;;9820:220;;;:::o;10046:366::-;;10209:67;10273:2;10268:3;10209:67;:::i;:::-;10202:74;;10285:93;10374:3;10285:93;:::i;:::-;10403:2;10398:3;10394:12;10387:19;;10192:220;;;:::o;10418:366::-;;10581:67;10645:2;10640:3;10581:67;:::i;:::-;10574:74;;10657:93;10746:3;10657:93;:::i;:::-;10775:2;10770:3;10766:12;10759:19;;10564:220;;;:::o;10790:366::-;;10953:67;11017:2;11012:3;10953:67;:::i;:::-;10946:74;;11029:93;11118:3;11029:93;:::i;:::-;11147:2;11142:3;11138:12;11131:19;;10936:220;;;:::o;11162:366::-;;11325:67;11389:2;11384:3;11325:67;:::i;:::-;11318:74;;11401:93;11490:3;11401:93;:::i;:::-;11519:2;11514:3;11510:12;11503:19;;11308:220;;;:::o;11534:366::-;;11697:67;11761:2;11756:3;11697:67;:::i;:::-;11690:74;;11773:93;11862:3;11773:93;:::i;:::-;11891:2;11886:3;11882:12;11875:19;;11680:220;;;:::o;11906:366::-;;12069:67;12133:2;12128:3;12069:67;:::i;:::-;12062:74;;12145:93;12234:3;12145:93;:::i;:::-;12263:2;12258:3;12254:12;12247:19;;12052:220;;;:::o;12278:366::-;;12441:67;12505:2;12500:3;12441:67;:::i;:::-;12434:74;;12517:93;12606:3;12517:93;:::i;:::-;12635:2;12630:3;12626:12;12619:19;;12424:220;;;:::o;12650:366::-;;12813:67;12877:2;12872:3;12813:67;:::i;:::-;12806:74;;12889:93;12978:3;12889:93;:::i;:::-;13007:2;13002:3;12998:12;12991:19;;12796:220;;;:::o;13022:366::-;;13185:67;13249:2;13244:3;13185:67;:::i;:::-;13178:74;;13261:93;13350:3;13261:93;:::i;:::-;13379:2;13374:3;13370:12;13363:19;;13168:220;;;:::o;13394:398::-;;13574:83;13655:1;13650:3;13574:83;:::i;:::-;13567:90;;13666:93;13755:3;13666:93;:::i;:::-;13784:1;13779:3;13775:11;13768:18;;13557:235;;;:::o;13798:366::-;;13961:67;14025:2;14020:3;13961:67;:::i;:::-;13954:74;;14037:93;14126:3;14037:93;:::i;:::-;14155:2;14150:3;14146:12;14139:19;;13944:220;;;:::o;14170:366::-;;14333:67;14397:2;14392:3;14333:67;:::i;:::-;14326:74;;14409:93;14498:3;14409:93;:::i;:::-;14527:2;14522:3;14518:12;14511:19;;14316:220;;;:::o;14542:118::-;14629:24;14647:5;14629:24;:::i;:::-;14624:3;14617:37;14607:53;;:::o;14666:112::-;14749:22;14765:5;14749:22;:::i;:::-;14744:3;14737:35;14727:51;;:::o;14784:379::-;;14990:147;15133:3;14990:147;:::i;:::-;14983:154;;15154:3;15147:10;;14972:191;;;:::o;15169:222::-;;15300:2;15289:9;15285:18;15277:26;;15313:71;15381:1;15370:9;15366:17;15357:6;15313:71;:::i;:::-;15267:124;;;;:::o;15397:332::-;;15556:2;15545:9;15541:18;15533:26;;15569:71;15637:1;15626:9;15622:17;15613:6;15569:71;:::i;:::-;15650:72;15718:2;15707:9;15703:18;15694:6;15650:72;:::i;:::-;15523:206;;;;;:::o;15735:807::-;;16022:3;16011:9;16007:19;15999:27;;16036:71;16104:1;16093:9;16089:17;16080:6;16036:71;:::i;:::-;16117:72;16185:2;16174:9;16170:18;16161:6;16117:72;:::i;:::-;16199:80;16275:2;16264:9;16260:18;16251:6;16199:80;:::i;:::-;16289;16365:2;16354:9;16350:18;16341:6;16289:80;:::i;:::-;16379:73;16447:3;16436:9;16432:19;16423:6;16379:73;:::i;:::-;16462;16530:3;16519:9;16515:19;16506:6;16462:73;:::i;:::-;15989:553;;;;;;;;;:::o;16548:210::-;;16673:2;16662:9;16658:18;16650:26;;16686:65;16748:1;16737:9;16733:17;16724:6;16686:65;:::i;:::-;16640:118;;;;:::o;16764:252::-;;16910:2;16899:9;16895:18;16887:26;;16923:86;17006:1;16995:9;16991:17;16982:6;16923:86;:::i;:::-;16877:139;;;;:::o;17022:313::-;;17173:2;17162:9;17158:18;17150:26;;17222:9;17216:4;17212:20;17208:1;17197:9;17193:17;17186:47;17250:78;17323:4;17314:6;17250:78;:::i;:::-;17242:86;;17140:195;;;;:::o;17341:419::-;;17545:2;17534:9;17530:18;17522:26;;17594:9;17588:4;17584:20;17580:1;17569:9;17565:17;17558:47;17622:131;17748:4;17622:131;:::i;:::-;17614:139;;17512:248;;;:::o;17766:419::-;;17970:2;17959:9;17955:18;17947:26;;18019:9;18013:4;18009:20;18005:1;17994:9;17990:17;17983:47;18047:131;18173:4;18047:131;:::i;:::-;18039:139;;17937:248;;;:::o;18191:419::-;;18395:2;18384:9;18380:18;18372:26;;18444:9;18438:4;18434:20;18430:1;18419:9;18415:17;18408:47;18472:131;18598:4;18472:131;:::i;:::-;18464:139;;18362:248;;;:::o;18616:419::-;;18820:2;18809:9;18805:18;18797:26;;18869:9;18863:4;18859:20;18855:1;18844:9;18840:17;18833:47;18897:131;19023:4;18897:131;:::i;:::-;18889:139;;18787:248;;;:::o;19041:419::-;;19245:2;19234:9;19230:18;19222:26;;19294:9;19288:4;19284:20;19280:1;19269:9;19265:17;19258:47;19322:131;19448:4;19322:131;:::i;:::-;19314:139;;19212:248;;;:::o;19466:419::-;;19670:2;19659:9;19655:18;19647:26;;19719:9;19713:4;19709:20;19705:1;19694:9;19690:17;19683:47;19747:131;19873:4;19747:131;:::i;:::-;19739:139;;19637:248;;;:::o;19891:419::-;;20095:2;20084:9;20080:18;20072:26;;20144:9;20138:4;20134:20;20130:1;20119:9;20115:17;20108:47;20172:131;20298:4;20172:131;:::i;:::-;20164:139;;20062:248;;;:::o;20316:419::-;;20520:2;20509:9;20505:18;20497:26;;20569:9;20563:4;20559:20;20555:1;20544:9;20540:17;20533:47;20597:131;20723:4;20597:131;:::i;:::-;20589:139;;20487:248;;;:::o;20741:419::-;;20945:2;20934:9;20930:18;20922:26;;20994:9;20988:4;20984:20;20980:1;20969:9;20965:17;20958:47;21022:131;21148:4;21022:131;:::i;:::-;21014:139;;20912:248;;;:::o;21166:419::-;;21370:2;21359:9;21355:18;21347:26;;21419:9;21413:4;21409:20;21405:1;21394:9;21390:17;21383:47;21447:131;21573:4;21447:131;:::i;:::-;21439:139;;21337:248;;;:::o;21591:419::-;;21795:2;21784:9;21780:18;21772:26;;21844:9;21838:4;21834:20;21830:1;21819:9;21815:17;21808:47;21872:131;21998:4;21872:131;:::i;:::-;21864:139;;21762:248;;;:::o;22016:419::-;;22220:2;22209:9;22205:18;22197:26;;22269:9;22263:4;22259:20;22255:1;22244:9;22240:17;22233:47;22297:131;22423:4;22297:131;:::i;:::-;22289:139;;22187:248;;;:::o;22441:419::-;;22645:2;22634:9;22630:18;22622:26;;22694:9;22688:4;22684:20;22680:1;22669:9;22665:17;22658:47;22722:131;22848:4;22722:131;:::i;:::-;22714:139;;22612:248;;;:::o;22866:419::-;;23070:2;23059:9;23055:18;23047:26;;23119:9;23113:4;23109:20;23105:1;23094:9;23090:17;23083:47;23147:131;23273:4;23147:131;:::i;:::-;23139:139;;23037:248;;;:::o;23291:419::-;;23495:2;23484:9;23480:18;23472:26;;23544:9;23538:4;23534:20;23530:1;23519:9;23515:17;23508:47;23572:131;23698:4;23572:131;:::i;:::-;23564:139;;23462:248;;;:::o;23716:419::-;;23920:2;23909:9;23905:18;23897:26;;23969:9;23963:4;23959:20;23955:1;23944:9;23940:17;23933:47;23997:131;24123:4;23997:131;:::i;:::-;23989:139;;23887:248;;;:::o;24141:419::-;;24345:2;24334:9;24330:18;24322:26;;24394:9;24388:4;24384:20;24380:1;24369:9;24365:17;24358:47;24422:131;24548:4;24422:131;:::i;:::-;24414:139;;24312:248;;;:::o;24566:222::-;;24697:2;24686:9;24682:18;24674:26;;24710:71;24778:1;24767:9;24763:17;24754:6;24710:71;:::i;:::-;24664:124;;;;:::o;24794:831::-;;25095:3;25084:9;25080:19;25072:27;;25109:71;25177:1;25166:9;25162:17;25153:6;25109:71;:::i;:::-;25190:80;25266:2;25255:9;25251:18;25242:6;25190:80;:::i;:::-;25317:9;25311:4;25307:20;25302:2;25291:9;25287:18;25280:48;25345:108;25448:4;25439:6;25345:108;:::i;:::-;25337:116;;25463:72;25531:2;25520:9;25516:18;25507:6;25463:72;:::i;:::-;25545:73;25613:3;25602:9;25598:19;25589:6;25545:73;:::i;:::-;25062:563;;;;;;;;:::o;25631:442::-;;25818:2;25807:9;25803:18;25795:26;;25831:71;25899:1;25888:9;25884:17;25875:6;25831:71;:::i;:::-;25912:72;25980:2;25969:9;25965:18;25956:6;25912:72;:::i;:::-;25994;26062:2;26051:9;26047:18;26038:6;25994:72;:::i;:::-;25785:288;;;;;;:::o;26079:214::-;;26206:2;26195:9;26191:18;26183:26;;26219:67;26283:1;26272:9;26268:17;26259:6;26219:67;:::i;:::-;26173:120;;;;:::o;26299:132::-;;26389:3;26381:11;;26419:4;26414:3;26410:14;26402:22;;26371:60;;;:::o;26437:114::-;;26538:5;26532:12;26522:22;;26511:40;;;:::o;26557:99::-;;26643:5;26637:12;26627:22;;26616:40;;;:::o;26662:113::-;;26764:4;26759:3;26755:14;26747:22;;26737:38;;;:::o;26781:184::-;;26914:6;26909:3;26902:19;26954:4;26949:3;26945:14;26930:29;;26892:73;;;;:::o;26971:147::-;;27109:3;27094:18;;27084:34;;;;:::o;27124:169::-;;27242:6;27237:3;27230:19;27282:4;27277:3;27273:14;27258:29;;27220:73;;;;:::o;27299:305::-;;27358:20;27376:1;27358:20;:::i;:::-;27353:25;;27392:20;27410:1;27392:20;:::i;:::-;27387:25;;27546:1;27478:66;27474:74;27471:1;27468:81;27465:2;;;27552:18;;:::i;:::-;27465:2;27596:1;27593;27589:9;27582:16;;27343:261;;;;:::o;27610:185::-;;27667:20;27685:1;27667:20;:::i;:::-;27662:25;;27701:20;27719:1;27701:20;:::i;:::-;27696:25;;27740:1;27730:2;;27745:18;;:::i;:::-;27730:2;27787:1;27784;27780:9;27775:14;;27652:143;;;;:::o;27801:348::-;;27864:20;27882:1;27864:20;:::i;:::-;27859:25;;27898:20;27916:1;27898:20;:::i;:::-;27893:25;;28086:1;28018:66;28014:74;28011:1;28008:81;28003:1;27996:9;27989:17;27985:105;27982:2;;;28093:18;;:::i;:::-;27982:2;28141:1;28138;28134:9;28123:20;;27849:300;;;;:::o;28155:191::-;;28215:20;28233:1;28215:20;:::i;:::-;28210:25;;28249:20;28267:1;28249:20;:::i;:::-;28244:25;;28288:1;28285;28282:8;28279:2;;;28293:18;;:::i;:::-;28279:2;28338:1;28335;28331:9;28323:17;;28200:146;;;;:::o;28352:96::-;;28418:24;28436:5;28418:24;:::i;:::-;28407:35;;28397:51;;;:::o;28454:90::-;;28531:5;28524:13;28517:21;28506:32;;28496:48;;;:::o;28550:111::-;;28631:24;28649:5;28631:24;:::i;:::-;28620:35;;28610:51;;;:::o;28667:126::-;;28744:42;28737:5;28733:54;28722:65;;28712:81;;;:::o;28799:77::-;;28865:5;28854:16;;28844:32;;;:::o;28882:86::-;;28957:4;28950:5;28946:16;28935:27;;28925:43;;;:::o;28974:156::-;;29072:52;29118:5;29072:52;:::i;:::-;29059:65;;29049:81;;;:::o;29136:128::-;;29234:24;29252:5;29234:24;:::i;:::-;29221:37;;29211:53;;;:::o;29270:121::-;;29361:24;29379:5;29361:24;:::i;:::-;29348:37;;29338:53;;;:::o;29397:307::-;29465:1;29475:113;29489:6;29486:1;29483:13;29475:113;;;29574:1;29569:3;29565:11;29559:18;29555:1;29550:3;29546:11;29539:39;29511:2;29508:1;29504:10;29499:15;;29475:113;;;29606:6;29603:1;29600:13;29597:2;;;29686:1;29677:6;29672:3;29668:16;29661:27;29597:2;29446:258;;;;:::o;29710:320::-;;29791:1;29785:4;29781:12;29771:22;;29838:1;29832:4;29828:12;29859:18;29849:2;;29915:4;29907:6;29903:17;29893:27;;29849:2;29977;29969:6;29966:14;29946:18;29943:38;29940:2;;;29996:18;;:::i;:::-;29940:2;29761:269;;;;:::o;30036:180::-;30084:77;30081:1;30074:88;30181:4;30178:1;30171:15;30205:4;30202:1;30195:15;30222:180;30270:77;30267:1;30260:88;30367:4;30364:1;30357:15;30391:4;30388:1;30381:15;30408:180;30456:77;30453:1;30446:88;30553:4;30550:1;30543:15;30577:4;30574:1;30567:15;30594:102;;30686:2;30682:7;30677:2;30670:5;30666:14;30662:28;30652:38;;30642:54;;;:::o;30702:172::-;30842:24;30838:1;30830:6;30826:14;30819:48;30808:66;:::o;30880:222::-;31020:34;31016:1;31008:6;31004:14;30997:58;31089:5;31084:2;31076:6;31072:15;31065:30;30986:116;:::o;31108:179::-;31248:31;31244:1;31236:6;31232:14;31225:55;31214:73;:::o;31293:172::-;31433:24;31429:1;31421:6;31417:14;31410:48;31399:66;:::o;31471:225::-;31611:34;31607:1;31599:6;31595:14;31588:58;31680:8;31675:2;31667:6;31663:15;31656:33;31577:119;:::o;31702:221::-;31842:34;31838:1;31830:6;31826:14;31819:58;31911:4;31906:2;31898:6;31894:15;31887:29;31808:115;:::o;31929:225::-;32069:34;32065:1;32057:6;32053:14;32046:58;32138:8;32133:2;32125:6;32121:15;32114:33;32035:119;:::o;32160:220::-;32300:34;32296:1;32288:6;32284:14;32277:58;32369:3;32364:2;32356:6;32352:15;32345:28;32266:114;:::o;32386:245::-;32526:34;32522:1;32514:6;32510:14;32503:58;32595:28;32590:2;32582:6;32578:15;32571:53;32492:139;:::o;32637:179::-;32777:31;32773:1;32765:6;32761:14;32754:55;32743:73;:::o;32822:227::-;32962:34;32958:1;32950:6;32946:14;32939:58;33031:10;33026:2;33018:6;33014:15;33007:35;32928:121;:::o;33055:182::-;33195:34;33191:1;33183:6;33179:14;33172:58;33161:76;:::o;33243:228::-;33383:34;33379:1;33371:6;33367:14;33360:58;33452:11;33447:2;33439:6;33435:15;33428:36;33349:122;:::o;33477:175::-;33617:27;33613:1;33605:6;33601:14;33594:51;33583:69;:::o;33658:224::-;33798:34;33794:1;33786:6;33782:14;33775:58;33867:7;33862:2;33854:6;33850:15;33843:32;33764:118;:::o;33888:114::-;33994:8;:::o;34008:223::-;34148:34;34144:1;34136:6;34132:14;34125:58;34217:6;34212:2;34204:6;34200:15;34193:31;34114:117;:::o;34237:224::-;34377:34;34373:1;34365:6;34361:14;34354:58;34446:7;34441:2;34433:6;34429:15;34422:32;34343:118;:::o;34467:122::-;34540:24;34558:5;34540:24;:::i;:::-;34533:5;34530:35;34520:2;;34579:1;34576;34569:12;34520:2;34510:79;:::o;34595:116::-;34665:21;34680:5;34665:21;:::i;:::-;34658:5;34655:32;34645:2;;34701:1;34698;34691:12;34645:2;34635:76;:::o;34717:152::-;34805:39;34838:5;34805:39;:::i;:::-;34798:5;34795:50;34785:2;;34859:1;34856;34849:12;34785:2;34775:94;:::o;34875:122::-;34948:24;34966:5;34948:24;:::i;:::-;34941:5;34938:35;34928:2;;34987:1;34984;34977:12;34928:2;34918:79;:::o

Swarm Source

ipfs://4f56e29387c3f3ccfc06acddfd5cc20e24bf8a9d0646e5ead6b58789bc758a75

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.