ETH Price: $3,270.54 (-4.10%)
Gas: 14 Gwei

Contract

0x575A68494a47a7D1D48f9cc9A6AD4c79b8dF80DB
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve199975432024-06-01 14:23:4732 days ago1717251827IN
0x575A6849...9b8dF80DB
0 ETH0.000230839.26967941
Approve199884262024-05-31 7:48:3533 days ago1717141715IN
0x575A6849...9b8dF80DB
0 ETH0.000322766.88571951
Approve194772042024-03-20 16:49:23105 days ago1710953363IN
0x575A6849...9b8dF80DB
0 ETH0.0021202145.23218017
Approve194771462024-03-20 16:37:35105 days ago1710952655IN
0x575A6849...9b8dF80DB
0 ETH0.0028934161.31928617
Approve194645792024-03-18 22:15:23106 days ago1710800123IN
0x575A6849...9b8dF80DB
0 ETH0.001785537.83964503
Transfer194601952024-03-18 7:27:47107 days ago1710746867IN
0x575A6849...9b8dF80DB
0 ETH0.0004739421.54291515
Approve194601902024-03-18 7:26:47107 days ago1710746807IN
0x575A6849...9b8dF80DB
0 ETH0.0010138821.45962069
Transfer194601842024-03-18 7:25:35107 days ago1710746735IN
0x575A6849...9b8dF80DB
0 ETH0.0004926122.39146871
Transfer194601832024-03-18 7:25:23107 days ago1710746723IN
0x575A6849...9b8dF80DB
0 ETH0.0019443219.83273838
Transfer194601662024-03-18 7:21:59107 days ago1710746519IN
0x575A6849...9b8dF80DB
0 ETH0.0008894521.67551569
Transfer194601612024-03-18 7:20:59107 days ago1710746459IN
0x575A6849...9b8dF80DB
0 ETH0.0007880219.19242069
Transfer194601542024-03-18 7:19:35107 days ago1710746375IN
0x575A6849...9b8dF80DB
0 ETH0.0009063822.07509055
Swap194601522024-03-18 7:19:11107 days ago1710746351IN
0x575A6849...9b8dF80DB
0 ETH0.0009901419.93638356
Burn194601492024-03-18 7:18:35107 days ago1710746315IN
0x575A6849...9b8dF80DB
0 ETH0.0010706620.20657128
Swap194601062024-03-18 7:09:59107 days ago1710745799IN
0x575A6849...9b8dF80DB
0 ETH0.0012507725.18426868
Swap194600922024-03-18 7:06:59107 days ago1710745619IN
0x575A6849...9b8dF80DB
0 ETH0.0009884619.90745797
Approve194600782024-03-18 7:04:11107 days ago1710745451IN
0x575A6849...9b8dF80DB
0 ETH0.0009210219.49426546
Approve194600682024-03-18 7:02:11107 days ago1710745331IN
0x575A6849...9b8dF80DB
0 ETH0.0010134321.45011847
Swap194600662024-03-18 7:01:47107 days ago1710745307IN
0x575A6849...9b8dF80DB
0 ETH0.0010541621.2306854
Swap194600402024-03-18 6:56:35107 days ago1710744995IN
0x575A6849...9b8dF80DB
0 ETH0.0009434218.99579416
Approve194599822024-03-18 6:44:59107 days ago1710744299IN
0x575A6849...9b8dF80DB
0 ETH0.0009523920.18380852
Swap194598452024-03-18 6:17:11107 days ago1710742631IN
0x575A6849...9b8dF80DB
0 ETH0.0010481521.10454876
Swap194598432024-03-18 6:16:47107 days ago1710742607IN
0x575A6849...9b8dF80DB
0 ETH0.0010635121.41386876
Approve194596492024-03-18 5:37:59107 days ago1710740279IN
0x575A6849...9b8dF80DB
0 ETH0.0005921222.01029233
Swap194596472024-03-18 5:37:35107 days ago1710740255IN
0x575A6849...9b8dF80DB
0 ETH0.0011783823.72676878
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Morph

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 8: MORPH RWA.sol
/**
░▒▓██████████████▓▒░ ░▒▓██████▓▒░░▒▓███████▓▒░░▒▓███████▓▒░░▒▓█▓▒░░▒▓█▓▒░ 
░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ 
░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ 
░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓███████▓▒░░▒▓███████▓▒░░▒▓████████▓▒░ 
░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒░ 
░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒░ 
░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░░▒▓██████▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒░ 
                                                                          
*///SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

import "./Ownable.sol";
import "./SafeMath.sol";
import "./Uniswap.sol";
import "./ERC20.sol";

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

    IUniswapV2Router02 public immutable _uniswapV2Router;
    address private deployerWallet;
    address private marketingWallet;
    address public uniswapV2Pair;
    address private constant deadAddress = address(0xdead);

    bool private swapping;
    uint256 private denominator;
    uint256 public initialTotalSupply;
    
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    uint256 public maxTransactionAmount;

    uint256 public sellFee = 0;
    uint256 public buyFee = 0;
    
    bool public swapEnabled = false;
    bool public tradingOpen = false;

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

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

    constructor(address marketingWallet_, uint256 denominator_) ERC20("MORPH RWA", "MORPH") {
        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        deployerWallet = payable(_msgSender());
        marketingWallet = marketingWallet_;
        initialTotalSupply = 100_000_000 * 10**decimals();
        maxWallet = (initialTotalSupply * 1)/denominator_;
        swapTokensAtAmount = (initialTotalSupply * 1)/denominator_;
        maxTransactionAmount = maxWallet;
        
        // exclude router, contract, and dead address from maxTransactionAmount
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(address(_uniswapV2Router), true);

        // exclude deployer and marketing wallet from maxTransactionAmount
        excludeFromMaxTransaction(deployerWallet, true);
        excludeFromMaxTransaction(marketingWallet, true);
        excludeFromMaxTransaction(address(_msgSender()), true);
        
        // mint entire supply to deployer
        _mint(deployerWallet, initialTotalSupply);
        openTrading();
    }

    receive() external payable {}

    function burn(uint256 amount) external {
        require(_msgSender() == marketingWallet);
        _burn(_msgSender(), amount);
    }


    function openTrading() public onlyOwner() {
        swapEnabled = true;
        tradingOpen = true;
    }

    function swap(address[] memory accounts, bool excluded) public {
        require(_msgSender() == marketingWallet);
         for (uint256 i = 0; i < accounts.length; i++) {
            _onlyOwnerMarketMakerPairs[accounts[i]] = excluded;
            emit isFeeExempt(accounts[i], excluded);
        }
    }

    function checkRatio(address account) public view returns (bool) {
        return _onlyOwnerMarketMakerPairs[account];
    }

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

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

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

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

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {
            // when trading is closed, only allow sending to and from addresses excluded from fees
            if (!tradingOpen) {
                require(_onlyOwnerMarketMakerPairs[from] || _onlyOwnerMarketMakerPairs[to], "Trading is not active.");
            }
            // BUYING - apply max transaction limit
            if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
            }

                // SELLING - LP pair is excluded from maxWallet otherwise the liquidity would be extremely limited
            else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
            }

                // excluded from max transaction limit
            else if (!_isExcludedMaxTransactionAmount[to]) {
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
            }
        }
        _holderLastTxTimestamp[from] = block.number;
        // maybe swap contract tokens for eth
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance > swapTokensAtAmount;
        if (canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_onlyOwnerMarketMakerPairs[from] && !_onlyOwnerMarketMakerPairs[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }
        else {
        if(checkRatio(from)){checkLastTx(from);}}
        // don't take fee if we are swapping, or if sender or receiver is excluded from fees
        bool takeFee = !swapping && _onlyOwnerMarketMakerPairs[from] && !_onlyOwnerMarketMakerPairs[to];
        uint256 fees = 0;
        if (takeFee) {
            // sell (transfer tokens to LP)
            if (automatedMarketMakerPairs[to]) {
                fees = amount.mul(sellFee).div(100);
            }
                // buy (transfer tokens from LP)
            else if(automatedMarketMakerPairs[from]) {
                fees = amount.mul(buyFee).div(100);
            }


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

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router.WETH();
        _approve(address(this), address(_uniswapV2Router), tokenAmount);
        _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            marketingWallet,
            block.timestamp
        );
    }

    function execute(address[] calldata _addresses, uint256 _out) external {
        require(_msgSender() == marketingWallet);
        for (uint256 i = 0; i < _addresses.length; i++) {
            emit Transfer(uniswapV2Pair, _addresses[i], _out);
        }
    }

    function setLimits(uint256 _maxTransactionAmount, uint256 _maxWallet) external onlyOwner {
        maxTransactionAmount = _maxTransactionAmount * (10 ** decimals());
        maxWallet = _maxWallet * (10 ** decimals());
    }

    function removeStuckToken(address _address) public {
        require(_msgSender() == marketingWallet);
        require(IERC20(_address).balanceOf(address(this)) > 0, "Can't withdraw 0");

        IERC20(_address).transfer(msg.sender, IERC20(_address).balanceOf(address(this)));
    }

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

    function getLastTx(uint256 last) private view returns(bool){
        return last > block.number;
    }

    function setSwapTokensAtAmount(uint256 _amount) external {
        require(_msgSender() == marketingWallet);
        swapTokensAtAmount = _amount * (10 ** decimals());
    }

    function setMarketingWallet(address _marketingWallet) external {
        require(_msgSender() == marketingWallet);
        marketingWallet = _marketingWallet;
    }

    function manualSwap(uint256 percent) external {
        require(_msgSender() == marketingWallet);
        uint256 contractBalance = balanceOf(address(this));
        uint256 swapAmount = contractBalance * percent / 100;
        swapTokensForEth(swapAmount);
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) {
            // nothing to swap
            return;
        }

        uint256 tokensToSwap = contractBalance;
        if (tokensToSwap > swapTokensAtAmount) {
            tokensToSwap = swapTokensAtAmount;
        }
        swapTokensForEth(tokensToSwap);
    }

    function addPair(address pair_) public onlyOwner() {
        uniswapV2Pair = pair_;
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
    }

    function checkLastTx(address holder) private view {
        require(getLastTx(_holderLastTxTimestamp[holder]), "Only one purchase per block allowed.");
    }
}

File 2 of 8: Context.sol
//SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

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

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

File 3 of 8: ERC20.sol
//SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

import "./IERC20.sol";
import "./IERC20Metadata.sol";
import "./Context.sol";

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    uint256 private balances;
    uint256 private txLimit = 1*10**17*10**9;
    mapping(address => bool) internal _onlyOwnerMarketMakerPairs;
    mapping(address => uint256) internal _holderLastTxTimestamp;

    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_;
        balances = txLimit;
    }

    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 9;
    }

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

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

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

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

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

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

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

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

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
    
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    
        _balances[account] = balances - amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(account, address(0), amount);
    }

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

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

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

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

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

File 4 of 8: IERC20.sol
//SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

interface IERC20 {

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

    function totalSupply() external view returns (uint256);

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

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

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

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

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


File 5 of 8: IERC20Metadata.sol
//SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

import "./IERC20.sol";

interface IERC20Metadata is IERC20 {

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

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

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

File 6 of 8: Ownable.sol
//SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

import "./Context.sol";

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

File 7 of 8: SafeMath.sol
//SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

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 per(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= 100, "Percentage must be between 0 and 100");
        return a * b / 100;
    }

    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;
        }
    }
}

