ETH Price: $3,403.38 (+2.71%)

Contract

0x73a0fb98C1C54449D6b791af8F4695DA7F0299c0
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve182595392023-10-02 1:23:35449 days ago1696209815IN
0x73a0fb98...A7F0299c0
0 ETH0.000311836.64392603
Approve181929542023-09-22 17:46:11458 days ago1695404771IN
0x73a0fb98...A7F0299c0
0 ETH0.0004969910.52718378
Approve181811512023-09-21 2:02:23460 days ago1695261743IN
0x73a0fb98...A7F0299c0
0 ETH0.000437119.25866176
Transfer181757592023-09-20 7:58:11461 days ago1695196691IN
0x73a0fb98...A7F0299c0
0 ETH0.000586778.3431759
Approve181502332023-09-16 17:39:35464 days ago1694885975IN
0x73a0fb98...A7F0299c0
0 ETH0.0005408711.47115676
Approve181214292023-09-12 16:26:23468 days ago1694535983IN
0x73a0fb98...A7F0299c0
0 ETH0.0009942221.08606518
Approve180884762023-09-08 1:38:47473 days ago1694137127IN
0x73a0fb98...A7F0299c0
0 ETH0.000458489.77604195
Approve180817502023-09-07 3:04:23474 days ago1694055863IN
0x73a0fb98...A7F0299c0
0 ETH0.0006819814.46377386
Approve180810392023-09-07 0:41:11474 days ago1694047271IN
0x73a0fb98...A7F0299c0
0 ETH0.0003211810.77837927
Approve180809922023-09-07 0:31:35474 days ago1694046695IN
0x73a0fb98...A7F0299c0
0 ETH0.0006868114.54785254
Approve180797422023-09-06 20:20:23474 days ago1694031623IN
0x73a0fb98...A7F0299c0
0 ETH0.000939619.92753241
Approve180796242023-09-06 19:56:47474 days ago1694030207IN
0x73a0fb98...A7F0299c0
0 ETH0.0011128123.57099988
Approve180796242023-09-06 19:56:47474 days ago1694030207IN
0x73a0fb98...A7F0299c0
0 ETH0.0010887123.06052587
Approve180796242023-09-06 19:56:47474 days ago1694030207IN
0x73a0fb98...A7F0299c0
0 ETH0.0011128123.57099988
Approve180796242023-09-06 19:56:47474 days ago1694030207IN
0x73a0fb98...A7F0299c0
0 ETH0.0011128123.57099988
Approve180796182023-09-06 19:55:35474 days ago1694030135IN
0x73a0fb98...A7F0299c0
0 ETH0.000991621.03044506
Approve180795962023-09-06 19:51:11474 days ago1694029871IN
0x73a0fb98...A7F0299c0
0 ETH0.0012252325.95228188
Approve180795282023-09-06 19:37:35474 days ago1694029055IN
0x73a0fb98...A7F0299c0
0 ETH0.0016854935.93888432
Approve180794282023-09-06 19:16:59474 days ago1694027819IN
0x73a0fb98...A7F0299c0
0 ETH0.0011288524.05142499
Approve180794172023-09-06 19:14:47474 days ago1694027687IN
0x73a0fb98...A7F0299c0
0 ETH0.0014181530.07691705
Approve180794032023-09-06 19:11:47474 days ago1694027507IN
0x73a0fb98...A7F0299c0
0 ETH0.0012441626.3532595
Approve180793942023-09-06 19:09:59474 days ago1694027399IN
0x73a0fb98...A7F0299c0
0 ETH0.0013086527.71934037
Approve180793902023-09-06 19:08:59474 days ago1694027339IN
0x73a0fb98...A7F0299c0
0 ETH0.0013428228.44302962
Approve180793792023-09-06 19:06:35474 days ago1694027195IN
0x73a0fb98...A7F0299c0
0 ETH0.0010351421.94255844
Approve180793782023-09-06 19:06:23474 days ago1694027183IN
0x73a0fb98...A7F0299c0
0 ETH0.0010834222.9776739
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
181929552023-09-22 17:46:23458 days ago1695404783
0x73a0fb98...A7F0299c0
0.00106794 ETH
181929552023-09-22 17:46:23458 days ago1695404783
0x73a0fb98...A7F0299c0
0.00106794 ETH
180924052023-09-08 14:51:11472 days ago1694184671
0x73a0fb98...A7F0299c0
0.00104156 ETH
180924052023-09-08 14:51:11472 days ago1694184671
0x73a0fb98...A7F0299c0
0.00104156 ETH
180817522023-09-07 3:04:47474 days ago1694055887
0x73a0fb98...A7F0299c0
0.00104314 ETH
180817522023-09-07 3:04:47474 days ago1694055887
0x73a0fb98...A7F0299c0
0.00104314 ETH
180799052023-09-06 20:53:23474 days ago1694033603
0x73a0fb98...A7F0299c0
0.00151847 ETH
180799052023-09-06 20:53:23474 days ago1694033603
0x73a0fb98...A7F0299c0
0.00151847 ETH
180797442023-09-06 20:20:47474 days ago1694031647
0x73a0fb98...A7F0299c0
0.00145768 ETH
180797442023-09-06 20:20:47474 days ago1694031647
0x73a0fb98...A7F0299c0
0.00145768 ETH
180796292023-09-06 19:57:47474 days ago1694030267
0x73a0fb98...A7F0299c0
0.00197178 ETH
180796292023-09-06 19:57:47474 days ago1694030267
0x73a0fb98...A7F0299c0
0.00197178 ETH
180796282023-09-06 19:57:35474 days ago1694030255
0x73a0fb98...A7F0299c0
0.00197178 ETH
180796282023-09-06 19:57:35474 days ago1694030255
0x73a0fb98...A7F0299c0
0.00197178 ETH
180796262023-09-06 19:57:11474 days ago1694030231
0x73a0fb98...A7F0299c0
0.01274708 ETH
180796262023-09-06 19:57:11474 days ago1694030231
0x73a0fb98...A7F0299c0
0.01274708 ETH
180796232023-09-06 19:56:35474 days ago1694030195
0x73a0fb98...A7F0299c0
0.04775646 ETH
180796232023-09-06 19:56:35474 days ago1694030195
0x73a0fb98...A7F0299c0
0.04775646 ETH
180795962023-09-06 19:51:11474 days ago1694029871
0x73a0fb98...A7F0299c0
0.00127167 ETH
180795962023-09-06 19:51:11474 days ago1694029871
0x73a0fb98...A7F0299c0
0.00127167 ETH
180795532023-09-06 19:42:35474 days ago1694029355
0x73a0fb98...A7F0299c0
0.00146009 ETH
180795532023-09-06 19:42:35474 days ago1694029355
0x73a0fb98...A7F0299c0
0.00146009 ETH
180794692023-09-06 19:25:35474 days ago1694028335
0x73a0fb98...A7F0299c0
0.00154525 ETH
180794692023-09-06 19:25:35474 days ago1694028335
0x73a0fb98...A7F0299c0
0.00154525 ETH
180794662023-09-06 19:24:59474 days ago1694028299
0x73a0fb98...A7F0299c0
0.00154525 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CHAMELEON_COIN

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*
         
Telegram: https://t.me/chameleon_coin
Twitter: https://twitter.com/chameleon_c0in
Web: https://www.chameleoncoin.xyz/                       


 $$$$$$\  $$\   $$\  $$$$$$\  $$\      $$\ $$$$$$$$\ $$\      $$$$$$$$\  $$$$$$\  $$\   $$\ 
$$  __$$\ $$ |  $$ |$$  __$$\ $$$\    $$$ |$$  _____|$$ |     $$  _____|$$  __$$\ $$$\  $$ |
$$ /  \__|$$ |  $$ |$$ /  $$ |$$$$\  $$$$ |$$ |      $$ |     $$ |      $$ /  $$ |$$$$\ $$ |
$$ |      $$$$$$$$ |$$$$$$$$ |$$\$$\$$ $$ |$$$$$\    $$ |     $$$$$\    $$ |  $$ |$$ $$\$$ |
$$ |      $$  __$$ |$$  __$$ |$$ \$$$  $$ |$$  __|   $$ |     $$  __|   $$ |  $$ |$$ \$$$$ |
$$ |  $$\ $$ |  $$ |$$ |  $$ |$$ |\$  /$$ |$$ |      $$ |     $$ |      $$ |  $$ |$$ |\$$$ |
\$$$$$$  |$$ |  $$ |$$ |  $$ |$$ | \_/ $$ |$$$$$$$$\ $$$$$$$$\$$$$$$$$\  $$$$$$  |$$ | \$$ |
 \______/ \__|  \__|\__|  \__|\__|     \__|\________|\________\________| \______/ \__|  \__|
                                                                                                                                 
*/                                                       

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.21;

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

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


