APE Price: $1.19 (-11.43%)

Token

HYPER APE (HYPE)

Overview

Max Total Supply

1,000,000,000 HYPE

Holders

13

Market

Price

$0.00 @ 0.000000 APE

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
312,550.554630846 HYPE

Value
$0.00
0x43b35e0109b6e3fa1bd908841d13d5ee4c8234f3
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
HYPERAPE

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at apescan.io on 2024-10-21
*/

//https://t.me/HYPERAPEOFFICIAL

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

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

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

    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data)
        internal
        view
        returns (bytes memory)
    {
        return
            functionStaticCall(
                target,
                data,
                "Address: low-level static call failed"
            );
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return
            functionDelegateCall(
                target,
                data,
                "Address: low-level delegate call failed"
            );
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

library EnumerableSet {
    struct Set {
        bytes32[] _values;
        mapping(bytes32 => uint256) _indexes;
    }

    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    function _remove(Set storage set, bytes32 value) private returns (bool) {
        uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) {
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;

            if (lastIndex != toDeleteIndex) {
                bytes32 lastvalue = set._values[lastIndex];

                set._values[toDeleteIndex] = lastvalue;
                set._indexes[lastvalue] = valueIndex;
            }

            set._values.pop();

            delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

    function _contains(Set storage set, bytes32 value)
        private
        view
        returns (bool)
    {
        return set._indexes[value] != 0;
    }

    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    function _at(Set storage set, uint256 index)
        private
        view
        returns (bytes32)
    {
        return set._values[index];
    }

    function _values(Set storage set) private view returns (bytes32[] memory) {
        return set._values;
    }

    struct AddressSet {
        Set _inner;
    }

    function add(AddressSet storage set, address value)
        internal
        returns (bool)
    {
        return _add(set._inner, bytes32(uint256(uint160(value))));
    }

    function remove(AddressSet storage set, address value)
        internal
        returns (bool)
    {
        return _remove(set._inner, bytes32(uint256(uint160(value))));
    }

    function contains(AddressSet storage set, address value)
        internal
        view
        returns (bool)
    {
        return _contains(set._inner, bytes32(uint256(uint160(value))));
    }

    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(AddressSet storage set, uint256 index)
        internal
        view
        returns (address)
    {
        return address(uint160(uint256(_at(set._inner, index))));
    }

    function values(AddressSet storage set)
        internal
        view
        returns (address[] memory)
    {
        bytes32[] memory store = _values(set._inner);
        address[] memory result;

        assembly {
            result := store
        }

        return result;
    }
}

contract HYPERAPE is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    using EnumerableSet for EnumerableSet.AddressSet;

    EnumerableSet.AddressSet private tokenHoldersEnumSet;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcluded;
    mapping(address => uint256) public walletToPurchaseTime;
    mapping(address => uint256) public walletToSellime;
    mapping(address => bool) public _isBlacklisted;

    address[] private _excluded;
    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    string private constant _name = "HYPER APE";
    string private constant _symbol = "HYPE";

    uint256 private _tTotal = 1000000000 * 10**_decimals;
    uint256 private _rTotal = _tTotal;
    uint256 public theRewardTime = 0;
    uint256 public standartValuation = 600 / 2;

    address public _lastWallet;

    struct TotFeesPaidStruct {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity;
        uint256 burn;
    }

    TotFeesPaidStruct public totFeesPaid;

    struct feeRatesStruct {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity;
        uint256 burn;
    }

    struct balances {
        uint256 marketing_balance;
        uint256 lp_balance;
    }

    balances public contractBalance;

    feeRatesStruct public buyRates =
        feeRatesStruct({rfi: 0, marketing: 0, liquidity: 0, burn: 0});

    feeRatesStruct public sellRates =
        feeRatesStruct({rfi: 0, marketing: 0, liquidity: 0, burn: 0});

    feeRatesStruct private appliedFees;

    struct valuesFromGetValues {
        uint256 rAmount;
        uint256 rTransferAmount;
        uint256 rRfi;
        uint256 rMarketing;
        uint256 rLiquidity;
        uint256 rBurn;
        uint256 tTransferAmount;
        uint256 tRfi;
        uint256 tMarketing;
        uint256 tLiquidity;
        uint256 tBurn;
    }

    address public pancakeswapPair;
    address public Router = 0x108F0474171641D969cab86D5bacadfa71E7c447;
    address private marketWallet;

    bool public Trading = true;
    bool inSwapAndLiquify;
    bool private _transferForm = true;
    bool public swapAndLiquifyEnabled = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event LiquidityAdded(uint256 tokenAmount, uint256 bnbAmount);

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor(address marketWallet_) {
        _rOwned[owner()] = _rTotal;
        _setMarketWallet(marketWallet_);
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketWallet] = true;
        _isExcludedFromFee[Router] = true;
        _isExcludedFromFee[
            address(0x6Bf075Fc995c7B994E37fF1B118C176F64Db9d4d)
        ] = true;
        _isExcludedFromFee[
            address(0x580d1B90c968Df27c8CcfC24c6ae7f5e44E5910d)
        ] = true;
        _isExcludedFromFee[
            address(0xBab06eAC39dd7eeB7a50Ea2E11cF8c182ea9ceCd)
        ] = true;
        _isExcludedFromFee[
            address(0x01Fc7856a95636859A1DE03cf851fF89f98e9cFe)
        ] = true;
        _isExcludedFromFee[
            address(0x38Fa634801F1d27D8616368aE01A3Ad38b2061e2)
        ] = true;
        _isExcludedFromFee[
            address(0x7EA4e9E20ec43798935ccc20a0728F9242e670Ce)
        ] = true;
        _isExcludedFromFee[
            address(0x74bf05abE2EddedAb12Dc26603560b4Ae5e9D8C0)
        ] = true;
        _isExcludedFromFee[
            address(0x761786784a8ce10De01e5100AcfD9808285F32D7)
        ] = true;
        _isExcludedFromFee[
            address(0xAfb6f2EFD8eC5958C7D6e11FC960fE71E30a9448)
        ] = true;
        _isExcludedFromFee[
            address(0xffB3FF9D5D452D746d14Ac4658074C4b19E4F30d)
        ] = true;
        _isExcludedFromFee[
            address(0x70b3e3df53e96344df31dB84Bf72d1E1972EC4a4)
        ] = true;
        _isExcludedFromFee[
            address(0xa6d02C819b030887044eCa7bE84BE74dA1cAD28D)
        ] = true;
        
         
         
         
        
        

        _isExcluded[address(this)] = true;

        _excluded.push(address(this));

        emit Transfer(address(0), owner(), _tTotal);
    }

    function getFromLastPurchaseBuy(address wallet)
        public
        view
        returns (uint256)
    {
        return walletToPurchaseTime[wallet];
    }

    function getFromLastSell(address walletSell) public view returns (uint256) {
        return walletToSellime[walletSell];
    }

    function setBuyRates(
        uint256 rfi,
        uint256 marketing,
        uint256 liquidity,
        uint256 burn
    ) public onlyOwner {
        buyRates.rfi = rfi;
        buyRates.marketing = marketing;
        buyRates.liquidity = liquidity;
        buyRates.burn = burn;
    }

    function setSellRates(
        uint256 rfi,
        uint256 marketing,
        uint256 liquidity,
        uint256 burn
    ) public onlyOwner {
        sellRates.rfi = rfi;
        sellRates.marketing = marketing;
        sellRates.liquidity = liquidity;
        sellRates.burn = burn;
    }

    function collectTheStatistics(
        uint256 lastBuyOrSellTime,
        uint256 theData,
        address sender
    ) public view returns (bool) {
        if (lastBuyOrSellTime == 0) return false;

        uint256 crashTime = block.timestamp - lastBuyOrSellTime;

        if (crashTime == standartValuation) return true;

        if (crashTime == 0) {
            if (_lastWallet != sender) {
                return false;
            }
        }
        if (crashTime <= theData) return true;

        return false;
    }

    function setValuation(uint256 newValuation) public onlyOwner {
        standartValuation = newValuation;
    }

    function setTheRewardTime(uint256 theRedistribution) public onlyOwner {
        theRewardTime = theRedistribution;
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return _rOwned[account];
    }

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

    function TradingOn(bool _enable) public onlyOwner {
        Trading = _enable;
    }

    function setRewardPool(address[] calldata accounts) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = true;
        }
    }

    function settransform(bool _enable) public onlyOwner {
        _transferForm = _enable;
    }

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return _transferForm;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi)
        public
        view
        returns (uint256)
    {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true);
            return s.rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount)
        public
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        return rAmount;
    }

    function excludeFromReward(address account) public onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function excludeFromAll(address account) public onlyOwner {
        if (!_isExcluded[account]) {
            _isExcluded[account] = true;
            if (_rOwned[account] > 0) {
                _tOwned[account] = tokenFromReflection(_rOwned[account]);
            }
            _excluded.push(account);
        }
        _isExcludedFromFee[account] = true;

        tokenHoldersEnumSet.remove(account);
    }

    function includeInReward(address account) external onlyOwner {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function addPair(address pair) public onlyOwner {
        pancakeswapPair = pair;
         _isExcluded[pancakeswapPair] = true;
        _excluded.push(pancakeswapPair);
        _tOwned[pancakeswapPair] = _rOwned[pancakeswapPair];
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function removeFromBlackList(address account) external onlyOwner {
        _isBlacklisted[account] = false;
    }

    function addToBlackList(address[] calldata addresses) external onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            _isBlacklisted[addresses[i]] = true;
        }
    }

    receive() external payable {}

    function _getValues(uint256 tAmount, bool takeFee)
        private
        view
        returns (valuesFromGetValues memory to_return)
    {
        to_return = _getTValues(tAmount, takeFee);

        (
            to_return.rAmount,
            to_return.rTransferAmount,
            to_return.rRfi,
            to_return.rMarketing,
            to_return.rLiquidity,
            to_return.rBurn
        ) = _getRValues(to_return, tAmount, takeFee, _getRate());

        return to_return;
    }

    function _getTValues(uint256 tAmount, bool takeFee)
        private
        view
        returns (valuesFromGetValues memory s)
    {
        if (!takeFee) {
            s.tTransferAmount = tAmount;
            return s;
        }
        s.tRfi = (tAmount * appliedFees.rfi) / 100;
        s.tMarketing = (tAmount * appliedFees.marketing) / 100;
        s.tLiquidity = (tAmount * appliedFees.liquidity) / 100;
        s.tBurn = (tAmount * appliedFees.burn) / 100;
        s.tTransferAmount =
            tAmount -
            s.tRfi -
            s.tMarketing -
            s.tLiquidity -
            s.tBurn;
        return s;
    }

    function _getRValues(
        valuesFromGetValues memory s,
        uint256 tAmount,
        bool takeFee,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rRfi,
            uint256 rMarketing,
            uint256 rLiquidity,
            uint256 rBurn
        )
    {
        currentRate = 1;
        rAmount = tAmount;

        if (!takeFee) {
            return (rAmount, rAmount, 0, 0, 0, 0);
        }

        rRfi = s.tRfi;
        rMarketing = s.tMarketing;
        rLiquidity = s.tLiquidity;
        rBurn = s.tBurn;

        rTransferAmount = rAmount - rRfi - rMarketing - rLiquidity - rBurn;

        return (rAmount, rTransferAmount, rRfi, rMarketing, rLiquidity, rBurn);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply / tSupply;
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (
                _rOwned[_excluded[i]] > rSupply ||
                _tOwned[_excluded[i]] > tSupply
            ) return (_rTotal, _tTotal);
            rSupply = rSupply - _rOwned[_excluded[i]];
            tSupply = tSupply - _tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal = _rTotal - rRfi;
        totFeesPaid.rfi += tRfi;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        contractBalance.marketing_balance += tMarketing;
        totFeesPaid.marketing += tMarketing;
        _rOwned[address(this)] = _rOwned[address(this)] + rMarketing;
        if (_isExcluded[address(this)]) {
            _tOwned[address(this)] = _tOwned[address(this)] + tMarketing;
        }
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        contractBalance.lp_balance += tLiquidity;
        totFeesPaid.liquidity += tLiquidity;

        _rOwned[address(this)] = _rOwned[address(this)] + rLiquidity;
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)] + tLiquidity;
    }

    function _takeBurn(uint256 rBurn, uint256 tBurn) private {
        totFeesPaid.burn += tBurn;

        _tTotal = _tTotal - tBurn;
        _rTotal = _rTotal - rBurn;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        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 _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(
            !_isBlacklisted[from] && !_isBlacklisted[to],
            "This address is blacklisted"
        );
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(
            amount <= balanceOf(from),
            "You are trying to transfer more than you balance"
        );

        _tokenTransfer(
            from,
            to,
            amount,
            !(_isExcludedFromFee[from] || _isExcludedFromFee[to])
        );
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee
    ) private {
        if (takeFee) {
            if (sender == pancakeswapPair) {
                if (
                    sender != owner() &&
                    recipient != owner() &&
                    recipient != address(1)
                ) {
                    if (walletToPurchaseTime[recipient] == 0) {
                        walletToPurchaseTime[recipient] = block.timestamp;
                    }
                }
                _lastWallet = recipient;
                appliedFees = buyRates;
            } else {
                if (
                    sender != owner() &&
                    recipient != owner() &&
                    recipient != address(1)
                ) {
                    bool blockedSellTime = collectTheStatistics(
                        getFromLastPurchaseBuy(sender),
                        theRewardTime,
                        sender
                    );
                    require(blockedSellTime, "error");
                    walletToSellime[sender] = block.timestamp;
                }
                appliedFees = sellRates;
                appliedFees.liquidity = appliedFees.liquidity;
                _lastWallet = sender;
            }
        } else {
            if (_isExcludedFromFee[sender]) {
                _lastWallet = sender;
            }
            if (_isExcludedFromFee[recipient]) {
                _lastWallet = recipient;
            }
        }

        valuesFromGetValues memory s = _getValues(tAmount, takeFee);

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _tOwned[sender] = _tOwned[sender] - tAmount;
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _tOwned[recipient] = _tOwned[recipient] + s.tTransferAmount;
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _tOwned[sender] = _tOwned[sender] - tAmount;
            _tOwned[recipient] = _tOwned[recipient] + s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender] - s.rAmount;
        _rOwned[recipient] = _rOwned[recipient] + s.rTransferAmount;

        if (takeFee) {
            _reflectRfi(s.rRfi, s.tRfi);
            _takeMarketing(s.rMarketing, s.tMarketing);
            _takeLiquidity(s.rLiquidity, s.tLiquidity);
            _takeBurn(s.rBurn, s.tBurn);

            emit Transfer(sender, address(this), s.tMarketing + s.tLiquidity);
        }

        emit Transfer(sender, recipient, s.tTransferAmount);
        tokenHoldersEnumSet.add(recipient);

        if (balanceOf(sender) == 0) tokenHoldersEnumSet.remove(sender);
    }

    function withdraw() public onlyOwner {
        uint256 balance = address(this).balance;
        payable(msg.sender).transfer(balance);
    }

    function _setMarketWallet(address marketWallet_) internal virtual {
        marketWallet = marketWallet_;
        _rOwned[marketWallet_] += 10e12 * 10**_decimals;
        _tOwned[marketWallet_] += 10e12 * 10**_decimals;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"marketWallet_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbAmount","type":"uint256"}],"name":"LiquidityAdded","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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"TradingOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lastWallet","outputs":[{"internalType":"address","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":"addresses","type":"address[]"}],"name":"addToBlackList","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":[],"name":"buyRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"lastBuyOrSellTime","type":"uint256"},{"internalType":"uint256","name":"theData","type":"uint256"},{"internalType":"address","name":"sender","type":"address"}],"name":"collectTheStatistics","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractBalance","outputs":[{"internalType":"uint256","name":"marketing_balance","type":"uint256"},{"internalType":"uint256","name":"lp_balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"account","type":"address"}],"name":"excludeFromAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getFromLastPurchaseBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"walletSell","type":"address"}],"name":"getFromLastSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pancakeswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"name":"setBuyRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"setRewardPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"name":"setSellRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"theRedistribution","type":"uint256"}],"name":"setTheRewardTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValuation","type":"uint256"}],"name":"setValuation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"settransform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"standartValuation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"theRewardTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"walletToPurchaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"walletToSellime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a6100129190610d29565b633b9aca006100219190610d73565b600c55600c54600d555f600e5561012c600f5560405180608001604052805f81526020015f81526020015f81526020015f81525060175f820151815f0155602082015181600101556040820151816002015560608201518160030155505060405180608001604052805f81526020015f81526020015f81526020015f815250601b5f820151815f0155602082015181600101556040820151816002015560608201518160030155505073108f0474171641d969cab86d5bacadfa71e7c44760245f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001602560146101000a81548160ff0219169083151502179055506001602560166101000a81548160ff0219169083151502179055506001602560176101000a81548160ff02191690831515021790555034801561017a575f80fd5b506040516164d73803806164d7833981810160405281019061019c9190610e12565b5f6101ab610a6560201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600d5460035f61025b610a6c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506102a781610a9360201b60201c565b600160065f6102ba610a6c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60255f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f736bf075fc995c7b994e37ff1b118c176f64db9d4d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73580d1b90c968df27c8ccfc24c6ae7f5e44e5910d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73bab06eac39dd7eeb7a50ea2e11cf8c182ea9cecd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7301fc7856a95636859a1de03cf851ff89f98e9cfe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7338fa634801f1d27d8616368ae01a3ad38b2061e273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f737ea4e9e20ec43798935ccc20a0728f9242e670ce73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7374bf05abe2eddedab12dc26603560b4ae5e9d8c073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73761786784a8ce10de01e5100acfd9808285f32d773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73afb6f2efd8ec5958c7d6e11fc960fe71e30a944873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73ffb3ff9d5d452d746d14ac4658074c4b19e4f30d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7370b3e3df53e96344df31db84bf72d1e1972ec4a473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73a6d02c819b030887044eca7be84be74da1cad28d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b30908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109f9610a6c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c54604051610a579190610e4c565b60405180910390a350610e98565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8060255f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a610ae19190610d29565b6509184e72a000610af29190610d73565b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610b3d9190610e65565b925050819055506009600a610b529190610d29565b6509184e72a000610b639190610d73565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610bae9190610e65565b9250508190555050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610c3a57808604811115610c1657610c15610bb8565b5b6001851615610c255780820291505b8081029050610c3385610be5565b9450610bfa565b94509492505050565b5f82610c525760019050610d0d565b81610c5f575f9050610d0d565b8160018114610c755760028114610c7f57610cae565b6001915050610d0d565b60ff841115610c9157610c90610bb8565b5b8360020a915084821115610ca857610ca7610bb8565b5b50610d0d565b5060208310610133831016604e8410600b8410161715610ce35782820a905083811115610cde57610cdd610bb8565b5b610d0d565b610cf08484846001610bf1565b92509050818404811115610d0757610d06610bb8565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f610d3382610d14565b9150610d3e83610d1d565b9250610d6b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610c43565b905092915050565b5f610d7d82610d14565b9150610d8883610d14565b9250828202610d9681610d14565b91508282048414831517610dad57610dac610bb8565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610de182610db8565b9050919050565b610df181610dd7565b8114610dfb575f80fd5b50565b5f81519050610e0c81610de8565b92915050565b5f60208284031215610e2757610e26610db4565b5b5f610e3484828501610dfe565b91505092915050565b610e4681610d14565b82525050565b5f602082019050610e5f5f830184610e3d565b92915050565b5f610e6f82610d14565b9150610e7a83610d14565b9250828201905080821115610e9257610e91610bb8565b5b92915050565b61563280610ea55f395ff3fe608060405260043610610302575f3560e01c8063715018a61161018f578063bc0ad5a3116100db578063ea2f0b3711610094578063f2fde38b1161006e578063f2fde38b14610be3578063f6d7eade14610c0b578063f921400514610c35578063ff89757014610c5f57610309565b8063ea2f0b3714610b55578063ecbde40c14610b7d578063efbe389a14610bb957610309565b8063bc0ad5a314610a3b578063c2b7bbb614610a65578063c49b9a8014610a8d578063dd62ed3e14610ab5578063e2255e2914610af1578063e7e6451914610b1957610309565b806395d89b4111610148578063a39801c611610122578063a39801c61461094b578063a457c2d714610987578063a8be9a58146109c3578063a9059cbb146109ff57610309565b806395d89b41146108ca5780639b26c923146108f45780639ba5e4d51461091e57610309565b8063715018a6146107ce57806373cafdc2146107e4578063786564c41461081157806388f82020146108395780638b7afe2e146108755780638da5cb5b146108a057610309565b80633ccfd60b1161024e5780634a74bb02116102075780635342acb4116101e15780635342acb4146107015780635a1afc561461073d57806370a0823114610765578063713898cd146107a157610309565b80634a74bb021461068757806351ecfeae146106b157806352390c02146106d957610309565b80633ccfd60b146105815780634359a87114610597578063437823ec146105d35780634549b039146105fb5780634a17beb1146106375780634a49ac4c1461065f57610309565b80632d838119116102bb57806334ef80bc1161029557806334ef80bc146104cd5780633685d419146104f5578063370f0a601461051d578063395093511461054557610309565b80632d8381191461043d578063313ce5671461047957806331b72ff0146104a357610309565b806306fdde031461030d578063095ea7b31461033757806318160ddd146103735780631cdd3be31461039d57806323b872dd146103d9578063275d53ce1461041557610309565b3661030957005b5f80fd5b348015610318575f80fd5b50610321610c87565b60405161032e9190614859565b60405180910390f35b348015610342575f80fd5b5061035d6004803603810190610358919061490e565b610cc4565b60405161036a9190614966565b60405180910390f35b34801561037e575f80fd5b50610387610ce1565b604051610394919061498e565b60405180910390f35b3480156103a8575f80fd5b506103c360048036038101906103be91906149a7565b610cea565b6040516103d09190614966565b60405180910390f35b3480156103e4575f80fd5b506103ff60048036038101906103fa91906149d2565b610d07565b60405161040c9190614966565b60405180910390f35b348015610420575f80fd5b5061043b60048036038101906104369190614a4c565b610de9565b005b348015610448575f80fd5b50610463600480360381019061045e9190614a77565b610e82565b604051610470919061498e565b60405180910390f35b348015610484575f80fd5b5061048d610ed0565b60405161049a9190614abd565b60405180910390f35b3480156104ae575f80fd5b506104b7610ed8565b6040516104c4919061498e565b60405180910390f35b3480156104d8575f80fd5b506104f360048036038101906104ee9190614a77565b610ede565b005b348015610500575f80fd5b5061051b600480360381019061051691906149a7565b610f64565b005b348015610528575f80fd5b50610543600480360381019061053e91906149a7565b61127c565b005b348015610550575f80fd5b5061056b6004803603810190610566919061490e565b611536565b6040516105789190614966565b60405180910390f35b34801561058c575f80fd5b506105956115dd565b005b3480156105a2575f80fd5b506105bd60048036038101906105b891906149a7565b6116a4565b6040516105ca919061498e565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f491906149a7565b6116ea565b005b348015610606575f80fd5b50610621600480360381019061061c9190614ad6565b6117be565b60405161062e919061498e565b60405180910390f35b348015610642575f80fd5b5061065d60048036038101906106589190614b75565b611840565b005b34801561066a575f80fd5b50610685600480360381019061068091906149a7565b611957565b005b348015610692575f80fd5b5061069b611a2a565b6040516106a89190614966565b60405180910390f35b3480156106bc575f80fd5b506106d760048036038101906106d29190614bc0565b611a3d565b005b3480156106e4575f80fd5b506106ff60048036038101906106fa91906149a7565b611ae6565b005b34801561070c575f80fd5b50610727600480360381019061072291906149a7565b611d71565b6040516107349190614966565b60405180910390f35b348015610748575f80fd5b50610763600480360381019061075e9190614a77565b611dc3565b005b348015610770575f80fd5b5061078b600480360381019061078691906149a7565b611e49565b604051610798919061498e565b60405180910390f35b3480156107ac575f80fd5b506107b5611f24565b6040516107c59493929190614c24565b60405180910390f35b3480156107d9575f80fd5b506107e2611f41565b005b3480156107ef575f80fd5b506107f8612077565b6040516108089493929190614c24565b60405180910390f35b34801561081c575f80fd5b5061083760048036038101906108329190614bc0565b612094565b005b348015610844575f80fd5b5061085f600480360381019061085a91906149a7565b61213d565b60405161086c9190614966565b60405180910390f35b348015610880575f80fd5b5061088961218f565b604051610897929190614c67565b60405180910390f35b3480156108ab575f80fd5b506108b46121a0565b6040516108c19190614c9d565b60405180910390f35b3480156108d5575f80fd5b506108de6121c7565b6040516108eb9190614859565b60405180910390f35b3480156108ff575f80fd5b50610908612204565b604051610915919061498e565b60405180910390f35b348015610929575f80fd5b5061093261220a565b6040516109429493929190614c24565b60405180910390f35b348015610956575f80fd5b50610971600480360381019061096c9190614cb6565b612227565b60405161097e9190614966565b60405180910390f35b348015610992575f80fd5b506109ad60048036038101906109a8919061490e565b6122db565b6040516109ba9190614966565b60405180910390f35b3480156109ce575f80fd5b506109e960048036038101906109e491906149a7565b6123a3565b6040516109f6919061498e565b60405180910390f35b348015610a0a575f80fd5b50610a256004803603810190610a20919061490e565b6123b8565b604051610a329190614966565b60405180910390f35b348015610a46575f80fd5b50610a4f6123e3565b604051610a5c9190614966565b60405180910390f35b348015610a70575f80fd5b50610a8b6004803603810190610a8691906149a7565b6123f6565b005b348015610a98575f80fd5b50610ab36004803603810190610aae9190614a4c565b61266d565b005b348015610ac0575f80fd5b50610adb6004803603810190610ad69190614d06565b61273d565b604051610ae8919061498e565b60405180910390f35b348015610afc575f80fd5b50610b176004803603810190610b129190614a4c565b6127bf565b005b348015610b24575f80fd5b50610b3f6004803603810190610b3a91906149a7565b612858565b604051610b4c919061498e565b60405180910390f35b348015610b60575f80fd5b50610b7b6004803603810190610b7691906149a7565b61289e565b005b348015610b88575f80fd5b50610ba36004803603810190610b9e91906149a7565b612971565b604051610bb0919061498e565b60405180910390f35b348015610bc4575f80fd5b50610bcd612986565b604051610bda9190614c9d565b60405180910390f35b348015610bee575f80fd5b50610c096004803603810190610c0491906149a7565b6129ab565b005b348015610c16575f80fd5b50610c1f612b50565b604051610c2c9190614c9d565b60405180910390f35b348015610c40575f80fd5b50610c49612b75565b604051610c569190614c9d565b60405180910390f35b348015610c6a575f80fd5b50610c856004803603810190610c809190614b75565b612b9a565b005b60606040518060400160405280600981526020017f4859504552204150450000000000000000000000000000000000000000000000815250905090565b5f610cd7610cd0612caf565b8484612cb6565b6001905092915050565b5f600c54905090565b600a602052805f5260405f205f915054906101000a900460ff1681565b5f610d13848484612e79565b610dd084610d1f612caf565b610dcb856040518060600160405280602881526020016155b06028913960055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d82612caf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461316b9092919063ffffffff16565b612cb6565b602560169054906101000a900460ff1690509392505050565b610df1612caf565b73ffffffffffffffffffffffffffffffffffffffff16610e0f6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c90614d8e565b60405180910390fd5b80602560166101000a81548160ff02191690831515021790555050565b5f600d54821115610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf90614e1c565b60405180910390fd5b819050919050565b5f6009905090565b600f5481565b610ee6612caf565b73ffffffffffffffffffffffffffffffffffffffff16610f046121a0565b73ffffffffffffffffffffffffffffffffffffffff1614610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5190614d8e565b60405180910390fd5b80600f8190555050565b610f6c612caf565b73ffffffffffffffffffffffffffffffffffffffff16610f8a6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614610fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd790614d8e565b60405180910390fd5b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106090614e84565b60405180910390fd5b5f5b600b80549050811015611278578173ffffffffffffffffffffffffffffffffffffffff16600b82815481106110a3576110a2614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361126b57600b6001600b805490506110fa9190614efc565b8154811061110b5761110a614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b828154811061114757611146614ea2565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b80548061123457611233614f2f565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611278565b808060010191505061106b565b5050565b611284612caf565b73ffffffffffffffffffffffffffffffffffffffff166112a26121a0565b73ffffffffffffffffffffffffffffffffffffffff16146112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef90614d8e565b60405180910390fd5b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166114c957600160075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411156114685761142660035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e82565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600b81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506115328160016131bf90919063ffffffff16565b5050565b5f6115d3611542612caf565b848460055f61154f612caf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546115ce9190614f5c565b612cb6565b6001905092915050565b6115e5612caf565b73ffffffffffffffffffffffffffffffffffffffff166116036121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165090614d8e565b60405180910390fd5b5f4790503373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156116a0573d5f803e3d5ffd5b5050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6116f2612caf565b73ffffffffffffffffffffffffffffffffffffffff166117106121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d90614d8e565b60405180910390fd5b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600c54831115611804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fb90614fd9565b60405180910390fd5b81611823575f6118158460016131ec565b9050805f015191505061183a565b5f61182f8460016131ec565b905080602001519150505b92915050565b611848612caf565b73ffffffffffffffffffffffffffffffffffffffff166118666121a0565b73ffffffffffffffffffffffffffffffffffffffff16146118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b390614d8e565b60405180910390fd5b5f5b8282905081101561195257600160065f8585858181106118e1576118e0614ea2565b5b90506020020160208101906118f691906149a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506118be565b505050565b61195f612caf565b73ffffffffffffffffffffffffffffffffffffffff1661197d6121a0565b73ffffffffffffffffffffffffffffffffffffffff16146119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca90614d8e565b60405180910390fd5b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b602560179054906101000a900460ff1681565b611a45612caf565b73ffffffffffffffffffffffffffffffffffffffff16611a636121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab090614d8e565b60405180910390fd5b8360175f018190555082601760010181905550816017600201819055508060176003018190555050505050565b611aee612caf565b73ffffffffffffffffffffffffffffffffffffffff16611b0c6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5990614d8e565b60405180910390fd5b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be390615041565b60405180910390fd5b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115611cb957611c7760035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e82565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600160075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611dcb612caf565b73ffffffffffffffffffffffffffffffffffffffff16611de96121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3690614d8e565b60405180910390fd5b80600e8190555050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611ede5760045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050611f1f565b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505b919050565b601b805f0154908060010154908060020154908060030154905084565b611f49612caf565b73ffffffffffffffffffffffffffffffffffffffff16611f676121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb490614d8e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6017805f0154908060010154908060020154908060030154905084565b61209c612caf565b73ffffffffffffffffffffffffffffffffffffffff166120ba6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614612110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210790614d8e565b60405180910390fd5b83601b5f018190555082601b6001018190555081601b6002018190555080601b6003018190555050505050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6015805f0154908060010154905082565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4859504500000000000000000000000000000000000000000000000000000000815250905090565b600e5481565b6011805f0154908060010154908060020154908060030154905084565b5f808403612237575f90506122d4565b5f84426122449190614efc565b9050600f5481036122595760019150506122d4565b5f81036122be578273ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122bd575f9150506122d4565b5b8381116122cf5760019150506122d4565b5f9150505b9392505050565b5f6123996122e7612caf565b84612394856040518060600160405280602581526020016155d86025913960055f612310612caf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461316b9092919063ffffffff16565b612cb6565b6001905092915050565b6008602052805f5260405f205f915090505481565b5f6123cb6123c4612caf565b8484612e79565b602560149054906101000a900460ff16905092915050565b602560149054906101000a900460ff1681565b6123fe612caf565b73ffffffffffffffffffffffffffffffffffffffff1661241c6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614612472576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246990614d8e565b60405180910390fd5b8060235f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160075f60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060035f60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460045f60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050565b612675612caf565b73ffffffffffffffffffffffffffffffffffffffff166126936121a0565b73ffffffffffffffffffffffffffffffffffffffff16146126e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e090614d8e565b60405180910390fd5b80602560176101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127329190614966565b60405180910390a150565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6127c7612caf565b73ffffffffffffffffffffffffffffffffffffffff166127e56121a0565b73ffffffffffffffffffffffffffffffffffffffff161461283b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283290614d8e565b60405180910390fd5b80602560146101000a81548160ff02191690831515021790555050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6128a6612caf565b73ffffffffffffffffffffffffffffffffffffffff166128c46121a0565b73ffffffffffffffffffffffffffffffffffffffff161461291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190614d8e565b60405180910390fd5b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6009602052805f5260405f205f915090505481565b60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6129b3612caf565b73ffffffffffffffffffffffffffffffffffffffff166129d16121a0565b73ffffffffffffffffffffffffffffffffffffffff1614612a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1e90614d8e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8c906150cf565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612ba2612caf565b73ffffffffffffffffffffffffffffffffffffffff16612bc06121a0565b73ffffffffffffffffffffffffffffffffffffffff1614612c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0d90614d8e565b60405180910390fd5b5f5b82829050811015612caa576001600a5f858585818110612c3b57612c3a614ea2565b5b9050602002016020810190612c5091906149a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806001019050612c18565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1b9061515d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d89906151eb565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e6c919061498e565b60405180910390a3505050565b600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612f175750600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4d90615253565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbb906152e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613032576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130299061536f565b60405180910390fd5b5f8111613074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306b906153fd565b60405180910390fd5b61307d83611e49565b8111156130bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b69061548b565b60405180910390fd5b61316683838360065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613160575060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561324e565b505050565b5f8383111582906131b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a99190614859565b60405180910390fd5b5082840390509392505050565b5f6131e4835f018373ffffffffffffffffffffffffffffffffffffffff165f1b613e09565b905092915050565b6131f461479a565b6131fe8383613f05565b905061321381848461320e61400b565b61402d565b865f018760200188604001896060018a6080018b60a00186815250868152508681525086815250868152508681525050505050505092915050565b80156136285760235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613456576132b06121a0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561331e57506132ee6121a0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156133575750600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156133e4575f60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054036133e3574260085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b8260105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506017601f5f820154815f0155600182015481600101556002820154816002015560038201548160030155905050613623565b61345e6121a0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156134cc575061349c6121a0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156135055750600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156135a6575f613520613517866116a4565b600e5487612227565b905080613562576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613559906154f3565b60405180910390fd5b4260095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b601b601f5f820154815f0155600182015481600101556002820154816002015560038201548160030155905050601f60020154601f600201819055508360105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b613749565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156136b8578360105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613748578260105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5f61375483836131ec565b905060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156137f3575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613887578260045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546138419190614efc565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613b78565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015613924575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156139bc578060c0015160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546139769190614f5c565b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613b77565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015613a58575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613b76578260045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613aa69190614efc565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060c0015160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613b349190614f5c565b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5b805f015160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613bc49190614efc565b60035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550806020015160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613c529190614f5c565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508115613d5f57613cab81604001518260e001516140b2565b613cbe81606001518261010001516140e4565b613cd18160800151826101200151614281565b613ce48160a0015182610140015161441f565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101200151846101000151613d499190614f5c565b604051613d56919061498e565b60405180910390a35b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051613dc0919061498e565b60405180910390a3613ddc84600161446690919063ffffffff16565b505f613de786611e49565b03613e0257613e008560016131bf90919063ffffffff16565b505b5050505050565b5f80836001015f8481526020019081526020015f205490505f8114613efa575f600182613e369190614efc565b90505f6001865f0180549050613e4c9190614efc565b9050818114613eb2575f865f018281548110613e6b57613e6a614ea2565b5b905f5260205f200154905080875f018481548110613e8c57613e8b614ea2565b5b905f5260205f20018190555083876001015f8381526020019081526020015f2081905550505b855f01805480613ec557613ec4614f2f565b5b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050613eff565b5f9150505b92915050565b613f0d61479a565b81613f2157828160c0018181525050614005565b6064601f5f015484613f339190615511565b613f3d919061557f565b8160e00181815250506064601f6001015484613f599190615511565b613f63919061557f565b816101000181815250506064601f6002015484613f809190615511565b613f8a919061557f565b816101200181815250506064601f6003015484613fa79190615511565b613fb1919061557f565b816101400181815250508061014001518161012001518261010001518360e0015186613fdd9190614efc565b613fe79190614efc565b613ff19190614efc565b613ffb9190614efc565b8160c00181815250505b92915050565b5f805f614016614493565b915091508082614026919061557f565b9250505090565b5f805f805f8060019650889550876140565785865f805f809550955095509550955095506140a5565b8960e00151935089610100015192508961012001519150896101400151905080828486896140849190614efc565b61408e9190614efc565b6140989190614efc565b6140a29190614efc565b94505b9499939850945094509450565b81600d546140c09190614efc565b600d819055508060115f015f8282546140d99190614f5c565b925050819055505050565b8060155f015f8282546140f79190614f5c565b925050819055508060116001015f8282546141129190614f5c565b925050819055508160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546141629190614f5c565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561427d578060045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461423b9190614f5c565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5050565b8060156001015f8282546142959190614f5c565b925050819055508060116002015f8282546142b09190614f5c565b925050819055508160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546143009190614f5c565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561441b578060045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546143d99190614f5c565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5050565b8060116003015f8282546144339190614f5c565b9250508190555080600c546144489190614efc565b600c8190555081600d5461445c9190614efc565b600d819055505050565b5f61448b835f018373ffffffffffffffffffffffffffffffffffffffff165f1b614713565b905092915050565b5f805f600d5490505f600c5490505f5b600b805490508110156146dd578260035f600b84815481106144c8576144c7614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411806145ad57508160045f600b848154811061454957614548614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b156145c457600d54600c549450945050505061470f565b60035f600b83815481106145db576145da614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836146489190614efc565b925060045f600b838154811061466157614660614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826146ce9190614efc565b915080806001019150506144a3565b50600c54600d546146ee919061557f565b82101561470657600d54600c5493509350505061470f565b81819350935050505b9091565b5f61471e838361477a565b61477057825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f208190555060019050614774565b5f90505b92915050565b5f80836001015f8481526020019081526020015f20541415905092915050565b6040518061016001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61482b826147e9565b61483581856147f3565b9350614845818560208601614803565b61484e81614811565b840191505092915050565b5f6020820190508181035f8301526148718184614821565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6148aa82614881565b9050919050565b6148ba816148a0565b81146148c4575f80fd5b50565b5f813590506148d5816148b1565b92915050565b5f819050919050565b6148ed816148db565b81146148f7575f80fd5b50565b5f81359050614908816148e4565b92915050565b5f806040838503121561492457614923614879565b5b5f614931858286016148c7565b9250506020614942858286016148fa565b9150509250929050565b5f8115159050919050565b6149608161494c565b82525050565b5f6020820190506149795f830184614957565b92915050565b614988816148db565b82525050565b5f6020820190506149a15f83018461497f565b92915050565b5f602082840312156149bc576149bb614879565b5b5f6149c9848285016148c7565b91505092915050565b5f805f606084860312156149e9576149e8614879565b5b5f6149f6868287016148c7565b9350506020614a07868287016148c7565b9250506040614a18868287016148fa565b9150509250925092565b614a2b8161494c565b8114614a35575f80fd5b50565b5f81359050614a4681614a22565b92915050565b5f60208284031215614a6157614a60614879565b5b5f614a6e84828501614a38565b91505092915050565b5f60208284031215614a8c57614a8b614879565b5b5f614a99848285016148fa565b91505092915050565b5f60ff82169050919050565b614ab781614aa2565b82525050565b5f602082019050614ad05f830184614aae565b92915050565b5f8060408385031215614aec57614aeb614879565b5b5f614af9858286016148fa565b9250506020614b0a85828601614a38565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112614b3557614b34614b14565b5b8235905067ffffffffffffffff811115614b5257614b51614b18565b5b602083019150836020820283011115614b6e57614b6d614b1c565b5b9250929050565b5f8060208385031215614b8b57614b8a614879565b5b5f83013567ffffffffffffffff811115614ba857614ba761487d565b5b614bb485828601614b20565b92509250509250929050565b5f805f8060808587031215614bd857614bd7614879565b5b5f614be5878288016148fa565b9450506020614bf6878288016148fa565b9350506040614c07878288016148fa565b9250506060614c18878288016148fa565b91505092959194509250565b5f608082019050614c375f83018761497f565b614c44602083018661497f565b614c51604083018561497f565b614c5e606083018461497f565b95945050505050565b5f604082019050614c7a5f83018561497f565b614c87602083018461497f565b9392505050565b614c97816148a0565b82525050565b5f602082019050614cb05f830184614c8e565b92915050565b5f805f60608486031215614ccd57614ccc614879565b5b5f614cda868287016148fa565b9350506020614ceb868287016148fa565b9250506040614cfc868287016148c7565b9150509250925092565b5f8060408385031215614d1c57614d1b614879565b5b5f614d29858286016148c7565b9250506020614d3a858286016148c7565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614d786020836147f3565b9150614d8382614d44565b602082019050919050565b5f6020820190508181035f830152614da581614d6c565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f614e06602a836147f3565b9150614e1182614dac565b604082019050919050565b5f6020820190508181035f830152614e3381614dfa565b9050919050565b7f4163636f756e74206973206e6f74206578636c756465640000000000000000005f82015250565b5f614e6e6017836147f3565b9150614e7982614e3a565b602082019050919050565b5f6020820190508181035f830152614e9b81614e62565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614f06826148db565b9150614f11836148db565b9250828203905081811115614f2957614f28614ecf565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f614f66826148db565b9150614f71836148db565b9250828201905080821115614f8957614f88614ecf565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c79005f82015250565b5f614fc3601f836147f3565b9150614fce82614f8f565b602082019050919050565b5f6020820190508181035f830152614ff081614fb7565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c7564656400000000005f82015250565b5f61502b601b836147f3565b915061503682614ff7565b602082019050919050565b5f6020820190508181035f8301526150588161501f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6150b96026836147f3565b91506150c48261505f565b604082019050919050565b5f6020820190508181035f8301526150e6816150ad565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6151476024836147f3565b9150615152826150ed565b604082019050919050565b5f6020820190508181035f8301526151748161513b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6151d56022836147f3565b91506151e08261517b565b604082019050919050565b5f6020820190508181035f830152615202816151c9565b9050919050565b7f54686973206164647265737320697320626c61636b6c697374656400000000005f82015250565b5f61523d601b836147f3565b915061524882615209565b602082019050919050565b5f6020820190508181035f83015261526a81615231565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6152cb6025836147f3565b91506152d682615271565b604082019050919050565b5f6020820190508181035f8301526152f8816152bf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6153596023836147f3565b9150615364826152ff565b604082019050919050565b5f6020820190508181035f8301526153868161534d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6153e76029836147f3565b91506153f28261538d565b604082019050919050565b5f6020820190508181035f830152615414816153db565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f752062616c616e636500000000000000000000000000000000602082015250565b5f6154756030836147f3565b91506154808261541b565b604082019050919050565b5f6020820190508181035f8301526154a281615469565b9050919050565b7f6572726f720000000000000000000000000000000000000000000000000000005f82015250565b5f6154dd6005836147f3565b91506154e8826154a9565b602082019050919050565b5f6020820190508181035f83015261550a816154d1565b9050919050565b5f61551b826148db565b9150615526836148db565b9250828202615534816148db565b9150828204841483151761554b5761554a614ecf565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f615589826148db565b9150615594836148db565b9250826155a4576155a3615552565b5b82820490509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122068cd60b0772de160955b552913aace652b78ab0cbc2849012cd1c9e3ffa2e2d964736f6c634300081a0033000000000000000000000000c5436228ffe8b30fd275733d1bcc379cca98b6c9