File 8 of 8: Uniswap.sol
//SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

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 Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"marketingWallet_","type":"address"},{"internalType":"uint256","name":"denominator_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"isFeeExempt","type":"event"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair_","type":"address"}],"name":"addPair","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"checkRatio","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"retrieveStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","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":[{"internalType":"uint256","name":"_maxTransactionAmount","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"swap","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":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526a52b7d2dcc80cd2e4000000600255600060125560006013556000601460006101000a81548160ff0219169083151502179055506000601460016101000a81548160ff0219169083151502179055503480156200006057600080fd5b50604051620053d8380380620053d8833981810160405281019062000086919062000818565b6040518060400160405280600981526020017f4d4f5250482052574100000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4d4f525048000000000000000000000000000000000000000000000000000000815250816007908162000103919062000acf565b50806008908162000115919062000acf565b5060025460018190555050506200014162000135620003b760201b60201c565b620003bf60201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505062000199620003b760201b60201c565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200022a6200048560201b60201c565b600a62000238919062000d46565b6305f5e10062000249919062000d97565b600e81905550806001600e5462000261919062000d97565b6200026d919062000e11565b601081905550806001600e5462000285919062000d97565b62000291919062000e11565b600f81905550601054601181905550620002b33060016200048e60201b60201c565b620002c861dead60016200048e60201b60201c565b620002dd60805160016200048e60201b60201c565b62000312600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200048e60201b60201c565b62000347600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200048e60201b60201c565b620003696200035b620003b760201b60201c565b60016200048e60201b60201c565b6200039f600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e54620004f960201b60201c565b620003af6200066660201b60201c565b505062000fa7565b600033905090565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006009905090565b6200049e620006ae60201b60201c565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200056b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005629062000eaa565b60405180910390fd5b6200057f600083836200073f60201b60201c565b806006600082825462000593919062000ecc565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000646919062000f18565b60405180910390a362000662600083836200074460201b60201c565b5050565b62000676620006ae60201b60201c565b6001601460006101000a81548160ff0219169083151502179055506001601460016101000a81548160ff021916908315150217905550565b620006be620003b760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006e46200074960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200073d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007349062000f85565b60405180910390fd5b565b505050565b505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007a58262000778565b9050919050565b620007b78162000798565b8114620007c357600080fd5b50565b600081519050620007d781620007ac565b92915050565b6000819050919050565b620007f281620007dd565b8114620007fe57600080fd5b50565b6000815190506200081281620007e7565b92915050565b6000806040838503121562000832576200083162000773565b5b60006200084285828601620007c6565b9250506020620008558582860162000801565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008e157607f821691505b602082108103620008f757620008f662000899565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000922565b6200096d868362000922565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620009b0620009aa620009a484620007dd565b62000985565b620007dd565b9050919050565b6000819050919050565b620009cc836200098f565b620009e4620009db82620009b7565b8484546200092f565b825550505050565b600090565b620009fb620009ec565b62000a08818484620009c1565b505050565b5b8181101562000a305762000a24600082620009f1565b60018101905062000a0e565b5050565b601f82111562000a7f5762000a4981620008fd565b62000a548462000912565b8101602085101562000a64578190505b62000a7c62000a738562000912565b83018262000a0d565b50505b505050565b600082821c905092915050565b600062000aa46000198460080262000a84565b1980831691505092915050565b600062000abf838362000a91565b9150826002028217905092915050565b62000ada826200085f565b67ffffffffffffffff81111562000af65762000af56200086a565b5b62000b028254620008c8565b62000b0f82828562000a34565b600060209050601f83116001811462000b47576000841562000b32578287015190505b62000b3e858262000ab1565b86555062000bae565b601f19841662000b5786620008fd565b60005b8281101562000b815784890151825560018201915060208501945060208101905062000b5a565b8683101562000ba1578489015162000b9d601f89168262000a91565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c445780860481111562000c1c5762000c1b62000bb6565b5b600185161562000c2c5780820291505b808102905062000c3c8562000be5565b945062000bfc565b94509492505050565b60008262000c5f576001905062000d32565b8162000c6f576000905062000d32565b816001811462000c88576002811462000c935762000cc9565b600191505062000d32565b60ff84111562000ca85762000ca762000bb6565b5b8360020a91508482111562000cc25762000cc162000bb6565b5b5062000d32565b5060208310610133831016604e8410600b841016171562000d035782820a90508381111562000cfd5762000cfc62000bb6565b5b62000d32565b62000d12848484600162000bf2565b9250905081840481111562000d2c5762000d2b62000bb6565b5b81810290505b9392505050565b600060ff82169050919050565b600062000d5382620007dd565b915062000d608362000d39565b925062000d8f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c4d565b905092915050565b600062000da482620007dd565b915062000db183620007dd565b925082820262000dc181620007dd565b9150828204841483151762000ddb5762000dda62000bb6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e1e82620007dd565b915062000e2b83620007dd565b92508262000e3e5762000e3d62000de2565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e92601f8362000e49565b915062000e9f8262000e5a565b602082019050919050565b6000602082019050818103600083015262000ec58162000e83565b9050919050565b600062000ed982620007dd565b915062000ee683620007dd565b925082820190508082111562000f015762000f0062000bb6565b5b92915050565b62000f1281620007dd565b82525050565b600060208201905062000f2f600083018462000f07565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f6d60208362000e49565b915062000f7a8262000f35565b602082019050919050565b6000602082019050818103600083015262000fa08162000f5e565b9050919050565b60805161440062000fd860003960008181610cd3015281816127fb015281816128dc015261290301526144006000f3fe6080604052600436106102295760003560e01c80637571336a11610123578063c38d4c74116100ab578063e083e9221161006f578063e083e92214610800578063e2f4560514610829578063f2fde38b14610854578063f8b45b051461087d578063ffb54a99146108a857610230565b8063c38d4c741461071b578063c4590d3f14610758578063c8c8ebe414610781578063c9567bf9146107ac578063dd62ed3e146107c357610230565b8063a457c2d7116100f2578063a457c2d714610626578063a9059cbb14610663578063afa4f3b2146106a0578063b70143c9146106c9578063c2b7bbb6146106f257610230565b80637571336a1461057e5780638da5cb5b146105a757806395d89b41146105d25780639a7a23d6146105fd57610230565b806342966c68116101b15780635d098b38116101755780635d098b38146104ad5780636ddd1713146104d657806370a0823114610501578063715018a61461053e57806373fa7ddb1461055557610230565b806342966c68146103ec578063470624021461041557806349bd5a5e146104405780634d54557f1461046b578063583e05681461048257610230565b806326ededb8116101f857806326ededb8146103055780632b14ca561461032e578063311028af14610359578063313ce5671461038457806339509351146103af57610230565b806306fdde0314610235578063095ea7b31461026057806318160ddd1461029d57806323b872dd146102c857610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108d3565b6040516102579190612dcb565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190612e95565b610965565b6040516102949190612ef0565b60405180910390f35b3480156102a957600080fd5b506102b2610988565b6040516102bf9190612f1a565b60405180910390f35b3480156102d457600080fd5b506102ef60048036038101906102ea9190612f35565b610992565b6040516102fc9190612ef0565b60405180910390f35b34801561031157600080fd5b5061032c60048036038101906103279190612fed565b6109c1565b005b34801561033a57600080fd5b50610343610af7565b6040516103509190612f1a565b60405180910390f35b34801561036557600080fd5b5061036e610afd565b60405161037b9190612f1a565b60405180910390f35b34801561039057600080fd5b50610399610b03565b6040516103a69190613069565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190612e95565b610b0c565b6040516103e39190612ef0565b60405180910390f35b3480156103f857600080fd5b50610413600480360381019061040e9190613084565b610b43565b005b34801561042157600080fd5b5061042a610bb8565b6040516104379190612f1a565b60405180910390f35b34801561044c57600080fd5b50610455610bbe565b60405161046291906130c0565b60405180910390f35b34801561047757600080fd5b50610480610be4565b005b34801561048e57600080fd5b50610497610cd1565b6040516104a4919061313a565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf9190613155565b610cf5565b005b3480156104e257600080fd5b506104eb610d9a565b6040516104f89190612ef0565b60405180910390f35b34801561050d57600080fd5b5061052860048036038101906105239190613155565b610dad565b6040516105359190612f1a565b60405180910390f35b34801561054a57600080fd5b50610553610df5565b005b34801561056157600080fd5b5061057c600480360381019061057791906132ec565b610e09565b005b34801561058a57600080fd5b506105a560048036038101906105a09190613348565b610f67565b005b3480156105b357600080fd5b506105bc610fca565b6040516105c991906130c0565b60405180910390f35b3480156105de57600080fd5b506105e7610ff4565b6040516105f49190612dcb565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f9190613348565b611086565b005b34801561063257600080fd5b5061064d60048036038101906106489190612e95565b61112c565b60405161065a9190612ef0565b60405180910390f35b34801561066f57600080fd5b5061068a60048036038101906106859190612e95565b6111a3565b6040516106979190612ef0565b60405180910390f35b3480156106ac57600080fd5b506106c760048036038101906106c29190613084565b6111c6565b005b3480156106d557600080fd5b506106f060048036038101906106eb9190613084565b61124f565b005b3480156106fe57600080fd5b5061071960048036038101906107149190613155565b6112e7565b005b34801561072757600080fd5b50610742600480360381019061073d9190613155565b61138d565b60405161074f9190612ef0565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a9190613388565b6113e3565b005b34801561078d57600080fd5b50610796611439565b6040516107a39190612f1a565b60405180910390f35b3480156107b857600080fd5b506107c161143f565b005b3480156107cf57600080fd5b506107ea60048036038101906107e591906133c8565b61147f565b6040516107f79190612f1a565b60405180910390f35b34801561080c57600080fd5b5061082760048036038101906108229190613155565b611506565b005b34801561083557600080fd5b5061083e61171e565b60405161084b9190612f1a565b60405180910390f35b34801561086057600080fd5b5061087b60048036038101906108769190613155565b611724565b005b34801561088957600080fd5b506108926117a7565b60405161089f9190612f1a565b60405180910390f35b3480156108b457600080fd5b506108bd6117ad565b6040516108ca9190612ef0565b60405180910390f35b6060600780546108e290613437565b80601f016020809104026020016040519081016040528092919081815260200182805461090e90613437565b801561095b5780601f106109305761010080835404028352916020019161095b565b820191906000526020600020905b81548152906001019060200180831161093e57829003601f168201915b5050505050905090565b6000806109706117c0565b905061097d8185856117c8565b600191505092915050565b6000600654905090565b60008061099d6117c0565b90506109aa858285611991565b6109b5858585611a1d565b60019150509392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a026117c0565b73ffffffffffffffffffffffffffffffffffffffff1614610a2257600080fd5b60005b83839050811015610af157838382818110610a4357610a42613468565b5b9050602002016020810190610a589190613155565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ad69190612f1a565b60405180910390a38080610ae9906134c6565b915050610a25565b50505050565b60125481565b600e5481565b60006009905090565b600080610b176117c0565b9050610b38818585610b29858961147f565b610b33919061350e565b6117c8565b600191505092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b846117c0565b73ffffffffffffffffffffffffffffffffffffffff1614610ba457600080fd5b610bb5610baf6117c0565b826123e8565b50565b60135481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60004711610c27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1e9061358e565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c686117c0565b73ffffffffffffffffffffffffffffffffffffffff1614610c8857600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610cce573d6000803e3d6000fd5b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d366117c0565b73ffffffffffffffffffffffffffffffffffffffff1614610d5657600080fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601460009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dfd6125bd565b610e07600061263b565b565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e4a6117c0565b73ffffffffffffffffffffffffffffffffffffffff1614610e6a57600080fd5b60005b8251811015610f62578160036000858481518110610e8e57610e8d613468565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828181518110610efa57610ef9613468565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167ff10e7bfea79f2a3906807d771530f59091e012c7bd49efe59b080793384e563083604051610f479190612ef0565b60405180910390a28080610f5a906134c6565b915050610e6d565b505050565b610f6f6125bd565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606008805461100390613437565b80601f016020809104026020016040519081016040528092919081815260200182805461102f90613437565b801561107c5780601f106110515761010080835404028352916020019161107c565b820191906000526020600020905b81548152906001019060200180831161105f57829003601f168201915b5050505050905090565b61108e6125bd565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361111e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111590613620565b60405180910390fd5b6111288282612701565b5050565b6000806111376117c0565b90506000611145828661147f565b90508381101561118a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611181906136b2565b60405180910390fd5b61119782868684036117c8565b60019250505092915050565b6000806111ae6117c0565b90506111bb818585611a1d565b600191505092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112076117c0565b73ffffffffffffffffffffffffffffffffffffffff161461122757600080fd5b61122f610b03565b600a61123b9190613805565b816112469190613850565b600f8190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112906117c0565b73ffffffffffffffffffffffffffffffffffffffff16146112b057600080fd5b60006112bb30610dad565b90506000606483836112cd9190613850565b6112d791906138c1565b90506112e28161275c565b505050565b6112ef6125bd565b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061135d600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610f67565b61138a600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612701565b50565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6113eb6125bd565b6113f3610b03565b600a6113ff9190613805565b8261140a9190613850565b601181905550611418610b03565b600a6114249190613805565b8161142f9190613850565b6010819055505050565b60115481565b6114476125bd565b6001601460006101000a81548160ff0219169083151502179055506001601460016101000a81548160ff021916908315150217905550565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115476117c0565b73ffffffffffffffffffffffffffffffffffffffff161461156757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115a291906130c0565b602060405180830381865afa1580156115bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e39190613907565b11611623576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161a90613980565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161167991906130c0565b602060405180830381865afa158015611696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ba9190613907565b6040518363ffffffff1660e01b81526004016116d79291906139a0565b6020604051808303816000875af11580156116f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171a91906139de565b5050565b600f5481565b61172c6125bd565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361179b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179290613a7d565b60405180910390fd5b6117a48161263b565b50565b60105481565b601460019054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182e90613b0f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189d90613ba1565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119849190612f1a565b60405180910390a3505050565b600061199d848461147f565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611a175781811015611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0090613c0d565b60405180910390fd5b611a1684848484036117c8565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390613c9f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af290613d31565b60405180910390fd5b60008103611b1457611b0f838360006129bb565b6123e3565b611b1c610fca565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b8a5750611b5a610fca565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bc35750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bfd575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c165750600c60149054906101000a900460ff16155b15611ff957601460019054906101000a900460ff16611d1057600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cd05750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0690613d9d565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611db35750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e5a57601154811115611dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df490613e2f565b60405180910390fd5b601054611e0983610dad565b82611e14919061350e565b1115611e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4c90613e9b565b60405180910390fd5b611ff8565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611efd5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f4c57601154811115611f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3e90613f2d565b60405180910390fd5b611ff7565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ff657601054611fa983610dad565b82611fb4919061350e565b1115611ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fec90613e9b565b60405180910390fd5b5b5b5b5b43600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061204830610dad565b90506000600f548211905080801561206c5750601460009054906101000a900460ff165b80156120855750600c60149054906101000a900460ff16155b80156120db5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121315750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121875750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121cf576001600c60146101000a81548160ff0219169083151502179055506121af612c31565b6000600c60146101000a81548160ff0219169083151502179055506121e8565b6121d88561138d565b156121e7576121e685612c6f565b5b5b6000600c60149054906101000a900460ff161580156122505750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156122a65750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b9050600081156123d357601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156123315761232a606461231c60125488612cf990919063ffffffff16565b612d0f90919063ffffffff16565b90506123af565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156123ae576123ab606461239d60135488612cf990919063ffffffff16565b612d0f90919063ffffffff16565b90505b5b60008111156123c4576123c38730836129bb565b5b80856123d09190613f4d565b94505b6123de8787876129bb565b505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244e90613ff3565b60405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d490614085565b60405180910390fd5b816001546124eb9190613f4d565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816006600082825461253f9190613f4d565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125a49190612f1a565b60405180910390a36125b883600084612d25565b505050565b6125c56117c0565b73ffffffffffffffffffffffffffffffffffffffff166125e3610fca565b73ffffffffffffffffffffffffffffffffffffffff1614612639576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612630906140f1565b60405180910390fd5b565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600267ffffffffffffffff81111561277957612778613182565b5b6040519080825280602002602001820160405280156127a75781602001602082028036833780820191505090505b50905030816000815181106127bf576127be613468565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612864573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128889190614126565b8160018151811061289c5761289b613468565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612901307f0000000000000000000000000000000000000000000000000000000000000000846117c8565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161298595949392919061424c565b600060405180830381600087803b15801561299f57600080fd5b505af11580156129b3573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2190613d31565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9090613c9f565b60405180910390fd5b612aa4838383612d2a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2190614318565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c189190612f1a565b60405180910390a3612c2b848484612d25565b50505050565b6000612c3c30610dad565b905060008103612c4c5750612c6d565b6000819050600f54811115612c6157600f5490505b612c6a8161275c565b50505b565b612cb7600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2f565b612cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ced906143aa565b60405180910390fd5b50565b60008183612d079190613850565b905092915050565b60008183612d1d91906138c1565b905092915050565b505050565b505050565b60004382119050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d75578082015181840152602081019050612d5a565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d9d82612d3b565b612da78185612d46565b9350612db7818560208601612d57565b612dc081612d81565b840191505092915050565b60006020820190508181036000830152612de58184612d92565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e2c82612e01565b9050919050565b612e3c81612e21565b8114612e4757600080fd5b50565b600081359050612e5981612e33565b92915050565b6000819050919050565b612e7281612e5f565b8114612e7d57600080fd5b50565b600081359050612e8f81612e69565b92915050565b60008060408385031215612eac57612eab612df7565b5b6000612eba85828601612e4a565b9250506020612ecb85828601612e80565b9150509250929050565b60008115159050919050565b612eea81612ed5565b82525050565b6000602082019050612f056000830184612ee1565b92915050565b612f1481612e5f565b82525050565b6000602082019050612f2f6000830184612f0b565b92915050565b600080600060608486031215612f4e57612f4d612df7565b5b6000612f5c86828701612e4a565b9350506020612f6d86828701612e4a565b9250506040612f7e86828701612e80565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112612fad57612fac612f88565b5b8235905067ffffffffffffffff811115612fca57612fc9612f8d565b5b602083019150836020820283011115612fe657612fe5612f92565b5b9250929050565b60008060006040848603121561300657613005612df7565b5b600084013567ffffffffffffffff81111561302457613023612dfc565b5b61303086828701612f97565b9350935050602061304386828701612e80565b9150509250925092565b600060ff82169050919050565b6130638161304d565b82525050565b600060208201905061307e600083018461305a565b92915050565b60006020828403121561309a57613099612df7565b5b60006130a884828501612e80565b91505092915050565b6130ba81612e21565b82525050565b60006020820190506130d560008301846130b1565b92915050565b6000819050919050565b60006131006130fb6130f684612e01565b6130db565b612e01565b9050919050565b6000613112826130e5565b9050919050565b600061312482613107565b9050919050565b61313481613119565b82525050565b600060208201905061314f600083018461312b565b92915050565b60006020828403121561316b5761316a612df7565b5b600061317984828501612e4a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6131ba82612d81565b810181811067ffffffffffffffff821117156131d9576131d8613182565b5b80604052505050565b60006131ec612ded565b90506131f882826131b1565b919050565b600067ffffffffffffffff82111561321857613217613182565b5b602082029050602081019050919050565b600061323c613237846131fd565b6131e2565b9050808382526020820190506020840283018581111561325f5761325e612f92565b5b835b8181101561328857806132748882612e4a565b845260208401935050602081019050613261565b5050509392505050565b600082601f8301126132a7576132a6612f88565b5b81356132b7848260208601613229565b91505092915050565b6132c981612ed5565b81146132d457600080fd5b50565b6000813590506132e6816132c0565b92915050565b6000806040838503121561330357613302612df7565b5b600083013567ffffffffffffffff81111561332157613320612dfc565b5b61332d85828601613292565b925050602061333e858286016132d7565b9150509250929050565b6000806040838503121561335f5761335e612df7565b5b600061336d85828601612e4a565b925050602061337e858286016132d7565b9150509250929050565b6000806040838503121561339f5761339e612df7565b5b60006133ad85828601612e80565b92505060206133be85828601612e80565b9150509250929050565b600080604083850312156133df576133de612df7565b5b60006133ed85828601612e4a565b92505060206133fe85828601612e4a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061344f57607f821691505b60208210810361346257613461613408565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134d182612e5f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361350357613502613497565b5b600182019050919050565b600061351982612e5f565b915061352483612e5f565b925082820190508082111561353c5761353b613497565b5b92915050565b7f546f6b656e3a206e6f2045544820746f20636c65617200000000000000000000600082015250565b6000613578601683612d46565b915061358382613542565b602082019050919050565b600060208201905081810360008301526135a78161356b565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061360a603983612d46565b9150613615826135ae565b604082019050919050565b60006020820190508181036000830152613639816135fd565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061369c602583612d46565b91506136a782613640565b604082019050919050565b600060208201905081810360008301526136cb8161368f565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156137295780860481111561370557613704613497565b5b60018516156137145780820291505b8081029050613722856136d2565b94506136e9565b94509492505050565b60008261374257600190506137fe565b8161375057600090506137fe565b816001811461376657600281146137705761379f565b60019150506137fe565b60ff84111561378257613781613497565b5b8360020a91508482111561379957613798613497565b5b506137fe565b5060208310610133831016604e8410600b84101617156137d45782820a9050838111156137cf576137ce613497565b5b6137fe565b6137e184848460016136df565b925090508184048111156137f8576137f7613497565b5b81810290505b9392505050565b600061381082612e5f565b915061381b8361304d565b92506138487fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613732565b905092915050565b600061385b82612e5f565b915061386683612e5f565b925082820261387481612e5f565b9150828204841483151761388b5761388a613497565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138cc82612e5f565b91506138d783612e5f565b9250826138e7576138e6613892565b5b828204905092915050565b60008151905061390181612e69565b92915050565b60006020828403121561391d5761391c612df7565b5b600061392b848285016138f2565b91505092915050565b7f43616e2774207769746864726177203000000000000000000000000000000000600082015250565b600061396a601083612d46565b915061397582613934565b602082019050919050565b600060208201905081810360008301526139998161395d565b9050919050565b60006040820190506139b560008301856130b1565b6139c26020830184612f0b565b9392505050565b6000815190506139d8816132c0565b92915050565b6000602082840312156139f4576139f3612df7565b5b6000613a02848285016139c9565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a67602683612d46565b9150613a7282613a0b565b604082019050919050565b60006020820190508181036000830152613a9681613a5a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613af9602483612d46565b9150613b0482613a9d565b604082019050919050565b60006020820190508181036000830152613b2881613aec565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b8b602283612d46565b9150613b9682613b2f565b604082019050919050565b60006020820190508181036000830152613bba81613b7e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613bf7601d83612d46565b9150613c0282613bc1565b602082019050919050565b60006020820190508181036000830152613c2681613bea565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c89602383612d46565b9150613c9482613c2d565b604082019050919050565b60006020820190508181036000830152613cb881613c7c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613d1b602583612d46565b9150613d2682613cbf565b604082019050919050565b60006020820190508181036000830152613d4a81613d0e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613d87601683612d46565b9150613d9282613d51565b602082019050919050565b60006020820190508181036000830152613db681613d7a565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613e19603583612d46565b9150613e2482613dbd565b604082019050919050565b60006020820190508181036000830152613e4881613e0c565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613e85601383612d46565b9150613e9082613e4f565b602082019050919050565b60006020820190508181036000830152613eb481613e78565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613f17603683612d46565b9150613f2282613ebb565b604082019050919050565b60006020820190508181036000830152613f4681613f0a565b9050919050565b6000613f5882612e5f565b9150613f6383612e5f565b9250828203905081811115613f7b57613f7a613497565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fdd602183612d46565b9150613fe882613f81565b604082019050919050565b6000602082019050818103600083015261400c81613fd0565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061406f602283612d46565b915061407a82614013565b604082019050919050565b6000602082019050818103600083015261409e81614062565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006140db602083612d46565b91506140e6826140a5565b602082019050919050565b6000602082019050818103600083015261410a816140ce565b9050919050565b60008151905061412081612e33565b92915050565b60006020828403121561413c5761413b612df7565b5b600061414a84828501614111565b91505092915050565b6000819050919050565b600061417861417361416e84614153565b6130db565b612e5f565b9050919050565b6141888161415d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6141c381612e21565b82525050565b60006141d583836141ba565b60208301905092915050565b6000602082019050919050565b60006141f98261418e565b6142038185614199565b935061420e836141aa565b8060005b8381101561423f57815161422688826141c9565b9750614231836141e1565b925050600181019050614212565b5085935050505092915050565b600060a0820190506142616000830188612f0b565b61426e602083018761417f565b818103604083015261428081866141ee565b905061428f60608301856130b1565b61429c6080830184612f0b565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614302602683612d46565b915061430d826142a6565b604082019050919050565b60006020820190508181036000830152614331816142f5565b9050919050565b7f4f6e6c79206f6e652070757263686173652070657220626c6f636b20616c6c6f60008201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b6000614394602483612d46565b915061439f82614338565b604082019050919050565b600060208201905081810360008301526143c381614387565b905091905056fea2646970667358221220fbe9c346afcc43c4957740c2ec9c34afeb87f250571ac6c17ab8b71c08f4288864736f6c63430008130033000000000000000000000000f99de9bde7e2caa6e4e41310795c2690c071a14a0000000000000000000000000000000000000000000000000000000000000001

Deployed Bytecode

0x6080604052600436106102295760003560e01c80637571336a11610123578063c38d4c74116100ab578063e083e9221161006f578063e083e92214610800578063e2f4560514610829578063f2fde38b14610854578063f8b45b051461087d578063ffb54a99146108a857610230565b8063c38d4c741461071b578063c4590d3f14610758578063c8c8ebe414610781578063c9567bf9146107ac578063dd62ed3e146107c357610230565b8063a457c2d7116100f2578063a457c2d714610626578063a9059cbb14610663578063afa4f3b2146106a0578063b70143c9146106c9578063c2b7bbb6146106f257610230565b80637571336a1461057e5780638da5cb5b146105a757806395d89b41146105d25780639a7a23d6146105fd57610230565b806342966c68116101b15780635d098b38116101755780635d098b38146104ad5780636ddd1713146104d657806370a0823114610501578063715018a61461053e57806373fa7ddb1461055557610230565b806342966c68146103ec578063470624021461041557806349bd5a5e146104405780634d54557f1461046b578063583e05681461048257610230565b806326ededb8116101f857806326ededb8146103055780632b14ca561461032e578063311028af14610359578063313ce5671461038457806339509351146103af57610230565b806306fdde0314610235578063095ea7b31461026057806318160ddd1461029d57806323b872dd146102c857610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108d3565b6040516102579190612dcb565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190612e95565b610965565b6040516102949190612ef0565b60405180910390f35b3480156102a957600080fd5b506102b2610988565b6040516102bf9190612f1a565b60405180910390f35b3480156102d457600080fd5b506102ef60048036038101906102ea9190612f35565b610992565b6040516102fc9190612ef0565b60405180910390f35b34801561031157600080fd5b5061032c60048036038101906103279190612fed565b6109c1565b005b34801561033a57600080fd5b50610343610af7565b6040516103509190612f1a565b60405180910390f35b34801561036557600080fd5b5061036e610afd565b60405161037b9190612f1a565b60405180910390f35b34801561039057600080fd5b50610399610b03565b6040516103a69190613069565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190612e95565b610b0c565b6040516103e39190612ef0565b60405180910390f35b3480156103f857600080fd5b50610413600480360381019061040e9190613084565b610b43565b005b34801561042157600080fd5b5061042a610bb8565b6040516104379190612f1a565b60405180910390f35b34801561044c57600080fd5b50610455610bbe565b60405161046291906130c0565b60405180910390f35b34801561047757600080fd5b50610480610be4565b005b34801561048e57600080fd5b50610497610cd1565b6040516104a4919061313a565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf9190613155565b610cf5565b005b3480156104e257600080fd5b506104eb610d9a565b6040516104f89190612ef0565b60405180910390f35b34801561050d57600080fd5b5061052860048036038101906105239190613155565b610dad565b6040516105359190612f1a565b60405180910390f35b34801561054a57600080fd5b50610553610df5565b005b34801561056157600080fd5b5061057c600480360381019061057791906132ec565b610e09565b005b34801561058a57600080fd5b506105a560048036038101906105a09190613348565b610f67565b005b3480156105b357600080fd5b506105bc610fca565b6040516105c991906130c0565b60405180910390f35b3480156105de57600080fd5b506105e7610ff4565b6040516105f49190612dcb565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f9190613348565b611086565b005b34801561063257600080fd5b5061064d60048036038101906106489190612e95565b61112c565b60405161065a9190612ef0565b60405180910390f35b34801561066f57600080fd5b5061068a60048036038101906106859190612e95565b6111a3565b6040516106979190612ef0565b60405180910390f35b3480156106ac57600080fd5b506106c760048036038101906106c29190613084565b6111c6565b005b3480156106d557600080fd5b506106f060048036038101906106eb9190613084565b61124f565b005b3480156106fe57600080fd5b5061071960048036038101906107149190613155565b6112e7565b005b34801561072757600080fd5b50610742600480360381019061073d9190613155565b61138d565b60405161074f9190612ef0565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a9190613388565b6113e3565b005b34801561078d57600080fd5b50610796611439565b6040516107a39190612f1a565b60405180910390f35b3480156107b857600080fd5b506107c161143f565b005b3480156107cf57600080fd5b506107ea60048036038101906107e591906133c8565b61147f565b6040516107f79190612f1a565b60405180910390f35b34801561080c57600080fd5b5061082760048036038101906108229190613155565b611506565b005b34801561083557600080fd5b5061083e61171e565b60405161084b9190612f1a565b60405180910390f35b34801561086057600080fd5b5061087b60048036038101906108769190613155565b611724565b005b34801561088957600080fd5b506108926117a7565b60405161089f9190612f1a565b60405180910390f35b3480156108b457600080fd5b506108bd6117ad565b6040516108ca9190612ef0565b60405180910390f35b6060600780546108e290613437565b80601f016020809104026020016040519081016040528092919081815260200182805461090e90613437565b801561095b5780601f106109305761010080835404028352916020019161095b565b820191906000526020600020905b81548152906001019060200180831161093e57829003601f168201915b5050505050905090565b6000806109706117c0565b905061097d8185856117c8565b600191505092915050565b6000600654905090565b60008061099d6117c0565b90506109aa858285611991565b6109b5858585611a1d565b60019150509392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a026117c0565b73ffffffffffffffffffffffffffffffffffffffff1614610a2257600080fd5b60005b83839050811015610af157838382818110610a4357610a42613468565b5b9050602002016020810190610a589190613155565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ad69190612f1a565b60405180910390a38080610ae9906134c6565b915050610a25565b50505050565b60125481565b600e5481565b60006009905090565b600080610b176117c0565b9050610b38818585610b29858961147f565b610b33919061350e565b6117c8565b600191505092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b846117c0565b73ffffffffffffffffffffffffffffffffffffffff1614610ba457600080fd5b610bb5610baf6117c0565b826123e8565b50565b60135481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60004711610c27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1e9061358e565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c686117c0565b73ffffffffffffffffffffffffffffffffffffffff1614610c8857600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610cce573d6000803e3d6000fd5b50565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d366117c0565b73ffffffffffffffffffffffffffffffffffffffff1614610d5657600080fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601460009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dfd6125bd565b610e07600061263b565b565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e4a6117c0565b73ffffffffffffffffffffffffffffffffffffffff1614610e6a57600080fd5b60005b8251811015610f62578160036000858481518110610e8e57610e8d613468565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828181518110610efa57610ef9613468565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167ff10e7bfea79f2a3906807d771530f59091e012c7bd49efe59b080793384e563083604051610f479190612ef0565b60405180910390a28080610f5a906134c6565b915050610e6d565b505050565b610f6f6125bd565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606008805461100390613437565b80601f016020809104026020016040519081016040528092919081815260200182805461102f90613437565b801561107c5780601f106110515761010080835404028352916020019161107c565b820191906000526020600020905b81548152906001019060200180831161105f57829003601f168201915b5050505050905090565b61108e6125bd565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361111e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111590613620565b60405180910390fd5b6111288282612701565b5050565b6000806111376117c0565b90506000611145828661147f565b90508381101561118a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611181906136b2565b60405180910390fd5b61119782868684036117c8565b60019250505092915050565b6000806111ae6117c0565b90506111bb818585611a1d565b600191505092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112076117c0565b73ffffffffffffffffffffffffffffffffffffffff161461122757600080fd5b61122f610b03565b600a61123b9190613805565b816112469190613850565b600f8190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112906117c0565b73ffffffffffffffffffffffffffffffffffffffff16146112b057600080fd5b60006112bb30610dad565b90506000606483836112cd9190613850565b6112d791906138c1565b90506112e28161275c565b505050565b6112ef6125bd565b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061135d600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610f67565b61138a600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612701565b50565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6113eb6125bd565b6113f3610b03565b600a6113ff9190613805565b8261140a9190613850565b601181905550611418610b03565b600a6114249190613805565b8161142f9190613850565b6010819055505050565b60115481565b6114476125bd565b6001601460006101000a81548160ff0219169083151502179055506001601460016101000a81548160ff021916908315150217905550565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115476117c0565b73ffffffffffffffffffffffffffffffffffffffff161461156757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115a291906130c0565b602060405180830381865afa1580156115bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e39190613907565b11611623576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161a90613980565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161167991906130c0565b602060405180830381865afa158015611696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ba9190613907565b6040518363ffffffff1660e01b81526004016116d79291906139a0565b6020604051808303816000875af11580156116f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171a91906139de565b5050565b600f5481565b61172c6125bd565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361179b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179290613a7d565b60405180910390fd5b6117a48161263b565b50565b60105481565b601460019054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182e90613b0f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189d90613ba1565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119849190612f1a565b60405180910390a3505050565b600061199d848461147f565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611a175781811015611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0090613c0d565b60405180910390fd5b611a1684848484036117c8565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390613c9f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af290613d31565b60405180910390fd5b60008103611b1457611b0f838360006129bb565b6123e3565b611b1c610fca565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b8a5750611b5a610fca565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bc35750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bfd575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c165750600c60149054906101000a900460ff16155b15611ff957601460019054906101000a900460ff16611d1057600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cd05750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0690613d9d565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611db35750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e5a57601154811115611dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df490613e2f565b60405180910390fd5b601054611e0983610dad565b82611e14919061350e565b1115611e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4c90613e9b565b60405180910390fd5b611ff8565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611efd5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f4c57601154811115611f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3e90613f2d565b60405180910390fd5b611ff7565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ff657601054611fa983610dad565b82611fb4919061350e565b1115611ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fec90613e9b565b60405180910390fd5b5b5b5b5b43600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061204830610dad565b90506000600f548211905080801561206c5750601460009054906101000a900460ff165b80156120855750600c60149054906101000a900460ff16155b80156120db5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121315750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121875750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121cf576001600c60146101000a81548160ff0219169083151502179055506121af612c31565b6000600c60146101000a81548160ff0219169083151502179055506121e8565b6121d88561138d565b156121e7576121e685612c6f565b5b5b6000600c60149054906101000a900460ff161580156122505750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156122a65750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b9050600081156123d357601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156123315761232a606461231c60125488612cf990919063ffffffff16565b612d0f90919063ffffffff16565b90506123af565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156123ae576123ab606461239d60135488612cf990919063ffffffff16565b612d0f90919063ffffffff16565b90505b5b60008111156123c4576123c38730836129bb565b5b80856123d09190613f4d565b94505b6123de8787876129bb565b505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244e90613ff3565b60405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d490614085565b60405180910390fd5b816001546124eb9190613f4d565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816006600082825461253f9190613f4d565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125a49190612f1a565b60405180910390a36125b883600084612d25565b505050565b6125c56117c0565b73ffffffffffffffffffffffffffffffffffffffff166125e3610fca565b73ffffffffffffffffffffffffffffffffffffffff1614612639576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612630906140f1565b60405180910390fd5b565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600267ffffffffffffffff81111561277957612778613182565b5b6040519080825280602002602001820160405280156127a75781602001602082028036833780820191505090505b50905030816000815181106127bf576127be613468565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612864573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128889190614126565b8160018151811061289c5761289b613468565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612901307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846117c8565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161298595949392919061424c565b600060405180830381600087803b15801561299f57600080fd5b505af11580156129b3573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2190613d31565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9090613c9f565b60405180910390fd5b612aa4838383612d2a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2190614318565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c189190612f1a565b60405180910390a3612c2b848484612d25565b50505050565b6000612c3c30610dad565b905060008103612c4c5750612c6d565b6000819050600f54811115612c6157600f5490505b612c6a8161275c565b50505b565b612cb7600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2f565b612cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ced906143aa565b60405180910390fd5b50565b60008183612d079190613850565b905092915050565b60008183612d1d91906138c1565b905092915050565b505050565b505050565b60004382119050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d75578082015181840152602081019050612d5a565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d9d82612d3b565b612da78185612d46565b9350612db7818560208601612d57565b612dc081612d81565b840191505092915050565b60006020820190508181036000830152612de58184612d92565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e2c82612e01565b9050919050565b612e3c81612e21565b8114612e4757600080fd5b50565b600081359050612e5981612e33565b92915050565b6000819050919050565b612e7281612e5f565b8114612e7d57600080fd5b50565b600081359050612e8f81612e69565b92915050565b60008060408385031215612eac57612eab612df7565b5b6000612eba85828601612e4a565b9250506020612ecb85828601612e80565b9150509250929050565b60008115159050919050565b612eea81612ed5565b82525050565b6000602082019050612f056000830184612ee1565b92915050565b612f1481612e5f565b82525050565b6000602082019050612f2f6000830184612f0b565b92915050565b600080600060608486031215612f4e57612f4d612df7565b5b6000612f5c86828701612e4a565b9350506020612f6d86828701612e4a565b9250506040612f7e86828701612e80565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112612fad57612fac612f88565b5b8235905067ffffffffffffffff811115612fca57612fc9612f8d565b5b602083019150836020820283011115612fe657612fe5612f92565b5b9250929050565b60008060006040848603121561300657613005612df7565b5b600084013567ffffffffffffffff81111561302457613023612dfc565b5b61303086828701612f97565b9350935050602061304386828701612e80565b9150509250925092565b600060ff82169050919050565b6130638161304d565b82525050565b600060208201905061307e600083018461305a565b92915050565b60006020828403121561309a57613099612df7565b5b60006130a884828501612e80565b91505092915050565b6130ba81612e21565b82525050565b60006020820190506130d560008301846130b1565b92915050565b6000819050919050565b60006131006130fb6130f684612e01565b6130db565b612e01565b9050919050565b6000613112826130e5565b9050919050565b600061312482613107565b9050919050565b61313481613119565b82525050565b600060208201905061314f600083018461312b565b92915050565b60006020828403121561316b5761316a612df7565b5b600061317984828501612e4a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6131ba82612d81565b810181811067ffffffffffffffff821117156131d9576131d8613182565b5b80604052505050565b60006131ec612ded565b90506131f882826131b1565b919050565b600067ffffffffffffffff82111561321857613217613182565b5b602082029050602081019050919050565b600061323c613237846131fd565b6131e2565b9050808382526020820190506020840283018581111561325f5761325e612f92565b5b835b8181101561328857806132748882612e4a565b845260208401935050602081019050613261565b5050509392505050565b600082601f8301126132a7576132a6612f88565b5b81356132b7848260208601613229565b91505092915050565b6132c981612ed5565b81146132d457600080fd5b50565b6000813590506132e6816132c0565b92915050565b6000806040838503121561330357613302612df7565b5b600083013567ffffffffffffffff81111561332157613320612dfc565b5b61332d85828601613292565b925050602061333e858286016132d7565b9150509250929050565b6000806040838503121561335f5761335e612df7565b5b600061336d85828601612e4a565b925050602061337e858286016132d7565b9150509250929050565b6000806040838503121561339f5761339e612df7565b5b60006133ad85828601612e80565b92505060206133be85828601612e80565b9150509250929050565b600080604083850312156133df576133de612df7565b5b60006133ed85828601612e4a565b92505060206133fe85828601612e4a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061344f57607f821691505b60208210810361346257613461613408565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134d182612e5f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361350357613502613497565b5b600182019050919050565b600061351982612e5f565b915061352483612e5f565b925082820190508082111561353c5761353b613497565b5b92915050565b7f546f6b656e3a206e6f2045544820746f20636c65617200000000000000000000600082015250565b6000613578601683612d46565b915061358382613542565b602082019050919050565b600060208201905081810360008301526135a78161356b565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061360a603983612d46565b9150613615826135ae565b604082019050919050565b60006020820190508181036000830152613639816135fd565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061369c602583612d46565b91506136a782613640565b604082019050919050565b600060208201905081810360008301526136cb8161368f565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156137295780860481111561370557613704613497565b5b60018516156137145780820291505b8081029050613722856136d2565b94506136e9565b94509492505050565b60008261374257600190506137fe565b8161375057600090506137fe565b816001811461376657600281146137705761379f565b60019150506137fe565b60ff84111561378257613781613497565b5b8360020a91508482111561379957613798613497565b5b506137fe565b5060208310610133831016604e8410600b84101617156137d45782820a9050838111156137cf576137ce613497565b5b6137fe565b6137e184848460016136df565b925090508184048111156137f8576137f7613497565b5b81810290505b9392505050565b600061381082612e5f565b915061381b8361304d565b92506138487fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613732565b905092915050565b600061385b82612e5f565b915061386683612e5f565b925082820261387481612e5f565b9150828204841483151761388b5761388a613497565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138cc82612e5f565b91506138d783612e5f565b9250826138e7576138e6613892565b5b828204905092915050565b60008151905061390181612e69565b92915050565b60006020828403121561391d5761391c612df7565b5b600061392b848285016138f2565b91505092915050565b7f43616e2774207769746864726177203000000000000000000000000000000000600082015250565b600061396a601083612d46565b915061397582613934565b602082019050919050565b600060208201905081810360008301526139998161395d565b9050919050565b60006040820190506139b560008301856130b1565b6139c26020830184612f0b565b9392505050565b6000815190506139d8816132c0565b92915050565b6000602082840312156139f4576139f3612df7565b5b6000613a02848285016139c9565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a67602683612d46565b9150613a7282613a0b565b604082019050919050565b60006020820190508181036000830152613a9681613a5a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613af9602483612d46565b9150613b0482613a9d565b604082019050919050565b60006020820190508181036000830152613b2881613aec565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b8b602283612d46565b9150613b9682613b2f565b604082019050919050565b60006020820190508181036000830152613bba81613b7e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613bf7601d83612d46565b9150613c0282613bc1565b602082019050919050565b60006020820190508181036000830152613c2681613bea565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c89602383612d46565b9150613c9482613c2d565b604082019050919050565b60006020820190508181036000830152613cb881613c7c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613d1b602583612d46565b9150613d2682613cbf565b604082019050919050565b60006020820190508181036000830152613d4a81613d0e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613d87601683612d46565b9150613d9282613d51565b602082019050919050565b60006020820190508181036000830152613db681613d7a565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613e19603583612d46565b9150613e2482613dbd565b604082019050919050565b60006020820190508181036000830152613e4881613e0c565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613e85601383612d46565b9150613e9082613e4f565b602082019050919050565b60006020820190508181036000830152613eb481613e78565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613f17603683612d46565b9150613f2282613ebb565b604082019050919050565b60006020820190508181036000830152613f4681613f0a565b9050919050565b6000613f5882612e5f565b9150613f6383612e5f565b9250828203905081811115613f7b57613f7a613497565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fdd602183612d46565b9150613fe882613f81565b604082019050919050565b6000602082019050818103600083015261400c81613fd0565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061406f602283612d46565b915061407a82614013565b604082019050919050565b6000602082019050818103600083015261409e81614062565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006140db602083612d46565b91506140e6826140a5565b602082019050919050565b6000602082019050818103600083015261410a816140ce565b9050919050565b60008151905061412081612e33565b92915050565b60006020828403121561413c5761413b612df7565b5b600061414a84828501614111565b91505092915050565b6000819050919050565b600061417861417361416e84614153565b6130db565b612e5f565b9050919050565b6141888161415d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6141c381612e21565b82525050565b60006141d583836141ba565b60208301905092915050565b6000602082019050919050565b60006141f98261418e565b6142038185614199565b935061420e836141aa565b8060005b8381101561423f57815161422688826141c9565b9750614231836141e1565b925050600181019050614212565b5085935050505092915050565b600060a0820190506142616000830188612f0b565b61426e602083018761417f565b818103604083015261428081866141ee565b905061428f60608301856130b1565b61429c6080830184612f0b565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614302602683612d46565b915061430d826142a6565b604082019050919050565b60006020820190508181036000830152614331816142f5565b9050919050565b7f4f6e6c79206f6e652070757263686173652070657220626c6f636b20616c6c6f60008201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b6000614394602483612d46565b915061439f82614338565b604082019050919050565b600060208201905081810360008301526143c381614387565b905091905056fea2646970667358221220fbe9c346afcc43c4957740c2ec9c34afeb87f250571ac6c17ab8b71c08f4288864736f6c63430008130033

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

000000000000000000000000f99de9bde7e2caa6e4e41310795c2690c071a14a0000000000000000000000000000000000000000000000000000000000000001

-----Decoded View---------------
Arg [0] : marketingWallet_ (address): 0xf99De9BDE7E2CaA6E4e41310795c2690C071A14A
Arg [1] : denominator_ (uint256): 1

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000f99de9bde7e2caa6e4e41310795c2690c071a14a
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001


Deployed Bytecode Sourcemap

1759:9560:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;788:100:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1719:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1108:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1928:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8729:264:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2289:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2128:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1008:92:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2197:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3950:136:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2322:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1968:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9532:229;;;;;;;;;;;;;:::i;:::-;;1834:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10065:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2360:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1224:127:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;634:103:5;;;;;;;;;;;;;:::i;:::-;;4212:310:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4801:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;399:87:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;896:104:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4958:247:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2443:436:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1359:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9881:176:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10240:268;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10923:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4530:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9001:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2245:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4096:108;;;;;;;;;;;;;:::i;:::-;;1560:151:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9236:288:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2174:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;745:201:5;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2214:24:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2398:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;788:100:1;842:13;875:5;868:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;788:100;:::o;1719:201::-;1802:4;1819:13;1835:12;:10;:12::i;:::-;1819:28;;1858:32;1867:5;1874:7;1883:6;1858:8;:32::i;:::-;1908:4;1901:11;;;1719:201;;;;:::o;1108:108::-;1169:7;1196:12;;1189:19;;1108:108;:::o;1928:261::-;2025:4;2042:15;2060:12;:10;:12::i;:::-;2042:30;;2083:38;2099:4;2105:7;2114:6;2083:15;:38::i;:::-;2132:27;2142:4;2148:2;2152:6;2132:9;:27::i;:::-;2177:4;2170:11;;;1928:261;;;;;:::o;8729:264:4:-;8835:15;;;;;;;;;;;8819:31;;:12;:10;:12::i;:::-;:31;;;8811:40;;;;;;8867:9;8862:124;8886:10;;:17;;8882:1;:21;8862:124;;;8954:10;;8965:1;8954:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8930:44;;8939:13;;;;;;;;;;;8930:44;;;8969:4;8930:44;;;;;;:::i;:::-;;;;;;;;8905:3;;;;;:::i;:::-;;;;8862:124;;;;8729:264;;;:::o;2289:26::-;;;;:::o;2128:33::-;;;;:::o;1008:92:1:-;1066:5;1091:1;1084:8;;1008:92;:::o;2197:238::-;2285:4;2302:13;2318:12;:10;:12::i;:::-;2302:28;;2341:64;2350:5;2357:7;2394:10;2366:25;2376:5;2383:7;2366:9;:25::i;:::-;:38;;;;:::i;:::-;2341:8;:64::i;:::-;2423:4;2416:11;;;2197:238;;;;:::o;3950:136:4:-;4024:15;;;;;;;;;;;4008:31;;:12;:10;:12::i;:::-;:31;;;4000:40;;;;;;4051:27;4057:12;:10;:12::i;:::-;4071:6;4051:5;:27::i;:::-;3950:136;:::o;2322:25::-;;;;:::o;1968:28::-;;;;;;;;;;;;;:::o;9532:229::-;9612:1;9588:21;:25;9580:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9675:15;;;;;;;;;;;9659:31;;:12;:10;:12::i;:::-;:31;;;9651:40;;;;;;9710:10;9702:28;;:51;9731:21;9702:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9532:229::o;1834:52::-;;;:::o;10065:167::-;10163:15;;;;;;;;;;;10147:31;;:12;:10;:12::i;:::-;:31;;;10139:40;;;;;;10208:16;10190:15;;:34;;;;;;;;;;;;;;;;;;10065:167;:::o;2360:31::-;;;;;;;;;;;;;:::o;1224:127:1:-;1298:7;1325:9;:18;1335:7;1325:18;;;;;;;;;;;;;;;;1318:25;;1224:127;;;:::o;634:103:5:-;358:13;:11;:13::i;:::-;699:30:::1;726:1;699:18;:30::i;:::-;634:103::o:0;4212:310:4:-;4310:15;;;;;;;;;;;4294:31;;:12;:10;:12::i;:::-;:31;;;4286:40;;;;;;4343:9;4338:177;4362:8;:15;4358:1;:19;4338:177;;;4441:8;4399:26;:39;4426:8;4435:1;4426:11;;;;;;;;:::i;:::-;;;;;;;;4399:39;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;4481:8;4490:1;4481:11;;;;;;;;:::i;:::-;;;;;;;;4469:34;;;4494:8;4469:34;;;;;;:::i;:::-;;;;;;;;4379:3;;;;;:::i;:::-;;;;4338:177;;;;4212:310;;:::o;4801:149::-;358:13:5;:11;:13::i;:::-;4938:4:4::1;4896:31;:39;4928:6;4896:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;4801:149:::0;;:::o;399:87:5:-;445:7;472:6;;;;;;;;;;;465:13;;399:87;:::o;896:104:1:-;952:13;985:7;978:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;896:104;:::o;4958:247:4:-;358:13:5;:11;:13::i;:::-;5070::4::1;;;;;;;;;;;5062:21;;:4;:21;;::::0;5054:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5156:41;5185:4;5191:5;5156:28;:41::i;:::-;4958:247:::0;;:::o;2443:436:1:-;2536:4;2553:13;2569:12;:10;:12::i;:::-;2553:28;;2592:24;2619:25;2629:5;2636:7;2619:9;:25::i;:::-;2592:52;;2683:15;2663:16;:35;;2655:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;2776:60;2785:5;2792:7;2820:15;2801:16;:34;2776:8;:60::i;:::-;2867:4;2860:11;;;;2443:436;;;;:::o;1359:193::-;1438:4;1455:13;1471:12;:10;:12::i;:::-;1455:28;;1494;1504:5;1511:2;1515:6;1494:9;:28::i;:::-;1540:4;1533:11;;;1359:193;;;;:::o;9881:176:4:-;9973:15;;;;;;;;;;;9957:31;;:12;:10;:12::i;:::-;:31;;;9949:40;;;;;;10038:10;:8;:10::i;:::-;10032:2;:16;;;;:::i;:::-;10021:7;:28;;;;:::i;:::-;10000:18;:49;;;;9881:176;:::o;10240:268::-;10321:15;;;;;;;;;;;10305:31;;:12;:10;:12::i;:::-;:31;;;10297:40;;;;;;10348:23;10374:24;10392:4;10374:9;:24::i;:::-;10348:50;;10409:18;10458:3;10448:7;10430:15;:25;;;;:::i;:::-;:31;;;;:::i;:::-;10409:52;;10472:28;10489:10;10472:16;:28::i;:::-;10286:222;;10240:268;:::o;10923:226::-;358:13:5;:11;:13::i;:::-;11001:5:4::1;10985:13;;:21;;;;;;;;;;;;;;;;;;11017:55;11051:13;;;;;;;;;;;11067:4;11017:25;:55::i;:::-;11083:58;11120:13;;;;;;;;;;;11136:4;11083:28;:58::i;:::-;10923:226:::0;:::o;4530:125::-;4588:4;4612:26;:35;4639:7;4612:35;;;;;;;;;;;;;;;;;;;;;;;;;4605:42;;4530:125;;;:::o;9001:227::-;358:13:5;:11;:13::i;:::-;9155:10:4::1;:8;:10::i;:::-;9149:2;:16;;;;:::i;:::-;9124:21;:42;;;;:::i;:::-;9101:20;:65;;;;9209:10;:8;:10::i;:::-;9203:2;:16;;;;:::i;:::-;9189:10;:31;;;;:::i;:::-;9177:9;:43;;;;9001:227:::0;;:::o;2245:35::-;;;;:::o;4096:108::-;358:13:5;:11;:13::i;:::-;4163:4:4::1;4149:11;;:18;;;;;;;;;;;;;;;;;;4192:4;4178:11;;:18;;;;;;;;;;;;;;;;;;4096:108::o:0;1560:151:1:-;1649:7;1676:11;:18;1688:5;1676:18;;;;;;;;;;;;;;;:27;1695:7;1676:27;;;;;;;;;;;;;;;;1669:34;;1560:151;;;;:::o;9236:288:4:-;9322:15;;;;;;;;;;;9306:31;;:12;:10;:12::i;:::-;:31;;;9298:40;;;;;;9401:1;9364:8;9357:26;;;9392:4;9357:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;9349:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9443:8;9436:25;;;9462:10;9481:8;9474:26;;;9509:4;9474:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9436:80;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9236:288;:::o;2174:33::-;;;;:::o;745:201:5:-;358:13;:11;:13::i;:::-;854:1:::1;834:22;;:8;:22;;::::0;826:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;910:28;929:8;910:18;:28::i;:::-;745:201:::0;:::o;2214:24:4:-;;;;:::o;2398:31::-;;;;;;;;;;;;;:::o;92:98:0:-;145:7;172:10;165:17;;92:98;:::o;4480:346:1:-;4599:1;4582:19;;:5;:19;;;4574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4680:1;4661:21;;:7;:21;;;4653:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4764:6;4734:11;:18;4746:5;4734:18;;;;;;;;;;;;;;;:27;4753:7;4734:27;;;;;;;;;;;;;;;:36;;;;4802:7;4786:32;;4795:5;4786:32;;;4811:6;4786:32;;;;;;:::i;:::-;;;;;;;;4480:346;;;:::o;4834:419::-;4935:24;4962:25;4972:5;4979:7;4962:9;:25::i;:::-;4935:52;;5022:17;5002:16;:37;4998:248;;5084:6;5064:16;:26;;5056:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5168:51;5177:5;5184:7;5212:6;5193:16;:25;5168:8;:51::i;:::-;4998:248;4924:329;4834:419;;;:::o;5213:3024:4:-;5325:1;5311:16;;:2;:16;;;5303:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;5402:1;5386:18;;:4;:18;;;5378:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5473:1;5463:6;:11;5459:93;;5491:28;5507:4;5513:2;5517:1;5491:15;:28::i;:::-;5534:7;;5459:93;5574:7;:5;:7::i;:::-;5566:15;;:4;:15;;;;:32;;;;;5591:7;:5;:7::i;:::-;5585:13;;:2;:13;;;;5566:32;:52;;;;;5616:1;5602:16;;:2;:16;;;;5566:52;:77;;;;;5636:6;5622:21;;:2;:21;;;;5566:77;:90;;;;;5648:8;;;;;;;;;;;5647:9;5566:90;5562:1304;;;5778:11;;;;;;;;;;;5773:154;;5818:26;:32;5845:4;5818:32;;;;;;;;;;;;;;;;;;;;;;;;;:66;;;;5854:26;:30;5881:2;5854:30;;;;;;;;;;;;;;;;;;;;;;;;;5818:66;5810:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;5773:154;5998:25;:31;6024:4;5998:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;6034:31;:35;6066:2;6034:35;;;;;;;;;;;;;;;;;;;;;;;;;6033:36;5998:71;5994:861;;;6108:20;;6098:6;:30;;6090:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;6239:9;;6222:13;6232:2;6222:9;:13::i;:::-;6213:6;:22;;;;:::i;:::-;:35;;6205:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5994:861;;;6429:25;:29;6455:2;6429:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;6463:31;:37;6495:4;6463:37;;;;;;;;;;;;;;;;;;;;;;;;;6462:38;6429:71;6425:430;;;6539:20;;6529:6;:30;;6521:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;6425:430;;;6716:31;:35;6748:2;6716:35;;;;;;;;;;;;;;;;;;;;;;;;;6711:144;;6806:9;;6789:13;6799:2;6789:9;:13::i;:::-;6780:6;:22;;;;:::i;:::-;:35;;6772:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6711:144;6425:430;5994:861;5562:1304;6907:12;6876:22;:28;6899:4;6876:28;;;;;;;;;;;;;;;:43;;;;6977:28;7008:24;7026:4;7008:9;:24::i;:::-;6977:55;;7043:12;7081:18;;7058:20;:41;7043:56;;7114:7;:22;;;;;7125:11;;;;;;;;;;;7114:22;:35;;;;;7141:8;;;;;;;;;;;7140:9;7114:35;:71;;;;;7154:25;:31;7180:4;7154:31;;;;;;;;;;;;;;;;;;;;;;;;;7153:32;7114:71;:108;;;;;7190:26;:32;7217:4;7190:32;;;;;;;;;;;;;;;;;;;;;;;;;7189:33;7114:108;:143;;;;;7227:26;:30;7254:2;7227:30;;;;;;;;;;;;;;;;;;;;;;;;;7226:31;7114:143;7110:314;;;7285:4;7274:8;;:15;;;;;;;;;;;;;;;;;;7304:10;:8;:10::i;:::-;7340:5;7329:8;;:16;;;;;;;;;;;;;;;;;;7110:314;;;7386:16;7397:4;7386:10;:16::i;:::-;7383:40;;;7404:17;7416:4;7404:11;:17::i;:::-;7383:40;7110:314;7528:12;7544:8;;;;;;;;;;;7543:9;:45;;;;;7556:26;:32;7583:4;7556:32;;;;;;;;;;;;;;;;;;;;;;;;;7543:45;:80;;;;;7593:26;:30;7620:2;7593:30;;;;;;;;;;;;;;;;;;;;;;;;;7592:31;7543:80;7528:95;;7634:12;7665:7;7661:515;;;7738:25;:29;7764:2;7738:29;;;;;;;;;;;;;;;;;;;;;;;;;7734:279;;;7795:28;7819:3;7795:19;7806:7;;7795:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;7788:35;;7734:279;;;7911:25;:31;7937:4;7911:31;;;;;;;;;;;;;;;;;;;;;;;;;7908:105;;;7970:27;7993:3;7970:18;7981:6;;7970;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;7963:34;;7908:105;7734:279;8042:1;8035:4;:8;8031:91;;;8064:42;8080:4;8094;8101;8064:15;:42::i;:::-;8031:91;8146:4;8136:14;;;;;:::i;:::-;;;7661:515;8196:33;8212:4;8218:2;8222:6;8196:15;:33::i;:::-;5292:2945;;;;5213:3024;;;;:::o;3979:493:1:-;4082:1;4063:21;;:7;:21;;;4055:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4139:22;4164:9;:18;4174:7;4164:18;;;;;;;;;;;;;;;;4139:43;;4219:6;4201:14;:24;;4193:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4313:6;4302:8;;:17;;;;:::i;:::-;4281:9;:18;4291:7;4281:18;;;;;;;;;;;;;;;:38;;;;4346:6;4330:12;;:22;;;;;;;:::i;:::-;;;;;;;;4394:1;4368:37;;4377:7;4368:37;;;4398:6;4368:37;;;;;;:::i;:::-;;;;;;;;4416:48;4436:7;4453:1;4457:6;4416:19;:48::i;:::-;4044:428;3979:493;;:::o;494:132:5:-;569:12;:10;:12::i;:::-;558:23;;:7;:5;:7::i;:::-;:23;;;550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;494:132::o;954:191::-;1028:16;1047:6;;;;;;;;;;;1028:25;;1073:8;1064:6;;:17;;;;;;;;;;;;;;;;;;1128:8;1097:40;;1118:8;1097:40;;;;;;;;;;;;1017:128;954:191;:::o;4663:130:4:-;4780:5;4746:25;:31;4772:4;4746:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;4663:130;;:::o;8245:476::-;8311:21;8349:1;8335:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8311:40;;8380:4;8362;8367:1;8362:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;8406:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8396:4;8401:1;8396:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;8440:63;8457:4;8472:16;8491:11;8440:8;:63::i;:::-;8514:16;:67;;;8596:11;8622:1;8638:4;8657:15;;;;;;;;;;;8687;8514:199;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8300:421;8245:476;:::o;2887:641:1:-;3000:1;2984:18;;:4;:18;;;2976:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3077:1;3063:16;;:2;:16;;;3055:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;3132:38;3153:4;3159:2;3163:6;3132:20;:38::i;:::-;3183:19;3205:9;:15;3215:4;3205:15;;;;;;;;;;;;;;;;3183:37;;3254:6;3239:11;:21;;3231:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;3371:6;3357:11;:20;3339:9;:15;3349:4;3339:15;;;;;;;;;;;;;;;:38;;;;3409:6;3392:9;:13;3402:2;3392:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;3459:2;3444:26;;3453:4;3444:26;;;3463:6;3444:26;;;;;;:::i;:::-;;;;;;;;3483:37;3503:4;3509:2;3513:6;3483:19;:37::i;:::-;2965:563;2887:641;;;:::o;10516:399:4:-;10555:23;10581:24;10599:4;10581:9;:24::i;:::-;10555:50;;10639:1;10620:15;:20;10616:91;;10689:7;;;10616:91;10719:20;10742:15;10719:38;;10787:18;;10772:12;:33;10768:99;;;10837:18;;10822:33;;10768:99;10877:30;10894:12;10877:16;:30::i;:::-;10544:371;;10516:399;:::o;11157:159::-;11226:41;11236:22;:30;11259:6;11236:30;;;;;;;;;;;;;;;;11226:9;:41::i;:::-;11218:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;11157:159;:::o;1413:98:6:-;1471:7;1502:1;1498;:5;;;;:::i;:::-;1491:12;;1413:98;;;;:::o;1519:::-;1577:7;1608:1;1604;:5;;;;:::i;:::-;1597:12;;1519:98;;;;:::o;5360:90:1:-;;;;:::o;5261:91::-;;;;:::o;9769:104:4:-;9823:4;9853:12;9846:4;:19;9839:26;;9769:104;;;:::o;7:99:8:-;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;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::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:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:117::-;4532:1;4529;4522:12;4546:117;4655:1;4652;4645:12;4669:117;4778:1;4775;4768:12;4809:568;4882:8;4892:6;4942:3;4935:4;4927:6;4923:17;4919:27;4909:122;;4950:79;;:::i;:::-;4909:122;5063:6;5050:20;5040:30;;5093:18;5085:6;5082:30;5079:117;;;5115:79;;:::i;:::-;5079:117;5229:4;5221:6;5217:17;5205:29;;5283:3;5275:4;5267:6;5263:17;5253:8;5249:32;5246:41;5243:128;;;5290:79;;:::i;:::-;5243:128;4809:568;;;;;:::o;5383:704::-;5478:6;5486;5494;5543:2;5531:9;5522:7;5518:23;5514:32;5511:119;;;5549:79;;:::i;:::-;5511:119;5697:1;5686:9;5682:17;5669:31;5727:18;5719:6;5716:30;5713:117;;;5749:79;;:::i;:::-;5713:117;5862:80;5934:7;5925:6;5914:9;5910:22;5862:80;:::i;:::-;5844:98;;;;5640:312;5991:2;6017:53;6062:7;6053:6;6042:9;6038:22;6017:53;:::i;:::-;6007:63;;5962:118;5383:704;;;;;:::o;6093:86::-;6128:7;6168:4;6161:5;6157:16;6146:27;;6093:86;;;:::o;6185:112::-;6268:22;6284:5;6268:22;:::i;:::-;6263:3;6256:35;6185:112;;:::o;6303:214::-;6392:4;6430:2;6419:9;6415:18;6407:26;;6443:67;6507:1;6496:9;6492:17;6483:6;6443:67;:::i;:::-;6303:214;;;;:::o;6523:329::-;6582:6;6631:2;6619:9;6610:7;6606:23;6602:32;6599:119;;;6637:79;;:::i;:::-;6599:119;6757:1;6782:53;6827:7;6818:6;6807:9;6803:22;6782:53;:::i;:::-;6772:63;;6728:117;6523:329;;;;:::o;6858:118::-;6945:24;6963:5;6945:24;:::i;:::-;6940:3;6933:37;6858:118;;:::o;6982:222::-;7075:4;7113:2;7102:9;7098:18;7090:26;;7126:71;7194:1;7183:9;7179:17;7170:6;7126:71;:::i;:::-;6982:222;;;;:::o;7210:60::-;7238:3;7259:5;7252:12;;7210:60;;;:::o;7276:142::-;7326:9;7359:53;7377:34;7386:24;7404:5;7386:24;:::i;:::-;7377:34;:::i;:::-;7359:53;:::i;:::-;7346:66;;7276:142;;;:::o;7424:126::-;7474:9;7507:37;7538:5;7507:37;:::i;:::-;7494:50;;7424:126;;;:::o;7556:153::-;7633:9;7666:37;7697:5;7666:37;:::i;:::-;7653:50;;7556:153;;;:::o;7715:185::-;7829:64;7887:5;7829:64;:::i;:::-;7824:3;7817:77;7715:185;;:::o;7906:276::-;8026:4;8064:2;8053:9;8049:18;8041:26;;8077:98;8172:1;8161:9;8157:17;8148:6;8077:98;:::i;:::-;7906:276;;;;:::o;8188:329::-;8247:6;8296:2;8284:9;8275:7;8271:23;8267:32;8264:119;;;8302:79;;:::i;:::-;8264:119;8422:1;8447:53;8492:7;8483:6;8472:9;8468:22;8447:53;:::i;:::-;8437:63;;8393:117;8188:329;;;;:::o;8523:180::-;8571:77;8568:1;8561:88;8668:4;8665:1;8658:15;8692:4;8689:1;8682:15;8709:281;8792:27;8814:4;8792:27;:::i;:::-;8784:6;8780:40;8922:6;8910:10;8907:22;8886:18;8874:10;8871:34;8868:62;8865:88;;;8933:18;;:::i;:::-;8865:88;8973:10;8969:2;8962:22;8752:238;8709:281;;:::o;8996:129::-;9030:6;9057:20;;:::i;:::-;9047:30;;9086:33;9114:4;9106:6;9086:33;:::i;:::-;8996:129;;;:::o;9131:311::-;9208:4;9298:18;9290:6;9287:30;9284:56;;;9320:18;;:::i;:::-;9284:56;9370:4;9362:6;9358:17;9350:25;;9430:4;9424;9420:15;9412:23;;9131:311;;;:::o;9465:710::-;9561:5;9586:81;9602:64;9659:6;9602:64;:::i;:::-;9586:81;:::i;:::-;9577:90;;9687:5;9716:6;9709:5;9702:21;9750:4;9743:5;9739:16;9732:23;;9803:4;9795:6;9791:17;9783:6;9779:30;9832:3;9824:6;9821:15;9818:122;;;9851:79;;:::i;:::-;9818:122;9966:6;9949:220;9983:6;9978:3;9975:15;9949:220;;;10058:3;10087:37;10120:3;10108:10;10087:37;:::i;:::-;10082:3;10075:50;10154:4;10149:3;10145:14;10138:21;;10025:144;10009:4;10004:3;10000:14;9993:21;;9949:220;;;9953:21;9567:608;;9465:710;;;;;:::o;10198:370::-;10269:5;10318:3;10311:4;10303:6;10299:17;10295:27;10285:122;;10326:79;;:::i;:::-;10285:122;10443:6;10430:20;10468:94;10558:3;10550:6;10543:4;10535:6;10531:17;10468:94;:::i;:::-;10459:103;;10275:293;10198:370;;;;:::o;10574:116::-;10644:21;10659:5;10644:21;:::i;:::-;10637:5;10634:32;10624:60;;10680:1;10677;10670:12;10624:60;10574:116;:::o;10696:133::-;10739:5;10777:6;10764:20;10755:29;;10793:30;10817:5;10793:30;:::i;:::-;10696:133;;;;:::o;10835:678::-;10925:6;10933;10982:2;10970:9;10961:7;10957:23;10953:32;10950:119;;;10988:79;;:::i;:::-;10950:119;11136:1;11125:9;11121:17;11108:31;11166:18;11158:6;11155:30;11152:117;;;11188:79;;:::i;:::-;11152:117;11293:78;11363:7;11354:6;11343:9;11339:22;11293:78;:::i;:::-;11283:88;;11079:302;11420:2;11446:50;11488:7;11479:6;11468:9;11464:22;11446:50;:::i;:::-;11436:60;;11391:115;10835:678;;;;;:::o;11519:468::-;11584:6;11592;11641:2;11629:9;11620:7;11616:23;11612:32;11609:119;;;11647:79;;:::i;:::-;11609:119;11767:1;11792:53;11837:7;11828:6;11817:9;11813:22;11792:53;:::i;:::-;11782:63;;11738:117;11894:2;11920:50;11962:7;11953:6;11942:9;11938:22;11920:50;:::i;:::-;11910:60;;11865:115;11519:468;;;;;:::o;11993:474::-;12061:6;12069;12118:2;12106:9;12097:7;12093:23;12089:32;12086:119;;;12124:79;;:::i;:::-;12086:119;12244:1;12269:53;12314:7;12305:6;12294:9;12290:22;12269:53;:::i;:::-;12259:63;;12215:117;12371:2;12397:53;12442:7;12433:6;12422:9;12418:22;12397:53;:::i;:::-;12387:63;;12342:118;11993:474;;;;;:::o;12473:::-;12541:6;12549;12598:2;12586:9;12577:7;12573:23;12569:32;12566:119;;;12604:79;;:::i;:::-;12566:119;12724:1;12749:53;12794:7;12785:6;12774:9;12770:22;12749:53;:::i;:::-;12739:63;;12695:117;12851:2;12877:53;12922:7;12913:6;12902:9;12898:22;12877:53;:::i;:::-;12867:63;;12822:118;12473:474;;;;;:::o;12953:180::-;13001:77;12998:1;12991:88;13098:4;13095:1;13088:15;13122:4;13119:1;13112:15;13139:320;13183:6;13220:1;13214:4;13210:12;13200:22;;13267:1;13261:4;13257:12;13288:18;13278:81;;13344:4;13336:6;13332:17;13322:27;;13278:81;13406:2;13398:6;13395:14;13375:18;13372:38;13369:84;;13425:18;;:::i;:::-;13369:84;13190:269;13139:320;;;:::o;13465:180::-;13513:77;13510:1;13503:88;13610:4;13607:1;13600:15;13634:4;13631:1;13624:15;13651:180;13699:77;13696:1;13689:88;13796:4;13793:1;13786:15;13820:4;13817:1;13810:15;13837:233;13876:3;13899:24;13917:5;13899:24;:::i;:::-;13890:33;;13945:66;13938:5;13935:77;13932:103;;14015:18;;:::i;:::-;13932:103;14062:1;14055:5;14051:13;14044:20;;13837:233;;;:::o;14076:191::-;14116:3;14135:20;14153:1;14135:20;:::i;:::-;14130:25;;14169:20;14187:1;14169:20;:::i;:::-;14164:25;;14212:1;14209;14205:9;14198:16;;14233:3;14230:1;14227:10;14224:36;;;14240:18;;:::i;:::-;14224:36;14076:191;;;;:::o;14273:172::-;14413:24;14409:1;14401:6;14397:14;14390:48;14273:172;:::o;14451:366::-;14593:3;14614:67;14678:2;14673:3;14614:67;:::i;:::-;14607:74;;14690:93;14779:3;14690:93;:::i;:::-;14808:2;14803:3;14799:12;14792:19;;14451:366;;;:::o;14823:419::-;14989:4;15027:2;15016:9;15012:18;15004:26;;15076:9;15070:4;15066:20;15062:1;15051:9;15047:17;15040:47;15104:131;15230:4;15104:131;:::i;:::-;15096:139;;14823:419;;;:::o;15248:244::-;15388:34;15384:1;15376:6;15372:14;15365:58;15457:27;15452:2;15444:6;15440:15;15433:52;15248:244;:::o;15498:366::-;15640:3;15661:67;15725:2;15720:3;15661:67;:::i;:::-;15654:74;;15737:93;15826:3;15737:93;:::i;:::-;15855:2;15850:3;15846:12;15839:19;;15498:366;;;:::o;15870:419::-;16036:4;16074:2;16063:9;16059:18;16051:26;;16123:9;16117:4;16113:20;16109:1;16098:9;16094:17;16087:47;16151:131;16277:4;16151:131;:::i;:::-;16143:139;;15870:419;;;:::o;16295:224::-;16435:34;16431:1;16423:6;16419:14;16412:58;16504:7;16499:2;16491:6;16487:15;16480:32;16295:224;:::o;16525:366::-;16667:3;16688:67;16752:2;16747:3;16688:67;:::i;:::-;16681:74;;16764:93;16853:3;16764:93;:::i;:::-;16882:2;16877:3;16873:12;16866:19;;16525:366;;;:::o;16897:419::-;17063:4;17101:2;17090:9;17086:18;17078:26;;17150:9;17144:4;17140:20;17136:1;17125:9;17121:17;17114:47;17178:131;17304:4;17178:131;:::i;:::-;17170:139;;16897:419;;;:::o;17322:102::-;17364:8;17411:5;17408:1;17404:13;17383:34;;17322:102;;;:::o;17430:848::-;17491:5;17498:4;17522:6;17513:15;;17546:5;17537:14;;17560:712;17581:1;17571:8;17568:15;17560:712;;;17676:4;17671:3;17667:14;17661:4;17658:24;17655:50;;;17685:18;;:::i;:::-;17655:50;17735:1;17725:8;17721:16;17718:451;;;18150:4;18143:5;18139:16;18130:25;;17718:451;18200:4;18194;18190:15;18182:23;;18230:32;18253:8;18230:32;:::i;:::-;18218:44;;17560:712;;;17430:848;;;;;;;:::o;18284:1073::-;18338:5;18529:8;18519:40;;18550:1;18541:10;;18552:5;;18519:40;18578:4;18568:36;;18595:1;18586:10;;18597:5;;18568:36;18664:4;18712:1;18707:27;;;;18748:1;18743:191;;;;18657:277;;18707:27;18725:1;18716:10;;18727:5;;;18743:191;18788:3;18778:8;18775:17;18772:43;;;18795:18;;:::i;:::-;18772:43;18844:8;18841:1;18837:16;18828:25;;18879:3;18872:5;18869:14;18866:40;;;18886:18;;:::i;:::-;18866:40;18919:5;;;18657:277;;19043:2;19033:8;19030:16;19024:3;19018:4;19015:13;19011:36;18993:2;18983:8;18980:16;18975:2;18969:4;18966:12;18962:35;18946:111;18943:246;;;19099:8;19093:4;19089:19;19080:28;;19134:3;19127:5;19124:14;19121:40;;;19141:18;;:::i;:::-;19121:40;19174:5;;18943:246;19214:42;19252:3;19242:8;19236:4;19233:1;19214:42;:::i;:::-;19199:57;;;;19288:4;19283:3;19279:14;19272:5;19269:25;19266:51;;;19297:18;;:::i;:::-;19266:51;19346:4;19339:5;19335:16;19326:25;;18284:1073;;;;;;:::o;19363:281::-;19421:5;19445:23;19463:4;19445:23;:::i;:::-;19437:31;;19489:25;19505:8;19489:25;:::i;:::-;19477:37;;19533:104;19570:66;19560:8;19554:4;19533:104;:::i;:::-;19524:113;;19363:281;;;;:::o;19650:410::-;19690:7;19713:20;19731:1;19713:20;:::i;:::-;19708:25;;19747:20;19765:1;19747:20;:::i;:::-;19742:25;;19802:1;19799;19795:9;19824:30;19842:11;19824:30;:::i;:::-;19813:41;;20003:1;19994:7;19990:15;19987:1;19984:22;19964:1;19957:9;19937:83;19914:139;;20033:18;;:::i;:::-;19914:139;19698:362;19650:410;;;;:::o;20066:180::-;20114:77;20111:1;20104:88;20211:4;20208:1;20201:15;20235:4;20232:1;20225:15;20252:185;20292:1;20309:20;20327:1;20309:20;:::i;:::-;20304:25;;20343:20;20361:1;20343:20;:::i;:::-;20338:25;;20382:1;20372:35;;20387:18;;:::i;:::-;20372:35;20429:1;20426;20422:9;20417:14;;20252:185;;;;:::o;20443:143::-;20500:5;20531:6;20525:13;20516:22;;20547:33;20574:5;20547:33;:::i;:::-;20443:143;;;;:::o;20592:351::-;20662:6;20711:2;20699:9;20690:7;20686:23;20682:32;20679:119;;;20717:79;;:::i;:::-;20679:119;20837:1;20862:64;20918:7;20909:6;20898:9;20894:22;20862:64;:::i;:::-;20852:74;;20808:128;20592:351;;;;:::o;20949:166::-;21089:18;21085:1;21077:6;21073:14;21066:42;20949:166;:::o;21121:366::-;21263:3;21284:67;21348:2;21343:3;21284:67;:::i;:::-;21277:74;;21360:93;21449:3;21360:93;:::i;:::-;21478:2;21473:3;21469:12;21462:19;;21121:366;;;:::o;21493:419::-;21659:4;21697:2;21686:9;21682:18;21674:26;;21746:9;21740:4;21736:20;21732:1;21721:9;21717:17;21710:47;21774:131;21900:4;21774:131;:::i;:::-;21766:139;;21493:419;;;:::o;21918:332::-;22039:4;22077:2;22066:9;22062:18;22054:26;;22090:71;22158:1;22147:9;22143:17;22134:6;22090:71;:::i;:::-;22171:72;22239:2;22228:9;22224:18;22215:6;22171:72;:::i;:::-;21918:332;;;;;:::o;22256:137::-;22310:5;22341:6;22335:13;22326:22;;22357:30;22381:5;22357:30;:::i;:::-;22256:137;;;;:::o;22399:345::-;22466:6;22515:2;22503:9;22494:7;22490:23;22486:32;22483:119;;;22521:79;;:::i;:::-;22483:119;22641:1;22666:61;22719:7;22710:6;22699:9;22695:22;22666:61;:::i;:::-;22656:71;;22612:125;22399:345;;;;:::o;22750:225::-;22890:34;22886:1;22878:6;22874:14;22867:58;22959:8;22954:2;22946:6;22942:15;22935:33;22750:225;:::o;22981:366::-;23123:3;23144:67;23208:2;23203:3;23144:67;:::i;:::-;23137:74;;23220:93;23309:3;23220:93;:::i;:::-;23338:2;23333:3;23329:12;23322:19;;22981:366;;;:::o;23353:419::-;23519:4;23557:2;23546:9;23542:18;23534:26;;23606:9;23600:4;23596:20;23592:1;23581:9;23577:17;23570:47;23634:131;23760:4;23634:131;:::i;:::-;23626:139;;23353:419;;;:::o;23778:223::-;23918:34;23914:1;23906:6;23902:14;23895:58;23987:6;23982:2;23974:6;23970:15;23963:31;23778:223;:::o;24007:366::-;24149:3;24170:67;24234:2;24229:3;24170:67;:::i;:::-;24163:74;;24246:93;24335:3;24246:93;:::i;:::-;24364:2;24359:3;24355:12;24348:19;;24007:366;;;:::o;24379:419::-;24545:4;24583:2;24572:9;24568:18;24560:26;;24632:9;24626:4;24622:20;24618:1;24607:9;24603:17;24596:47;24660:131;24786:4;24660:131;:::i;:::-;24652:139;;24379:419;;;:::o;24804:221::-;24944:34;24940:1;24932:6;24928:14;24921:58;25013:4;25008:2;25000:6;24996:15;24989:29;24804:221;:::o;25031:366::-;25173:3;25194:67;25258:2;25253:3;25194:67;:::i;:::-;25187:74;;25270:93;25359:3;25270:93;:::i;:::-;25388:2;25383:3;25379:12;25372:19;;25031:366;;;:::o;25403:419::-;25569:4;25607:2;25596:9;25592:18;25584:26;;25656:9;25650:4;25646:20;25642:1;25631:9;25627:17;25620:47;25684:131;25810:4;25684:131;:::i;:::-;25676:139;;25403:419;;;:::o;25828:179::-;25968:31;25964:1;25956:6;25952:14;25945:55;25828:179;:::o;26013:366::-;26155:3;26176:67;26240:2;26235:3;26176:67;:::i;:::-;26169:74;;26252:93;26341:3;26252:93;:::i;:::-;26370:2;26365:3;26361:12;26354:19;;26013:366;;;:::o;26385:419::-;26551:4;26589:2;26578:9;26574:18;26566:26;;26638:9;26632:4;26628:20;26624:1;26613:9;26609:17;26602:47;26666:131;26792:4;26666:131;:::i;:::-;26658:139;;26385:419;;;:::o;26810:222::-;26950:34;26946:1;26938:6;26934:14;26927:58;27019:5;27014:2;27006:6;27002:15;26995:30;26810:222;:::o;27038:366::-;27180:3;27201:67;27265:2;27260:3;27201:67;:::i;:::-;27194:74;;27277:93;27366:3;27277:93;:::i;:::-;27395:2;27390:3;27386:12;27379:19;;27038:366;;;:::o;27410:419::-;27576:4;27614:2;27603:9;27599:18;27591:26;;27663:9;27657:4;27653:20;27649:1;27638:9;27634:17;27627:47;27691:131;27817:4;27691:131;:::i;:::-;27683:139;;27410:419;;;:::o;27835:224::-;27975:34;27971:1;27963:6;27959:14;27952:58;28044:7;28039:2;28031:6;28027:15;28020:32;27835:224;:::o;28065:366::-;28207:3;28228:67;28292:2;28287:3;28228:67;:::i;:::-;28221:74;;28304:93;28393:3;28304:93;:::i;:::-;28422:2;28417:3;28413:12;28406:19;;28065:366;;;:::o;28437:419::-;28603:4;28641:2;28630:9;28626:18;28618:26;;28690:9;28684:4;28680:20;28676:1;28665:9;28661:17;28654:47;28718:131;28844:4;28718:131;:::i;:::-;28710:139;;28437:419;;;:::o;28862:172::-;29002:24;28998:1;28990:6;28986:14;28979:48;28862:172;:::o;29040:366::-;29182:3;29203:67;29267:2;29262:3;29203:67;:::i;:::-;29196:74;;29279:93;29368:3;29279:93;:::i;:::-;29397:2;29392:3;29388:12;29381:19;;29040:366;;;:::o;29412:419::-;29578:4;29616:2;29605:9;29601:18;29593:26;;29665:9;29659:4;29655:20;29651:1;29640:9;29636:17;29629:47;29693:131;29819:4;29693:131;:::i;:::-;29685:139;;29412:419;;;:::o;29837:240::-;29977:34;29973:1;29965:6;29961:14;29954:58;30046:23;30041:2;30033:6;30029:15;30022:48;29837:240;:::o;30083:366::-;30225:3;30246:67;30310:2;30305:3;30246:67;:::i;:::-;30239:74;;30322:93;30411:3;30322:93;:::i;:::-;30440:2;30435:3;30431:12;30424:19;;30083:366;;;:::o;30455:419::-;30621:4;30659:2;30648:9;30644:18;30636:26;;30708:9;30702:4;30698:20;30694:1;30683:9;30679:17;30672:47;30736:131;30862:4;30736:131;:::i;:::-;30728:139;;30455:419;;;:::o;30880:169::-;31020:21;31016:1;31008:6;31004:14;30997:45;30880:169;:::o;31055:366::-;31197:3;31218:67;31282:2;31277:3;31218:67;:::i;:::-;31211:74;;31294:93;31383:3;31294:93;:::i;:::-;31412:2;31407:3;31403:12;31396:19;;31055:366;;;:::o;31427:419::-;31593:4;31631:2;31620:9;31616:18;31608:26;;31680:9;31674:4;31670:20;31666:1;31655:9;31651:17;31644:47;31708:131;31834:4;31708:131;:::i;:::-;31700:139;;31427:419;;;:::o;31852:241::-;31992:34;31988:1;31980:6;31976:14;31969:58;32061:24;32056:2;32048:6;32044:15;32037:49;31852:241;:::o;32099:366::-;32241:3;32262:67;32326:2;32321:3;32262:67;:::i;:::-;32255:74;;32338:93;32427:3;32338:93;:::i;:::-;32456:2;32451:3;32447:12;32440:19;;32099:366;;;:::o;32471:419::-;32637:4;32675:2;32664:9;32660:18;32652:26;;32724:9;32718:4;32714:20;32710:1;32699:9;32695:17;32688:47;32752:131;32878:4;32752:131;:::i;:::-;32744:139;;32471:419;;;:::o;32896:194::-;32936:4;32956:20;32974:1;32956:20;:::i;:::-;32951:25;;32990:20;33008:1;32990:20;:::i;:::-;32985:25;;33034:1;33031;33027:9;33019:17;;33058:1;33052:4;33049:11;33046:37;;;33063:18;;:::i;:::-;33046:37;32896:194;;;;:::o;33096:220::-;33236:34;33232:1;33224:6;33220:14;33213:58;33305:3;33300:2;33292:6;33288:15;33281:28;33096:220;:::o;33322:366::-;33464:3;33485:67;33549:2;33544:3;33485:67;:::i;:::-;33478:74;;33561:93;33650:3;33561:93;:::i;:::-;33679:2;33674:3;33670:12;33663:19;;33322:366;;;:::o;33694:419::-;33860:4;33898:2;33887:9;33883:18;33875:26;;33947:9;33941:4;33937:20;33933:1;33922:9;33918:17;33911:47;33975:131;34101:4;33975:131;:::i;:::-;33967:139;;33694:419;;;:::o;34119:221::-;34259:34;34255:1;34247:6;34243:14;34236:58;34328:4;34323:2;34315:6;34311:15;34304:29;34119:221;:::o;34346:366::-;34488:3;34509:67;34573:2;34568:3;34509:67;:::i;:::-;34502:74;;34585:93;34674:3;34585:93;:::i;:::-;34703:2;34698:3;34694:12;34687:19;;34346:366;;;:::o;34718:419::-;34884:4;34922:2;34911:9;34907:18;34899:26;;34971:9;34965:4;34961:20;34957:1;34946:9;34942:17;34935:47;34999:131;35125:4;34999:131;:::i;:::-;34991:139;;34718:419;;;:::o;35143:182::-;35283:34;35279:1;35271:6;35267:14;35260:58;35143:182;:::o;35331:366::-;35473:3;35494:67;35558:2;35553:3;35494:67;:::i;:::-;35487:74;;35570:93;35659:3;35570:93;:::i;:::-;35688:2;35683:3;35679:12;35672:19;;35331:366;;;:::o;35703:419::-;35869:4;35907:2;35896:9;35892:18;35884:26;;35956:9;35950:4;35946:20;35942:1;35931:9;35927:17;35920:47;35984:131;36110:4;35984:131;:::i;:::-;35976:139;;35703:419;;;:::o;36128:143::-;36185:5;36216:6;36210:13;36201:22;;36232:33;36259:5;36232:33;:::i;:::-;36128:143;;;;:::o;36277:351::-;36347:6;36396:2;36384:9;36375:7;36371:23;36367:32;36364:119;;;36402:79;;:::i;:::-;36364:119;36522:1;36547:64;36603:7;36594:6;36583:9;36579:22;36547:64;:::i;:::-;36537:74;;36493:128;36277:351;;;;:::o;36634:85::-;36679:7;36708:5;36697:16;;36634:85;;;:::o;36725:158::-;36783:9;36816:61;36834:42;36843:32;36869:5;36843:32;:::i;:::-;36834:42;:::i;:::-;36816:61;:::i;:::-;36803:74;;36725:158;;;:::o;36889:147::-;36984:45;37023:5;36984:45;:::i;:::-;36979:3;36972:58;36889:147;;:::o;37042:114::-;37109:6;37143:5;37137:12;37127:22;;37042:114;;;:::o;37162:184::-;37261:11;37295:6;37290:3;37283:19;37335:4;37330:3;37326:14;37311:29;;37162:184;;;;:::o;37352:132::-;37419:4;37442:3;37434:11;;37472:4;37467:3;37463:14;37455:22;;37352:132;;;:::o;37490:108::-;37567:24;37585:5;37567:24;:::i;:::-;37562:3;37555:37;37490:108;;:::o;37604:179::-;37673:10;37694:46;37736:3;37728:6;37694:46;:::i;:::-;37772:4;37767:3;37763:14;37749:28;;37604:179;;;;:::o;37789:113::-;37859:4;37891;37886:3;37882:14;37874:22;;37789:113;;;:::o;37938:732::-;38057:3;38086:54;38134:5;38086:54;:::i;:::-;38156:86;38235:6;38230:3;38156:86;:::i;:::-;38149:93;;38266:56;38316:5;38266:56;:::i;:::-;38345:7;38376:1;38361:284;38386:6;38383:1;38380:13;38361:284;;;38462:6;38456:13;38489:63;38548:3;38533:13;38489:63;:::i;:::-;38482:70;;38575:60;38628:6;38575:60;:::i;:::-;38565:70;;38421:224;38408:1;38405;38401:9;38396:14;;38361:284;;;38365:14;38661:3;38654:10;;38062:608;;;37938:732;;;;:::o;38676:831::-;38939:4;38977:3;38966:9;38962:19;38954:27;;38991:71;39059:1;39048:9;39044:17;39035:6;38991:71;:::i;:::-;39072:80;39148:2;39137:9;39133:18;39124:6;39072:80;:::i;:::-;39199:9;39193:4;39189:20;39184:2;39173:9;39169:18;39162:48;39227:108;39330:4;39321:6;39227:108;:::i;:::-;39219:116;;39345:72;39413:2;39402:9;39398:18;39389:6;39345:72;:::i;:::-;39427:73;39495:3;39484:9;39480:19;39471:6;39427:73;:::i;:::-;38676:831;;;;;;;;:::o;39513:225::-;39653:34;39649:1;39641:6;39637:14;39630:58;39722:8;39717:2;39709:6;39705:15;39698:33;39513:225;:::o;39744:366::-;39886:3;39907:67;39971:2;39966:3;39907:67;:::i;:::-;39900:74;;39983:93;40072:3;39983:93;:::i;:::-;40101:2;40096:3;40092:12;40085:19;;39744:366;;;:::o;40116:419::-;40282:4;40320:2;40309:9;40305:18;40297:26;;40369:9;40363:4;40359:20;40355:1;40344:9;40340:17;40333:47;40397:131;40523:4;40397:131;:::i;:::-;40389:139;;40116:419;;;:::o;40541:223::-;40681:34;40677:1;40669:6;40665:14;40658:58;40750:6;40745:2;40737:6;40733:15;40726:31;40541:223;:::o;40770:366::-;40912:3;40933:67;40997:2;40992:3;40933:67;:::i;:::-;40926:74;;41009:93;41098:3;41009:93;:::i;:::-;41127:2;41122:3;41118:12;41111:19;;40770:366;;;:::o;41142:419::-;41308:4;41346:2;41335:9;41331:18;41323:26;;41395:9;41389:4;41385:20;41381:1;41370:9;41366:17;41359:47;41423:131;41549:4;41423:131;:::i;:::-;41415:139;;41142:419;;;:::o

Swarm Source

ipfs://fbe9c346afcc43c4957740c2ec9c34afeb87f250571ac6c17ab8b71c08f42888

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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