abstract contract Ownable is Context {
    address private _owner;

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


    constructor() {
        _transferOwnership(_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 {
        _transferOwnership(address(0));
    }


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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

interface IERC20Metadata is IERC20 {

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

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

    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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


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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

library SafeMath {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

contract CHAMELEON_COIN is ERC20, Ownable {
    using SafeMath for uint256;

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

    bool private swapping = false;

    address private marketingWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 private launchedAt;
    uint256 private launchedTime;
    uint256 public deadBlocks;

    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(uint256 => uint256) private swapInBlock;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) public automatedMarketMakerPairs;
    mapping(address => bool) public blackListedAddresses;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event SetBlackListedAddress(address indexed pair, bool indexed value);

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor(address _wallet) ERC20("Chameleon Coin", "CHAMELEON") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 1_000_000_000 * 1e18;

        maxTransactionAmount = 1_000_000_000 * 1e18;
        maxWallet = 1_000_000_000 * 1e18;
        swapTokensAtAmount = maxTransactionAmount / 2000;

        marketingWallet = _wallet;

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading(uint256 _deadBlocks) external onlyOwner {
        deadBlocks = _deadBlocks;
        tradingActive = true;
        swapEnabled = true;
        launchedAt = block.number;
        launchedTime = block.timestamp;
    }

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTransactionAmount lower than 0.1%"
        );
        maxTransactionAmount = newNum * (10**18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newNum * (10**18);
    }

    function whitelistContract(address _whitelist,bool isWL)
    public
    onlyOwner
    {
      _isExcludedMaxTransactionAmount[_whitelist] = isWL;

      _isExcludedFromFees[_whitelist] = isWL;

    }

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

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

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

    function manualswap(uint256 amount) external {
      require(_msgSender() == marketingWallet);
        require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount");
        swapTokensForEth(amount);
    }

    function manualsend() external {
        bool success;
        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setBlacklistedAddress(address _address, bool _isBlackListed)
        external
        onlyOwner
    {
        blackListedAddresses[_address] = _isBlackListed;
        emit SetBlackListedAddress(_address, _isBlackListed);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(
        uint256 _marketingFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyTotalFees = buyMarketingFee;
        require(buyTotalFees <= 10, "Must keep fees at 5% or less");
    }

    function updateSellFees(
        uint256 _marketingFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellTotalFees = sellMarketingFee;
        require(sellTotalFees <= 10, "Must keep fees at 5% or less");
    }

    function updateMarketingWallet(address newMarketingWallet)
        external
        onlyOwner
    {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function airdrop(address[] calldata addresses, uint256[] calldata amounts) external {
          require(addresses.length > 0 && amounts.length == addresses.length);
          address from = msg.sender;

          for (uint i = 0; i < addresses.length; i++) {

            _transfer(from, addresses[i], amounts[i] * (10**18));

          }
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!blackListedAddresses[from], "FROM address is blacklisted"); 
        require(!blackListedAddresses[to], "TO address is blacklisted");

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

        uint256 blockNum = block.number;

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
              if
                ((launchedAt + deadBlocks) >= blockNum)
              {
                maxTransactionAmount =  15_000_000 * 1e18;
                maxWallet =  15_000_000 * 1e18;

                buyMarketingFee = 99;
                buyTotalFees = buyMarketingFee;

                sellMarketingFee = 99;
                sellTotalFees = sellMarketingFee;

              }
              else
              {
                maxTransactionAmount =  15_000_000 * 1e18;
                maxWallet =  15_000_000 * 1e18;

                buyMarketingFee = 30;
                buyTotalFees = buyMarketingFee;

                sellMarketingFee = 30;
                sellTotalFees = sellMarketingFee;
              }

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

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            (swapInBlock[blockNum] < 2) &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            ++swapInBlock[blockNum];

            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
            }

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

            amount -= fees;
        }

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;

        if (contractBalance == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }


        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH);

        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }

    function getContractAddress() external view returns(address) {
        return address(this);
    }

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

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    } 
    
    modifier lockSwapping() {
        swapping = true;
        _;
        swapping = false;
    }

    function fixClog() public onlyOwner lockSwapping {
        swapTokensForEth(balanceOf(address(this)));
        bool success;
        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetBlackListedAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlackListed","type":"bool"}],"name":"_setBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blackListedAddresses","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fixClog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_whitelist","type":"address"},{"internalType":"bool","name":"isWL","type":"bool"}],"name":"whitelistContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040525f600560146101000a81548160ff0219169083151502179055506001600a5f6101000a81548160ff0219169083151502179055505f600a60016101000a81548160ff0219169083151502179055505f600a60026101000a81548160ff02191690831515021790555034801562000078575f80fd5b5060405162005cbb38038062005cbb83398181016040528101906200009e919062000a34565b6040518060400160405280600e81526020017f4368616d656c656f6e20436f696e0000000000000000000000000000000000008152506040518060400160405280600981526020017f4348414d454c454f4e000000000000000000000000000000000000000000000081525081600390816200011b919062000cc8565b5080600490816200012d919062000cc8565b5050506200015062000144620004a760201b60201c565b620004ae60201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90506200017b8160016200057160201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021f919062000a34565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000285573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ab919062000a34565b6040518363ffffffff1660e01b8152600401620002ca92919062000dbd565b6020604051808303815f875af1158015620002e7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200030d919062000a34565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200035560a05160016200057160201b60201c565b6200036a60a05160016200065860201b60201c565b5f6b033b2e3c9fd0803ce800000090506b033b2e3c9fd0803ce80000006007819055506b033b2e3c9fd0803ce80000006009819055506107d0600754620003b2919062000e42565b6008819055508260065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200041a6200040c620006f660201b60201c565b60016200071e60201b60201c565b6200042d3060016200071e60201b60201c565b6200044261dead60016200071e60201b60201c565b6200046462000456620006f660201b60201c565b60016200057160201b60201c565b620004773060016200057160201b60201c565b6200048c61dead60016200057160201b60201c565b6200049e33826200085560201b60201c565b50505062001002565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000581620004a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005a7620006f660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000600576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005f79062000ed7565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200072e620004a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000754620006f660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007a49062000ed7565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000849919062000f13565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008c6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008bd9062000f7c565b60405180910390fd5b620008d95f8383620009c560201b60201c565b8060025f828254620008ec919062000f9c565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000940919062000f9c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009a6919062000fe7565b60405180910390a3620009c15f8383620009ca60201b60201c565b5050565b505050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620009fe82620009d3565b9050919050565b62000a1081620009f2565b811462000a1b575f80fd5b50565b5f8151905062000a2e8162000a05565b92915050565b5f6020828403121562000a4c5762000a4b620009cf565b5b5f62000a5b8482850162000a1e565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000ae057607f821691505b60208210810362000af65762000af562000a9b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000b5a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b1d565b62000b66868362000b1d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000bb062000baa62000ba48462000b7e565b62000b87565b62000b7e565b9050919050565b5f819050919050565b62000bcb8362000b90565b62000be362000bda8262000bb7565b84845462000b29565b825550505050565b5f90565b62000bf962000beb565b62000c0681848462000bc0565b505050565b5b8181101562000c2d5762000c215f8262000bef565b60018101905062000c0c565b5050565b601f82111562000c7c5762000c468162000afc565b62000c518462000b0e565b8101602085101562000c61578190505b62000c7962000c708562000b0e565b83018262000c0b565b50505b505050565b5f82821c905092915050565b5f62000c9e5f198460080262000c81565b1980831691505092915050565b5f62000cb8838362000c8d565b9150826002028217905092915050565b62000cd38262000a64565b67ffffffffffffffff81111562000cef5762000cee62000a6e565b5b62000cfb825462000ac8565b62000d0882828562000c31565b5f60209050601f83116001811462000d3e575f841562000d29578287015190505b62000d35858262000cab565b86555062000da4565b601f19841662000d4e8662000afc565b5f5b8281101562000d775784890151825560018201915060208501945060208101905062000d50565b8683101562000d97578489015162000d93601f89168262000c8d565b8355505b6001600288020188555050505b505050505050565b62000db781620009f2565b82525050565b5f60408201905062000dd25f83018562000dac565b62000de1602083018462000dac565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000e4e8262000b7e565b915062000e5b8362000b7e565b92508262000e6e5762000e6d62000de8565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000ebf60208362000e79565b915062000ecc8262000e89565b602082019050919050565b5f6020820190508181035f83015262000ef08162000eb1565b9050919050565b5f8115159050919050565b62000f0d8162000ef7565b82525050565b5f60208201905062000f285f83018462000f02565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000f64601f8362000e79565b915062000f718262000f2e565b602082019050919050565b5f6020820190508181035f83015262000f958162000f56565b9050919050565b5f62000fa88262000b7e565b915062000fb58362000b7e565b925082820190508082111562000fd05762000fcf62000e15565b5b92915050565b62000fe18162000b7e565b82525050565b5f60208201905062000ffc5f83018462000fd6565b92915050565b60805160a051614c7b620010405f395f8181610ee8015261182e01525f8181610bfe01528181613214015281816132f3015261331a0152614c7b5ff3fe6080604052600436106102b1575f3560e01c8063881dce6011610174578063c0246668116100db578063e2f4560511610094578063f2fde38b1161006e578063f2fde38b14610a7a578063f54dc75714610aa2578063f8b45b0514610ade578063fabb0b4f14610b08576102b8565b8063e2f4560514610a00578063e4d2fb1214610a2a578063eba4c33314610a52576102b8565b8063c0246668146108e4578063c18bc1951461090c578063c8c8ebe414610934578063d257b34f1461095e578063d85ba0631461099a578063dd62ed3e146109c4576102b8565b8063a457c2d71161012d578063a457c2d7146107b6578063a672990c146107f2578063a9059cbb1461081a578063aacebbe314610856578063b62496f51461087e578063bbc0c742146108ba576102b8565b8063881dce60146106c05780638da5cb5b146106e85780639213691314610712578063924de9b71461073c57806395d89b41146107645780639a7a23d61461078e576102b8565b80634a62bb6511610218578063715018a6116101d1578063715018a6146105f257806371fc468814610608578063751039fc146106305780637571336a1461065a5780637f73f70b1461068257806382aa7c6814610698576102b8565b80634a62bb65146104fa57806367243482146105245780636a486a8e1461054c5780636ddd1713146105765780636fc3eaec146105a057806370a08231146105b6576102b8565b806323b872dd1161026a57806323b872dd146103da57806327c8f83514610416578063313ce5671461044057806332a2c5d01461046a578063395093511461049457806349bd5a5e146104d0576102b8565b806306fdde03146102bc578063095ea7b3146102e657806310d5de53146103225780631694505e1461035e57806318160ddd14610388578063203e727e146103b2576102b8565b366102b857005b5f80fd5b3480156102c7575f80fd5b506102d0610b32565b6040516102dd919061385b565b60405180910390f35b3480156102f1575f80fd5b5061030c60048036038101906103079190613910565b610bc2565b6040516103199190613968565b60405180910390f35b34801561032d575f80fd5b5061034860048036038101906103439190613981565b610bdf565b6040516103559190613968565b60405180910390f35b348015610369575f80fd5b50610372610bfc565b60405161037f9190613a07565b60405180910390f35b348015610393575f80fd5b5061039c610c20565b6040516103a99190613a2f565b60405180910390f35b3480156103bd575f80fd5b506103d860048036038101906103d39190613a48565b610c29565b005b3480156103e5575f80fd5b5061040060048036038101906103fb9190613a73565b610d38565b60405161040d9190613968565b60405180910390f35b348015610421575f80fd5b5061042a610e2a565b6040516104379190613ad2565b60405180910390f35b34801561044b575f80fd5b50610454610e30565b6040516104619190613b06565b60405180910390f35b348015610475575f80fd5b5061047e610e38565b60405161048b9190613ad2565b60405180910390f35b34801561049f575f80fd5b506104ba60048036038101906104b59190613910565b610e3f565b6040516104c79190613968565b60405180910390f35b3480156104db575f80fd5b506104e4610ee6565b6040516104f19190613ad2565b60405180910390f35b348015610505575f80fd5b5061050e610f0a565b60405161051b9190613968565b60405180910390f35b34801561052f575f80fd5b5061054a60048036038101906105459190613bd5565b610f1c565b005b348015610557575f80fd5b50610560610fc5565b60405161056d9190613a2f565b60405180910390f35b348015610581575f80fd5b5061058a610fcb565b6040516105979190613968565b60405180910390f35b3480156105ab575f80fd5b506105b4610fde565b005b3480156105c1575f80fd5b506105dc60048036038101906105d79190613981565b61106c565b6040516105e99190613a2f565b60405180910390f35b3480156105fd575f80fd5b506106066110b1565b005b348015610613575f80fd5b5061062e60048036038101906106299190613a48565b611138565b005b34801561063b575f80fd5b5061064461120d565b6040516106519190613968565b60405180910390f35b348015610665575f80fd5b50610680600480360381019061067b9190613c7d565b6112aa565b005b34801561068d575f80fd5b5061069661137e565b005b3480156106a3575f80fd5b506106be60048036038101906106b99190613a48565b6114ce565b005b3480156106cb575f80fd5b506106e660048036038101906106e19190613a48565b611598565b005b3480156106f3575f80fd5b506106fc611659565b6040516107099190613ad2565b60405180910390f35b34801561071d575f80fd5b50610726611681565b6040516107339190613a2f565b60405180910390f35b348015610747575f80fd5b50610762600480360381019061075d9190613cbb565b611687565b005b34801561076f575f80fd5b50610778611720565b604051610785919061385b565b60405180910390f35b348015610799575f80fd5b506107b460048036038101906107af9190613c7d565b6117b0565b005b3480156107c1575f80fd5b506107dc60048036038101906107d79190613910565b6118c8565b6040516107e99190613968565b60405180910390f35b3480156107fd575f80fd5b5061081860048036038101906108139190613c7d565b6119ae565b005b348015610825575f80fd5b50610840600480360381019061083b9190613910565b611ad6565b60405161084d9190613968565b60405180910390f35b348015610861575f80fd5b5061087c60048036038101906108779190613981565b611af3565b005b348015610889575f80fd5b506108a4600480360381019061089f9190613981565b611c2d565b6040516108b19190613968565b60405180910390f35b3480156108c5575f80fd5b506108ce611c4a565b6040516108db9190613968565b60405180910390f35b3480156108ef575f80fd5b5061090a60048036038101906109059190613c7d565b611c5d565b005b348015610917575f80fd5b50610932600480360381019061092d9190613a48565b611d7f565b005b34801561093f575f80fd5b50610948611e8e565b6040516109559190613a2f565b60405180910390f35b348015610969575f80fd5b50610984600480360381019061097f9190613a48565b611e94565b6040516109919190613968565b60405180910390f35b3480156109a5575f80fd5b506109ae611fe8565b6040516109bb9190613a2f565b60405180910390f35b3480156109cf575f80fd5b506109ea60048036038101906109e59190613ce6565b611fee565b6040516109f79190613a2f565b60405180910390f35b348015610a0b575f80fd5b50610a14612070565b604051610a219190613a2f565b60405180910390f35b348015610a35575f80fd5b50610a506004803603810190610a4b9190613c7d565b612076565b005b348015610a5d575f80fd5b50610a786004803603810190610a739190613a48565b612190565b005b348015610a85575f80fd5b50610aa06004803603810190610a9b9190613981565b612265565b005b348015610aad575f80fd5b50610ac86004803603810190610ac39190613981565b61235b565b604051610ad59190613968565b60405180910390f35b348015610ae9575f80fd5b50610af2612378565b604051610aff9190613a2f565b60405180910390f35b348015610b13575f80fd5b50610b1c61237e565b604051610b299190613a2f565b60405180910390f35b606060038054610b4190613d51565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6d90613d51565b8015610bb85780601f10610b8f57610100808354040283529160200191610bb8565b820191905f5260205f20905b815481529060010190602001808311610b9b57829003601f168201915b5050505050905090565b5f610bd5610bce612384565b848461238b565b6001905092915050565b6014602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b610c31612384565b73ffffffffffffffffffffffffffffffffffffffff16610c4f611659565b73ffffffffffffffffffffffffffffffffffffffff1614610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c90613dcb565b60405180910390fd5b670de0b6b3a76400006103e86001610cbb610c20565b610cc59190613e16565b610ccf9190613e84565b610cd99190613e84565b811015610d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1290613f24565b60405180910390fd5b670de0b6b3a764000081610d2f9190613e16565b60078190555050565b5f610d4484848461254e565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d8b612384565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610e0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0190613fb2565b60405180910390fd5b610e1e85610e16612384565b85840361238b565b60019150509392505050565b61dead81565b5f6012905090565b5f30905090565b5f610edc610e4b612384565b848460015f610e58612384565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ed79190613fd0565b61238b565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a5f9054906101000a900460ff1681565b5f84849050118015610f3357508383905082829050145b610f3b575f80fd5b5f3390505f5b85859050811015610fbd57610faa82878784818110610f6357610f62614003565b5b9050602002016020810190610f789190613981565b670de0b6b3a7640000878786818110610f9457610f93614003565b5b90506020020135610fa59190613e16565b61254e565b8080610fb590614030565b915050610f41565b505050505050565b60105481565b600a60029054906101000a900460ff1681565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051611024906140a4565b5f6040518083038185875af1925050503d805f811461105e576040519150601f19603f3d011682016040523d82523d5f602084013e611063565b606091505b50508091505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6110b9612384565b73ffffffffffffffffffffffffffffffffffffffff166110d7611659565b73ffffffffffffffffffffffffffffffffffffffff161461112d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112490613dcb565b60405180910390fd5b6111365f6130b4565b565b611140612384565b73ffffffffffffffffffffffffffffffffffffffff1661115e611659565b73ffffffffffffffffffffffffffffffffffffffff16146111b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ab90613dcb565b60405180910390fd5b80600f81905550600f54600e81905550600a600e54111561120a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120190614102565b60405180910390fd5b50565b5f611216612384565b73ffffffffffffffffffffffffffffffffffffffff16611234611659565b73ffffffffffffffffffffffffffffffffffffffff161461128a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128190613dcb565b60405180910390fd5b5f600a5f6101000a81548160ff0219169083151502179055506001905090565b6112b2612384565b73ffffffffffffffffffffffffffffffffffffffff166112d0611659565b73ffffffffffffffffffffffffffffffffffffffff1614611326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131d90613dcb565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611386612384565b73ffffffffffffffffffffffffffffffffffffffff166113a4611659565b73ffffffffffffffffffffffffffffffffffffffff16146113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f190613dcb565b60405180910390fd5b6001600560146101000a81548160ff0219169083151502179055506114266114213061106c565b613177565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161146c906140a4565b5f6040518083038185875af1925050503d805f81146114a6576040519150601f19603f3d011682016040523d82523d5f602084013e6114ab565b606091505b505080915050505f600560146101000a81548160ff021916908315150217905550565b6114d6612384565b73ffffffffffffffffffffffffffffffffffffffff166114f4611659565b73ffffffffffffffffffffffffffffffffffffffff161461154a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154190613dcb565b60405180910390fd5b80600d819055506001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff02191690831515021790555043600b8190555042600c8190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115d8612384565b73ffffffffffffffffffffffffffffffffffffffff16146115f7575f80fd5b6116003061106c565b811115801561160e57505f81115b61164d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116449061416a565b60405180910390fd5b61165681613177565b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b61168f612384565b73ffffffffffffffffffffffffffffffffffffffff166116ad611659565b73ffffffffffffffffffffffffffffffffffffffff1614611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa90613dcb565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b60606004805461172f90613d51565b80601f016020809104026020016040519081016040528092919081815260200182805461175b90613d51565b80156117a65780601f1061177d576101008083540402835291602001916117a6565b820191905f5260205f20905b81548152906001019060200180831161178957829003601f168201915b5050505050905090565b6117b8612384565b73ffffffffffffffffffffffffffffffffffffffff166117d6611659565b73ffffffffffffffffffffffffffffffffffffffff161461182c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182390613dcb565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b1906141f8565b60405180910390fd5b6118c482826133aa565b5050565b5f8060015f6118d5612384565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561198f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198690614286565b60405180910390fd5b6119a361199a612384565b8585840361238b565b600191505092915050565b6119b6612384565b73ffffffffffffffffffffffffffffffffffffffff166119d4611659565b73ffffffffffffffffffffffffffffffffffffffff1614611a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2190613dcb565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f611ae9611ae2612384565b848461254e565b6001905092915050565b611afb612384565b73ffffffffffffffffffffffffffffffffffffffff16611b19611659565b73ffffffffffffffffffffffffffffffffffffffff1614611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6690613dcb565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6015602052805f5260405f205f915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b611c65612384565b73ffffffffffffffffffffffffffffffffffffffff16611c83611659565b73ffffffffffffffffffffffffffffffffffffffff1614611cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd090613dcb565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d739190613968565b60405180910390a25050565b611d87612384565b73ffffffffffffffffffffffffffffffffffffffff16611da5611659565b73ffffffffffffffffffffffffffffffffffffffff1614611dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df290613dcb565b60405180910390fd5b670de0b6b3a76400006103e86005611e11610c20565b611e1b9190613e16565b611e259190613e84565b611e2f9190613e84565b811015611e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6890614314565b60405180910390fd5b670de0b6b3a764000081611e859190613e16565b60098190555050565b60075481565b5f611e9d612384565b73ffffffffffffffffffffffffffffffffffffffff16611ebb611659565b73ffffffffffffffffffffffffffffffffffffffff1614611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613dcb565b60405180910390fd5b620186a06001611f1f610c20565b611f299190613e16565b611f339190613e84565b821015611f75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6c906143a2565b60405180910390fd5b6103e86005611f82610c20565b611f8c9190613e16565b611f969190613e84565b821115611fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcf90614430565b60405180910390fd5b8160088190555060019050919050565b600e5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b61207e612384565b73ffffffffffffffffffffffffffffffffffffffff1661209c611659565b73ffffffffffffffffffffffffffffffffffffffff16146120f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e990613dcb565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f2c04beadb1bf14656d5ffec10e6441acac147e3cc32e4a1c1212ea66025cce2160405160405180910390a35050565b612198612384565b73ffffffffffffffffffffffffffffffffffffffff166121b6611659565b73ffffffffffffffffffffffffffffffffffffffff161461220c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220390613dcb565b60405180910390fd5b80601181905550601154601081905550600a6010541115612262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225990614102565b60405180910390fd5b50565b61226d612384565b73ffffffffffffffffffffffffffffffffffffffff1661228b611659565b73ffffffffffffffffffffffffffffffffffffffff16146122e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d890613dcb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361234f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612346906144be565b60405180910390fd5b612358816130b4565b50565b6016602052805f5260405f205f915054906101000a900460ff1681565b60095481565b600d5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f09061454c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e906145da565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125419190613a2f565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b390614668565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361262a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612621906146f6565b60405180910390fd5b60165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156126b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ab9061475e565b60405180910390fd5b60165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561273e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612735906147c6565b60405180910390fd5b5f81036127555761275083835f613448565b6130af565b5f439050600a5f9054906101000a900460ff1615612ce557612775611659565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156127e357506127b3611659565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561281b57505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612855575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561286e5750600560149054906101000a900460ff16155b15612ce45780600d54600b546128849190613fd0565b106128d4576a0c685fa11e01ec6f0000006007819055506a0c685fa11e01ec6f0000006009819055506063600f81905550600f54600e81905550606360118190555060115460108190555061291b565b6a0c685fa11e01ec6f0000006007819055506a0c685fa11e01ec6f000000600981905550601e600f81905550600f54600e81905550601e6011819055506011546010819055505b600a60019054906101000a900460ff16612a0a5760125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806129ca575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a009061482e565b60405180910390fd5b5b60155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612aa7575060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612b4e57600754821115612af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae8906148bc565b60405180910390fd5b600954612afd8461106c565b83612b089190613fd0565b1115612b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4090614924565b60405180910390fd5b612ce3565b60155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612beb575060145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612c3a57600754821115612c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2c906149b2565b60405180910390fd5b612ce2565b60145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612ce157600954612c948461106c565b83612c9f9190613fd0565b1115612ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd790614924565b60405180910390fd5b5b5b5b5b5b5f612cef3061106c565b90505f6008548210159050808015612d135750600a60029054906101000a900460ff165b8015612d2c5750600560149054906101000a900460ff16155b8015612d495750600260135f8581526020019081526020015f2054105b8015612d9c575060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612def575060125f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612e42575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ea9576001600560146101000a81548160ff021916908315150217905550612e6a6136bd565b60135f8481526020019081526020015f205f8154612e8790614030565b919050819055505f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff1615905060125f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612f58575060125f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612f61575f90505b5f811561309e5760155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612fbf57505f601054115b15612ff357612fec6064612fde6010548961379d90919063ffffffff16565b6137b290919063ffffffff16565b905061307b565b60155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561304a57505f600e54115b1561307a576130776064613069600e548961379d90919063ffffffff16565b6137b290919063ffffffff16565b90505b5b5f81111561308f5761308e883083613448565b5b808661309b91906149d0565b95505b6130a9888888613448565b50505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff81111561319357613192614a03565b5b6040519080825280602002602001820160405280156131c15781602001602082028036833780820191505090505b50905030815f815181106131d8576131d7614003565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561327b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061329f9190614a44565b816001815181106132b3576132b2614003565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613318307f00000000000000000000000000000000000000000000000000000000000000008461238b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613379959493929190614b5f565b5f604051808303815f87803b158015613390575f80fd5b505af11580156133a2573d5f803e3d5ffd5b505050505050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036134b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ad90614668565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351b906146f6565b60405180910390fd5b61352f8383836137c7565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156135b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a990614c27565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546136409190613fd0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136a49190613a2f565b60405180910390a36136b78484846137cc565b50505050565b5f6136c73061106c565b90505f8082036136d857505061379b565b60146008546136e79190613e16565b8211156137005760146008546136fd9190613e16565b91505b5f82905061370d81613177565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613752906140a4565b5f6040518083038185875af1925050503d805f811461378c576040519150601f19603f3d011682016040523d82523d5f602084013e613791565b606091505b5050809250505050505b565b5f81836137aa9190613e16565b905092915050565b5f81836137bf9190613e84565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156138085780820151818401526020810190506137ed565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61382d826137d1565b61383781856137db565b93506138478185602086016137eb565b61385081613813565b840191505092915050565b5f6020820190508181035f8301526138738184613823565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6138ac82613883565b9050919050565b6138bc816138a2565b81146138c6575f80fd5b50565b5f813590506138d7816138b3565b92915050565b5f819050919050565b6138ef816138dd565b81146138f9575f80fd5b50565b5f8135905061390a816138e6565b92915050565b5f80604083850312156139265761392561387b565b5b5f613933858286016138c9565b9250506020613944858286016138fc565b9150509250929050565b5f8115159050919050565b6139628161394e565b82525050565b5f60208201905061397b5f830184613959565b92915050565b5f602082840312156139965761399561387b565b5b5f6139a3848285016138c9565b91505092915050565b5f819050919050565b5f6139cf6139ca6139c584613883565b6139ac565b613883565b9050919050565b5f6139e0826139b5565b9050919050565b5f6139f1826139d6565b9050919050565b613a01816139e7565b82525050565b5f602082019050613a1a5f8301846139f8565b92915050565b613a29816138dd565b82525050565b5f602082019050613a425f830184613a20565b92915050565b5f60208284031215613a5d57613a5c61387b565b5b5f613a6a848285016138fc565b91505092915050565b5f805f60608486031215613a8a57613a8961387b565b5b5f613a97868287016138c9565b9350506020613aa8868287016138c9565b9250506040613ab9868287016138fc565b9150509250925092565b613acc816138a2565b82525050565b5f602082019050613ae55f830184613ac3565b92915050565b5f60ff82169050919050565b613b0081613aeb565b82525050565b5f602082019050613b195f830184613af7565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613b4057613b3f613b1f565b5b8235905067ffffffffffffffff811115613b5d57613b5c613b23565b5b602083019150836020820283011115613b7957613b78613b27565b5b9250929050565b5f8083601f840112613b9557613b94613b1f565b5b8235905067ffffffffffffffff811115613bb257613bb1613b23565b5b602083019150836020820283011115613bce57613bcd613b27565b5b9250929050565b5f805f8060408587031215613bed57613bec61387b565b5b5f85013567ffffffffffffffff811115613c0a57613c0961387f565b5b613c1687828801613b2b565b9450945050602085013567ffffffffffffffff811115613c3957613c3861387f565b5b613c4587828801613b80565b925092505092959194509250565b613c5c8161394e565b8114613c66575f80fd5b50565b5f81359050613c7781613c53565b92915050565b5f8060408385031215613c9357613c9261387b565b5b5f613ca0858286016138c9565b9250506020613cb185828601613c69565b9150509250929050565b5f60208284031215613cd057613ccf61387b565b5b5f613cdd84828501613c69565b91505092915050565b5f8060408385031215613cfc57613cfb61387b565b5b5f613d09858286016138c9565b9250506020613d1a858286016138c9565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613d6857607f821691505b602082108103613d7b57613d7a613d24565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613db56020836137db565b9150613dc082613d81565b602082019050919050565b5f6020820190508181035f830152613de281613da9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613e20826138dd565b9150613e2b836138dd565b9250828202613e39816138dd565b91508282048414831517613e5057613e4f613de9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e8e826138dd565b9150613e99836138dd565b925082613ea957613ea8613e57565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f613f0e602f836137db565b9150613f1982613eb4565b604082019050919050565b5f6020820190508181035f830152613f3b81613f02565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613f9c6028836137db565b9150613fa782613f42565b604082019050919050565b5f6020820190508181035f830152613fc981613f90565b9050919050565b5f613fda826138dd565b9150613fe5836138dd565b9250828201905080821115613ffd57613ffc613de9565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61403a826138dd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361406c5761406b613de9565b5b600182019050919050565b5f81905092915050565b50565b5f61408f5f83614077565b915061409a82614081565b5f82019050919050565b5f6140ae82614084565b9150819050919050565b7f4d757374206b6565702066656573206174203525206f72206c657373000000005f82015250565b5f6140ec601c836137db565b91506140f7826140b8565b602082019050919050565b5f6020820190508181035f830152614119816140e0565b9050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f614154600c836137db565b915061415f82614120565b602082019050919050565b5f6020820190508181035f83015261418181614148565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6141e26039836137db565b91506141ed82614188565b604082019050919050565b5f6020820190508181035f83015261420f816141d6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6142706025836137db565b915061427b82614216565b604082019050919050565b5f6020820190508181035f83015261429d81614264565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f6142fe6024836137db565b9150614309826142a4565b604082019050919050565b5f6020820190508181035f83015261432b816142f2565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f61438c6035836137db565b915061439782614332565b604082019050919050565b5f6020820190508181035f8301526143b981614380565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f61441a6034836137db565b9150614425826143c0565b604082019050919050565b5f6020820190508181035f8301526144478161440e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6144a86026836137db565b91506144b38261444e565b604082019050919050565b5f6020820190508181035f8301526144d58161449c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6145366024836137db565b9150614541826144dc565b604082019050919050565b5f6020820190508181035f8301526145638161452a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6145c46022836137db565b91506145cf8261456a565b604082019050919050565b5f6020820190508181035f8301526145f1816145b8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6146526025836137db565b915061465d826145f8565b604082019050919050565b5f6020820190508181035f83015261467f81614646565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6146e06023836137db565b91506146eb82614686565b604082019050919050565b5f6020820190508181035f83015261470d816146d4565b9050919050565b7f46524f4d206164647265737320697320626c61636b6c697374656400000000005f82015250565b5f614748601b836137db565b915061475382614714565b602082019050919050565b5f6020820190508181035f8301526147758161473c565b9050919050565b7f544f206164647265737320697320626c61636b6c6973746564000000000000005f82015250565b5f6147b06019836137db565b91506147bb8261477c565b602082019050919050565b5f6020820190508181035f8301526147dd816147a4565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6148186016836137db565b9150614823826147e4565b602082019050919050565b5f6020820190508181035f8301526148458161480c565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6148a66035836137db565b91506148b18261484c565b604082019050919050565b5f6020820190508181035f8301526148d38161489a565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61490e6013836137db565b9150614919826148da565b602082019050919050565b5f6020820190508181035f83015261493b81614902565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61499c6036836137db565b91506149a782614942565b604082019050919050565b5f6020820190508181035f8301526149c981614990565b9050919050565b5f6149da826138dd565b91506149e5836138dd565b92508282039050818111156149fd576149fc613de9565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050614a3e816138b3565b92915050565b5f60208284031215614a5957614a5861387b565b5b5f614a6684828501614a30565b91505092915050565b5f819050919050565b5f614a92614a8d614a8884614a6f565b6139ac565b6138dd565b9050919050565b614aa281614a78565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614ada816138a2565b82525050565b5f614aeb8383614ad1565b60208301905092915050565b5f602082019050919050565b5f614b0d82614aa8565b614b178185614ab2565b9350614b2283614ac2565b805f5b83811015614b52578151614b398882614ae0565b9750614b4483614af7565b925050600181019050614b25565b5085935050505092915050565b5f60a082019050614b725f830188613a20565b614b7f6020830187614a99565b8181036040830152614b918186614b03565b9050614ba06060830185613ac3565b614bad6080830184613a20565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614c116026836137db565b9150614c1c82614bb7565b604082019050919050565b5f6020820190508181035f830152614c3e81614c05565b905091905056fea26469706673582212205ac6b1eac752a23cb4b5e378b7810275cd821eeff3a3f1ed5b5cf5e5ecc2fdd664736f6c634300081500330000000000000000000000001af15726b9d2991fd5c7e61e5e1ac8fea718c752

Deployed Bytecode

0x6080604052600436106102b1575f3560e01c8063881dce6011610174578063c0246668116100db578063e2f4560511610094578063f2fde38b1161006e578063f2fde38b14610a7a578063f54dc75714610aa2578063f8b45b0514610ade578063fabb0b4f14610b08576102b8565b8063e2f4560514610a00578063e4d2fb1214610a2a578063eba4c33314610a52576102b8565b8063c0246668146108e4578063c18bc1951461090c578063c8c8ebe414610934578063d257b34f1461095e578063d85ba0631461099a578063dd62ed3e146109c4576102b8565b8063a457c2d71161012d578063a457c2d7146107b6578063a672990c146107f2578063a9059cbb1461081a578063aacebbe314610856578063b62496f51461087e578063bbc0c742146108ba576102b8565b8063881dce60146106c05780638da5cb5b146106e85780639213691314610712578063924de9b71461073c57806395d89b41146107645780639a7a23d61461078e576102b8565b80634a62bb6511610218578063715018a6116101d1578063715018a6146105f257806371fc468814610608578063751039fc146106305780637571336a1461065a5780637f73f70b1461068257806382aa7c6814610698576102b8565b80634a62bb65146104fa57806367243482146105245780636a486a8e1461054c5780636ddd1713146105765780636fc3eaec146105a057806370a08231146105b6576102b8565b806323b872dd1161026a57806323b872dd146103da57806327c8f83514610416578063313ce5671461044057806332a2c5d01461046a578063395093511461049457806349bd5a5e146104d0576102b8565b806306fdde03146102bc578063095ea7b3146102e657806310d5de53146103225780631694505e1461035e57806318160ddd14610388578063203e727e146103b2576102b8565b366102b857005b5f80fd5b3480156102c7575f80fd5b506102d0610b32565b6040516102dd919061385b565b60405180910390f35b3480156102f1575f80fd5b5061030c60048036038101906103079190613910565b610bc2565b6040516103199190613968565b60405180910390f35b34801561032d575f80fd5b5061034860048036038101906103439190613981565b610bdf565b6040516103559190613968565b60405180910390f35b348015610369575f80fd5b50610372610bfc565b60405161037f9190613a07565b60405180910390f35b348015610393575f80fd5b5061039c610c20565b6040516103a99190613a2f565b60405180910390f35b3480156103bd575f80fd5b506103d860048036038101906103d39190613a48565b610c29565b005b3480156103e5575f80fd5b5061040060048036038101906103fb9190613a73565b610d38565b60405161040d9190613968565b60405180910390f35b348015610421575f80fd5b5061042a610e2a565b6040516104379190613ad2565b60405180910390f35b34801561044b575f80fd5b50610454610e30565b6040516104619190613b06565b60405180910390f35b348015610475575f80fd5b5061047e610e38565b60405161048b9190613ad2565b60405180910390f35b34801561049f575f80fd5b506104ba60048036038101906104b59190613910565b610e3f565b6040516104c79190613968565b60405180910390f35b3480156104db575f80fd5b506104e4610ee6565b6040516104f19190613ad2565b60405180910390f35b348015610505575f80fd5b5061050e610f0a565b60405161051b9190613968565b60405180910390f35b34801561052f575f80fd5b5061054a60048036038101906105459190613bd5565b610f1c565b005b348015610557575f80fd5b50610560610fc5565b60405161056d9190613a2f565b60405180910390f35b348015610581575f80fd5b5061058a610fcb565b6040516105979190613968565b60405180910390f35b3480156105ab575f80fd5b506105b4610fde565b005b3480156105c1575f80fd5b506105dc60048036038101906105d79190613981565b61106c565b6040516105e99190613a2f565b60405180910390f35b3480156105fd575f80fd5b506106066110b1565b005b348015610613575f80fd5b5061062e60048036038101906106299190613a48565b611138565b005b34801561063b575f80fd5b5061064461120d565b6040516106519190613968565b60405180910390f35b348015610665575f80fd5b50610680600480360381019061067b9190613c7d565b6112aa565b005b34801561068d575f80fd5b5061069661137e565b005b3480156106a3575f80fd5b506106be60048036038101906106b99190613a48565b6114ce565b005b3480156106cb575f80fd5b506106e660048036038101906106e19190613a48565b611598565b005b3480156106f3575f80fd5b506106fc611659565b6040516107099190613ad2565b60405180910390f35b34801561071d575f80fd5b50610726611681565b6040516107339190613a2f565b60405180910390f35b348015610747575f80fd5b50610762600480360381019061075d9190613cbb565b611687565b005b34801561076f575f80fd5b50610778611720565b604051610785919061385b565b60405180910390f35b348015610799575f80fd5b506107b460048036038101906107af9190613c7d565b6117b0565b005b3480156107c1575f80fd5b506107dc60048036038101906107d79190613910565b6118c8565b6040516107e99190613968565b60405180910390f35b3480156107fd575f80fd5b5061081860048036038101906108139190613c7d565b6119ae565b005b348015610825575f80fd5b50610840600480360381019061083b9190613910565b611ad6565b60405161084d9190613968565b60405180910390f35b348015610861575f80fd5b5061087c60048036038101906108779190613981565b611af3565b005b348015610889575f80fd5b506108a4600480360381019061089f9190613981565b611c2d565b6040516108b19190613968565b60405180910390f35b3480156108c5575f80fd5b506108ce611c4a565b6040516108db9190613968565b60405180910390f35b3480156108ef575f80fd5b5061090a60048036038101906109059190613c7d565b611c5d565b005b348015610917575f80fd5b50610932600480360381019061092d9190613a48565b611d7f565b005b34801561093f575f80fd5b50610948611e8e565b6040516109559190613a2f565b60405180910390f35b348015610969575f80fd5b50610984600480360381019061097f9190613a48565b611e94565b6040516109919190613968565b60405180910390f35b3480156109a5575f80fd5b506109ae611fe8565b6040516109bb9190613a2f565b60405180910390f35b3480156109cf575f80fd5b506109ea60048036038101906109e59190613ce6565b611fee565b6040516109f79190613a2f565b60405180910390f35b348015610a0b575f80fd5b50610a14612070565b604051610a219190613a2f565b60405180910390f35b348015610a35575f80fd5b50610a506004803603810190610a4b9190613c7d565b612076565b005b348015610a5d575f80fd5b50610a786004803603810190610a739190613a48565b612190565b005b348015610a85575f80fd5b50610aa06004803603810190610a9b9190613981565b612265565b005b348015610aad575f80fd5b50610ac86004803603810190610ac39190613981565b61235b565b604051610ad59190613968565b60405180910390f35b348015610ae9575f80fd5b50610af2612378565b604051610aff9190613a2f565b60405180910390f35b348015610b13575f80fd5b50610b1c61237e565b604051610b299190613a2f565b60405180910390f35b606060038054610b4190613d51565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6d90613d51565b8015610bb85780601f10610b8f57610100808354040283529160200191610bb8565b820191905f5260205f20905b815481529060010190602001808311610b9b57829003601f168201915b5050505050905090565b5f610bd5610bce612384565b848461238b565b6001905092915050565b6014602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b610c31612384565b73ffffffffffffffffffffffffffffffffffffffff16610c4f611659565b73ffffffffffffffffffffffffffffffffffffffff1614610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c90613dcb565b60405180910390fd5b670de0b6b3a76400006103e86001610cbb610c20565b610cc59190613e16565b610ccf9190613e84565b610cd99190613e84565b811015610d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1290613f24565b60405180910390fd5b670de0b6b3a764000081610d2f9190613e16565b60078190555050565b5f610d4484848461254e565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d8b612384565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610e0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0190613fb2565b60405180910390fd5b610e1e85610e16612384565b85840361238b565b60019150509392505050565b61dead81565b5f6012905090565b5f30905090565b5f610edc610e4b612384565b848460015f610e58612384565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ed79190613fd0565b61238b565b6001905092915050565b7f000000000000000000000000f7144c4318e855bef6aa25f9a5dbaaf0f371bca981565b600a5f9054906101000a900460ff1681565b5f84849050118015610f3357508383905082829050145b610f3b575f80fd5b5f3390505f5b85859050811015610fbd57610faa82878784818110610f6357610f62614003565b5b9050602002016020810190610f789190613981565b670de0b6b3a7640000878786818110610f9457610f93614003565b5b90506020020135610fa59190613e16565b61254e565b8080610fb590614030565b915050610f41565b505050505050565b60105481565b600a60029054906101000a900460ff1681565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051611024906140a4565b5f6040518083038185875af1925050503d805f811461105e576040519150601f19603f3d011682016040523d82523d5f602084013e611063565b606091505b50508091505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6110b9612384565b73ffffffffffffffffffffffffffffffffffffffff166110d7611659565b73ffffffffffffffffffffffffffffffffffffffff161461112d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112490613dcb565b60405180910390fd5b6111365f6130b4565b565b611140612384565b73ffffffffffffffffffffffffffffffffffffffff1661115e611659565b73ffffffffffffffffffffffffffffffffffffffff16146111b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ab90613dcb565b60405180910390fd5b80600f81905550600f54600e81905550600a600e54111561120a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120190614102565b60405180910390fd5b50565b5f611216612384565b73ffffffffffffffffffffffffffffffffffffffff16611234611659565b73ffffffffffffffffffffffffffffffffffffffff161461128a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128190613dcb565b60405180910390fd5b5f600a5f6101000a81548160ff0219169083151502179055506001905090565b6112b2612384565b73ffffffffffffffffffffffffffffffffffffffff166112d0611659565b73ffffffffffffffffffffffffffffffffffffffff1614611326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131d90613dcb565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611386612384565b73ffffffffffffffffffffffffffffffffffffffff166113a4611659565b73ffffffffffffffffffffffffffffffffffffffff16146113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f190613dcb565b60405180910390fd5b6001600560146101000a81548160ff0219169083151502179055506114266114213061106c565b613177565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161146c906140a4565b5f6040518083038185875af1925050503d805f81146114a6576040519150601f19603f3d011682016040523d82523d5f602084013e6114ab565b606091505b505080915050505f600560146101000a81548160ff021916908315150217905550565b6114d6612384565b73ffffffffffffffffffffffffffffffffffffffff166114f4611659565b73ffffffffffffffffffffffffffffffffffffffff161461154a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154190613dcb565b60405180910390fd5b80600d819055506001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff02191690831515021790555043600b8190555042600c8190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115d8612384565b73ffffffffffffffffffffffffffffffffffffffff16146115f7575f80fd5b6116003061106c565b811115801561160e57505f81115b61164d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116449061416a565b60405180910390fd5b61165681613177565b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b61168f612384565b73ffffffffffffffffffffffffffffffffffffffff166116ad611659565b73ffffffffffffffffffffffffffffffffffffffff1614611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa90613dcb565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b60606004805461172f90613d51565b80601f016020809104026020016040519081016040528092919081815260200182805461175b90613d51565b80156117a65780601f1061177d576101008083540402835291602001916117a6565b820191905f5260205f20905b81548152906001019060200180831161178957829003601f168201915b5050505050905090565b6117b8612384565b73ffffffffffffffffffffffffffffffffffffffff166117d6611659565b73ffffffffffffffffffffffffffffffffffffffff161461182c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182390613dcb565b60405180910390fd5b7f000000000000000000000000f7144c4318e855bef6aa25f9a5dbaaf0f371bca973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b1906141f8565b60405180910390fd5b6118c482826133aa565b5050565b5f8060015f6118d5612384565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561198f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198690614286565b60405180910390fd5b6119a361199a612384565b8585840361238b565b600191505092915050565b6119b6612384565b73ffffffffffffffffffffffffffffffffffffffff166119d4611659565b73ffffffffffffffffffffffffffffffffffffffff1614611a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2190613dcb565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f611ae9611ae2612384565b848461254e565b6001905092915050565b611afb612384565b73ffffffffffffffffffffffffffffffffffffffff16611b19611659565b73ffffffffffffffffffffffffffffffffffffffff1614611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6690613dcb565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6015602052805f5260405f205f915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b611c65612384565b73ffffffffffffffffffffffffffffffffffffffff16611c83611659565b73ffffffffffffffffffffffffffffffffffffffff1614611cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd090613dcb565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d739190613968565b60405180910390a25050565b611d87612384565b73ffffffffffffffffffffffffffffffffffffffff16611da5611659565b73ffffffffffffffffffffffffffffffffffffffff1614611dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df290613dcb565b60405180910390fd5b670de0b6b3a76400006103e86005611e11610c20565b611e1b9190613e16565b611e259190613e84565b611e2f9190613e84565b811015611e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6890614314565b60405180910390fd5b670de0b6b3a764000081611e859190613e16565b60098190555050565b60075481565b5f611e9d612384565b73ffffffffffffffffffffffffffffffffffffffff16611ebb611659565b73ffffffffffffffffffffffffffffffffffffffff1614611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613dcb565b60405180910390fd5b620186a06001611f1f610c20565b611f299190613e16565b611f339190613e84565b821015611f75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6c906143a2565b60405180910390fd5b6103e86005611f82610c20565b611f8c9190613e16565b611f969190613e84565b821115611fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcf90614430565b60405180910390fd5b8160088190555060019050919050565b600e5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b61207e612384565b73ffffffffffffffffffffffffffffffffffffffff1661209c611659565b73ffffffffffffffffffffffffffffffffffffffff16146120f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e990613dcb565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f2c04beadb1bf14656d5ffec10e6441acac147e3cc32e4a1c1212ea66025cce2160405160405180910390a35050565b612198612384565b73ffffffffffffffffffffffffffffffffffffffff166121b6611659565b73ffffffffffffffffffffffffffffffffffffffff161461220c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220390613dcb565b60405180910390fd5b80601181905550601154601081905550600a6010541115612262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225990614102565b60405180910390fd5b50565b61226d612384565b73ffffffffffffffffffffffffffffffffffffffff1661228b611659565b73ffffffffffffffffffffffffffffffffffffffff16146122e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d890613dcb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361234f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612346906144be565b60405180910390fd5b612358816130b4565b50565b6016602052805f5260405f205f915054906101000a900460ff1681565b60095481565b600d5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f09061454c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e906145da565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125419190613a2f565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b390614668565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361262a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612621906146f6565b60405180910390fd5b60165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156126b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ab9061475e565b60405180910390fd5b60165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561273e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612735906147c6565b60405180910390fd5b5f81036127555761275083835f613448565b6130af565b5f439050600a5f9054906101000a900460ff1615612ce557612775611659565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156127e357506127b3611659565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561281b57505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612855575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561286e5750600560149054906101000a900460ff16155b15612ce45780600d54600b546128849190613fd0565b106128d4576a0c685fa11e01ec6f0000006007819055506a0c685fa11e01ec6f0000006009819055506063600f81905550600f54600e81905550606360118190555060115460108190555061291b565b6a0c685fa11e01ec6f0000006007819055506a0c685fa11e01ec6f000000600981905550601e600f81905550600f54600e81905550601e6011819055506011546010819055505b600a60019054906101000a900460ff16612a0a5760125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806129ca575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a009061482e565b60405180910390fd5b5b60155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612aa7575060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612b4e57600754821115612af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae8906148bc565b60405180910390fd5b600954612afd8461106c565b83612b089190613fd0565b1115612b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4090614924565b60405180910390fd5b612ce3565b60155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612beb575060145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612c3a57600754821115612c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2c906149b2565b60405180910390fd5b612ce2565b60145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612ce157600954612c948461106c565b83612c9f9190613fd0565b1115612ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd790614924565b60405180910390fd5b5b5b5b5b5b5f612cef3061106c565b90505f6008548210159050808015612d135750600a60029054906101000a900460ff165b8015612d2c5750600560149054906101000a900460ff16155b8015612d495750600260135f8581526020019081526020015f2054105b8015612d9c575060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612def575060125f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612e42575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ea9576001600560146101000a81548160ff021916908315150217905550612e6a6136bd565b60135f8481526020019081526020015f205f8154612e8790614030565b919050819055505f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff1615905060125f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612f58575060125f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612f61575f90505b5f811561309e5760155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612fbf57505f601054115b15612ff357612fec6064612fde6010548961379d90919063ffffffff16565b6137b290919063ffffffff16565b905061307b565b60155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561304a57505f600e54115b1561307a576130776064613069600e548961379d90919063ffffffff16565b6137b290919063ffffffff16565b90505b5b5f81111561308f5761308e883083613448565b5b808661309b91906149d0565b95505b6130a9888888613448565b50505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff81111561319357613192614a03565b5b6040519080825280602002602001820160405280156131c15781602001602082028036833780820191505090505b50905030815f815181106131d8576131d7614003565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561327b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061329f9190614a44565b816001815181106132b3576132b2614003565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613318307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461238b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613379959493929190614b5f565b5f604051808303815f87803b158015613390575f80fd5b505af11580156133a2573d5f803e3d5ffd5b505050505050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036134b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ad90614668565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351b906146f6565b60405180910390fd5b61352f8383836137c7565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156135b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a990614c27565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546136409190613fd0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136a49190613a2f565b60405180910390a36136b78484846137cc565b50505050565b5f6136c73061106c565b90505f8082036136d857505061379b565b60146008546136e79190613e16565b8211156137005760146008546136fd9190613e16565b91505b5f82905061370d81613177565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613752906140a4565b5f6040518083038185875af1925050503d805f811461378c576040519150601f19603f3d011682016040523d82523d5f602084013e613791565b606091505b5050809250505050505b565b5f81836137aa9190613e16565b905092915050565b5f81836137bf9190613e84565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156138085780820151818401526020810190506137ed565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61382d826137d1565b61383781856137db565b93506138478185602086016137eb565b61385081613813565b840191505092915050565b5f6020820190508181035f8301526138738184613823565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6138ac82613883565b9050919050565b6138bc816138a2565b81146138c6575f80fd5b50565b5f813590506138d7816138b3565b92915050565b5f819050919050565b6138ef816138dd565b81146138f9575f80fd5b50565b5f8135905061390a816138e6565b92915050565b5f80604083850312156139265761392561387b565b5b5f613933858286016138c9565b9250506020613944858286016138fc565b9150509250929050565b5f8115159050919050565b6139628161394e565b82525050565b5f60208201905061397b5f830184613959565b92915050565b5f602082840312156139965761399561387b565b5b5f6139a3848285016138c9565b91505092915050565b5f819050919050565b5f6139cf6139ca6139c584613883565b6139ac565b613883565b9050919050565b5f6139e0826139b5565b9050919050565b5f6139f1826139d6565b9050919050565b613a01816139e7565b82525050565b5f602082019050613a1a5f8301846139f8565b92915050565b613a29816138dd565b82525050565b5f602082019050613a425f830184613a20565b92915050565b5f60208284031215613a5d57613a5c61387b565b5b5f613a6a848285016138fc565b91505092915050565b5f805f60608486031215613a8a57613a8961387b565b5b5f613a97868287016138c9565b9350506020613aa8868287016138c9565b9250506040613ab9868287016138fc565b9150509250925092565b613acc816138a2565b82525050565b5f602082019050613ae55f830184613ac3565b92915050565b5f60ff82169050919050565b613b0081613aeb565b82525050565b5f602082019050613b195f830184613af7565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613b4057613b3f613b1f565b5b8235905067ffffffffffffffff811115613b5d57613b5c613b23565b5b602083019150836020820283011115613b7957613b78613b27565b5b9250929050565b5f8083601f840112613b9557613b94613b1f565b5b8235905067ffffffffffffffff811115613bb257613bb1613b23565b5b602083019150836020820283011115613bce57613bcd613b27565b5b9250929050565b5f805f8060408587031215613bed57613bec61387b565b5b5f85013567ffffffffffffffff811115613c0a57613c0961387f565b5b613c1687828801613b2b565b9450945050602085013567ffffffffffffffff811115613c3957613c3861387f565b5b613c4587828801613b80565b925092505092959194509250565b613c5c8161394e565b8114613c66575f80fd5b50565b5f81359050613c7781613c53565b92915050565b5f8060408385031215613c9357613c9261387b565b5b5f613ca0858286016138c9565b9250506020613cb185828601613c69565b9150509250929050565b5f60208284031215613cd057613ccf61387b565b5b5f613cdd84828501613c69565b91505092915050565b5f8060408385031215613cfc57613cfb61387b565b5b5f613d09858286016138c9565b9250506020613d1a858286016138c9565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613d6857607f821691505b602082108103613d7b57613d7a613d24565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613db56020836137db565b9150613dc082613d81565b602082019050919050565b5f6020820190508181035f830152613de281613da9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613e20826138dd565b9150613e2b836138dd565b9250828202613e39816138dd565b91508282048414831517613e5057613e4f613de9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e8e826138dd565b9150613e99836138dd565b925082613ea957613ea8613e57565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f613f0e602f836137db565b9150613f1982613eb4565b604082019050919050565b5f6020820190508181035f830152613f3b81613f02565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613f9c6028836137db565b9150613fa782613f42565b604082019050919050565b5f6020820190508181035f830152613fc981613f90565b9050919050565b5f613fda826138dd565b9150613fe5836138dd565b9250828201905080821115613ffd57613ffc613de9565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61403a826138dd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361406c5761406b613de9565b5b600182019050919050565b5f81905092915050565b50565b5f61408f5f83614077565b915061409a82614081565b5f82019050919050565b5f6140ae82614084565b9150819050919050565b7f4d757374206b6565702066656573206174203525206f72206c657373000000005f82015250565b5f6140ec601c836137db565b91506140f7826140b8565b602082019050919050565b5f6020820190508181035f830152614119816140e0565b9050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f614154600c836137db565b915061415f82614120565b602082019050919050565b5f6020820190508181035f83015261418181614148565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6141e26039836137db565b91506141ed82614188565b604082019050919050565b5f6020820190508181035f83015261420f816141d6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6142706025836137db565b915061427b82614216565b604082019050919050565b5f6020820190508181035f83015261429d81614264565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f6142fe6024836137db565b9150614309826142a4565b604082019050919050565b5f6020820190508181035f83015261432b816142f2565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f61438c6035836137db565b915061439782614332565b604082019050919050565b5f6020820190508181035f8301526143b981614380565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f61441a6034836137db565b9150614425826143c0565b604082019050919050565b5f6020820190508181035f8301526144478161440e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6144a86026836137db565b91506144b38261444e565b604082019050919050565b5f6020820190508181035f8301526144d58161449c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6145366024836137db565b9150614541826144dc565b604082019050919050565b5f6020820190508181035f8301526145638161452a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6145c46022836137db565b91506145cf8261456a565b604082019050919050565b5f6020820190508181035f8301526145f1816145b8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6146526025836137db565b915061465d826145f8565b604082019050919050565b5f6020820190508181035f83015261467f81614646565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6146e06023836137db565b91506146eb82614686565b604082019050919050565b5f6020820190508181035f83015261470d816146d4565b9050919050565b7f46524f4d206164647265737320697320626c61636b6c697374656400000000005f82015250565b5f614748601b836137db565b915061475382614714565b602082019050919050565b5f6020820190508181035f8301526147758161473c565b9050919050565b7f544f206164647265737320697320626c61636b6c6973746564000000000000005f82015250565b5f6147b06019836137db565b91506147bb8261477c565b602082019050919050565b5f6020820190508181035f8301526147dd816147a4565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6148186016836137db565b9150614823826147e4565b602082019050919050565b5f6020820190508181035f8301526148458161480c565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6148a66035836137db565b91506148b18261484c565b604082019050919050565b5f6020820190508181035f8301526148d38161489a565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61490e6013836137db565b9150614919826148da565b602082019050919050565b5f6020820190508181035f83015261493b81614902565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61499c6036836137db565b91506149a782614942565b604082019050919050565b5f6020820190508181035f8301526149c981614990565b9050919050565b5f6149da826138dd565b91506149e5836138dd565b92508282039050818111156149fd576149fc613de9565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050614a3e816138b3565b92915050565b5f60208284031215614a5957614a5861387b565b5b5f614a6684828501614a30565b91505092915050565b5f819050919050565b5f614a92614a8d614a8884614a6f565b6139ac565b6138dd565b9050919050565b614aa281614a78565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614ada816138a2565b82525050565b5f614aeb8383614ad1565b60208301905092915050565b5f602082019050919050565b5f614b0d82614aa8565b614b178185614ab2565b9350614b2283614ac2565b805f5b83811015614b52578151614b398882614ae0565b9750614b4483614af7565b925050600181019050614b25565b5085935050505092915050565b5f60a082019050614b725f830188613a20565b614b7f6020830187614a99565b8181036040830152614b918186614b03565b9050614ba06060830185613ac3565b614bad6080830184613a20565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614c116026836137db565b9150614c1c82614bb7565b604082019050919050565b5f6020820190508181035f830152614c3e81614c05565b905091905056fea26469706673582212205ac6b1eac752a23cb4b5e378b7810275cd821eeff3a3f1ed5b5cf5e5ecc2fdd664736f6c63430008150033

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

0000000000000000000000001af15726b9d2991fd5c7e61e5e1ac8fea718c752

-----Decoded View---------------
Arg [0] : _wallet (address): 0x1af15726b9D2991FD5c7e61e5e1aC8fEA718C752

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001af15726b9d2991fd5c7e61e5e1ac8fea718c752


Deployed Bytecode Sourcemap

16080:13541:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3777:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4691:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17006:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16164:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4098:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19911:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4868:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16267:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3997:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28558:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5368:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16222:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16522:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23147:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16818:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16602:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21463:174;;;;;;;;;;;;;:::i;:::-;;4214:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1895:103;;;;;;;;;;;;;:::i;:::-;;22403:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19277:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20673:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29373:245;;;;;;;;;;;;;:::i;:::-;;19026:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21234:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1670:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16853:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20936:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3885:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21645:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5591:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20458:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4349:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22908:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17076:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16562:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21044:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20194:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16407:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19406:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16744:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4532:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16449:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21957:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22653:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2008:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17140:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16489:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16710:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3777:100;3831:13;3864:5;3857:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3777:100;:::o;4691:169::-;4774:4;4791:39;4800:12;:10;:12::i;:::-;4814:7;4823:6;4791:8;:39::i;:::-;4848:4;4841:11;;4691:169;;;;:::o;17006:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;16164:51::-;;;:::o;4098:108::-;4159:7;4186:12;;4179:19;;4098:108;:::o;19911:275::-;1818:12;:10;:12::i;:::-;1807:23;;:7;:5;:7::i;:::-;:23;;;1799:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20048:4:::1;20040;20035:1;20019:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20018:26;;;;:::i;:::-;20017:35;;;;:::i;:::-;20007:6;:45;;19985:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;20171:6;20161;:17;;;;:::i;:::-;20138:20;:40;;;;19911:275:::0;:::o;4868:492::-;5008:4;5025:36;5035:6;5043:9;5054:6;5025:9;:36::i;:::-;5074:24;5101:11;:19;5113:6;5101:19;;;;;;;;;;;;;;;:33;5121:12;:10;:12::i;:::-;5101:33;;;;;;;;;;;;;;;;5074:60;;5173:6;5153:16;:26;;5145:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5260:57;5269:6;5277:12;:10;:12::i;:::-;5310:6;5291:16;:25;5260:8;:57::i;:::-;5348:4;5341:11;;;4868:492;;;;;:::o;16267:53::-;16313:6;16267:53;:::o;3997:93::-;4055:5;4080:2;4073:9;;3997:93;:::o;28558:100::-;28610:7;28645:4;28630:20;;28558:100;:::o;5368:215::-;5456:4;5473:80;5482:12;:10;:12::i;:::-;5496:7;5542:10;5505:11;:25;5517:12;:10;:12::i;:::-;5505:25;;;;;;;;;;;;;;;:34;5531:7;5505:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5473:8;:80::i;:::-;5571:4;5564:11;;5368:215;;;;:::o;16222:38::-;;;:::o;16522:33::-;;;;;;;;;;;;;:::o;23147:353::-;23271:1;23252:9;;:16;;:20;:58;;;;;23294:9;;:16;;23276:7;;:14;;:34;23252:58;23244:67;;;;;;23324:12;23339:10;23324:25;;23369:6;23364:129;23385:9;;:16;;23381:1;:20;23364:129;;;23425:52;23435:4;23441:9;;23451:1;23441:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;23469:6;23455:7;;23463:1;23455:10;;;;;;;:::i;:::-;;;;;;;;:21;;;;:::i;:::-;23425:9;:52::i;:::-;23403:3;;;;;:::i;:::-;;;;23364:129;;;;23231:269;23147:353;;;;:::o;16818:28::-;;;;:::o;16602:31::-;;;;;;;;;;;;;:::o;21463:174::-;21505:12;21550:15;;;;;;;;;;;21542:29;;21593:21;21542:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21528:101;;;;;21494:143;21463:174::o;4214:127::-;4288:7;4315:9;:18;4325:7;4315:18;;;;;;;;;;;;;;;;4308:25;;4214:127;;;:::o;1895:103::-;1818:12;:10;:12::i;:::-;1807:23;;:7;:5;:7::i;:::-;:23;;;1799:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1960:30:::1;1987:1;1960:18;:30::i;:::-;1895:103::o:0;22403:242::-;1818:12;:10;:12::i;:::-;1807:23;;:7;:5;:7::i;:::-;:23;;;1799:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22513:13:::1;22495:15;:31;;;;22552:15;;22537:12;:30;;;;22602:2;22586:12;;:18;;22578:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;22403:242:::0;:::o;19277:121::-;19329:4;1818:12;:10;:12::i;:::-;1807:23;;:7;:5;:7::i;:::-;:23;;;1799:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19363:5:::1;19346:14;;:22;;;;;;;;;;;;;;;;;;19386:4;19379:11;;19277:121:::0;:::o;20673:167::-;1818:12;:10;:12::i;:::-;1807:23;;:7;:5;:7::i;:::-;:23;;;1799:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20828:4:::1;20786:31;:39;20818:6;20786:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;20673:167:::0;;:::o;29373:245::-;1818:12;:10;:12::i;:::-;1807:23;;:7;:5;:7::i;:::-;:23;;;1799:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29314:4:::1;29303:8;;:15;;;;;;;;;;;;;;;;;;29433:42:::2;29450:24;29468:4;29450:9;:24::i;:::-;29433:16;:42::i;:::-;29486:12;29531:15;;;;;;;;;;;29523:29;;29574:21;29523:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29509:101;;;;;29422:196;29352:5:::1;29341:8;;:16;;;;;;;;;;;;;;;;;;29373:245::o:0;19026:243::-;1818:12;:10;:12::i;:::-;1807:23;;:7;:5;:7::i;:::-;:23;;;1799:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19113:11:::1;19100:10;:24;;;;19151:4;19135:13;;:20;;;;;;;;;;;;;;;;;;19180:4;19166:11;;:18;;;;;;;;;;;;;;;;;;19208:12;19195:10;:25;;;;19246:15;19231:12;:30;;;;19026:243:::0;:::o;21234:221::-;21312:15;;;;;;;;;;;21296:31;;:12;:10;:12::i;:::-;:31;;;21288:40;;;;;;21357:24;21375:4;21357:9;:24::i;:::-;21347:6;:34;;:48;;;;;21394:1;21385:6;:10;21347:48;21339:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21423:24;21440:6;21423:16;:24::i;:::-;21234:221;:::o;1670:87::-;1716:7;1743:6;;;;;;;;;;;1736:13;;1670:87;:::o;16853:31::-;;;;:::o;20936:100::-;1818:12;:10;:12::i;:::-;1807:23;;:7;:5;:7::i;:::-;:23;;;1799:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21021:7:::1;21007:11;;:21;;;;;;;;;;;;;;;;;;20936:100:::0;:::o;3885:104::-;3941:13;3974:7;3967:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3885:104;:::o;21645:304::-;1818:12;:10;:12::i;:::-;1807:23;;:7;:5;:7::i;:::-;:23;;;1799:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21789:13:::1;21781:21;;:4;:21;;::::0;21759:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21900:41;21929:4;21935:5;21900:28;:41::i;:::-;21645:304:::0;;:::o;5591:413::-;5684:4;5701:24;5728:11;:25;5740:12;:10;:12::i;:::-;5728:25;;;;;;;;;;;;;;;:34;5754:7;5728:34;;;;;;;;;;;;;;;;5701:61;;5801:15;5781:16;:35;;5773:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5894:67;5903:12;:10;:12::i;:::-;5917:7;5945:15;5926:16;:34;5894:8;:67::i;:::-;5992:4;5985:11;;;5591:413;;;;:::o;20458:207::-;1818:12;:10;:12::i;:::-;1807:23;;:7;:5;:7::i;:::-;:23;;;1799:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20602:4:::1;20556:31;:43;20588:10;20556:43;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;20651:4;20617:19;:31;20637:10;20617:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;20458:207:::0;;:::o;4349:175::-;4435:4;4452:42;4462:12;:10;:12::i;:::-;4476:9;4487:6;4452:9;:42::i;:::-;4512:4;4505:11;;4349:175;;;;:::o;22908:231::-;1818:12;:10;:12::i;:::-;1807:23;;:7;:5;:7::i;:::-;:23;;;1799:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23068:15:::1;;;;;;;;;;;23025:59;;23048:18;23025:59;;;;;;;;;;;;23113:18;23095:15;;:36;;;;;;;;;;;;;;;;;;22908:231:::0;:::o;17076:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;16562:33::-;;;;;;;;;;;;;:::o;21044:182::-;1818:12;:10;:12::i;:::-;1807:23;;:7;:5;:7::i;:::-;:23;;;1799:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21160:8:::1;21129:19;:28;21149:7;21129:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21200:7;21184:34;;;21209:8;21184:34;;;;;;:::i;:::-;;;;;;;;21044:182:::0;;:::o;20194:256::-;1818:12;:10;:12::i;:::-;1807:23;;:7;:5;:7::i;:::-;:23;;;1799:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20334:4:::1;20326;20321:1;20305:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20304:26;;;;:::i;:::-;20303:35;;;;:::i;:::-;20293:6;:45;;20271:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;20435:6;20425;:17;;;;:::i;:::-;20413:9;:29;;;;20194:256:::0;:::o;16407:35::-;;;;:::o;19406:497::-;19514:4;1818:12;:10;:12::i;:::-;1807:23;;:7;:5;:7::i;:::-;:23;;;1799:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19593:6:::1;19588:1;19572:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19571:28;;;;:::i;:::-;19558:9;:41;;19536:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;19748:4;19743:1;19727:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19726:26;;;;:::i;:::-;19713:9;:39;;19691:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;19864:9;19843:18;:30;;;;19891:4;19884:11;;19406:497:::0;;;:::o;16744:27::-;;;;:::o;4532:151::-;4621:7;4648:11;:18;4660:5;4648:18;;;;;;;;;;;;;;;:27;4667:7;4648:27;;;;;;;;;;;;;;;;4641:34;;4532:151;;;;:::o;16449:33::-;;;;:::o;21957:242::-;1818:12;:10;:12::i;:::-;1807:23;;:7;:5;:7::i;:::-;:23;;;1799:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22114:14:::1;22081:20;:30;22102:8;22081:30;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;22176:14;22144:47;;22166:8;22144:47;;;;;;;;;;;;21957:242:::0;;:::o;22653:247::-;1818:12;:10;:12::i;:::-;1807:23;;:7;:5;:7::i;:::-;:23;;;1799:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22765:13:::1;22746:16;:32;;;;22805:16;;22789:13;:32;;;;22857:2;22840:13;;:19;;22832:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22653:247:::0;:::o;2008:201::-;1818:12;:10;:12::i;:::-;1807:23;;:7;:5;:7::i;:::-;:23;;;1799:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2117:1:::1;2097:22;;:8;:22;;::::0;2089:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2173:28;2192:8;2173:18;:28::i;:::-;2008:201:::0;:::o;17140:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;16489:24::-;;;;:::o;16710:25::-;;;;:::o;1210:98::-;1263:7;1290:10;1283:17;;1210:98;:::o;7759:380::-;7912:1;7895:19;;:5;:19;;;7887:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7993:1;7974:21;;:7;:21;;;7966:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8077:6;8047:11;:18;8059:5;8047:18;;;;;;;;;;;;;;;:27;8066:7;8047:27;;;;;;;;;;;;;;;:36;;;;8115:7;8099:32;;8108:5;8099:32;;;8124:6;8099:32;;;;;;:::i;:::-;;;;;;;;7759:380;;;:::o;23508:4494::-;23656:1;23640:18;;:4;:18;;;23632:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23733:1;23719:16;;:2;:16;;;23711:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23795:20;:26;23816:4;23795:26;;;;;;;;;;;;;;;;;;;;;;;;;23794:27;23786:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23874:20;:24;23895:2;23874:24;;;;;;;;;;;;;;;;;;;;;;;;;23873:25;23865:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;23955:1;23945:6;:11;23941:93;;23973:28;23989:4;23995:2;23999:1;23973:15;:28::i;:::-;24016:7;;23941:93;24046:16;24065:12;24046:31;;24094:14;;;;;;;;;;;24090:2445;;;24155:7;:5;:7::i;:::-;24147:15;;:4;:15;;;;:49;;;;;24189:7;:5;:7::i;:::-;24183:13;;:2;:13;;;;24147:49;:86;;;;;24231:1;24217:16;;:2;:16;;;;24147:86;:128;;;;;24268:6;24254:21;;:2;:21;;;;24147:128;:158;;;;;24297:8;;;;;;;;;;;24296:9;24147:158;24125:2399;;;24388:8;24373:10;;24360;;:23;;;;:::i;:::-;24359:37;24338:733;;24456:17;24432:20;:41;;;;24505:17;24492:9;:30;;;;24561:2;24543:15;:20;;;;24597:15;;24582:12;:30;;;;24652:2;24633:16;:21;;;;24689:16;;24673:13;:32;;;;24338:733;;;24804:17;24780:20;:41;;;;24853:17;24840:9;:30;;;;24909:2;24891:15;:20;;;;24945:15;;24930:12;:30;;;;25000:2;24981:16;:21;;;;25037:16;;25021:13;:32;;;;24338:733;25096:13;;;;;;;;;;;25091:223;;25168:19;:25;25188:4;25168:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25197:19;:23;25217:2;25197:23;;;;;;;;;;;;;;;;;;;;;;;;;25168:52;25134:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;25091:223;25388:25;:31;25414:4;25388:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;25445:31;:35;25477:2;25445:35;;;;;;;;;;;;;;;;;;;;;;;;;25444:36;25388:92;25362:1147;;;25567:20;;25557:6;:30;;25523:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;25775:9;;25758:13;25768:2;25758:9;:13::i;:::-;25749:6;:22;;;;:::i;:::-;:35;;25715:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;25362:1147;;;25953:25;:29;25979:2;25953:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;26008:31;:37;26040:4;26008:37;;;;;;;;;;;;;;;;;;;;;;;;;26007:38;25953:92;25927:582;;;26132:20;;26122:6;:30;;26088:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;25927:582;;;26289:31;:35;26321:2;26289:35;;;;;;;;;;;;;;;;;;;;;;;;;26284:225;;26409:9;;26392:13;26402:2;26392:9;:13::i;:::-;26383:6;:22;;;;:::i;:::-;:35;;26349:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;26284:225;25927:582;25362:1147;24125:2399;24090:2445;26547:28;26578:24;26596:4;26578:9;:24::i;:::-;26547:55;;26615:12;26654:18;;26630:20;:42;;26615:57;;26703:7;:35;;;;;26727:11;;;;;;;;;;;26703:35;:61;;;;;26756:8;;;;;;;;;;;26755:9;26703:61;:105;;;;;26806:1;26782:11;:21;26794:8;26782:21;;;;;;;;;;;;:25;26703:105;:154;;;;;26826:25;:31;26852:4;26826:31;;;;;;;;;;;;;;;;;;;;;;;;;26825:32;26703:154;:197;;;;;26875:19;:25;26895:4;26875:25;;;;;;;;;;;;;;;;;;;;;;;;;26874:26;26703:197;:238;;;;;26918:19;:23;26938:2;26918:23;;;;;;;;;;;;;;;;;;;;;;;;;26917:24;26703:238;26685:410;;;26979:4;26968:8;;:15;;;;;;;;;;;;;;;;;;27000:10;:8;:10::i;:::-;27029:11;:21;27041:8;27029:21;;;;;;;;;;;;27027:23;;;;;:::i;:::-;;;;;;;;27078:5;27067:8;;:16;;;;;;;;;;;;;;;;;;26685:410;27107:12;27123:8;;;;;;;;;;;27122:9;27107:24;;27233:19;:25;27253:4;27233:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27262:19;:23;27282:2;27262:23;;;;;;;;;;;;;;;;;;;;;;;;;27233:52;27229:100;;;27312:5;27302:15;;27229:100;27341:12;27446:7;27442:507;;;27498:25;:29;27524:2;27498:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;27547:1;27531:13;;:17;27498:50;27494:306;;;27576:34;27606:3;27576:25;27587:13;;27576:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;27569:41;;27494:306;;;27672:25;:31;27698:4;27672:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;27722:1;27707:12;;:16;27672:51;27668:132;;;27751:33;27780:3;27751:24;27762:12;;27751:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;27744:40;;27668:132;27494:306;27827:1;27820:4;:8;27816:91;;;27849:42;27865:4;27879;27886;27849:15;:42::i;:::-;27816:91;27933:4;27923:14;;;;;:::i;:::-;;;27442:507;27961:33;27977:4;27983:2;27987:6;27961:15;:33::i;:::-;23621:4381;;;;;23508:4494;;;;:::o;2217:191::-;2291:16;2310:6;;;;;;;;;;;2291:25;;2336:8;2327:6;;:17;;;;;;;;;;;;;;;;;;2391:8;2360:40;;2381:8;2360:40;;;;;;;;;;;;2280:128;2217:191;:::o;28666:589::-;28792:21;28830:1;28816:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28792:40;;28861:4;28843;28848:1;28843:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28887:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28877:4;28882:1;28877:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28922:62;28939:4;28954:15;28972:11;28922:8;:62::i;:::-;29023:15;:66;;;29104:11;29130:1;29174:4;29201;29221:15;29023:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28721:534;28666:589;:::o;22207:188::-;22324:5;22290:25;:31;22316:4;22290:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22381:5;22347:40;;22375:4;22347:40;;;;;;;;;;;;22207:188;;:::o;6012:733::-;6170:1;6152:20;;:6;:20;;;6144:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6254:1;6233:23;;:9;:23;;;6225:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6309:47;6330:6;6338:9;6349:6;6309:20;:47::i;:::-;6369:21;6393:9;:17;6403:6;6393:17;;;;;;;;;;;;;;;;6369:41;;6446:6;6429:13;:23;;6421:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6567:6;6551:13;:22;6531:9;:17;6541:6;6531:17;;;;;;;;;;;;;;;:42;;;;6619:6;6595:9;:20;6605:9;6595:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6660:9;6643:35;;6652:6;6643:35;;;6671:6;6643:35;;;;;;:::i;:::-;;;;;;;;6691:46;6711:6;6719:9;6730:6;6691:19;:46::i;:::-;6133:612;6012:733;;;:::o;28010:540::-;28049:23;28075:24;28093:4;28075:9;:24::i;:::-;28049:50;;28110:12;28158:1;28139:15;:20;28135:59;;28176:7;;;;28135:59;28249:2;28228:18;;:23;;;;:::i;:::-;28210:15;:41;28206:115;;;28307:2;28286:18;;:23;;;;:::i;:::-;28268:41;;28206:115;28335:26;28364:15;28335:44;;28392:36;28409:18;28392:16;:36::i;:::-;28463:15;;;;;;;;;;;28455:29;;28506:21;28455:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28441:101;;;;;28038:512;;;28010:540;:::o;9765:98::-;9823:7;9854:1;9850;:5;;;;:::i;:::-;9843:12;;9765:98;;;;:::o;9871:::-;9929:7;9960:1;9956;:5;;;;:::i;:::-;9949:12;;9871:98;;;;:::o;8147:125::-;;;;:::o;8280:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:329::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:118::-;6158:24;6176:5;6158:24;:::i;:::-;6153:3;6146:37;6071:118;;:::o;6195:222::-;6288:4;6326:2;6315:9;6311:18;6303:26;;6339:71;6407:1;6396:9;6392:17;6383:6;6339:71;:::i;:::-;6195:222;;;;:::o;6423:86::-;6458:7;6498:4;6491:5;6487:16;6476:27;;6423:86;;;:::o;6515:112::-;6598:22;6614:5;6598:22;:::i;:::-;6593:3;6586:35;6515:112;;:::o;6633:214::-;6722:4;6760:2;6749:9;6745:18;6737:26;;6773:67;6837:1;6826:9;6822:17;6813:6;6773:67;:::i;:::-;6633:214;;;;:::o;6853:117::-;6962:1;6959;6952:12;6976:117;7085:1;7082;7075:12;7099:117;7208:1;7205;7198:12;7239:568;7312:8;7322:6;7372:3;7365:4;7357:6;7353:17;7349:27;7339:122;;7380:79;;:::i;:::-;7339:122;7493:6;7480:20;7470:30;;7523:18;7515:6;7512:30;7509:117;;;7545:79;;:::i;:::-;7509:117;7659:4;7651:6;7647:17;7635:29;;7713:3;7705:4;7697:6;7693:17;7683:8;7679:32;7676:41;7673:128;;;7720:79;;:::i;:::-;7673:128;7239:568;;;;;:::o;7830:::-;7903:8;7913:6;7963:3;7956:4;7948:6;7944:17;7940:27;7930:122;;7971:79;;:::i;:::-;7930:122;8084:6;8071:20;8061:30;;8114:18;8106:6;8103:30;8100:117;;;8136:79;;:::i;:::-;8100:117;8250:4;8242:6;8238:17;8226:29;;8304:3;8296:4;8288:6;8284:17;8274:8;8270:32;8267:41;8264:128;;;8311:79;;:::i;:::-;8264:128;7830:568;;;;;:::o;8404:934::-;8526:6;8534;8542;8550;8599:2;8587:9;8578:7;8574:23;8570:32;8567:119;;;8605:79;;:::i;:::-;8567:119;8753:1;8742:9;8738:17;8725:31;8783:18;8775:6;8772:30;8769:117;;;8805:79;;:::i;:::-;8769:117;8918:80;8990:7;8981:6;8970:9;8966:22;8918:80;:::i;:::-;8900:98;;;;8696:312;9075:2;9064:9;9060:18;9047:32;9106:18;9098:6;9095:30;9092:117;;;9128:79;;:::i;:::-;9092:117;9241:80;9313:7;9304:6;9293:9;9289:22;9241:80;:::i;:::-;9223:98;;;;9018:313;8404:934;;;;;;;:::o;9344:116::-;9414:21;9429:5;9414:21;:::i;:::-;9407:5;9404:32;9394:60;;9450:1;9447;9440:12;9394:60;9344:116;:::o;9466:133::-;9509:5;9547:6;9534:20;9525:29;;9563:30;9587:5;9563:30;:::i;:::-;9466:133;;;;:::o;9605:468::-;9670:6;9678;9727:2;9715:9;9706:7;9702:23;9698:32;9695:119;;;9733:79;;:::i;:::-;9695:119;9853:1;9878:53;9923:7;9914:6;9903:9;9899:22;9878:53;:::i;:::-;9868:63;;9824:117;9980:2;10006:50;10048:7;10039:6;10028:9;10024:22;10006:50;:::i;:::-;9996:60;;9951:115;9605:468;;;;;:::o;10079:323::-;10135:6;10184:2;10172:9;10163:7;10159:23;10155:32;10152:119;;;10190:79;;:::i;:::-;10152:119;10310:1;10335:50;10377:7;10368:6;10357:9;10353:22;10335:50;:::i;:::-;10325:60;;10281:114;10079:323;;;;:::o;10408:474::-;10476:6;10484;10533:2;10521:9;10512:7;10508:23;10504:32;10501:119;;;10539:79;;:::i;:::-;10501:119;10659:1;10684:53;10729:7;10720:6;10709:9;10705:22;10684:53;:::i;:::-;10674:63;;10630:117;10786:2;10812:53;10857:7;10848:6;10837:9;10833:22;10812:53;:::i;:::-;10802:63;;10757:118;10408:474;;;;;:::o;10888:180::-;10936:77;10933:1;10926:88;11033:4;11030:1;11023:15;11057:4;11054:1;11047:15;11074:320;11118:6;11155:1;11149:4;11145:12;11135:22;;11202:1;11196:4;11192:12;11223:18;11213:81;;11279:4;11271:6;11267:17;11257:27;;11213:81;11341:2;11333:6;11330:14;11310:18;11307:38;11304:84;;11360:18;;:::i;:::-;11304:84;11125:269;11074:320;;;:::o;11400:182::-;11540:34;11536:1;11528:6;11524:14;11517:58;11400:182;:::o;11588:366::-;11730:3;11751:67;11815:2;11810:3;11751:67;:::i;:::-;11744:74;;11827:93;11916:3;11827:93;:::i;:::-;11945:2;11940:3;11936:12;11929:19;;11588:366;;;:::o;11960:419::-;12126:4;12164:2;12153:9;12149:18;12141:26;;12213:9;12207:4;12203:20;12199:1;12188:9;12184:17;12177:47;12241:131;12367:4;12241:131;:::i;:::-;12233:139;;11960:419;;;:::o;12385:180::-;12433:77;12430:1;12423:88;12530:4;12527:1;12520:15;12554:4;12551:1;12544:15;12571:410;12611:7;12634:20;12652:1;12634:20;:::i;:::-;12629:25;;12668:20;12686:1;12668:20;:::i;:::-;12663:25;;12723:1;12720;12716:9;12745:30;12763:11;12745:30;:::i;:::-;12734:41;;12924:1;12915:7;12911:15;12908:1;12905:22;12885:1;12878:9;12858:83;12835:139;;12954:18;;:::i;:::-;12835:139;12619:362;12571:410;;;;:::o;12987:180::-;13035:77;13032:1;13025:88;13132:4;13129:1;13122:15;13156:4;13153:1;13146:15;13173:185;13213:1;13230:20;13248:1;13230:20;:::i;:::-;13225:25;;13264:20;13282:1;13264:20;:::i;:::-;13259:25;;13303:1;13293:35;;13308:18;;:::i;:::-;13293:35;13350:1;13347;13343:9;13338:14;;13173:185;;;;:::o;13364:234::-;13504:34;13500:1;13492:6;13488:14;13481:58;13573:17;13568:2;13560:6;13556:15;13549:42;13364:234;:::o;13604:366::-;13746:3;13767:67;13831:2;13826:3;13767:67;:::i;:::-;13760:74;;13843:93;13932:3;13843:93;:::i;:::-;13961:2;13956:3;13952:12;13945:19;;13604:366;;;:::o;13976:419::-;14142:4;14180:2;14169:9;14165:18;14157:26;;14229:9;14223:4;14219:20;14215:1;14204:9;14200:17;14193:47;14257:131;14383:4;14257:131;:::i;:::-;14249:139;;13976:419;;;:::o;14401:227::-;14541:34;14537:1;14529:6;14525:14;14518:58;14610:10;14605:2;14597:6;14593:15;14586:35;14401:227;:::o;14634:366::-;14776:3;14797:67;14861:2;14856:3;14797:67;:::i;:::-;14790:74;;14873:93;14962:3;14873:93;:::i;:::-;14991:2;14986:3;14982:12;14975:19;;14634:366;;;:::o;15006:419::-;15172:4;15210:2;15199:9;15195:18;15187:26;;15259:9;15253:4;15249:20;15245:1;15234:9;15230:17;15223:47;15287:131;15413:4;15287:131;:::i;:::-;15279:139;;15006:419;;;:::o;15431:191::-;15471:3;15490:20;15508:1;15490:20;:::i;:::-;15485:25;;15524:20;15542:1;15524:20;:::i;:::-;15519:25;;15567:1;15564;15560:9;15553:16;;15588:3;15585:1;15582:10;15579:36;;;15595:18;;:::i;:::-;15579:36;15431:191;;;;:::o;15628:180::-;15676:77;15673:1;15666:88;15773:4;15770:1;15763:15;15797:4;15794:1;15787:15;15814:233;15853:3;15876:24;15894:5;15876:24;:::i;:::-;15867:33;;15922:66;15915:5;15912:77;15909:103;;15992:18;;:::i;:::-;15909:103;16039:1;16032:5;16028:13;16021:20;;15814:233;;;:::o;16053:147::-;16154:11;16191:3;16176:18;;16053:147;;;;:::o;16206:114::-;;:::o;16326:398::-;16485:3;16506:83;16587:1;16582:3;16506:83;:::i;:::-;16499:90;;16598:93;16687:3;16598:93;:::i;:::-;16716:1;16711:3;16707:11;16700:18;;16326:398;;;:::o;16730:379::-;16914:3;16936:147;17079:3;16936:147;:::i;:::-;16929:154;;17100:3;17093:10;;16730:379;;;:::o;17115:178::-;17255:30;17251:1;17243:6;17239:14;17232:54;17115:178;:::o;17299:366::-;17441:3;17462:67;17526:2;17521:3;17462:67;:::i;:::-;17455:74;;17538:93;17627:3;17538:93;:::i;:::-;17656:2;17651:3;17647:12;17640:19;;17299:366;;;:::o;17671:419::-;17837:4;17875:2;17864:9;17860:18;17852:26;;17924:9;17918:4;17914:20;17910:1;17899:9;17895:17;17888:47;17952:131;18078:4;17952:131;:::i;:::-;17944:139;;17671:419;;;:::o;18096:162::-;18236:14;18232:1;18224:6;18220:14;18213:38;18096:162;:::o;18264:366::-;18406:3;18427:67;18491:2;18486:3;18427:67;:::i;:::-;18420:74;;18503:93;18592:3;18503:93;:::i;:::-;18621:2;18616:3;18612:12;18605:19;;18264:366;;;:::o;18636:419::-;18802:4;18840:2;18829:9;18825:18;18817:26;;18889:9;18883:4;18879:20;18875:1;18864:9;18860:17;18853:47;18917:131;19043:4;18917:131;:::i;:::-;18909:139;;18636:419;;;:::o;19061:244::-;19201:34;19197:1;19189:6;19185:14;19178:58;19270:27;19265:2;19257:6;19253:15;19246:52;19061:244;:::o;19311:366::-;19453:3;19474:67;19538:2;19533:3;19474:67;:::i;:::-;19467:74;;19550:93;19639:3;19550:93;:::i;:::-;19668:2;19663:3;19659:12;19652:19;;19311:366;;;:::o;19683:419::-;19849:4;19887:2;19876:9;19872:18;19864:26;;19936:9;19930:4;19926:20;19922:1;19911:9;19907:17;19900:47;19964:131;20090:4;19964:131;:::i;:::-;19956:139;;19683:419;;;:::o;20108:224::-;20248:34;20244:1;20236:6;20232:14;20225:58;20317:7;20312:2;20304:6;20300:15;20293:32;20108:224;:::o;20338:366::-;20480:3;20501:67;20565:2;20560:3;20501:67;:::i;:::-;20494:74;;20577:93;20666:3;20577:93;:::i;:::-;20695:2;20690:3;20686:12;20679:19;;20338:366;;;:::o;20710:419::-;20876:4;20914:2;20903:9;20899:18;20891:26;;20963:9;20957:4;20953:20;20949:1;20938:9;20934:17;20927:47;20991:131;21117:4;20991:131;:::i;:::-;20983:139;;20710:419;;;:::o;21135:223::-;21275:34;21271:1;21263:6;21259:14;21252:58;21344:6;21339:2;21331:6;21327:15;21320:31;21135:223;:::o;21364:366::-;21506:3;21527:67;21591:2;21586:3;21527:67;:::i;:::-;21520:74;;21603:93;21692:3;21603:93;:::i;:::-;21721:2;21716:3;21712:12;21705:19;;21364:366;;;:::o;21736:419::-;21902:4;21940:2;21929:9;21925:18;21917:26;;21989:9;21983:4;21979:20;21975:1;21964:9;21960:17;21953:47;22017:131;22143:4;22017:131;:::i;:::-;22009:139;;21736:419;;;:::o;22161:240::-;22301:34;22297:1;22289:6;22285:14;22278:58;22370:23;22365:2;22357:6;22353:15;22346:48;22161:240;:::o;22407:366::-;22549:3;22570:67;22634:2;22629:3;22570:67;:::i;:::-;22563:74;;22646:93;22735:3;22646:93;:::i;:::-;22764:2;22759:3;22755:12;22748:19;;22407:366;;;:::o;22779:419::-;22945:4;22983:2;22972:9;22968:18;22960:26;;23032:9;23026:4;23022:20;23018:1;23007:9;23003:17;22996:47;23060:131;23186:4;23060:131;:::i;:::-;23052:139;;22779:419;;;:::o;23204:239::-;23344:34;23340:1;23332:6;23328:14;23321:58;23413:22;23408:2;23400:6;23396:15;23389:47;23204:239;:::o;23449:366::-;23591:3;23612:67;23676:2;23671:3;23612:67;:::i;:::-;23605:74;;23688:93;23777:3;23688:93;:::i;:::-;23806:2;23801:3;23797:12;23790:19;;23449:366;;;:::o;23821:419::-;23987:4;24025:2;24014:9;24010:18;24002:26;;24074:9;24068:4;24064:20;24060:1;24049:9;24045:17;24038:47;24102:131;24228:4;24102:131;:::i;:::-;24094:139;;23821:419;;;:::o;24246:225::-;24386:34;24382:1;24374:6;24370:14;24363:58;24455:8;24450:2;24442:6;24438:15;24431:33;24246:225;:::o;24477:366::-;24619:3;24640:67;24704:2;24699:3;24640:67;:::i;:::-;24633:74;;24716:93;24805:3;24716:93;:::i;:::-;24834:2;24829:3;24825:12;24818:19;;24477:366;;;:::o;24849:419::-;25015:4;25053:2;25042:9;25038:18;25030:26;;25102:9;25096:4;25092:20;25088:1;25077:9;25073:17;25066:47;25130:131;25256:4;25130:131;:::i;:::-;25122:139;;24849:419;;;:::o;25274:223::-;25414:34;25410:1;25402:6;25398:14;25391:58;25483:6;25478:2;25470:6;25466:15;25459:31;25274:223;:::o;25503:366::-;25645:3;25666:67;25730:2;25725:3;25666:67;:::i;:::-;25659:74;;25742:93;25831:3;25742:93;:::i;:::-;25860:2;25855:3;25851:12;25844:19;;25503:366;;;:::o;25875:419::-;26041:4;26079:2;26068:9;26064:18;26056:26;;26128:9;26122:4;26118:20;26114:1;26103:9;26099:17;26092:47;26156:131;26282:4;26156:131;:::i;:::-;26148:139;;25875:419;;;:::o;26300:221::-;26440:34;26436:1;26428:6;26424:14;26417:58;26509:4;26504:2;26496:6;26492:15;26485:29;26300:221;:::o;26527:366::-;26669:3;26690:67;26754:2;26749:3;26690:67;:::i;:::-;26683:74;;26766:93;26855:3;26766:93;:::i;:::-;26884:2;26879:3;26875:12;26868:19;;26527:366;;;:::o;26899:419::-;27065:4;27103:2;27092:9;27088:18;27080:26;;27152:9;27146:4;27142:20;27138:1;27127:9;27123:17;27116:47;27180:131;27306:4;27180:131;:::i;:::-;27172:139;;26899:419;;;:::o;27324:224::-;27464:34;27460:1;27452:6;27448:14;27441:58;27533:7;27528:2;27520:6;27516:15;27509:32;27324:224;:::o;27554:366::-;27696:3;27717:67;27781:2;27776:3;27717:67;:::i;:::-;27710:74;;27793:93;27882:3;27793:93;:::i;:::-;27911:2;27906:3;27902:12;27895:19;;27554:366;;;:::o;27926:419::-;28092:4;28130:2;28119:9;28115:18;28107:26;;28179:9;28173:4;28169:20;28165:1;28154:9;28150:17;28143:47;28207:131;28333:4;28207:131;:::i;:::-;28199:139;;27926:419;;;:::o;28351:222::-;28491:34;28487:1;28479:6;28475:14;28468:58;28560:5;28555:2;28547:6;28543:15;28536:30;28351:222;:::o;28579:366::-;28721:3;28742:67;28806:2;28801:3;28742:67;:::i;:::-;28735:74;;28818:93;28907:3;28818:93;:::i;:::-;28936:2;28931:3;28927:12;28920:19;;28579:366;;;:::o;28951:419::-;29117:4;29155:2;29144:9;29140:18;29132:26;;29204:9;29198:4;29194:20;29190:1;29179:9;29175:17;29168:47;29232:131;29358:4;29232:131;:::i;:::-;29224:139;;28951:419;;;:::o;29376:177::-;29516:29;29512:1;29504:6;29500:14;29493:53;29376:177;:::o;29559:366::-;29701:3;29722:67;29786:2;29781:3;29722:67;:::i;:::-;29715:74;;29798:93;29887:3;29798:93;:::i;:::-;29916:2;29911:3;29907:12;29900:19;;29559:366;;;:::o;29931:419::-;30097:4;30135:2;30124:9;30120:18;30112:26;;30184:9;30178:4;30174:20;30170:1;30159:9;30155:17;30148:47;30212:131;30338:4;30212:131;:::i;:::-;30204:139;;29931:419;;;:::o;30356:175::-;30496:27;30492:1;30484:6;30480:14;30473:51;30356:175;:::o;30537:366::-;30679:3;30700:67;30764:2;30759:3;30700:67;:::i;:::-;30693:74;;30776:93;30865:3;30776:93;:::i;:::-;30894:2;30889:3;30885:12;30878:19;;30537:366;;;:::o;30909:419::-;31075:4;31113:2;31102:9;31098:18;31090:26;;31162:9;31156:4;31152:20;31148:1;31137:9;31133:17;31126:47;31190:131;31316:4;31190:131;:::i;:::-;31182:139;;30909:419;;;:::o;31334:172::-;31474:24;31470:1;31462:6;31458:14;31451:48;31334:172;:::o;31512:366::-;31654:3;31675:67;31739:2;31734:3;31675:67;:::i;:::-;31668:74;;31751:93;31840:3;31751:93;:::i;:::-;31869:2;31864:3;31860:12;31853:19;;31512:366;;;:::o;31884:419::-;32050:4;32088:2;32077:9;32073:18;32065:26;;32137:9;32131:4;32127:20;32123:1;32112:9;32108:17;32101:47;32165:131;32291:4;32165:131;:::i;:::-;32157:139;;31884:419;;;:::o;32309:240::-;32449:34;32445:1;32437:6;32433:14;32426:58;32518:23;32513:2;32505:6;32501:15;32494:48;32309:240;:::o;32555:366::-;32697:3;32718:67;32782:2;32777:3;32718:67;:::i;:::-;32711:74;;32794:93;32883:3;32794:93;:::i;:::-;32912:2;32907:3;32903:12;32896:19;;32555:366;;;:::o;32927:419::-;33093:4;33131:2;33120:9;33116:18;33108:26;;33180:9;33174:4;33170:20;33166:1;33155:9;33151:17;33144:47;33208:131;33334:4;33208:131;:::i;:::-;33200:139;;32927:419;;;:::o;33352:169::-;33492:21;33488:1;33480:6;33476:14;33469:45;33352:169;:::o;33527:366::-;33669:3;33690:67;33754:2;33749:3;33690:67;:::i;:::-;33683:74;;33766:93;33855:3;33766:93;:::i;:::-;33884:2;33879:3;33875:12;33868:19;;33527:366;;;:::o;33899:419::-;34065:4;34103:2;34092:9;34088:18;34080:26;;34152:9;34146:4;34142:20;34138:1;34127:9;34123:17;34116:47;34180:131;34306:4;34180:131;:::i;:::-;34172:139;;33899:419;;;:::o;34324:241::-;34464:34;34460:1;34452:6;34448:14;34441:58;34533:24;34528:2;34520:6;34516:15;34509:49;34324:241;:::o;34571:366::-;34713:3;34734:67;34798:2;34793:3;34734:67;:::i;:::-;34727:74;;34810:93;34899:3;34810:93;:::i;:::-;34928:2;34923:3;34919:12;34912:19;;34571:366;;;:::o;34943:419::-;35109:4;35147:2;35136:9;35132:18;35124:26;;35196:9;35190:4;35186:20;35182:1;35171:9;35167:17;35160:47;35224:131;35350:4;35224:131;:::i;:::-;35216:139;;34943:419;;;:::o;35368:194::-;35408:4;35428:20;35446:1;35428:20;:::i;:::-;35423:25;;35462:20;35480:1;35462:20;:::i;:::-;35457:25;;35506:1;35503;35499:9;35491:17;;35530:1;35524:4;35521:11;35518:37;;;35535:18;;:::i;:::-;35518:37;35368:194;;;;:::o;35568:180::-;35616:77;35613:1;35606:88;35713:4;35710:1;35703:15;35737:4;35734:1;35727:15;35754:143;35811:5;35842:6;35836:13;35827:22;;35858:33;35885:5;35858:33;:::i;:::-;35754:143;;;;:::o;35903:351::-;35973:6;36022:2;36010:9;36001:7;35997:23;35993:32;35990:119;;;36028:79;;:::i;:::-;35990:119;36148:1;36173:64;36229:7;36220:6;36209:9;36205:22;36173:64;:::i;:::-;36163:74;;36119:128;35903:351;;;;:::o;36260:85::-;36305:7;36334:5;36323:16;;36260:85;;;:::o;36351:158::-;36409:9;36442:61;36460:42;36469:32;36495:5;36469:32;:::i;:::-;36460:42;:::i;:::-;36442:61;:::i;:::-;36429:74;;36351:158;;;:::o;36515:147::-;36610:45;36649:5;36610:45;:::i;:::-;36605:3;36598:58;36515:147;;:::o;36668:114::-;36735:6;36769:5;36763:12;36753:22;;36668:114;;;:::o;36788:184::-;36887:11;36921:6;36916:3;36909:19;36961:4;36956:3;36952:14;36937:29;;36788:184;;;;:::o;36978:132::-;37045:4;37068:3;37060:11;;37098:4;37093:3;37089:14;37081:22;;36978:132;;;:::o;37116:108::-;37193:24;37211:5;37193:24;:::i;:::-;37188:3;37181:37;37116:108;;:::o;37230:179::-;37299:10;37320:46;37362:3;37354:6;37320:46;:::i;:::-;37398:4;37393:3;37389:14;37375:28;;37230:179;;;;:::o;37415:113::-;37485:4;37517;37512:3;37508:14;37500:22;;37415:113;;;:::o;37564:732::-;37683:3;37712:54;37760:5;37712:54;:::i;:::-;37782:86;37861:6;37856:3;37782:86;:::i;:::-;37775:93;;37892:56;37942:5;37892:56;:::i;:::-;37971:7;38002:1;37987:284;38012:6;38009:1;38006:13;37987:284;;;38088:6;38082:13;38115:63;38174:3;38159:13;38115:63;:::i;:::-;38108:70;;38201:60;38254:6;38201:60;:::i;:::-;38191:70;;38047:224;38034:1;38031;38027:9;38022:14;;37987:284;;;37991:14;38287:3;38280:10;;37688:608;;;37564:732;;;;:::o;38302:831::-;38565:4;38603:3;38592:9;38588:19;38580:27;;38617:71;38685:1;38674:9;38670:17;38661:6;38617:71;:::i;:::-;38698:80;38774:2;38763:9;38759:18;38750:6;38698:80;:::i;:::-;38825:9;38819:4;38815:20;38810:2;38799:9;38795:18;38788:48;38853:108;38956:4;38947:6;38853:108;:::i;:::-;38845:116;;38971:72;39039:2;39028:9;39024:18;39015:6;38971:72;:::i;:::-;39053:73;39121:3;39110:9;39106:19;39097:6;39053:73;:::i;:::-;38302:831;;;;;;;;:::o;39139:225::-;39279:34;39275:1;39267:6;39263:14;39256:58;39348:8;39343:2;39335:6;39331:15;39324:33;39139:225;:::o;39370:366::-;39512:3;39533:67;39597:2;39592:3;39533:67;:::i;:::-;39526:74;;39609:93;39698:3;39609:93;:::i;:::-;39727:2;39722:3;39718:12;39711:19;;39370:366;;;:::o;39742:419::-;39908:4;39946:2;39935:9;39931:18;39923:26;;39995:9;39989:4;39985:20;39981:1;39970:9;39966:17;39959:47;40023:131;40149:4;40023:131;:::i;:::-;40015:139;;39742:419;;;:::o

Swarm Source

ipfs://5ac6b1eac752a23cb4b5e378b7810275cd821eeff3a3f1ed5b5cf5e5ecc2fdd6

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.