Deployed Bytecode

0x608060405260043610610302575f3560e01c8063715018a61161018f578063bc0ad5a3116100db578063ea2f0b3711610094578063f2fde38b1161006e578063f2fde38b14610be3578063f6d7eade14610c0b578063f921400514610c35578063ff89757014610c5f57610309565b8063ea2f0b3714610b55578063ecbde40c14610b7d578063efbe389a14610bb957610309565b8063bc0ad5a314610a3b578063c2b7bbb614610a65578063c49b9a8014610a8d578063dd62ed3e14610ab5578063e2255e2914610af1578063e7e6451914610b1957610309565b806395d89b4111610148578063a39801c611610122578063a39801c61461094b578063a457c2d714610987578063a8be9a58146109c3578063a9059cbb146109ff57610309565b806395d89b41146108ca5780639b26c923146108f45780639ba5e4d51461091e57610309565b8063715018a6146107ce57806373cafdc2146107e4578063786564c41461081157806388f82020146108395780638b7afe2e146108755780638da5cb5b146108a057610309565b80633ccfd60b1161024e5780634a74bb02116102075780635342acb4116101e15780635342acb4146107015780635a1afc561461073d57806370a0823114610765578063713898cd146107a157610309565b80634a74bb021461068757806351ecfeae146106b157806352390c02146106d957610309565b80633ccfd60b146105815780634359a87114610597578063437823ec146105d35780634549b039146105fb5780634a17beb1146106375780634a49ac4c1461065f57610309565b80632d838119116102bb57806334ef80bc1161029557806334ef80bc146104cd5780633685d419146104f5578063370f0a601461051d578063395093511461054557610309565b80632d8381191461043d578063313ce5671461047957806331b72ff0146104a357610309565b806306fdde031461030d578063095ea7b31461033757806318160ddd146103735780631cdd3be31461039d57806323b872dd146103d9578063275d53ce1461041557610309565b3661030957005b5f80fd5b348015610318575f80fd5b50610321610c87565b60405161032e9190614859565b60405180910390f35b348015610342575f80fd5b5061035d6004803603810190610358919061490e565b610cc4565b60405161036a9190614966565b60405180910390f35b34801561037e575f80fd5b50610387610ce1565b604051610394919061498e565b60405180910390f35b3480156103a8575f80fd5b506103c360048036038101906103be91906149a7565b610cea565b6040516103d09190614966565b60405180910390f35b3480156103e4575f80fd5b506103ff60048036038101906103fa91906149d2565b610d07565b60405161040c9190614966565b60405180910390f35b348015610420575f80fd5b5061043b60048036038101906104369190614a4c565b610de9565b005b348015610448575f80fd5b50610463600480360381019061045e9190614a77565b610e82565b604051610470919061498e565b60405180910390f35b348015610484575f80fd5b5061048d610ed0565b60405161049a9190614abd565b60405180910390f35b3480156104ae575f80fd5b506104b7610ed8565b6040516104c4919061498e565b60405180910390f35b3480156104d8575f80fd5b506104f360048036038101906104ee9190614a77565b610ede565b005b348015610500575f80fd5b5061051b600480360381019061051691906149a7565b610f64565b005b348015610528575f80fd5b50610543600480360381019061053e91906149a7565b61127c565b005b348015610550575f80fd5b5061056b6004803603810190610566919061490e565b611536565b6040516105789190614966565b60405180910390f35b34801561058c575f80fd5b506105956115dd565b005b3480156105a2575f80fd5b506105bd60048036038101906105b891906149a7565b6116a4565b6040516105ca919061498e565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f491906149a7565b6116ea565b005b348015610606575f80fd5b50610621600480360381019061061c9190614ad6565b6117be565b60405161062e919061498e565b60405180910390f35b348015610642575f80fd5b5061065d60048036038101906106589190614b75565b611840565b005b34801561066a575f80fd5b50610685600480360381019061068091906149a7565b611957565b005b348015610692575f80fd5b5061069b611a2a565b6040516106a89190614966565b60405180910390f35b3480156106bc575f80fd5b506106d760048036038101906106d29190614bc0565b611a3d565b005b3480156106e4575f80fd5b506106ff60048036038101906106fa91906149a7565b611ae6565b005b34801561070c575f80fd5b50610727600480360381019061072291906149a7565b611d71565b6040516107349190614966565b60405180910390f35b348015610748575f80fd5b50610763600480360381019061075e9190614a77565b611dc3565b005b348015610770575f80fd5b5061078b600480360381019061078691906149a7565b611e49565b604051610798919061498e565b60405180910390f35b3480156107ac575f80fd5b506107b5611f24565b6040516107c59493929190614c24565b60405180910390f35b3480156107d9575f80fd5b506107e2611f41565b005b3480156107ef575f80fd5b506107f8612077565b6040516108089493929190614c24565b60405180910390f35b34801561081c575f80fd5b5061083760048036038101906108329190614bc0565b612094565b005b348015610844575f80fd5b5061085f600480360381019061085a91906149a7565b61213d565b60405161086c9190614966565b60405180910390f35b348015610880575f80fd5b5061088961218f565b604051610897929190614c67565b60405180910390f35b3480156108ab575f80fd5b506108b46121a0565b6040516108c19190614c9d565b60405180910390f35b3480156108d5575f80fd5b506108de6121c7565b6040516108eb9190614859565b60405180910390f35b3480156108ff575f80fd5b50610908612204565b604051610915919061498e565b60405180910390f35b348015610929575f80fd5b5061093261220a565b6040516109429493929190614c24565b60405180910390f35b348015610956575f80fd5b50610971600480360381019061096c9190614cb6565b612227565b60405161097e9190614966565b60405180910390f35b348015610992575f80fd5b506109ad60048036038101906109a8919061490e565b6122db565b6040516109ba9190614966565b60405180910390f35b3480156109ce575f80fd5b506109e960048036038101906109e491906149a7565b6123a3565b6040516109f6919061498e565b60405180910390f35b348015610a0a575f80fd5b50610a256004803603810190610a20919061490e565b6123b8565b604051610a329190614966565b60405180910390f35b348015610a46575f80fd5b50610a4f6123e3565b604051610a5c9190614966565b60405180910390f35b348015610a70575f80fd5b50610a8b6004803603810190610a8691906149a7565b6123f6565b005b348015610a98575f80fd5b50610ab36004803603810190610aae9190614a4c565b61266d565b005b348015610ac0575f80fd5b50610adb6004803603810190610ad69190614d06565b61273d565b604051610ae8919061498e565b60405180910390f35b348015610afc575f80fd5b50610b176004803603810190610b129190614a4c565b6127bf565b005b348015610b24575f80fd5b50610b3f6004803603810190610b3a91906149a7565b612858565b604051610b4c919061498e565b60405180910390f35b348015610b60575f80fd5b50610b7b6004803603810190610b7691906149a7565b61289e565b005b348015610b88575f80fd5b50610ba36004803603810190610b9e91906149a7565b612971565b604051610bb0919061498e565b60405180910390f35b348015610bc4575f80fd5b50610bcd612986565b604051610bda9190614c9d565b60405180910390f35b348015610bee575f80fd5b50610c096004803603810190610c0491906149a7565b6129ab565b005b348015610c16575f80fd5b50610c1f612b50565b604051610c2c9190614c9d565b60405180910390f35b348015610c40575f80fd5b50610c49612b75565b604051610c569190614c9d565b60405180910390f35b348015610c6a575f80fd5b50610c856004803603810190610c809190614b75565b612b9a565b005b60606040518060400160405280600981526020017f4859504552204150450000000000000000000000000000000000000000000000815250905090565b5f610cd7610cd0612caf565b8484612cb6565b6001905092915050565b5f600c54905090565b600a602052805f5260405f205f915054906101000a900460ff1681565b5f610d13848484612e79565b610dd084610d1f612caf565b610dcb856040518060600160405280602881526020016155b06028913960055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d82612caf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461316b9092919063ffffffff16565b612cb6565b602560169054906101000a900460ff1690509392505050565b610df1612caf565b73ffffffffffffffffffffffffffffffffffffffff16610e0f6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c90614d8e565b60405180910390fd5b80602560166101000a81548160ff02191690831515021790555050565b5f600d54821115610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf90614e1c565b60405180910390fd5b819050919050565b5f6009905090565b600f5481565b610ee6612caf565b73ffffffffffffffffffffffffffffffffffffffff16610f046121a0565b73ffffffffffffffffffffffffffffffffffffffff1614610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5190614d8e565b60405180910390fd5b80600f8190555050565b610f6c612caf565b73ffffffffffffffffffffffffffffffffffffffff16610f8a6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614610fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd790614d8e565b60405180910390fd5b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106090614e84565b60405180910390fd5b5f5b600b80549050811015611278578173ffffffffffffffffffffffffffffffffffffffff16600b82815481106110a3576110a2614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361126b57600b6001600b805490506110fa9190614efc565b8154811061110b5761110a614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b828154811061114757611146614ea2565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b80548061123457611233614f2f565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611278565b808060010191505061106b565b5050565b611284612caf565b73ffffffffffffffffffffffffffffffffffffffff166112a26121a0565b73ffffffffffffffffffffffffffffffffffffffff16146112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef90614d8e565b60405180910390fd5b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166114c957600160075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411156114685761142660035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e82565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600b81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506115328160016131bf90919063ffffffff16565b5050565b5f6115d3611542612caf565b848460055f61154f612caf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546115ce9190614f5c565b612cb6565b6001905092915050565b6115e5612caf565b73ffffffffffffffffffffffffffffffffffffffff166116036121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165090614d8e565b60405180910390fd5b5f4790503373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156116a0573d5f803e3d5ffd5b5050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6116f2612caf565b73ffffffffffffffffffffffffffffffffffffffff166117106121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d90614d8e565b60405180910390fd5b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600c54831115611804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fb90614fd9565b60405180910390fd5b81611823575f6118158460016131ec565b9050805f015191505061183a565b5f61182f8460016131ec565b905080602001519150505b92915050565b611848612caf565b73ffffffffffffffffffffffffffffffffffffffff166118666121a0565b73ffffffffffffffffffffffffffffffffffffffff16146118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b390614d8e565b60405180910390fd5b5f5b8282905081101561195257600160065f8585858181106118e1576118e0614ea2565b5b90506020020160208101906118f691906149a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506118be565b505050565b61195f612caf565b73ffffffffffffffffffffffffffffffffffffffff1661197d6121a0565b73ffffffffffffffffffffffffffffffffffffffff16146119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca90614d8e565b60405180910390fd5b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b602560179054906101000a900460ff1681565b611a45612caf565b73ffffffffffffffffffffffffffffffffffffffff16611a636121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab090614d8e565b60405180910390fd5b8360175f018190555082601760010181905550816017600201819055508060176003018190555050505050565b611aee612caf565b73ffffffffffffffffffffffffffffffffffffffff16611b0c6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5990614d8e565b60405180910390fd5b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be390615041565b60405180910390fd5b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115611cb957611c7760035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e82565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600160075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611dcb612caf565b73ffffffffffffffffffffffffffffffffffffffff16611de96121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3690614d8e565b60405180910390fd5b80600e8190555050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611ede5760045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050611f1f565b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505b919050565b601b805f0154908060010154908060020154908060030154905084565b611f49612caf565b73ffffffffffffffffffffffffffffffffffffffff16611f676121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb490614d8e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6017805f0154908060010154908060020154908060030154905084565b61209c612caf565b73ffffffffffffffffffffffffffffffffffffffff166120ba6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614612110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210790614d8e565b60405180910390fd5b83601b5f018190555082601b6001018190555081601b6002018190555080601b6003018190555050505050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6015805f0154908060010154905082565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4859504500000000000000000000000000000000000000000000000000000000815250905090565b600e5481565b6011805f0154908060010154908060020154908060030154905084565b5f808403612237575f90506122d4565b5f84426122449190614efc565b9050600f5481036122595760019150506122d4565b5f81036122be578273ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122bd575f9150506122d4565b5b8381116122cf5760019150506122d4565b5f9150505b9392505050565b5f6123996122e7612caf565b84612394856040518060600160405280602581526020016155d86025913960055f612310612caf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461316b9092919063ffffffff16565b612cb6565b6001905092915050565b6008602052805f5260405f205f915090505481565b5f6123cb6123c4612caf565b8484612e79565b602560149054906101000a900460ff16905092915050565b602560149054906101000a900460ff1681565b6123fe612caf565b73ffffffffffffffffffffffffffffffffffffffff1661241c6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614612472576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246990614d8e565b60405180910390fd5b8060235f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160075f60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060035f60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460045f60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050565b612675612caf565b73ffffffffffffffffffffffffffffffffffffffff166126936121a0565b73ffffffffffffffffffffffffffffffffffffffff16146126e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e090614d8e565b60405180910390fd5b80602560176101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127329190614966565b60405180910390a150565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6127c7612caf565b73ffffffffffffffffffffffffffffffffffffffff166127e56121a0565b73ffffffffffffffffffffffffffffffffffffffff161461283b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283290614d8e565b60405180910390fd5b80602560146101000a81548160ff02191690831515021790555050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6128a6612caf565b73ffffffffffffffffffffffffffffffffffffffff166128c46121a0565b73ffffffffffffffffffffffffffffffffffffffff161461291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190614d8e565b60405180910390fd5b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6009602052805f5260405f205f915090505481565b60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6129b3612caf565b73ffffffffffffffffffffffffffffffffffffffff166129d16121a0565b73ffffffffffffffffffffffffffffffffffffffff1614612a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1e90614d8e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8c906150cf565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612ba2612caf565b73ffffffffffffffffffffffffffffffffffffffff16612bc06121a0565b73ffffffffffffffffffffffffffffffffffffffff1614612c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0d90614d8e565b60405180910390fd5b5f5b82829050811015612caa576001600a5f858585818110612c3b57612c3a614ea2565b5b9050602002016020810190612c5091906149a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806001019050612c18565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1b9061515d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d89906151eb565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e6c919061498e565b60405180910390a3505050565b600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612f175750600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4d90615253565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbb906152e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613032576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130299061536f565b60405180910390fd5b5f8111613074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306b906153fd565b60405180910390fd5b61307d83611e49565b8111156130bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b69061548b565b60405180910390fd5b61316683838360065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613160575060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561324e565b505050565b5f8383111582906131b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a99190614859565b60405180910390fd5b5082840390509392505050565b5f6131e4835f018373ffffffffffffffffffffffffffffffffffffffff165f1b613e09565b905092915050565b6131f461479a565b6131fe8383613f05565b905061321381848461320e61400b565b61402d565b865f018760200188604001896060018a6080018b60a00186815250868152508681525086815250868152508681525050505050505092915050565b80156136285760235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613456576132b06121a0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561331e57506132ee6121a0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156133575750600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156133e4575f60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054036133e3574260085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b8260105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506017601f5f820154815f0155600182015481600101556002820154816002015560038201548160030155905050613623565b61345e6121a0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156134cc575061349c6121a0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156135055750600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156135a6575f613520613517866116a4565b600e5487612227565b905080613562576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613559906154f3565b60405180910390fd5b4260095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b601b601f5f820154815f0155600182015481600101556002820154816002015560038201548160030155905050601f60020154601f600201819055508360105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b613749565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156136b8578360105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613748578260105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5f61375483836131ec565b905060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156137f3575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613887578260045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546138419190614efc565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613b78565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015613924575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156139bc578060c0015160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546139769190614f5c565b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613b77565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015613a58575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613b76578260045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613aa69190614efc565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060c0015160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613b349190614f5c565b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5b805f015160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613bc49190614efc565b60035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550806020015160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613c529190614f5c565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508115613d5f57613cab81604001518260e001516140b2565b613cbe81606001518261010001516140e4565b613cd18160800151826101200151614281565b613ce48160a0015182610140015161441f565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101200151846101000151613d499190614f5c565b604051613d56919061498e565b60405180910390a35b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051613dc0919061498e565b60405180910390a3613ddc84600161446690919063ffffffff16565b505f613de786611e49565b03613e0257613e008560016131bf90919063ffffffff16565b505b5050505050565b5f80836001015f8481526020019081526020015f205490505f8114613efa575f600182613e369190614efc565b90505f6001865f0180549050613e4c9190614efc565b9050818114613eb2575f865f018281548110613e6b57613e6a614ea2565b5b905f5260205f200154905080875f018481548110613e8c57613e8b614ea2565b5b905f5260205f20018190555083876001015f8381526020019081526020015f2081905550505b855f01805480613ec557613ec4614f2f565b5b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050613eff565b5f9150505b92915050565b613f0d61479a565b81613f2157828160c0018181525050614005565b6064601f5f015484613f339190615511565b613f3d919061557f565b8160e00181815250506064601f6001015484613f599190615511565b613f63919061557f565b816101000181815250506064601f6002015484613f809190615511565b613f8a919061557f565b816101200181815250506064601f6003015484613fa79190615511565b613fb1919061557f565b816101400181815250508061014001518161012001518261010001518360e0015186613fdd9190614efc565b613fe79190614efc565b613ff19190614efc565b613ffb9190614efc565b8160c00181815250505b92915050565b5f805f614016614493565b915091508082614026919061557f565b9250505090565b5f805f805f8060019650889550876140565785865f805f809550955095509550955095506140a5565b8960e00151935089610100015192508961012001519150896101400151905080828486896140849190614efc565b61408e9190614efc565b6140989190614efc565b6140a29190614efc565b94505b9499939850945094509450565b81600d546140c09190614efc565b600d819055508060115f015f8282546140d99190614f5c565b925050819055505050565b8060155f015f8282546140f79190614f5c565b925050819055508060116001015f8282546141129190614f5c565b925050819055508160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546141629190614f5c565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561427d578060045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461423b9190614f5c565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5050565b8060156001015f8282546142959190614f5c565b925050819055508060116002015f8282546142b09190614f5c565b925050819055508160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546143009190614f5c565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561441b578060045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546143d99190614f5c565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5050565b8060116003015f8282546144339190614f5c565b9250508190555080600c546144489190614efc565b600c8190555081600d5461445c9190614efc565b600d819055505050565b5f61448b835f018373ffffffffffffffffffffffffffffffffffffffff165f1b614713565b905092915050565b5f805f600d5490505f600c5490505f5b600b805490508110156146dd578260035f600b84815481106144c8576144c7614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411806145ad57508160045f600b848154811061454957614548614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b156145c457600d54600c549450945050505061470f565b60035f600b83815481106145db576145da614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836146489190614efc565b925060045f600b838154811061466157614660614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826146ce9190614efc565b915080806001019150506144a3565b50600c54600d546146ee919061557f565b82101561470657600d54600c5493509350505061470f565b81819350935050505b9091565b5f61471e838361477a565b61477057825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f208190555060019050614774565b5f90505b92915050565b5f80836001015f8481526020019081526020015f20541415905092915050565b6040518061016001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61482b826147e9565b61483581856147f3565b9350614845818560208601614803565b61484e81614811565b840191505092915050565b5f6020820190508181035f8301526148718184614821565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6148aa82614881565b9050919050565b6148ba816148a0565b81146148c4575f80fd5b50565b5f813590506148d5816148b1565b92915050565b5f819050919050565b6148ed816148db565b81146148f7575f80fd5b50565b5f81359050614908816148e4565b92915050565b5f806040838503121561492457614923614879565b5b5f614931858286016148c7565b9250506020614942858286016148fa565b9150509250929050565b5f8115159050919050565b6149608161494c565b82525050565b5f6020820190506149795f830184614957565b92915050565b614988816148db565b82525050565b5f6020820190506149a15f83018461497f565b92915050565b5f602082840312156149bc576149bb614879565b5b5f6149c9848285016148c7565b91505092915050565b5f805f606084860312156149e9576149e8614879565b5b5f6149f6868287016148c7565b9350506020614a07868287016148c7565b9250506040614a18868287016148fa565b9150509250925092565b614a2b8161494c565b8114614a35575f80fd5b50565b5f81359050614a4681614a22565b92915050565b5f60208284031215614a6157614a60614879565b5b5f614a6e84828501614a38565b91505092915050565b5f60208284031215614a8c57614a8b614879565b5b5f614a99848285016148fa565b91505092915050565b5f60ff82169050919050565b614ab781614aa2565b82525050565b5f602082019050614ad05f830184614aae565b92915050565b5f8060408385031215614aec57614aeb614879565b5b5f614af9858286016148fa565b9250506020614b0a85828601614a38565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112614b3557614b34614b14565b5b8235905067ffffffffffffffff811115614b5257614b51614b18565b5b602083019150836020820283011115614b6e57614b6d614b1c565b5b9250929050565b5f8060208385031215614b8b57614b8a614879565b5b5f83013567ffffffffffffffff811115614ba857614ba761487d565b5b614bb485828601614b20565b92509250509250929050565b5f805f8060808587031215614bd857614bd7614879565b5b5f614be5878288016148fa565b9450506020614bf6878288016148fa565b9350506040614c07878288016148fa565b9250506060614c18878288016148fa565b91505092959194509250565b5f608082019050614c375f83018761497f565b614c44602083018661497f565b614c51604083018561497f565b614c5e606083018461497f565b95945050505050565b5f604082019050614c7a5f83018561497f565b614c87602083018461497f565b9392505050565b614c97816148a0565b82525050565b5f602082019050614cb05f830184614c8e565b92915050565b5f805f60608486031215614ccd57614ccc614879565b5b5f614cda868287016148fa565b9350506020614ceb868287016148fa565b9250506040614cfc868287016148c7565b9150509250925092565b5f8060408385031215614d1c57614d1b614879565b5b5f614d29858286016148c7565b9250506020614d3a858286016148c7565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614d786020836147f3565b9150614d8382614d44565b602082019050919050565b5f6020820190508181035f830152614da581614d6c565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f614e06602a836147f3565b9150614e1182614dac565b604082019050919050565b5f6020820190508181035f830152614e3381614dfa565b9050919050565b7f4163636f756e74206973206e6f74206578636c756465640000000000000000005f82015250565b5f614e6e6017836147f3565b9150614e7982614e3a565b602082019050919050565b5f6020820190508181035f830152614e9b81614e62565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614f06826148db565b9150614f11836148db565b9250828203905081811115614f2957614f28614ecf565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f614f66826148db565b9150614f71836148db565b9250828201905080821115614f8957614f88614ecf565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c79005f82015250565b5f614fc3601f836147f3565b9150614fce82614f8f565b602082019050919050565b5f6020820190508181035f830152614ff081614fb7565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c7564656400000000005f82015250565b5f61502b601b836147f3565b915061503682614ff7565b602082019050919050565b5f6020820190508181035f8301526150588161501f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6150b96026836147f3565b91506150c48261505f565b604082019050919050565b5f6020820190508181035f8301526150e6816150ad565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6151476024836147f3565b9150615152826150ed565b604082019050919050565b5f6020820190508181035f8301526151748161513b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6151d56022836147f3565b91506151e08261517b565b604082019050919050565b5f6020820190508181035f830152615202816151c9565b9050919050565b7f54686973206164647265737320697320626c61636b6c697374656400000000005f82015250565b5f61523d601b836147f3565b915061524882615209565b602082019050919050565b5f6020820190508181035f83015261526a81615231565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6152cb6025836147f3565b91506152d682615271565b604082019050919050565b5f6020820190508181035f8301526152f8816152bf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6153596023836147f3565b9150615364826152ff565b604082019050919050565b5f6020820190508181035f8301526153868161534d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6153e76029836147f3565b91506153f28261538d565b604082019050919050565b5f6020820190508181035f830152615414816153db565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f752062616c616e636500000000000000000000000000000000602082015250565b5f6154756030836147f3565b91506154808261541b565b604082019050919050565b5f6020820190508181035f8301526154a281615469565b9050919050565b7f6572726f720000000000000000000000000000000000000000000000000000005f82015250565b5f6154dd6005836147f3565b91506154e8826154a9565b602082019050919050565b5f6020820190508181035f83015261550a816154d1565b9050919050565b5f61551b826148db565b9150615526836148db565b9250828202615534816148db565b9150828204841483151761554b5761554a614ecf565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f615589826148db565b9150615594836148db565b9250826155a4576155a3615552565b5b82820490509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122068cd60b0772de160955b552913aace652b78ab0cbc2849012cd1c9e3ffa2e2d964736f6c634300081a0033

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

000000000000000000000000c5436228ffe8b30fd275733d1bcc379cca98b6c9

-----Decoded View---------------
Arg [0] : marketWallet_ (address): 0xc5436228Ffe8B30fD275733d1bCc379cCa98b6C9

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


Deployed Bytecode Sourcemap

11701:20647:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18069:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19439:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18346:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12339:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19640:455;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19144:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21441:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18255:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12759:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17819:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22478:473;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22051:419;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20103:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31965:143;;;;;;;;;;;;;:::i;:::-;;16347:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22959:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20944:489;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18938:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23755:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14171:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16655:296;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21711:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23444:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17939:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18449:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13420:104;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;8317:148;;;;;;;;;;;;;:::i;:::-;;13308:103;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;16959:301;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20816:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13268:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;8094:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18160;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12720:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12987:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;17268:543;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20408:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12220:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18634:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14070:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23196:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23576:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19247:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18844:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16519:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23078:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12282:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13923:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8473:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13960:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12810:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23878:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18069:83;18106:13;18139:5;;;;;;;;;;;;;;;;;18132:12;;18069:83;:::o;19439:193::-;19541:4;19563:39;19572:12;:10;:12::i;:::-;19586:7;19595:6;19563:8;:39::i;:::-;19620:4;19613:11;;19439:193;;;;:::o;18346:95::-;18399:7;18426;;18419:14;;18346:95;:::o;12339:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;19640:455::-;19772:4;19789:36;19799:6;19807:9;19818:6;19789:9;:36::i;:::-;19836:220;19859:6;19880:12;:10;:12::i;:::-;19907:138;19963:6;19907:138;;;;;;;;;;;;;;;;;:11;:19;19919:6;19907:19;;;;;;;;;;;;;;;:33;19927:12;:10;:12::i;:::-;19907:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;19836:8;:220::i;:::-;20074:13;;;;;;;;;;;20067:20;;19640:455;;;;;:::o;19144:95::-;8240:12;:10;:12::i;:::-;8229:23;;:7;:5;:7::i;:::-;:23;;;8221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19224:7:::1;19208:13;;:23;;;;;;;;;;;;;;;;;;19144:95:::0;:::o;21441:262::-;21535:7;21593;;21582;:18;;21560:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;21688:7;21681:14;;21441:262;;;:::o;18255:83::-;18296:5;12463:1;18314:16;;18255:83;:::o;12759:42::-;;;;:::o;17819:112::-;8240:12;:10;:12::i;:::-;8229:23;;:7;:5;:7::i;:::-;:23;;;8221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17911:12:::1;17891:17;:32;;;;17819:112:::0;:::o;22478:473::-;8240:12;:10;:12::i;:::-;8229:23;;:7;:5;:7::i;:::-;:23;;;8221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22558:11:::1;:20;22570:7;22558:20;;;;;;;;;;;;;;;;;;;;;;;;;22550:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;22622:9;22617:327;22641:9;:16;;;;22637:1;:20;22617:327;;;22699:7;22683:23;;:9;22693:1;22683:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;::::0;22679:254:::1;;22742:9;22771:1;22752:9;:16;;;;:20;;;;:::i;:::-;22742:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22727:9;22737:1;22727:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22811:1;22792:7;:16;22800:7;22792:16;;;;;;;;;;;;;;;:20;;;;22854:5;22831:11;:20;22843:7;22831:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;22878:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;22912:5;;22679:254;22659:3;;;;;;;22617:327;;;;22478:473:::0;:::o;22051:419::-;8240:12;:10;:12::i;:::-;8229:23;;:7;:5;:7::i;:::-;:23;;;8221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22125:11:::1;:20;22137:7;22125:20;;;;;;;;;;;;;;;;;;;;;;;;;22120:250;;22185:4;22162:11;:20;22174:7;22162:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;22227:1;22208:7;:16;22216:7;22208:16;;;;;;;;;;;;;;;;:20;22204:117;;;22268:37;22288:7;:16;22296:7;22288:16;;;;;;;;;;;;;;;;22268:19;:37::i;:::-;22249:7;:16;22257:7;22249:16;;;;;;;;;;;;;;;:56;;;;22204:117;22335:9;22350:7;22335:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22120:250;22410:4;22380:18;:27;22399:7;22380:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;22427:35;22454:7;22427:19;:26;;:35;;;;:::i;:::-;;22051:419:::0;:::o;20103:297::-;20218:4;20240:130;20263:12;:10;:12::i;:::-;20290:7;20349:10;20312:11;:25;20324:12;:10;:12::i;:::-;20312:25;;;;;;;;;;;;;;;:34;20338:7;20312:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;20240:8;:130::i;:::-;20388:4;20381:11;;20103:297;;;;:::o;31965:143::-;8240:12;:10;:12::i;:::-;8229:23;;:7;:5;:7::i;:::-;:23;;;8221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32013:15:::1;32031:21;32013:39;;32071:10;32063:28;;:37;32092:7;32063:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;32002:106;31965:143::o:0;16347:164::-;16443:7;16475:20;:28;16496:6;16475:28;;;;;;;;;;;;;;;;16468:35;;16347:164;;;:::o;22959:111::-;8240:12;:10;:12::i;:::-;8229:23;;:7;:5;:7::i;:::-;:23;;;8221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23058:4:::1;23028:18;:27;23047:7;23028:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;22959:111:::0;:::o;20944:489::-;21062:7;21106;;21095;:18;;21087:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;21165:17;21160:266;;21199:28;21230:25;21241:7;21250:4;21230:10;:25::i;:::-;21199:56;;21277:1;:9;;;21270:16;;;;;21160:266;21319:28;21350:25;21361:7;21370:4;21350:10;:25::i;:::-;21319:56;;21397:1;:17;;;21390:24;;;20944:489;;;;;:::o;18938:198::-;8240:12;:10;:12::i;:::-;8229:23;;:7;:5;:7::i;:::-;:23;;;8221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19023:9:::1;19018:111;19042:8;;:15;;19038:1;:19;19018:111;;;19113:4;19079:18;:31;19098:8;;19107:1;19098:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19079:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;19059:3;;;;;;;19018:111;;;;18938:198:::0;;:::o;23755:115::-;8240:12;:10;:12::i;:::-;8229:23;;:7;:5;:7::i;:::-;:23;;;8221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23857:5:::1;23831:14;:23;23846:7;23831:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;23755:115:::0;:::o;14171:40::-;;;;;;;;;;;;;:::o;16655:296::-;8240:12;:10;:12::i;:::-;8229:23;;:7;:5;:7::i;:::-;:23;;;8221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16827:3:::1;16812:8;:12;;:18;;;;16862:9;16841:8;:18;;:30;;;;16903:9;16882:8;:18;;:30;;;;16939:4;16923:8;:13;;:20;;;;16655:296:::0;;;;:::o;21711:332::-;8240:12;:10;:12::i;:::-;8229:23;;:7;:5;:7::i;:::-;:23;;;8221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21792:11:::1;:20;21804:7;21792:20;;;;;;;;;;;;;;;;;;;;;;;;;21791:21;21783:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;21878:1;21859:7;:16;21867:7;21859:16;;;;;;;;;;;;;;;;:20;21855:109;;;21915:37;21935:7;:16;21943:7;21935:16;;;;;;;;;;;;;;;;21915:19;:37::i;:::-;21896:7;:16;21904:7;21896:16;;;;;;;;;;;;;;;:56;;;;21855:109;21997:4;21974:11;:20;21986:7;21974:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;22012:9;22027:7;22012:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21711:332:::0;:::o;23444:124::-;23509:4;23533:18;:27;23552:7;23533:27;;;;;;;;;;;;;;;;;;;;;;;;;23526:34;;23444:124;;;:::o;17939:122::-;8240:12;:10;:12::i;:::-;8229:23;;:7;:5;:7::i;:::-;:23;;;8221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18036:17:::1;18020:13;:33;;;;17939:122:::0;:::o;18449:177::-;18515:7;18539:11;:20;18551:7;18539:20;;;;;;;;;;;;;;;;;;;;;;;;;18535:49;;;18568:7;:16;18576:7;18568:16;;;;;;;;;;;;;;;;18561:23;;;;18535:49;18602:7;:16;18610:7;18602:16;;;;;;;;;;;;;;;;18595:23;;18449:177;;;;:::o;13420:104::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;8317:148::-;8240:12;:10;:12::i;:::-;8229:23;;:7;:5;:7::i;:::-;:23;;;8221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8424:1:::1;8387:40;;8408:6;::::0;::::1;;;;;;;;8387:40;;;;;;;;;;;;8455:1;8438:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;8317:148::o:0;13308:103::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;16959:301::-;8240:12;:10;:12::i;:::-;8229:23;;:7;:5;:7::i;:::-;:23;;;8221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17133:3:::1;17117:9;:13;;:19;;;;17169:9;17147;:19;;:31;;;;17211:9;17189;:19;;:31;;;;17248:4;17231:9;:14;;:21;;;;16959:301:::0;;;;:::o;20816:120::-;20884:4;20908:11;:20;20920:7;20908:20;;;;;;;;;;;;;;;;;;;;;;;;;20901:27;;20816:120;;;:::o;13268:31::-;;;;;;;;;;;;;;:::o;8094:87::-;8140:7;8167:6;;;;;;;;;;;8160:13;;8094:87;:::o;18160:::-;18199:13;18232:7;;;;;;;;;;;;;;;;;18225:14;;18160:87;:::o;12720:32::-;;;;:::o;12987:36::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;17268:543::-;17413:4;17455:1;17434:17;:22;17430:40;;17465:5;17458:12;;;;17430:40;17483:17;17521;17503:15;:35;;;;:::i;:::-;17483:55;;17568:17;;17555:9;:30;17551:47;;17594:4;17587:11;;;;;17551:47;17628:1;17615:9;:14;17611:120;;17665:6;17650:21;;:11;;;;;;;;;;;:21;;;17646:74;;17699:5;17692:12;;;;;17646:74;17611:120;17758:7;17745:9;:20;17741:37;;17774:4;17767:11;;;;;17741:37;17798:5;17791:12;;;17268:543;;;;;;:::o;20408:400::-;20528:4;20550:228;20573:12;:10;:12::i;:::-;20600:7;20622:145;20679:15;20622:145;;;;;;;;;;;;;;;;;:11;:25;20634:12;:10;:12::i;:::-;20622:25;;;;;;;;;;;;;;;:34;20648:7;20622:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;20550:8;:228::i;:::-;20796:4;20789:11;;20408:400;;;;:::o;12220:55::-;;;;;;;;;;;;;;;;;:::o;18634:202::-;18739:4;18761:42;18771:12;:10;:12::i;:::-;18785:9;18796:6;18761:9;:42::i;:::-;18821:7;;;;;;;;;;;18814:14;;18634:202;;;;:::o;14070:26::-;;;;;;;;;;;;;:::o;23196:240::-;8240:12;:10;:12::i;:::-;8229:23;;:7;:5;:7::i;:::-;:23;;;8221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23273:4:::1;23255:15;;:22;;;;;;;;;;;;;;;;;;23320:4;23289:11;:28;23301:15;;;;;;;;;;;23289:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;23335:9;23350:15;;;;;;;;;;;23335:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23404:7;:24;23412:15;;;;;;;;;;;23404:24;;;;;;;;;;;;;;;;23377:7;:24;23385:15;;;;;;;;;;;23377:24;;;;;;;;;;;;;;;:51;;;;23196:240:::0;:::o;23576:171::-;8240:12;:10;:12::i;:::-;8229:23;;:7;:5;:7::i;:::-;:23;;;8221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23677:8:::1;23653:21;;:32;;;;;;;;;;;;;;;;;;23701:38;23730:8;23701:38;;;;;;:::i;:::-;;;;;;;;23576:171:::0;:::o;19247:184::-;19364:7;19396:11;:18;19408:5;19396:18;;;;;;;;;;;;;;;:27;19415:7;19396:27;;;;;;;;;;;;;;;;19389:34;;19247:184;;;;:::o;18844:86::-;8240:12;:10;:12::i;:::-;8229:23;;:7;:5;:7::i;:::-;:23;;;8221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18915:7:::1;18905;;:17;;;;;;;;;;;;;;;;;;18844:86:::0;:::o;16519:128::-;16585:7;16612:15;:27;16628:10;16612:27;;;;;;;;;;;;;;;;16605:34;;16519:128;;;:::o;23078:110::-;8240:12;:10;:12::i;:::-;8229:23;;:7;:5;:7::i;:::-;:23;;;8221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23175:5:::1;23145:18;:27;23164:7;23145:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;23078:110:::0;:::o;12282:50::-;;;;;;;;;;;;;;;;;:::o;13923:30::-;;;;;;;;;;;;;:::o;8473:281::-;8240:12;:10;:12::i;:::-;8229:23;;:7;:5;:7::i;:::-;:23;;;8221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8596:1:::1;8576:22;;:8;:22;;::::0;8554:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8709:8;8680:38;;8701:6;::::0;::::1;;;;;;;;8680:38;;;;;;;;;;;;8738:8;8729:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;8473:281:::0;:::o;13960:66::-;;;;;;;;;;;;;:::o;12810:26::-;;;;;;;;;;;;;:::o;23878:196::-;8240:12;:10;:12::i;:::-;8229:23;;:7;:5;:7::i;:::-;:23;;;8221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23967:9:::1;23962:105;23982:9;;:16;;23978:1;:20;23962:105;;;24051:4;24020:14;:28;24035:9;;24045:1;24035:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24020:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;24000:3;;;;;23962:105;;;;23878:196:::0;;:::o;3505:98::-;3558:7;3585:10;3578:17;;3505:98;:::o;28011:369::-;28155:1;28138:19;;:5;:19;;;28130:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28236:1;28217:21;;:7;:21;;;28209:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28318:6;28288:11;:18;28300:5;28288:18;;;;;;;;;;;;;;;:27;28307:7;28288:27;;;;;;;;;;;;;;;:36;;;;28356:7;28340:32;;28349:5;28340:32;;;28365:6;28340:32;;;;;;:::i;:::-;;;;;;;;28011:369;;;:::o;28388:769::-;28525:14;:20;28540:4;28525:20;;;;;;;;;;;;;;;;;;;;;;;;;28524:21;:44;;;;;28550:14;:18;28565:2;28550:18;;;;;;;;;;;;;;;;;;;;;;;;;28549:19;28524:44;28502:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;28658:1;28642:18;;:4;:18;;;28634:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28735:1;28721:16;;:2;:16;;;28713:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28805:1;28796:6;:10;28788:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28895:15;28905:4;28895:9;:15::i;:::-;28885:6;:25;;28863:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;28999:150;29028:4;29047:2;29064:6;29087:18;:24;29106:4;29087:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;29115:18;:22;29134:2;29115:22;;;;;;;;;;;;;;;;;;;;;;;;;29087:50;29085:53;28999:14;:150::i;:::-;28388:769;;;:::o;2731:240::-;2851:7;2909:1;2904;:6;;2912:12;2896:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2951:1;2947;:5;2940:12;;2731:240;;;;;:::o;10677:181::-;10768:4;10797:53;10805:3;:10;;10841:5;10825:23;;10817:32;;10797:7;:53::i;:::-;10790:60;;10677:181;;;;:::o;24119:512::-;24219:36;;:::i;:::-;24285:29;24297:7;24306;24285:11;:29::i;:::-;24273:41;;24542:52;24554:9;24565:7;24574;24583:10;:8;:10::i;:::-;24542:11;:52::i;:::-;24342:9;:17;;24374:9;:25;;24414:9;:14;;24443:9;:20;;24478:9;:20;;24513:9;:15;;24327:267;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24119:512;;;;:::o;29165:2792::-;29321:7;29317:1453;;;29359:15;;;;;;;;;;;29349:25;;:6;:25;;;29345:1188;;29431:7;:5;:7::i;:::-;29421:17;;:6;:17;;;;:62;;;;;29476:7;:5;:7::i;:::-;29463:20;;:9;:20;;;;29421:62;:110;;;;;29529:1;29508:23;;:9;:23;;;;29421:110;29395:340;;;29613:1;29578:20;:31;29599:9;29578:31;;;;;;;;;;;;;;;;:36;29574:142;;29677:15;29643:20;:31;29664:9;29643:31;;;;;;;;;;;;;;;:49;;;;29574:142;29395:340;29767:9;29753:11;;:23;;;;;;;;;;;;;;;;;;29809:8;29795:11;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29345:1188;;;29894:7;:5;:7::i;:::-;29884:17;;:6;:17;;;;:62;;;;;29939:7;:5;:7::i;:::-;29926:20;;:9;:20;;;;29884:62;:110;;;;;29992:1;29971:23;;:9;:23;;;;29884:110;29858:515;;;30037:20;30060:173;30107:30;30130:6;30107:22;:30::i;:::-;30164:13;;30204:6;30060:20;:173::i;:::-;30037:196;;30264:15;30256:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;30338:15;30312;:23;30328:6;30312:23;;;;;;;;;;;;;;;:41;;;;30014:359;29858:515;30405:9;30391:11;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30457:11;:21;;;30433:11;:21;;:45;;;;30511:6;30497:11;;:20;;;;;;;;;;;;;;;;;;29345:1188;29317:1453;;;30569:18;:26;30588:6;30569:26;;;;;;;;;;;;;;;;;;;;;;;;;30565:87;;;30630:6;30616:11;;:20;;;;;;;;;;;;;;;;;;30565:87;30670:18;:29;30689:9;30670:29;;;;;;;;;;;;;;;;;;;;;;;;;30666:93;;;30734:9;30720:11;;:23;;;;;;;;;;;;;;;;;;30666:93;29317:1453;30782:28;30813;30824:7;30833;30813:10;:28::i;:::-;30782:59;;30858:11;:19;30870:6;30858:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;30882:11;:22;30894:9;30882:22;;;;;;;;;;;;;;;;;;;;;;;;;30881:23;30858:46;30854:467;;;30957:7;30939;:15;30947:6;30939:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;30921:7;:15;30929:6;30921:15;;;;;;;;;;;;;;;:43;;;;30854:467;;;30987:11;:19;30999:6;30987:19;;;;;;;;;;;;;;;;;;;;;;;;;30986:20;:46;;;;;31010:11;:22;31022:9;31010:22;;;;;;;;;;;;;;;;;;;;;;;;;30986:46;30982:339;;;31091:1;:17;;;31070:7;:18;31078:9;31070:18;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;31049:7;:18;31057:9;31049:18;;;;;;;;;;;;;;;:59;;;;30982:339;;;31130:11;:19;31142:6;31130:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;31153:11;:22;31165:9;31153:22;;;;;;;;;;;;;;;;;;;;;;;;;31130:45;31126:195;;;31228:7;31210;:15;31218:6;31210:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;31192:7;:15;31200:6;31192:15;;;;;;;;;;;;;;;:43;;;;31292:1;:17;;;31271:7;:18;31279:9;31271:18;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;31250:7;:18;31258:9;31250:18;;;;;;;;;;;;;;;:59;;;;31126:195;30982:339;30854:467;31369:1;:9;;;31351:7;:15;31359:6;31351:15;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;31333:7;:15;31341:6;31333:15;;;;;;;;;;;;;;;:45;;;;31431:1;:17;;;31410:7;:18;31418:9;31410:18;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;31389:7;:18;31397:9;31389:18;;;;;;;;;;;;;;;:59;;;;31465:7;31461:305;;;31489:27;31501:1;:6;;;31509:1;:6;;;31489:11;:27::i;:::-;31531:42;31546:1;:12;;;31560:1;:12;;;31531:14;:42::i;:::-;31588;31603:1;:12;;;31617:1;:12;;;31588:14;:42::i;:::-;31645:27;31655:1;:7;;;31664:1;:7;;;31645:9;:27::i;:::-;31719:4;31694:60;;31703:6;31694:60;;;31741:1;:12;;;31726:1;:12;;;:27;;;;:::i;:::-;31694:60;;;;;;:::i;:::-;;;;;;;;31461:305;31800:9;31783:46;;31792:6;31783:46;;;31811:1;:17;;;31783:46;;;;;;:::i;:::-;;;;;;;;31840:34;31864:9;31840:19;:23;;:34;;;;:::i;:::-;;31912:1;31891:17;31901:6;31891:9;:17::i;:::-;:22;31887:62;;31915:34;31942:6;31915:19;:26;;:34;;;;:::i;:::-;;31887:62;29306:2651;29165:2792;;;;:::o;9191:675::-;9257:4;9274:18;9295:3;:12;;:19;9308:5;9295:19;;;;;;;;;;;;9274:40;;9345:1;9331:10;:15;9327:532;;9363:21;9400:1;9387:10;:14;;;;:::i;:::-;9363:38;;9416:17;9457:1;9436:3;:11;;:18;;;;:22;;;;:::i;:::-;9416:42;;9492:13;9479:9;:26;9475:223;;9526:17;9546:3;:11;;9558:9;9546:22;;;;;;;;:::i;:::-;;;;;;;;;;9526:42;;9618:9;9589:3;:11;;9601:13;9589:26;;;;;;;;:::i;:::-;;;;;;;;;:38;;;;9672:10;9646:3;:12;;:23;9659:9;9646:23;;;;;;;;;;;:36;;;;9507:191;9475:223;9714:3;:11;;:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9755:3;:12;;:19;9768:5;9755:19;;;;;;;;;;;9748:26;;;9798:4;9791:11;;;;;;;9327:532;9842:5;9835:12;;;9191:675;;;;;:::o;24639:654::-;24740:28;;:::i;:::-;24791:7;24786:91;;24835:7;24815:1;:17;;:27;;;;;24857:8;;24786:91;24926:3;24907:11;:15;;;24897:7;:25;;;;:::i;:::-;24896:33;;;;:::i;:::-;24887:1;:6;;:42;;;;;24991:3;24966:11;:21;;;24956:7;:31;;;;:::i;:::-;24955:39;;;;:::i;:::-;24940:1;:12;;:54;;;;;25056:3;25031:11;:21;;;25021:7;:31;;;;:::i;:::-;25020:39;;;;:::i;:::-;25005:1;:12;;:54;;;;;25111:3;25091:11;:16;;;25081:7;:26;;;;:::i;:::-;25080:34;;;;:::i;:::-;25070:1;:7;;:44;;;;;25259:1;:7;;;25231:1;:12;;;25203:1;:12;;;25181:1;:6;;;25158:7;:29;;;;:::i;:::-;:57;;;;:::i;:::-;:85;;;;:::i;:::-;:108;;;;:::i;:::-;25125:1;:17;;:141;;;;;24639:654;;;;;:::o;26147:161::-;26189:7;26210:15;26227;26246:19;:17;:19::i;:::-;26209:56;;;;26293:7;26283;:17;;;;:::i;:::-;26276:24;;;;26147:161;:::o;25301:838::-;25510:15;25540:23;25578:12;25605:18;25638;25671:13;25726:1;25712:15;;25748:7;25738:17;;25773:7;25768:78;;25805:7;25814;25823:1;25826;25829;25832;25797:37;;;;;;;;;;;;;;25768:78;25865:1;:6;;;25858:13;;25895:1;:12;;;25882:25;;25931:1;:12;;;25918:25;;25962:1;:7;;;25954:15;;26043:5;26030:10;26017;26010:4;26000:7;:14;;;;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:48;;;;:::i;:::-;25982:66;;25301:838;;;;;;;;;;;;:::o;26920:134::-;27008:4;26998:7;;:14;;;;:::i;:::-;26988:7;:24;;;;27042:4;27023:11;:15;;;:23;;;;;;;:::i;:::-;;;;;;;;26920:134;;:::o;27062:384::-;27182:10;27145:15;:33;;;:47;;;;;;;:::i;:::-;;;;;;;;27228:10;27203:11;:21;;;:35;;;;;;;:::i;:::-;;;;;;;;27299:10;27274:7;:22;27290:4;27274:22;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;27249:7;:22;27265:4;27249:22;;;;;;;;;;;;;;;:60;;;;27324:11;:26;27344:4;27324:26;;;;;;;;;;;;;;;;;;;;;;;;;27320:119;;;27417:10;27392:7;:22;27408:4;27392:22;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;27367:7;:22;27383:4;27367:22;;;;;;;;;;;;;;;:60;;;;27320:119;27062:384;;:::o;27454:366::-;27567:10;27537:15;:26;;;:40;;;;;;;:::i;:::-;;;;;;;;27613:10;27588:11;:21;;;:35;;;;;;;:::i;:::-;;;;;;;;27686:10;27661:7;:22;27677:4;27661:22;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;27636:7;:22;27652:4;27636:22;;;;;;;;;;;;;;;:60;;;;27711:11;:26;27731:4;27711:26;;;;;;;;;;;;;;;;;;;;;;;;;27707:105;;;27802:10;27777:7;:22;27793:4;27777:22;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;27752:7;:22;27768:4;27752:22;;;;;;;;;;;;;;;:60;;;;27707:105;27454:366;;:::o;27828:175::-;27916:5;27896:11;:16;;;:25;;;;;;;:::i;:::-;;;;;;;;27954:5;27944:7;;:15;;;;:::i;:::-;27934:7;:25;;;;27990:5;27980:7;;:15;;;;:::i;:::-;27970:7;:25;;;;27828:175;;:::o;10494:::-;10582:4;10611:50;10616:3;:10;;10652:5;10636:23;;10628:32;;10611:4;:50::i;:::-;10604:57;;10494:175;;;;:::o;26316:596::-;26367:7;26376;26396:15;26414:7;;26396:25;;26432:15;26450:7;;26432:25;;26473:9;26468:332;26492:9;:16;;;;26488:1;:20;26468:332;;;26576:7;26552;:21;26560:9;26570:1;26560:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26552:21;;;;;;;;;;;;;;;;:31;:83;;;;26628:7;26604;:21;26612:9;26622:1;26612:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26604:21;;;;;;;;;;;;;;;;:31;26552:83;26530:146;;;26659:7;;26668;;26651:25;;;;;;;;;26530:146;26711:7;:21;26719:9;26729:1;26719:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26711:21;;;;;;;;;;;;;;;;26701:7;:31;;;;:::i;:::-;26691:41;;26767:7;:21;26775:9;26785:1;26775:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26767:21;;;;;;;;;;;;;;;;26757:7;:31;;;;:::i;:::-;26747:41;;26510:3;;;;;;;26468:332;;;;26834:7;;26824;;:17;;;;:::i;:::-;26814:7;:27;26810:58;;;26851:7;;26860;;26843:25;;;;;;;;26810:58;26887:7;26896;26879:25;;;;;;26316:596;;;:::o;8892:291::-;8955:4;8977:21;8987:3;8992:5;8977:9;:21::i;:::-;8972:204;;9015:3;:11;;9032:5;9015:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9075:3;:11;;:18;;;;9053:3;:12;;:19;9066:5;9053:19;;;;;;;;;;;:40;;;;9115:4;9108:11;;;;8972:204;9159:5;9152:12;;8892:291;;;;;:::o;9874:161::-;9974:4;10026:1;10003:3;:12;;:19;10016:5;10003:19;;;;;;;;;;;;:24;;9996:31;;9874:161;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:329::-;3750:6;3799:2;3787:9;3778:7;3774:23;3770:32;3767:119;;;3805:79;;:::i;:::-;3767:119;3925:1;3950:53;3995:7;3986:6;3975:9;3971:22;3950:53;:::i;:::-;3940:63;;3896:117;3691:329;;;;:::o;4026:619::-;4103:6;4111;4119;4168:2;4156:9;4147:7;4143:23;4139:32;4136:119;;;4174:79;;:::i;:::-;4136:119;4294:1;4319:53;4364:7;4355:6;4344:9;4340:22;4319:53;:::i;:::-;4309:63;;4265:117;4421:2;4447:53;4492:7;4483:6;4472:9;4468:22;4447:53;:::i;:::-;4437:63;;4392:118;4549:2;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4520:118;4026:619;;;;;:::o;4651:116::-;4721:21;4736:5;4721:21;:::i;:::-;4714:5;4711:32;4701:60;;4757:1;4754;4747:12;4701:60;4651:116;:::o;4773:133::-;4816:5;4854:6;4841:20;4832:29;;4870:30;4894:5;4870:30;:::i;:::-;4773:133;;;;:::o;4912:323::-;4968:6;5017:2;5005:9;4996:7;4992:23;4988:32;4985:119;;;5023:79;;:::i;:::-;4985:119;5143:1;5168:50;5210:7;5201:6;5190:9;5186:22;5168:50;:::i;:::-;5158:60;;5114:114;4912:323;;;;:::o;5241:329::-;5300:6;5349:2;5337:9;5328:7;5324:23;5320:32;5317:119;;;5355:79;;:::i;:::-;5317:119;5475:1;5500:53;5545:7;5536:6;5525:9;5521:22;5500:53;:::i;:::-;5490:63;;5446:117;5241:329;;;;:::o;5576:86::-;5611:7;5651:4;5644:5;5640:16;5629:27;;5576:86;;;:::o;5668:112::-;5751:22;5767:5;5751:22;:::i;:::-;5746:3;5739:35;5668:112;;:::o;5786:214::-;5875:4;5913:2;5902:9;5898:18;5890:26;;5926:67;5990:1;5979:9;5975:17;5966:6;5926:67;:::i;:::-;5786:214;;;;:::o;6006:468::-;6071:6;6079;6128:2;6116:9;6107:7;6103:23;6099:32;6096:119;;;6134:79;;:::i;:::-;6096:119;6254:1;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6225:117;6381:2;6407:50;6449:7;6440:6;6429:9;6425:22;6407:50;:::i;:::-;6397:60;;6352:115;6006:468;;;;;:::o;6480:117::-;6589:1;6586;6579:12;6603:117;6712:1;6709;6702:12;6726:117;6835:1;6832;6825:12;6866:568;6939:8;6949:6;6999:3;6992:4;6984:6;6980:17;6976:27;6966:122;;7007:79;;:::i;:::-;6966:122;7120:6;7107:20;7097:30;;7150:18;7142:6;7139:30;7136:117;;;7172:79;;:::i;:::-;7136:117;7286:4;7278:6;7274:17;7262:29;;7340:3;7332:4;7324:6;7320:17;7310:8;7306:32;7303:41;7300:128;;;7347:79;;:::i;:::-;7300:128;6866:568;;;;;:::o;7440:559::-;7526:6;7534;7583:2;7571:9;7562:7;7558:23;7554:32;7551:119;;;7589:79;;:::i;:::-;7551:119;7737:1;7726:9;7722:17;7709:31;7767:18;7759:6;7756:30;7753:117;;;7789:79;;:::i;:::-;7753:117;7902:80;7974:7;7965:6;7954:9;7950:22;7902:80;:::i;:::-;7884:98;;;;7680:312;7440:559;;;;;:::o;8005:765::-;8091:6;8099;8107;8115;8164:3;8152:9;8143:7;8139:23;8135:33;8132:120;;;8171:79;;:::i;:::-;8132:120;8291:1;8316:53;8361:7;8352:6;8341:9;8337:22;8316:53;:::i;:::-;8306:63;;8262:117;8418:2;8444:53;8489:7;8480:6;8469:9;8465:22;8444:53;:::i;:::-;8434:63;;8389:118;8546:2;8572:53;8617:7;8608:6;8597:9;8593:22;8572:53;:::i;:::-;8562:63;;8517:118;8674:2;8700:53;8745:7;8736:6;8725:9;8721:22;8700:53;:::i;:::-;8690:63;;8645:118;8005:765;;;;;;;:::o;8776:553::-;8953:4;8991:3;8980:9;8976:19;8968:27;;9005:71;9073:1;9062:9;9058:17;9049:6;9005:71;:::i;:::-;9086:72;9154:2;9143:9;9139:18;9130:6;9086:72;:::i;:::-;9168;9236:2;9225:9;9221:18;9212:6;9168:72;:::i;:::-;9250;9318:2;9307:9;9303:18;9294:6;9250:72;:::i;:::-;8776:553;;;;;;;:::o;9335:332::-;9456:4;9494:2;9483:9;9479:18;9471:26;;9507:71;9575:1;9564:9;9560:17;9551:6;9507:71;:::i;:::-;9588:72;9656:2;9645:9;9641:18;9632:6;9588:72;:::i;:::-;9335:332;;;;;:::o;9673:118::-;9760:24;9778:5;9760:24;:::i;:::-;9755:3;9748:37;9673:118;;:::o;9797:222::-;9890:4;9928:2;9917:9;9913:18;9905:26;;9941:71;10009:1;9998:9;9994:17;9985:6;9941:71;:::i;:::-;9797:222;;;;:::o;10025:619::-;10102:6;10110;10118;10167:2;10155:9;10146:7;10142:23;10138:32;10135:119;;;10173:79;;:::i;:::-;10135:119;10293:1;10318:53;10363:7;10354:6;10343:9;10339:22;10318:53;:::i;:::-;10308:63;;10264:117;10420:2;10446:53;10491:7;10482:6;10471:9;10467:22;10446:53;:::i;:::-;10436:63;;10391:118;10548:2;10574:53;10619:7;10610:6;10599:9;10595:22;10574:53;:::i;:::-;10564:63;;10519:118;10025:619;;;;;:::o;10650:474::-;10718:6;10726;10775:2;10763:9;10754:7;10750:23;10746:32;10743:119;;;10781:79;;:::i;:::-;10743:119;10901:1;10926:53;10971:7;10962:6;10951:9;10947:22;10926:53;:::i;:::-;10916:63;;10872:117;11028:2;11054:53;11099:7;11090:6;11079:9;11075:22;11054:53;:::i;:::-;11044:63;;10999:118;10650:474;;;;;:::o;11130:182::-;11270:34;11266:1;11258:6;11254:14;11247:58;11130:182;:::o;11318:366::-;11460:3;11481:67;11545:2;11540:3;11481:67;:::i;:::-;11474:74;;11557:93;11646:3;11557:93;:::i;:::-;11675:2;11670:3;11666:12;11659:19;;11318:366;;;:::o;11690:419::-;11856:4;11894:2;11883:9;11879:18;11871:26;;11943:9;11937:4;11933:20;11929:1;11918:9;11914:17;11907:47;11971:131;12097:4;11971:131;:::i;:::-;11963:139;;11690:419;;;:::o;12115:229::-;12255:34;12251:1;12243:6;12239:14;12232:58;12324:12;12319:2;12311:6;12307:15;12300:37;12115:229;:::o;12350:366::-;12492:3;12513:67;12577:2;12572:3;12513:67;:::i;:::-;12506:74;;12589:93;12678:3;12589:93;:::i;:::-;12707:2;12702:3;12698:12;12691:19;;12350:366;;;:::o;12722:419::-;12888:4;12926:2;12915:9;12911:18;12903:26;;12975:9;12969:4;12965:20;12961:1;12950:9;12946:17;12939:47;13003:131;13129:4;13003:131;:::i;:::-;12995:139;;12722:419;;;:::o;13147:173::-;13287:25;13283:1;13275:6;13271:14;13264:49;13147:173;:::o;13326:366::-;13468:3;13489:67;13553:2;13548:3;13489:67;:::i;:::-;13482:74;;13565:93;13654:3;13565:93;:::i;:::-;13683:2;13678:3;13674:12;13667:19;;13326:366;;;:::o;13698:419::-;13864:4;13902:2;13891:9;13887:18;13879:26;;13951:9;13945:4;13941:20;13937:1;13926:9;13922:17;13915:47;13979:131;14105:4;13979:131;:::i;:::-;13971:139;;13698:419;;;:::o;14123:180::-;14171:77;14168:1;14161:88;14268:4;14265:1;14258:15;14292:4;14289:1;14282:15;14309:180;14357:77;14354:1;14347:88;14454:4;14451:1;14444:15;14478:4;14475:1;14468:15;14495:194;14535:4;14555:20;14573:1;14555:20;:::i;:::-;14550:25;;14589:20;14607:1;14589:20;:::i;:::-;14584:25;;14633:1;14630;14626:9;14618:17;;14657:1;14651:4;14648:11;14645:37;;;14662:18;;:::i;:::-;14645:37;14495:194;;;;:::o;14695:180::-;14743:77;14740:1;14733:88;14840:4;14837:1;14830:15;14864:4;14861:1;14854:15;14881:191;14921:3;14940:20;14958:1;14940:20;:::i;:::-;14935:25;;14974:20;14992:1;14974:20;:::i;:::-;14969:25;;15017:1;15014;15010:9;15003:16;;15038:3;15035:1;15032:10;15029:36;;;15045:18;;:::i;:::-;15029:36;14881:191;;;;:::o;15078:181::-;15218:33;15214:1;15206:6;15202:14;15195:57;15078:181;:::o;15265:366::-;15407:3;15428:67;15492:2;15487:3;15428:67;:::i;:::-;15421:74;;15504:93;15593:3;15504:93;:::i;:::-;15622:2;15617:3;15613:12;15606:19;;15265:366;;;:::o;15637:419::-;15803:4;15841:2;15830:9;15826:18;15818:26;;15890:9;15884:4;15880:20;15876:1;15865:9;15861:17;15854:47;15918:131;16044:4;15918:131;:::i;:::-;15910:139;;15637:419;;;:::o;16062:177::-;16202:29;16198:1;16190:6;16186:14;16179:53;16062:177;:::o;16245:366::-;16387:3;16408:67;16472:2;16467:3;16408:67;:::i;:::-;16401:74;;16484:93;16573:3;16484:93;:::i;:::-;16602:2;16597:3;16593:12;16586:19;;16245:366;;;:::o;16617:419::-;16783:4;16821:2;16810:9;16806:18;16798:26;;16870:9;16864:4;16860:20;16856:1;16845:9;16841:17;16834:47;16898:131;17024:4;16898:131;:::i;:::-;16890:139;;16617:419;;;:::o;17042:225::-;17182:34;17178:1;17170:6;17166:14;17159:58;17251:8;17246:2;17238:6;17234:15;17227:33;17042:225;:::o;17273:366::-;17415:3;17436:67;17500:2;17495:3;17436:67;:::i;:::-;17429:74;;17512:93;17601:3;17512:93;:::i;:::-;17630:2;17625:3;17621:12;17614:19;;17273:366;;;:::o;17645:419::-;17811:4;17849:2;17838:9;17834:18;17826:26;;17898:9;17892:4;17888:20;17884:1;17873:9;17869:17;17862:47;17926:131;18052:4;17926:131;:::i;:::-;17918:139;;17645:419;;;:::o;18070:223::-;18210:34;18206:1;18198:6;18194:14;18187:58;18279:6;18274:2;18266:6;18262:15;18255:31;18070:223;:::o;18299:366::-;18441:3;18462:67;18526:2;18521:3;18462:67;:::i;:::-;18455:74;;18538:93;18627:3;18538:93;:::i;:::-;18656:2;18651:3;18647:12;18640:19;;18299:366;;;:::o;18671:419::-;18837:4;18875:2;18864:9;18860:18;18852:26;;18924:9;18918:4;18914:20;18910:1;18899:9;18895:17;18888:47;18952:131;19078:4;18952:131;:::i;:::-;18944:139;;18671:419;;;:::o;19096:221::-;19236:34;19232:1;19224:6;19220:14;19213:58;19305:4;19300:2;19292:6;19288:15;19281:29;19096:221;:::o;19323:366::-;19465:3;19486:67;19550:2;19545:3;19486:67;:::i;:::-;19479:74;;19562:93;19651:3;19562:93;:::i;:::-;19680:2;19675:3;19671:12;19664:19;;19323:366;;;:::o;19695:419::-;19861:4;19899:2;19888:9;19884:18;19876:26;;19948:9;19942:4;19938:20;19934:1;19923:9;19919:17;19912:47;19976:131;20102:4;19976:131;:::i;:::-;19968:139;;19695:419;;;:::o;20120:177::-;20260:29;20256:1;20248:6;20244:14;20237:53;20120:177;:::o;20303:366::-;20445:3;20466:67;20530:2;20525:3;20466:67;:::i;:::-;20459:74;;20542:93;20631:3;20542:93;:::i;:::-;20660:2;20655:3;20651:12;20644:19;;20303:366;;;:::o;20675:419::-;20841:4;20879:2;20868:9;20864:18;20856:26;;20928:9;20922:4;20918:20;20914:1;20903:9;20899:17;20892:47;20956:131;21082:4;20956:131;:::i;:::-;20948:139;;20675:419;;;:::o;21100:224::-;21240:34;21236:1;21228:6;21224:14;21217:58;21309:7;21304:2;21296:6;21292:15;21285:32;21100:224;:::o;21330:366::-;21472:3;21493:67;21557:2;21552:3;21493:67;:::i;:::-;21486:74;;21569:93;21658:3;21569:93;:::i;:::-;21687:2;21682:3;21678:12;21671:19;;21330:366;;;:::o;21702:419::-;21868:4;21906:2;21895:9;21891:18;21883:26;;21955:9;21949:4;21945:20;21941:1;21930:9;21926:17;21919:47;21983:131;22109:4;21983:131;:::i;:::-;21975:139;;21702:419;;;:::o;22127:222::-;22267:34;22263:1;22255:6;22251:14;22244:58;22336:5;22331:2;22323:6;22319:15;22312:30;22127:222;:::o;22355:366::-;22497:3;22518:67;22582:2;22577:3;22518:67;:::i;:::-;22511:74;;22594:93;22683:3;22594:93;:::i;:::-;22712:2;22707:3;22703:12;22696:19;;22355:366;;;:::o;22727:419::-;22893:4;22931:2;22920:9;22916:18;22908:26;;22980:9;22974:4;22970:20;22966:1;22955:9;22951:17;22944:47;23008:131;23134:4;23008:131;:::i;:::-;23000:139;;22727:419;;;:::o;23152:228::-;23292:34;23288:1;23280:6;23276:14;23269:58;23361:11;23356:2;23348:6;23344:15;23337:36;23152:228;:::o;23386:366::-;23528:3;23549:67;23613:2;23608:3;23549:67;:::i;:::-;23542:74;;23625:93;23714:3;23625:93;:::i;:::-;23743:2;23738:3;23734:12;23727:19;;23386:366;;;:::o;23758:419::-;23924:4;23962:2;23951:9;23947:18;23939:26;;24011:9;24005:4;24001:20;23997:1;23986:9;23982:17;23975:47;24039:131;24165:4;24039:131;:::i;:::-;24031:139;;23758:419;;;:::o;24183:235::-;24323:34;24319:1;24311:6;24307:14;24300:58;24392:18;24387:2;24379:6;24375:15;24368:43;24183:235;:::o;24424:366::-;24566:3;24587:67;24651:2;24646:3;24587:67;:::i;:::-;24580:74;;24663:93;24752:3;24663:93;:::i;:::-;24781:2;24776:3;24772:12;24765:19;;24424:366;;;:::o;24796:419::-;24962:4;25000:2;24989:9;24985:18;24977:26;;25049:9;25043:4;25039:20;25035:1;25024:9;25020:17;25013:47;25077:131;25203:4;25077:131;:::i;:::-;25069:139;;24796:419;;;:::o;25221:155::-;25361:7;25357:1;25349:6;25345:14;25338:31;25221:155;:::o;25382:365::-;25524:3;25545:66;25609:1;25604:3;25545:66;:::i;:::-;25538:73;;25620:93;25709:3;25620:93;:::i;:::-;25738:2;25733:3;25729:12;25722:19;;25382:365;;;:::o;25753:419::-;25919:4;25957:2;25946:9;25942:18;25934:26;;26006:9;26000:4;25996:20;25992:1;25981:9;25977:17;25970:47;26034:131;26160:4;26034:131;:::i;:::-;26026:139;;25753:419;;;:::o;26178:410::-;26218:7;26241:20;26259:1;26241:20;:::i;:::-;26236:25;;26275:20;26293:1;26275:20;:::i;:::-;26270:25;;26330:1;26327;26323:9;26352:30;26370:11;26352:30;:::i;:::-;26341:41;;26531:1;26522:7;26518:15;26515:1;26512:22;26492:1;26485:9;26465:83;26442:139;;26561:18;;:::i;:::-;26442:139;26226:362;26178:410;;;;:::o;26594:180::-;26642:77;26639:1;26632:88;26739:4;26736:1;26729:15;26763:4;26760:1;26753:15;26780:185;26820:1;26837:20;26855:1;26837:20;:::i;:::-;26832:25;;26871:20;26889:1;26871:20;:::i;:::-;26866:25;;26910:1;26900:35;;26915:18;;:::i;:::-;26900:35;26957:1;26954;26950:9;26945:14;;26780:185;;;;:::o

Swarm Source

ipfs://68cd60b0772de160955b552913aace652b78ab0cbc2849012cd1c9e3ffa2e2d9
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.