false
true
0

Contract Address Details

0xd62F941453542D0eA68F163867c58C7d36EF0542

Contract Name
Fountain
Creator
0x77dfdb–dbf178 at 0xb8ac1b–a2071d
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
5,729 Transactions
Transfers
0 Transfers
Gas Used
0
Last Balance Update
25998737
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
Fountain




Optimization enabled
false
Compiler version
v0.8.19+commit.7dd6d404




EVM Version
default




Verified at
2024-08-04T19:31:50.731959Z

Contract source code

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

library SafeMath {
    
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, 'SafeMath: addition overflow');

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, 'SafeMath: subtraction overflow');
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, 'SafeMath: multiplication overflow');

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, 'SafeMath: division by zero');
    }

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

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, 'SafeMath: modulo by zero');
    }

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

    function min(uint256 x, uint256 y) internal pure returns (uint256 z) {
        z = x < y ? x : y;
    }

    function sqrt(uint256 y) internal pure returns (uint256 z) {
        if (y > 3) {
            z = y;
            uint256 x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}

library Address {
   
    error AddressInsufficientBalance(address account);

    error AddressEmptyCode(address target);

    error FailedInnerCall();

    function sendValue(address payable recipient, uint256 amount) internal {
        if (address(this).balance < amount) {
            revert AddressInsufficientBalance(address(this));
        }

        (bool success, ) = recipient.call{value: amount}("");
        if (!success) {
            revert FailedInnerCall();
        }
    }

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

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        if (address(this).balance < value) {
            revert AddressInsufficientBalance(address(this));
        }
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata);
    }

    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata
    ) internal view returns (bytes memory) {
        if (!success) {
            _revert(returndata);
        } else {
            
            if (returndata.length == 0 && target.code.length == 0) {
                revert AddressEmptyCode(target);
            }
            return returndata;
        }
    }

    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {
        if (!success) {
            _revert(returndata);
        } else {
            return returndata;
        }
    }

    function _revert(bytes memory returndata) private pure {
        if (returndata.length > 0) {
            
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert FailedInnerCall();
        }
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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 SafeERC20 {
    using Address for address;

    /**
     * @dev An operation with an ERC-20 token failed.
     */
    error SafeERC20FailedOperation(address token);

    /**
     * @dev Indicates a failed `decreaseAllowance` request.
     */
    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);

    /**
     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,
     * non-reverting calls are assumed to be successful.
     */
    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));
    }

    /**
     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the
     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.
     */
    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));
    }

    /**
     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,
     * non-reverting calls are assumed to be successful.
     */
    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 oldAllowance = token.allowance(address(this), spender);
        forceApprove(token, spender, oldAllowance + value);
    }

    /**
     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no
     * value, non-reverting calls are assumed to be successful.
     */
    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {
        unchecked {
            uint256 currentAllowance = token.allowance(address(this), spender);
            if (currentAllowance < requestedDecrease) {
                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);
            }
            forceApprove(token, spender, currentAllowance - requestedDecrease);
        }
    }

    /**
     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,
     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval
     * to be set to zero before setting it to a non-zero value, such as USDT.
     */
    function forceApprove(IERC20 token, address spender, uint256 value) internal {
        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));

        if (!_callOptionalReturnBool(token, approvalCall)) {
            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));
            _callOptionalReturn(token, approvalCall);
        }
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

        bytes memory returndata = address(token).functionCall(data);
        if (returndata.length != 0 && !abi.decode(returndata, (bool))) {
            revert SafeERC20FailedOperation(address(token));
        }
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     *
     * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.
     */
    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false
        // and not revert is the subcall reverts.

        (bool success, bytes memory returndata) = address(token).call(data);
        return success && (returndata.length == 0 || abi.decode(returndata, (bool))) && address(token).code.length > 0;
    }
}

interface FarmToken is IERC20 {
	function mint(address to, uint256 amount) external;
}

abstract contract Auth { address internal owner; mapping(address => bool) internal authorizations;

    constructor(address _owner) { owner = _owner; authorizations[_owner] = true; }

    modifier onlyOwner() { require(isOwner(msg.sender), "You Arent That Special"); _; }
    modifier authorized() { require(isAuthorized(msg.sender), "You Make Me Laugh"); _; }
    function authorize(address adr) public onlyOwner { authorizations[adr] = true; }
    function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; }
    function isOwner(address account) public view returns (bool) { return account == owner; }
    function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; }
    function transferOwnership(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); }
    event OwnershipTransferred(address owner);
}


contract Fountain is Auth {
    using SafeMath for uint256;

    FarmToken public farmToken;
    IERC20 public refToken;

    address TOKEN = 0xC6B28B2E3Bf9fF26299D540a4D654F7ade4dFdB0;

    address referralToken = 0xD1fcD37A275Fd04197a40dBE481766a4e891C4C4;

    uint256 public DAILY_INTEREST = 10; // 1% interest in basis points (1% = 10 / 1000)
    uint256 public constant PERCENTS_DIVIDER = 1000;
    uint256 public constant WITHDRAWAL_TAX = 150; // 15% tax
    uint256 public constant COMPOUND_TAX = 50; // 5% tax
    uint256 public constant DEPOSIT_TAX = 100; // 10% tax
    uint256 public MIN_INVEST_LIMIT = 10 * 1e18;
    uint256 public constant WALLET_DEPOSIT_LIMIT = 40000 * 1e18;
    uint256 public constant MAX_PAYOUT_MULTIPLIER = 3; // 3x initial deposit
    uint256 public constant REFERRAL = 50; // 5% referral reward
    uint256 public MIN_REF_TOKEN_AMOUNT = 250000; // 100k token per level

    uint256 public constant IRS_TAX_LEVEL_1 = 40000 * 1e18; // 80k tokens
    uint256 public constant IRS_TAX_LEVEL_2 = 60000 * 1e18; // 90k tokens
    uint256 public constant IRS_TAX_LEVEL_3 = 80000 * 1e18; // 100k tokens
    uint256 public constant IRS_TAX_LEVEL_4 = 100000 * 1e18; // 110k tokens

    uint256 public totalStaked;
    uint256 public totalUsers;
    uint256 public totalRefBonus;
    uint256 public totalWithdrawn;

    bool public contractStarted;
    bool public blacklistActive = true;
    mapping(address => bool) public blacklisted;
    
    address private growth;
    address private trash;

    uint256 public userCount;

    struct User {
        uint256 initialDeposit;
        uint256 userDeposit;
        uint256 lastDepositTime;
        uint256 totalWithdrawn;
        address referrer;
        uint256 referrals;
        uint256 referralReward;
    }

    mapping(address => User) public users;

    event ReferralRewardSkipped(address indexed referrer, address indexed user, uint256 amount, string reason);


    constructor() Auth(msg.sender) {
        farmToken = FarmToken(TOKEN);
        refToken = IERC20(referralToken);
        growth = 0xC6B28B2E3Bf9fF26299D540a4D654F7ade4dFdB0;
        trash = 0x000000000000000000000000000000000000dEaD;

        contractStarted = true;
    }

    function isContract(address addr) internal view returns (bool) {
        uint size;
        assembly { size := extcodesize(addr) }
        return size > 0;
    }

    function setBlacklist(address wallet, bool status) external onlyOwner {
        blacklisted[wallet] = status;
    }

    function deposit(uint256 amount, address ref) public {
    require(contractStarted, "Contract not started yet");
    require(!blacklisted[msg.sender], "Address is blacklisted");
    require(amount >= MIN_INVEST_LIMIT, "Minimum investment not met");

    User storage user = users[msg.sender];

    // Compound existing interest
    compoundInterest(user);

    if (user.initialDeposit == 0) {
        userCount++;
    }

    require(user.initialDeposit.add(amount) <= WALLET_DEPOSIT_LIMIT, "Max deposit limit reached");

    uint256 tax = amount.mul(DEPOSIT_TAX).div(PERCENTS_DIVIDER);
    uint256 amountAfterTax = amount.sub(tax);

    farmToken.transferFrom(address(msg.sender), address(this), amount);

    user.userDeposit = user.userDeposit.add(amount);
    user.initialDeposit = user.initialDeposit.add(amount);
    user.lastDepositTime = block.timestamp;

    totalStaked = totalStaked.add(amountAfterTax);

    farmToken.mint(address(this), amount.mul(2).add(tax));

    // Distribute the deposit tax
    farmToken.transfer(growth, tax.mul(20).div(100));
    farmToken.transfer(trash, tax.mul(80).div(100));

    if (user.referrer == address(0)) {
        require(ref == address(0) || users[ref].initialDeposit > 0, "Referrer must be a valid user");
        
        if (ref != msg.sender) {
            user.referrer = ref;
        }

        address upline1 = user.referrer;
        if (upline1 != address(0)) {
            users[upline1].referrals = users[upline1].referrals.add(1);
        }
    }
            
    if (user.referrer != address(0)) {
        address upline = user.referrer;
        if (upline != address(0)) {
            uint256 refTokenBalance = refToken.balanceOf(upline);
            if (refTokenBalance >= MIN_REF_TOKEN_AMOUNT) {
                uint256 refRewards = amount.mul(REFERRAL).div(PERCENTS_DIVIDER);
                farmToken.mint(address(this), refRewards);
                farmToken.transfer(upline, refRewards);
                users[upline].referralReward = users[upline].referralReward.add(refRewards);
                totalRefBonus = totalRefBonus.add(refRewards);
            } else {
                emit ReferralRewardSkipped(upline, msg.sender, amount, "Insufficient refToken balance");
            }
        }
    }
    }

    function compoundInterest(User storage user) internal {
    uint256 interest = calculateInterest(user.initialDeposit, user.userDeposit, user.lastDepositTime, user.totalWithdrawn);
    
    if (interest > 0) {
        uint256 compoundTax = interest.mul(COMPOUND_TAX).div(PERCENTS_DIVIDER);
        
        user.userDeposit = user.userDeposit.add(interest);
        user.lastDepositTime = block.timestamp;

        // Mint half of the interest amount
        farmToken.mint(address(this), compoundTax);

        // Transfer the compound tax
        farmToken.transfer(growth, compoundTax.mul(10).div(100));  // 25% to growth
        farmToken.transfer(trash, compoundTax.mul(90).div(100));  // 75% to trash
    }
    }

    function withdraw() public {
    require(contractStarted, "Contract not started yet");
    require(!blacklisted[msg.sender], "Address is blacklisted");

    User storage user = users[msg.sender];
    uint256 interest = calculateInterest(user.initialDeposit, user.userDeposit, user.lastDepositTime, user.totalWithdrawn);
    require(interest > 0, "No interest accumulated");

    uint256 maxPayout = user.initialDeposit.mul(MAX_PAYOUT_MULTIPLIER);
    require(user.totalWithdrawn.add(interest) <= maxPayout, "Exceeds max payout");

    // Apply withdrawal tax
    uint256 withdrawalTax = interest.mul(WITHDRAWAL_TAX).div(PERCENTS_DIVIDER);

    // Calculate payout before IRS tax
    uint256 preTaxPayout = interest.sub(withdrawalTax);

    // Apply IRS tax
    uint256 irsTax = 0;
    uint256 totalClaimed = user.totalWithdrawn.add(interest);
    if (totalClaimed < IRS_TAX_LEVEL_1) {
        irsTax = 0;
    } else if (totalClaimed < IRS_TAX_LEVEL_2) {
        irsTax = preTaxPayout.mul(10).div(100);
    } else if (totalClaimed < IRS_TAX_LEVEL_3) {
        irsTax = preTaxPayout.mul(20).div(100);
    } else if (totalClaimed < IRS_TAX_LEVEL_4) {
        irsTax = preTaxPayout.mul(30).div(100);
    } else {
        irsTax = preTaxPayout.mul(40).div(100);
    }

    uint256 totalTax = withdrawalTax.add(irsTax);
    uint256 payout = interest.sub(totalTax);

    user.totalWithdrawn = user.totalWithdrawn.add(interest);
    user.lastDepositTime = block.timestamp;

    farmToken.transfer(msg.sender, payout);
    farmToken.transfer(growth, totalTax.mul(20).div(100));
    farmToken.transfer(trash, totalTax.mul(80).div(100));

    
    }

    function compound() public {
        require(contractStarted, "Contract not started yet");
        require(!blacklisted[msg.sender], "Address is blacklisted");

        User storage user = users[msg.sender];
        uint256 interest = calculateInterest(user.initialDeposit, user.userDeposit, user.lastDepositTime, user.totalWithdrawn);
        require(interest > 0, "No interest accumulated");

        uint256 tax = interest.mul(COMPOUND_TAX).div(PERCENTS_DIVIDER);

        user.userDeposit = user.userDeposit.add(interest);
        user.lastDepositTime = block.timestamp;

        farmToken.mint(address(this), tax);

        farmToken.transfer(growth, tax.mul(10).div(100));
        farmToken.transfer(trash, tax.mul(90).div(100));
    }

    function getUserInfo(address _adr) public view returns (
        uint256 _initialDeposit, 
        uint256 _userDeposit, 
        uint256 _referralReward, 
        uint256 _lastDepositTime, 
        uint256 _totalWithdrawn, 
        address _referrer, 
        uint256 _referrals) {
    
        _initialDeposit = users[_adr].initialDeposit;
        _userDeposit = users[_adr].userDeposit;
        _referralReward = users[_adr].referralReward;
        _lastDepositTime = users[_adr].lastDepositTime;
        _totalWithdrawn = users[_adr].totalWithdrawn; 
        _referrer = users[_adr].referrer;
        _referrals = users[_adr].referrals;
    }

    function calculateInterest(uint256 _initialDeposit, uint256 _userDeposit, uint256 _lastDepositTime, uint256 _totalWithdrawn) public view returns (uint256) {
    uint256 maxPayout = _initialDeposit.mul(MAX_PAYOUT_MULTIPLIER);
    uint256 remainingPayout = maxPayout.sub(_totalWithdrawn);

    uint256 duration = block.timestamp.sub(_lastDepositTime);
    uint256 dailyInterest = _userDeposit.mul(DAILY_INTEREST).div(PERCENTS_DIVIDER);
    uint256 interest = dailyInterest.mul(duration).div(1 days);

    if (interest > remainingPayout) {
        interest = remainingPayout;
    }

    return interest;
    }

    function getAvailableEarnings(address userAddress) public view returns (uint256) {
    User storage user = users[userAddress];
    uint256 interest = calculateInterest(user.initialDeposit, user.userDeposit, user.lastDepositTime, user.totalWithdrawn);
    return interest;
    }        

    function getSiteInfo() public view returns (uint256 _totalStaked, uint256 _totalRefBonus, uint256 _totalUsers) {
    _totalUsers = userCount;
    return (totalStaked, totalRefBonus, _totalUsers);
    }

    function getUserCount() public view returns (uint256) {
    return userCount;
    }

    function getBalance() public view returns (uint256) {
        return farmToken.balanceOf(address(this));
    }

    function changeGrowth(address newGrowth) external onlyOwner {
        growth = newGrowth;
    }

    function newDaily (uint256 _newDaily) external onlyOwner {
        DAILY_INTEREST = _newDaily;
    }

    function newMinRefToken (uint256 _newMin) external onlyOwner {
        MIN_REF_TOKEN_AMOUNT = _newMin;
    }

    function newMINInvest (uint256 _newInvestMIn) external onlyOwner{
        MIN_INVEST_LIMIT = _newInvestMIn;
    }
    
    function changeReferrer(address newReferrer) public {
    require(contractStarted, "Contract not started yet");
    require(!blacklisted[msg.sender], "Address is blacklisted");
    require(newReferrer != msg.sender, "Cannot refer yourself");
    require(newReferrer == address(0) || users[newReferrer].initialDeposit > 0, "Referrer must be a valid user");

    User storage user = users[msg.sender];

    // Only proceed if the new referrer is different
    if (user.referrer != newReferrer) {
        // Reduce the referral count for the current referrer
        if (user.referrer != address(0)) {
            users[user.referrer].referrals = users[user.referrer].referrals.sub(1);
        }

        // Update the new referrer
        user.referrer = newReferrer;

        // Increment referrals count for the new referrer
        if (newReferrer != address(0)) {
            users[newReferrer].referrals = users[newReferrer].referrals.add(1);
        }
    }
    }

}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":false}],"anonymous":false},{"type":"event","name":"ReferralRewardSkipped","inputs":[{"type":"address","name":"referrer","internalType":"address","indexed":true},{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false},{"type":"string","name":"reason","internalType":"string","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"COMPOUND_TAX","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"DAILY_INTEREST","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"DEPOSIT_TAX","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"IRS_TAX_LEVEL_1","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"IRS_TAX_LEVEL_2","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"IRS_TAX_LEVEL_3","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"IRS_TAX_LEVEL_4","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"MAX_PAYOUT_MULTIPLIER","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"MIN_INVEST_LIMIT","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"MIN_REF_TOKEN_AMOUNT","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"PERCENTS_DIVIDER","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"REFERRAL","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"WALLET_DEPOSIT_LIMIT","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"WITHDRAWAL_TAX","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"authorize","inputs":[{"type":"address","name":"adr","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"blacklistActive","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"blacklisted","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"calculateInterest","inputs":[{"type":"uint256","name":"_initialDeposit","internalType":"uint256"},{"type":"uint256","name":"_userDeposit","internalType":"uint256"},{"type":"uint256","name":"_lastDepositTime","internalType":"uint256"},{"type":"uint256","name":"_totalWithdrawn","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"changeGrowth","inputs":[{"type":"address","name":"newGrowth","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"changeReferrer","inputs":[{"type":"address","name":"newReferrer","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"compound","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"contractStarted","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"deposit","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"},{"type":"address","name":"ref","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract FarmToken"}],"name":"farmToken","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getAvailableEarnings","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getBalance","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"_totalStaked","internalType":"uint256"},{"type":"uint256","name":"_totalRefBonus","internalType":"uint256"},{"type":"uint256","name":"_totalUsers","internalType":"uint256"}],"name":"getSiteInfo","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserCount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"_initialDeposit","internalType":"uint256"},{"type":"uint256","name":"_userDeposit","internalType":"uint256"},{"type":"uint256","name":"_referralReward","internalType":"uint256"},{"type":"uint256","name":"_lastDepositTime","internalType":"uint256"},{"type":"uint256","name":"_totalWithdrawn","internalType":"uint256"},{"type":"address","name":"_referrer","internalType":"address"},{"type":"uint256","name":"_referrals","internalType":"uint256"}],"name":"getUserInfo","inputs":[{"type":"address","name":"_adr","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isAuthorized","inputs":[{"type":"address","name":"adr","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isOwner","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"newDaily","inputs":[{"type":"uint256","name":"_newDaily","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"newMINInvest","inputs":[{"type":"uint256","name":"_newInvestMIn","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"newMinRefToken","inputs":[{"type":"uint256","name":"_newMin","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IERC20"}],"name":"refToken","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setBlacklist","inputs":[{"type":"address","name":"wallet","internalType":"address"},{"type":"bool","name":"status","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalRefBonus","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalStaked","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalUsers","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalWithdrawn","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"adr","internalType":"address payable"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"unauthorize","inputs":[{"type":"address","name":"adr","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"userCount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"initialDeposit","internalType":"uint256"},{"type":"uint256","name":"userDeposit","internalType":"uint256"},{"type":"uint256","name":"lastDepositTime","internalType":"uint256"},{"type":"uint256","name":"totalWithdrawn","internalType":"uint256"},{"type":"address","name":"referrer","internalType":"address"},{"type":"uint256","name":"referrals","internalType":"uint256"},{"type":"uint256","name":"referralReward","internalType":"uint256"}],"name":"users","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"withdraw","inputs":[]}]
              

Contract Creation Code

Verify & Publish
0x608060405273c6b28b2e3bf9ff26299d540a4d654f7ade4dfdb0600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d1fcd37a275fd04197a40dbe481766a4e891c4c4600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a600655678ac7230489e800006007556203d0906008556001600d60016101000a81548160ff0219169083151502179055503480156100ed57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c6b28b2e3bf9ff26299d540a4d654f7ade4dfdb0600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60006101000a81548160ff02191690831515021790555061411d8061030f6000396000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c80638b3915531161015c578063c63568c7116100ce578063e889795911610087578063e88979591461076c578063f0b37c041461078a578063f2fde38b146107a6578063f6546372146107c2578063f69e2046146107e0578063fe9fbb80146107ea5761027f565b8063c63568c7146106aa578063cd329fc3146106c8578063d054ac9c146106e6578063d48db82714610704578063d4e144a614610720578063dbac26e91461073c5761027f565b8063b6a5d7de11610120578063b6a5d7de146105fa578063b6e6fcf614610616578063b8fd179414610634578063bd97ce3a14610652578063bff1f9e11461066e578063c2442f931461068c5761027f565b80638b3915531461054e5780639fd37a881461056c578063a87430ba1461058a578063ae5a97aa146105c0578063b5cb15f7146105dc5761027f565b8063333f57b3116101f55780636386c1c7116101b95780636386c1c71461046057806364c03a5e1461049657806369b11dd5146104c65780636e553f65146104e4578063724dfc9214610500578063817b1cd2146105305761027f565b8063333f57b3146103dc5780633ccfd60b146103fa57806340572b7d146104045780634b319713146104225780634ce87053146104405761027f565b80631848b8dc116102475780631848b8dc146103185780631855fac8146103365780631cff0825146103545780632363c24814610372578063267edd2f1461038e5780632f54bf6e146103ac5761027f565b806301c234a8146102845780630420c98e146102a257806307973ccf146102c057806312065fe0146102de578063153b0d1e146102fc575b600080fd5b61028c61081a565b60405161029991906133a3565b60405180910390f35b6102aa610820565b6040516102b791906133a3565b60405180910390f35b6102c8610825565b6040516102d591906133a3565b60405180910390f35b6102e661082b565b6040516102f391906133a3565b60405180910390f35b61031660048036038101906103119190613459565b6108ce565b005b610320610971565b60405161032d91906133a3565b60405180910390f35b61033e61097f565b60405161034b91906133a3565b60405180910390f35b61035c61098d565b60405161036991906134f8565b60405180910390f35b61038c6004803603810190610387919061353f565b6109b3565b005b610396610a05565b6040516103a391906133a3565b60405180910390f35b6103c660048036038101906103c1919061356c565b610a0b565b6040516103d391906135a8565b60405180910390f35b6103e4610a64565b6040516103f191906135a8565b60405180910390f35b610402610a77565b005b61040c6110a9565b60405161041991906133a3565b60405180910390f35b61042a6110b7565b60405161043791906133a3565b60405180910390f35b6104486110bd565b604051610457939291906135c3565b60405180910390f35b61047a6004803603810190610475919061356c565b6110d6565b60405161048d9796959493929190613609565b60405180910390f35b6104b060048036038101906104ab919061356c565b6112ef565b6040516104bd91906133a3565b60405180910390f35b6104ce61135d565b6040516104db91906133a3565b60405180910390f35b6104fe60048036038101906104f99190613678565b611363565b005b61051a600480360381019061051591906136b8565b611f94565b60405161052791906133a3565b60405180910390f35b610538612050565b60405161054591906133a3565b60405180910390f35b610556612056565b60405161056391906133a3565b60405180910390f35b61057461205b565b60405161058191906133a3565b60405180910390f35b6105a4600480360381019061059f919061356c565b612069565b6040516105b7979695949392919061371f565b60405180910390f35b6105da60048036038101906105d5919061353f565b6120cb565b005b6105e461211d565b6040516105f191906133a3565b60405180910390f35b610614600480360381019061060f919061356c565b612127565b005b61061e6121c9565b60405161062b91906135a8565b60405180910390f35b61063c6121dc565b60405161064991906133a3565b60405180910390f35b61066c6004803603810190610667919061356c565b6121e1565b005b6106766126d7565b60405161068391906133a3565b60405180910390f35b6106946126dd565b6040516106a191906137af565b60405180910390f35b6106b2612703565b6040516106bf91906133a3565b60405180910390f35b6106d0612708565b6040516106dd91906133a3565b60405180910390f35b6106ee61270e565b6040516106fb91906133a3565b60405180910390f35b61071e6004803603810190610719919061356c565b612714565b005b61073a6004803603810190610735919061353f565b6127a0565b005b6107566004803603810190610751919061356c565b6127f2565b60405161076391906135a8565b60405180910390f35b610774612812565b60405161078191906133a3565b60405180910390f35b6107a4600480360381019061079f919061356c565b612820565b005b6107c060048036038101906107bb9190613808565b6128c3565b005b6107ca6129dc565b6040516107d791906133a3565b60405180910390f35b6107e86129e1565b005b61080460048036038101906107ff919061356c565b612e1d565b60405161081191906135a8565b60405180910390f35b6103e881565b609681565b60115481565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108889190613835565b602060405180830381865afa1580156108a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c99190613865565b905090565b6108d733610a0b565b610916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090d906138ef565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b690878678326eac900000081565b690878678326eac900000081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109bc33610a0b565b6109fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f2906138ef565b60405180910390fd5b8060078190555050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600d60009054906101000a900460ff1681565b600d60009054906101000a900460ff16610ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abd9061395b565b60405180910390fd5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4a906139c7565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000610bb48260000154836001015484600201548560030154611f94565b905060008111610bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf090613a33565b60405180910390fd5b6000610c1360038460000154612e7390919063ffffffff16565b905080610c2d838560030154612eed90919063ffffffff16565b1115610c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6590613a9f565b60405180910390fd5b6000610c986103e8610c8a609686612e7390919063ffffffff16565b612f4b90919063ffffffff16565b90506000610caf8285612f9590919063ffffffff16565b9050600080610ccb868860030154612eed90919063ffffffff16565b9050690878678326eac9000000811015610ce85760009150610dd5565b690cb49b44ba602d800000811015610d2857610d216064610d13600a86612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9150610dd4565b6910f0cf064dd592000000811015610d6857610d616064610d53601486612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9150610dd3565b69152d02c7e14af6800000811015610da857610da16064610d93601e86612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9150610dd2565b610dcf6064610dc1602886612e7390919063ffffffff16565b612f4b90919063ffffffff16565b91505b5b5b5b6000610dea8386612eed90919063ffffffff16565b90506000610e018289612f9590919063ffffffff16565b9050610e1a888a60030154612eed90919063ffffffff16565b8960030181905550428960020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610e88929190613abf565b6020604051808303816000875af1158015610ea7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecb9190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f546064610f46601488612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610f71929190613abf565b6020604051808303816000875af1158015610f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb49190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661103d606461102f605088612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b815260040161105a929190613abf565b6020604051808303816000875af1158015611079573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109d9190613afd565b50505050505050505050565b69152d02c7e14af680000081565b600c5481565b60008060006011549050600954600b5492509250909192565b6000806000806000806000601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549650601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549550601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601549450601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549350601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549250601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501549050919395979092949650565b600080601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006113518260000154836001015484600201548560030154611f94565b90508092505050919050565b600b5481565b600d60009054906101000a900460ff166113b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a99061395b565b60405180910390fd5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561143f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611436906139c7565b60405180910390fd5b600754821015611484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147b90613b76565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506114d081612fdf565b60008160000154036114f557601160008154809291906114ef90613bc5565b91905055505b690878678326eac9000000611517848360000154612eed90919063ffffffff16565b1115611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90613c59565b60405180910390fd5b60006115826103e8611574606487612e7390919063ffffffff16565b612f4b90919063ffffffff16565b905060006115998286612f9590919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b81526004016115fa93929190613c79565b6020604051808303816000875af1158015611619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163d9190613afd565b50611655858460010154612eed90919063ffffffff16565b8360010181905550611674858460000154612eed90919063ffffffff16565b836000018190555042836002018190555061169a81600954612eed90919063ffffffff16565b600981905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930611705856116f760028b612e7390919063ffffffff16565b612eed90919063ffffffff16565b6040518363ffffffff1660e01b8152600401611722929190613abf565b600060405180830381600087803b15801561173c57600080fd5b505af1158015611750573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166117dc60646117ce601488612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b81526004016117f9929190613abf565b6020604051808303816000875af1158015611818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183c9190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118c560646118b7605088612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b81526004016118e2929190613abf565b6020604051808303816000875af1158015611901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119259190613afd565b50600073ffffffffffffffffffffffffffffffffffffffff168360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611bad57600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806119fb57506000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b611a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3190613cfc565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611ab157838360040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60008360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611bab57611b646001601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612eed90919063ffffffff16565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055505b505b600073ffffffffffffffffffffffffffffffffffffffff168360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f8d5760008360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611f8b576000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401611cbf9190613835565b602060405180830381865afa158015611cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d009190613865565b90506008548110611f23576000611d356103e8611d2760328b612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401611d94929190613abf565b600060405180830381600087803b158015611dae57600080fd5b505af1158015611dc2573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611e23929190613abf565b6020604051808303816000875af1158015611e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e669190613afd565b50611ebc81601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154612eed90919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060181905550611f1781600b54612eed90919063ffffffff16565b600b8190555050611f89565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f09bc325309846b49b3ad70b1f1c9e2a493283014af4b43dba3335ce4670d76b589604051611f809190613d68565b60405180910390a35b505b505b5050505050565b600080611fab600387612e7390919063ffffffff16565b90506000611fc28483612f9590919063ffffffff16565b90506000611fd98642612f9590919063ffffffff16565b905060006120066103e8611ff86006548b612e7390919063ffffffff16565b612f4b90919063ffffffff16565b90506000612032620151806120248585612e7390919063ffffffff16565b612f4b90919063ffffffff16565b905083811115612040578390505b8095505050505050949350505050565b60095481565b603281565b6910f0cf064dd59200000081565b60126020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060050154908060060154905087565b6120d433610a0b565b612113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210a906138ef565b60405180910390fd5b8060068190555050565b6000601154905090565b61213033610a0b565b61216f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612166906138ef565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60019054906101000a900460ff1681565b606481565b600d60009054906101000a900460ff16612230576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122279061395b565b60405180910390fd5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b4906139c7565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361232b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232290613de2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806123a857506000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b6123e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123de90613cfc565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508173ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126d357600073ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125be576125536001601260008460040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612f9590919063ffffffff16565b601260008360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055505b818160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146126d25761268b6001601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612eed90919063ffffffff16565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055505b5b5050565b600a5481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b603281565b60075481565b60085481565b61271d33610a0b565b61275c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612753906138ef565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6127a933610a0b565b6127e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127df906138ef565b60405180910390fd5b8060088190555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b690cb49b44ba602d80000081565b61282933610a0b565b612868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285f906138ef565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6128cc33610a0b565b61290b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612902906138ef565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516129d19190613e23565b60405180910390a150565b600381565b600d60009054906101000a900460ff16612a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a279061395b565b60405180910390fd5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab4906139c7565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000612b1e8260000154836001015484600201548560030154611f94565b905060008111612b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5a90613a33565b60405180910390fd5b6000612b8d6103e8612b7f603285612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9050612ba6828460010154612eed90919063ffffffff16565b8360010181905550428360020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401612c14929190613abf565b600060405180830381600087803b158015612c2e57600080fd5b505af1158015612c42573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612cce6064612cc0600a87612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401612ceb929190613abf565b6020604051808303816000875af1158015612d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2e9190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612db76064612da9605a87612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401612dd4929190613abf565b6020604051808303816000875af1158015612df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e179190613afd565b50505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000808303612e855760009050612ee7565b60008284612e939190613e3e565b9050828482612ea29190613eaf565b14612ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed990613f52565b60405180910390fd5b809150505b92915050565b6000808284612efc9190613f72565b905083811015612f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3890613ff2565b60405180910390fd5b8091505092915050565b6000612f8d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132c3565b905092915050565b6000612fd783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613326565b905092915050565b6000612ffd8260000154836001015484600201548560030154611f94565b905060008111156132bf5760006130326103e8613024603285612e7390919063ffffffff16565b612f4b90919063ffffffff16565b905061304b828460010154612eed90919063ffffffff16565b8360010181905550428360020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b81526004016130b9929190613abf565b600060405180830381600087803b1580156130d357600080fd5b505af11580156130e7573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166131736064613165600a87612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401613190929190613abf565b6020604051808303816000875af11580156131af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d39190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661325c606461324e605a87612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401613279929190613abf565b6020604051808303816000875af1158015613298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132bc9190613afd565b50505b5050565b6000808311829061330a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133019190614091565b60405180910390fd5b50600083856133199190613eaf565b9050809150509392505050565b600083831115829061336e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133659190614091565b60405180910390fd5b506000838561337d91906140b3565b9050809150509392505050565b6000819050919050565b61339d8161338a565b82525050565b60006020820190506133b86000830184613394565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133ee826133c3565b9050919050565b6133fe816133e3565b811461340957600080fd5b50565b60008135905061341b816133f5565b92915050565b60008115159050919050565b61343681613421565b811461344157600080fd5b50565b6000813590506134538161342d565b92915050565b600080604083850312156134705761346f6133be565b5b600061347e8582860161340c565b925050602061348f85828601613444565b9150509250929050565b6000819050919050565b60006134be6134b96134b4846133c3565b613499565b6133c3565b9050919050565b60006134d0826134a3565b9050919050565b60006134e2826134c5565b9050919050565b6134f2816134d7565b82525050565b600060208201905061350d60008301846134e9565b92915050565b61351c8161338a565b811461352757600080fd5b50565b60008135905061353981613513565b92915050565b600060208284031215613555576135546133be565b5b60006135638482850161352a565b91505092915050565b600060208284031215613582576135816133be565b5b60006135908482850161340c565b91505092915050565b6135a281613421565b82525050565b60006020820190506135bd6000830184613599565b92915050565b60006060820190506135d86000830186613394565b6135e56020830185613394565b6135f26040830184613394565b949350505050565b613603816133e3565b82525050565b600060e08201905061361e600083018a613394565b61362b6020830189613394565b6136386040830188613394565b6136456060830187613394565b6136526080830186613394565b61365f60a08301856135fa565b61366c60c0830184613394565b98975050505050505050565b6000806040838503121561368f5761368e6133be565b5b600061369d8582860161352a565b92505060206136ae8582860161340c565b9150509250929050565b600080600080608085870312156136d2576136d16133be565b5b60006136e08782880161352a565b94505060206136f18782880161352a565b93505060406137028782880161352a565b92505060606137138782880161352a565b91505092959194509250565b600060e082019050613734600083018a613394565b6137416020830189613394565b61374e6040830188613394565b61375b6060830187613394565b61376860808301866135fa565b61377560a0830185613394565b61378260c0830184613394565b98975050505050505050565b6000613799826134c5565b9050919050565b6137a98161378e565b82525050565b60006020820190506137c460008301846137a0565b92915050565b60006137d5826133c3565b9050919050565b6137e5816137ca565b81146137f057600080fd5b50565b600081359050613802816137dc565b92915050565b60006020828403121561381e5761381d6133be565b5b600061382c848285016137f3565b91505092915050565b600060208201905061384a60008301846135fa565b92915050565b60008151905061385f81613513565b92915050565b60006020828403121561387b5761387a6133be565b5b600061388984828501613850565b91505092915050565b600082825260208201905092915050565b7f596f75204172656e742054686174205370656369616c00000000000000000000600082015250565b60006138d9601683613892565b91506138e4826138a3565b602082019050919050565b60006020820190508181036000830152613908816138cc565b9050919050565b7f436f6e7472616374206e6f742073746172746564207965740000000000000000600082015250565b6000613945601883613892565b91506139508261390f565b602082019050919050565b6000602082019050818103600083015261397481613938565b9050919050565b7f4164647265737320697320626c61636b6c697374656400000000000000000000600082015250565b60006139b1601683613892565b91506139bc8261397b565b602082019050919050565b600060208201905081810360008301526139e0816139a4565b9050919050565b7f4e6f20696e74657265737420616363756d756c61746564000000000000000000600082015250565b6000613a1d601783613892565b9150613a28826139e7565b602082019050919050565b60006020820190508181036000830152613a4c81613a10565b9050919050565b7f45786365656473206d6178207061796f75740000000000000000000000000000600082015250565b6000613a89601283613892565b9150613a9482613a53565b602082019050919050565b60006020820190508181036000830152613ab881613a7c565b9050919050565b6000604082019050613ad460008301856135fa565b613ae16020830184613394565b9392505050565b600081519050613af78161342d565b92915050565b600060208284031215613b1357613b126133be565b5b6000613b2184828501613ae8565b91505092915050565b7f4d696e696d756d20696e766573746d656e74206e6f74206d6574000000000000600082015250565b6000613b60601a83613892565b9150613b6b82613b2a565b602082019050919050565b60006020820190508181036000830152613b8f81613b53565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bd08261338a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c0257613c01613b96565b5b600182019050919050565b7f4d6178206465706f736974206c696d6974207265616368656400000000000000600082015250565b6000613c43601983613892565b9150613c4e82613c0d565b602082019050919050565b60006020820190508181036000830152613c7281613c36565b9050919050565b6000606082019050613c8e60008301866135fa565b613c9b60208301856135fa565b613ca86040830184613394565b949350505050565b7f5265666572726572206d75737420626520612076616c69642075736572000000600082015250565b6000613ce6601d83613892565b9150613cf182613cb0565b602082019050919050565b60006020820190508181036000830152613d1581613cd9565b9050919050565b7f496e73756666696369656e7420726566546f6b656e2062616c616e6365000000600082015250565b6000613d52601d83613892565b9150613d5d82613d1c565b602082019050919050565b6000604082019050613d7d6000830184613394565b8181036020830152613d8e81613d45565b905092915050565b7f43616e6e6f7420726566657220796f757273656c660000000000000000000000600082015250565b6000613dcc601583613892565b9150613dd782613d96565b602082019050919050565b60006020820190508181036000830152613dfb81613dbf565b9050919050565b6000613e0d826134c5565b9050919050565b613e1d81613e02565b82525050565b6000602082019050613e386000830184613e14565b92915050565b6000613e498261338a565b9150613e548361338a565b9250828202613e628161338a565b91508282048414831517613e7957613e78613b96565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613eba8261338a565b9150613ec58361338a565b925082613ed557613ed4613e80565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f3c602183613892565b9150613f4782613ee0565b604082019050919050565b60006020820190508181036000830152613f6b81613f2f565b9050919050565b6000613f7d8261338a565b9150613f888361338a565b9250828201905080821115613fa057613f9f613b96565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613fdc601b83613892565b9150613fe782613fa6565b602082019050919050565b6000602082019050818103600083015261400b81613fcf565b9050919050565b600081519050919050565b60005b8381101561403b578082015181840152602081019050614020565b60008484015250505050565b6000601f19601f8301169050919050565b600061406382614012565b61406d8185613892565b935061407d81856020860161401d565b61408681614047565b840191505092915050565b600060208201905081810360008301526140ab8184614058565b905092915050565b60006140be8261338a565b91506140c98361338a565b92508282039050818111156140e1576140e0613b96565b5b9291505056fea2646970667358221220ae4ba78bff6d67ad8c89df7a16069c260b28a2549c5e51e6b5df1d5987e09c2864736f6c63430008130033

Deployed ByteCode

0x608060405234801561001057600080fd5b506004361061027f5760003560e01c80638b3915531161015c578063c63568c7116100ce578063e889795911610087578063e88979591461076c578063f0b37c041461078a578063f2fde38b146107a6578063f6546372146107c2578063f69e2046146107e0578063fe9fbb80146107ea5761027f565b8063c63568c7146106aa578063cd329fc3146106c8578063d054ac9c146106e6578063d48db82714610704578063d4e144a614610720578063dbac26e91461073c5761027f565b8063b6a5d7de11610120578063b6a5d7de146105fa578063b6e6fcf614610616578063b8fd179414610634578063bd97ce3a14610652578063bff1f9e11461066e578063c2442f931461068c5761027f565b80638b3915531461054e5780639fd37a881461056c578063a87430ba1461058a578063ae5a97aa146105c0578063b5cb15f7146105dc5761027f565b8063333f57b3116101f55780636386c1c7116101b95780636386c1c71461046057806364c03a5e1461049657806369b11dd5146104c65780636e553f65146104e4578063724dfc9214610500578063817b1cd2146105305761027f565b8063333f57b3146103dc5780633ccfd60b146103fa57806340572b7d146104045780634b319713146104225780634ce87053146104405761027f565b80631848b8dc116102475780631848b8dc146103185780631855fac8146103365780631cff0825146103545780632363c24814610372578063267edd2f1461038e5780632f54bf6e146103ac5761027f565b806301c234a8146102845780630420c98e146102a257806307973ccf146102c057806312065fe0146102de578063153b0d1e146102fc575b600080fd5b61028c61081a565b60405161029991906133a3565b60405180910390f35b6102aa610820565b6040516102b791906133a3565b60405180910390f35b6102c8610825565b6040516102d591906133a3565b60405180910390f35b6102e661082b565b6040516102f391906133a3565b60405180910390f35b61031660048036038101906103119190613459565b6108ce565b005b610320610971565b60405161032d91906133a3565b60405180910390f35b61033e61097f565b60405161034b91906133a3565b60405180910390f35b61035c61098d565b60405161036991906134f8565b60405180910390f35b61038c6004803603810190610387919061353f565b6109b3565b005b610396610a05565b6040516103a391906133a3565b60405180910390f35b6103c660048036038101906103c1919061356c565b610a0b565b6040516103d391906135a8565b60405180910390f35b6103e4610a64565b6040516103f191906135a8565b60405180910390f35b610402610a77565b005b61040c6110a9565b60405161041991906133a3565b60405180910390f35b61042a6110b7565b60405161043791906133a3565b60405180910390f35b6104486110bd565b604051610457939291906135c3565b60405180910390f35b61047a6004803603810190610475919061356c565b6110d6565b60405161048d9796959493929190613609565b60405180910390f35b6104b060048036038101906104ab919061356c565b6112ef565b6040516104bd91906133a3565b60405180910390f35b6104ce61135d565b6040516104db91906133a3565b60405180910390f35b6104fe60048036038101906104f99190613678565b611363565b005b61051a600480360381019061051591906136b8565b611f94565b60405161052791906133a3565b60405180910390f35b610538612050565b60405161054591906133a3565b60405180910390f35b610556612056565b60405161056391906133a3565b60405180910390f35b61057461205b565b60405161058191906133a3565b60405180910390f35b6105a4600480360381019061059f919061356c565b612069565b6040516105b7979695949392919061371f565b60405180910390f35b6105da60048036038101906105d5919061353f565b6120cb565b005b6105e461211d565b6040516105f191906133a3565b60405180910390f35b610614600480360381019061060f919061356c565b612127565b005b61061e6121c9565b60405161062b91906135a8565b60405180910390f35b61063c6121dc565b60405161064991906133a3565b60405180910390f35b61066c6004803603810190610667919061356c565b6121e1565b005b6106766126d7565b60405161068391906133a3565b60405180910390f35b6106946126dd565b6040516106a191906137af565b60405180910390f35b6106b2612703565b6040516106bf91906133a3565b60405180910390f35b6106d0612708565b6040516106dd91906133a3565b60405180910390f35b6106ee61270e565b6040516106fb91906133a3565b60405180910390f35b61071e6004803603810190610719919061356c565b612714565b005b61073a6004803603810190610735919061353f565b6127a0565b005b6107566004803603810190610751919061356c565b6127f2565b60405161076391906135a8565b60405180910390f35b610774612812565b60405161078191906133a3565b60405180910390f35b6107a4600480360381019061079f919061356c565b612820565b005b6107c060048036038101906107bb9190613808565b6128c3565b005b6107ca6129dc565b6040516107d791906133a3565b60405180910390f35b6107e86129e1565b005b61080460048036038101906107ff919061356c565b612e1d565b60405161081191906135a8565b60405180910390f35b6103e881565b609681565b60115481565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108889190613835565b602060405180830381865afa1580156108a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c99190613865565b905090565b6108d733610a0b565b610916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090d906138ef565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b690878678326eac900000081565b690878678326eac900000081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109bc33610a0b565b6109fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f2906138ef565b60405180910390fd5b8060078190555050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600d60009054906101000a900460ff1681565b600d60009054906101000a900460ff16610ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abd9061395b565b60405180910390fd5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4a906139c7565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000610bb48260000154836001015484600201548560030154611f94565b905060008111610bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf090613a33565b60405180910390fd5b6000610c1360038460000154612e7390919063ffffffff16565b905080610c2d838560030154612eed90919063ffffffff16565b1115610c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6590613a9f565b60405180910390fd5b6000610c986103e8610c8a609686612e7390919063ffffffff16565b612f4b90919063ffffffff16565b90506000610caf8285612f9590919063ffffffff16565b9050600080610ccb868860030154612eed90919063ffffffff16565b9050690878678326eac9000000811015610ce85760009150610dd5565b690cb49b44ba602d800000811015610d2857610d216064610d13600a86612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9150610dd4565b6910f0cf064dd592000000811015610d6857610d616064610d53601486612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9150610dd3565b69152d02c7e14af6800000811015610da857610da16064610d93601e86612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9150610dd2565b610dcf6064610dc1602886612e7390919063ffffffff16565b612f4b90919063ffffffff16565b91505b5b5b5b6000610dea8386612eed90919063ffffffff16565b90506000610e018289612f9590919063ffffffff16565b9050610e1a888a60030154612eed90919063ffffffff16565b8960030181905550428960020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610e88929190613abf565b6020604051808303816000875af1158015610ea7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecb9190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f546064610f46601488612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610f71929190613abf565b6020604051808303816000875af1158015610f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb49190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661103d606461102f605088612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b815260040161105a929190613abf565b6020604051808303816000875af1158015611079573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109d9190613afd565b50505050505050505050565b69152d02c7e14af680000081565b600c5481565b60008060006011549050600954600b5492509250909192565b6000806000806000806000601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549650601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549550601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601549450601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549350601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549250601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501549050919395979092949650565b600080601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006113518260000154836001015484600201548560030154611f94565b90508092505050919050565b600b5481565b600d60009054906101000a900460ff166113b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a99061395b565b60405180910390fd5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561143f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611436906139c7565b60405180910390fd5b600754821015611484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147b90613b76565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506114d081612fdf565b60008160000154036114f557601160008154809291906114ef90613bc5565b91905055505b690878678326eac9000000611517848360000154612eed90919063ffffffff16565b1115611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90613c59565b60405180910390fd5b60006115826103e8611574606487612e7390919063ffffffff16565b612f4b90919063ffffffff16565b905060006115998286612f9590919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b81526004016115fa93929190613c79565b6020604051808303816000875af1158015611619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163d9190613afd565b50611655858460010154612eed90919063ffffffff16565b8360010181905550611674858460000154612eed90919063ffffffff16565b836000018190555042836002018190555061169a81600954612eed90919063ffffffff16565b600981905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930611705856116f760028b612e7390919063ffffffff16565b612eed90919063ffffffff16565b6040518363ffffffff1660e01b8152600401611722929190613abf565b600060405180830381600087803b15801561173c57600080fd5b505af1158015611750573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166117dc60646117ce601488612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b81526004016117f9929190613abf565b6020604051808303816000875af1158015611818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183c9190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118c560646118b7605088612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b81526004016118e2929190613abf565b6020604051808303816000875af1158015611901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119259190613afd565b50600073ffffffffffffffffffffffffffffffffffffffff168360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611bad57600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806119fb57506000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b611a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3190613cfc565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611ab157838360040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60008360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611bab57611b646001601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612eed90919063ffffffff16565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055505b505b600073ffffffffffffffffffffffffffffffffffffffff168360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f8d5760008360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611f8b576000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401611cbf9190613835565b602060405180830381865afa158015611cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d009190613865565b90506008548110611f23576000611d356103e8611d2760328b612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401611d94929190613abf565b600060405180830381600087803b158015611dae57600080fd5b505af1158015611dc2573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611e23929190613abf565b6020604051808303816000875af1158015611e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e669190613afd565b50611ebc81601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154612eed90919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060181905550611f1781600b54612eed90919063ffffffff16565b600b8190555050611f89565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f09bc325309846b49b3ad70b1f1c9e2a493283014af4b43dba3335ce4670d76b589604051611f809190613d68565b60405180910390a35b505b505b5050505050565b600080611fab600387612e7390919063ffffffff16565b90506000611fc28483612f9590919063ffffffff16565b90506000611fd98642612f9590919063ffffffff16565b905060006120066103e8611ff86006548b612e7390919063ffffffff16565b612f4b90919063ffffffff16565b90506000612032620151806120248585612e7390919063ffffffff16565b612f4b90919063ffffffff16565b905083811115612040578390505b8095505050505050949350505050565b60095481565b603281565b6910f0cf064dd59200000081565b60126020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060050154908060060154905087565b6120d433610a0b565b612113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210a906138ef565b60405180910390fd5b8060068190555050565b6000601154905090565b61213033610a0b565b61216f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612166906138ef565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60019054906101000a900460ff1681565b606481565b600d60009054906101000a900460ff16612230576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122279061395b565b60405180910390fd5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b4906139c7565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361232b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232290613de2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806123a857506000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b6123e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123de90613cfc565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508173ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126d357600073ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125be576125536001601260008460040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612f9590919063ffffffff16565b601260008360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055505b818160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146126d25761268b6001601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612eed90919063ffffffff16565b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055505b5b5050565b600a5481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b603281565b60075481565b60085481565b61271d33610a0b565b61275c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612753906138ef565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6127a933610a0b565b6127e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127df906138ef565b60405180910390fd5b8060088190555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b690cb49b44ba602d80000081565b61282933610a0b565b612868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285f906138ef565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6128cc33610a0b565b61290b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612902906138ef565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516129d19190613e23565b60405180910390a150565b600381565b600d60009054906101000a900460ff16612a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a279061395b565b60405180910390fd5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab4906139c7565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000612b1e8260000154836001015484600201548560030154611f94565b905060008111612b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5a90613a33565b60405180910390fd5b6000612b8d6103e8612b7f603285612e7390919063ffffffff16565b612f4b90919063ffffffff16565b9050612ba6828460010154612eed90919063ffffffff16565b8360010181905550428360020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401612c14929190613abf565b600060405180830381600087803b158015612c2e57600080fd5b505af1158015612c42573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612cce6064612cc0600a87612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401612ceb929190613abf565b6020604051808303816000875af1158015612d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2e9190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612db76064612da9605a87612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401612dd4929190613abf565b6020604051808303816000875af1158015612df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e179190613afd565b50505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000808303612e855760009050612ee7565b60008284612e939190613e3e565b9050828482612ea29190613eaf565b14612ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed990613f52565b60405180910390fd5b809150505b92915050565b6000808284612efc9190613f72565b905083811015612f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3890613ff2565b60405180910390fd5b8091505092915050565b6000612f8d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132c3565b905092915050565b6000612fd783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613326565b905092915050565b6000612ffd8260000154836001015484600201548560030154611f94565b905060008111156132bf5760006130326103e8613024603285612e7390919063ffffffff16565b612f4b90919063ffffffff16565b905061304b828460010154612eed90919063ffffffff16565b8360010181905550428360020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b81526004016130b9929190613abf565b600060405180830381600087803b1580156130d357600080fd5b505af11580156130e7573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166131736064613165600a87612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401613190929190613abf565b6020604051808303816000875af11580156131af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d39190613afd565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661325c606461324e605a87612e7390919063ffffffff16565b612f4b90919063ffffffff16565b6040518363ffffffff1660e01b8152600401613279929190613abf565b6020604051808303816000875af1158015613298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132bc9190613afd565b50505b5050565b6000808311829061330a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133019190614091565b60405180910390fd5b50600083856133199190613eaf565b9050809150509392505050565b600083831115829061336e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133659190614091565b60405180910390fd5b506000838561337d91906140b3565b9050809150509392505050565b6000819050919050565b61339d8161338a565b82525050565b60006020820190506133b86000830184613394565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133ee826133c3565b9050919050565b6133fe816133e3565b811461340957600080fd5b50565b60008135905061341b816133f5565b92915050565b60008115159050919050565b61343681613421565b811461344157600080fd5b50565b6000813590506134538161342d565b92915050565b600080604083850312156134705761346f6133be565b5b600061347e8582860161340c565b925050602061348f85828601613444565b9150509250929050565b6000819050919050565b60006134be6134b96134b4846133c3565b613499565b6133c3565b9050919050565b60006134d0826134a3565b9050919050565b60006134e2826134c5565b9050919050565b6134f2816134d7565b82525050565b600060208201905061350d60008301846134e9565b92915050565b61351c8161338a565b811461352757600080fd5b50565b60008135905061353981613513565b92915050565b600060208284031215613555576135546133be565b5b60006135638482850161352a565b91505092915050565b600060208284031215613582576135816133be565b5b60006135908482850161340c565b91505092915050565b6135a281613421565b82525050565b60006020820190506135bd6000830184613599565b92915050565b60006060820190506135d86000830186613394565b6135e56020830185613394565b6135f26040830184613394565b949350505050565b613603816133e3565b82525050565b600060e08201905061361e600083018a613394565b61362b6020830189613394565b6136386040830188613394565b6136456060830187613394565b6136526080830186613394565b61365f60a08301856135fa565b61366c60c0830184613394565b98975050505050505050565b6000806040838503121561368f5761368e6133be565b5b600061369d8582860161352a565b92505060206136ae8582860161340c565b9150509250929050565b600080600080608085870312156136d2576136d16133be565b5b60006136e08782880161352a565b94505060206136f18782880161352a565b93505060406137028782880161352a565b92505060606137138782880161352a565b91505092959194509250565b600060e082019050613734600083018a613394565b6137416020830189613394565b61374e6040830188613394565b61375b6060830187613394565b61376860808301866135fa565b61377560a0830185613394565b61378260c0830184613394565b98975050505050505050565b6000613799826134c5565b9050919050565b6137a98161378e565b82525050565b60006020820190506137c460008301846137a0565b92915050565b60006137d5826133c3565b9050919050565b6137e5816137ca565b81146137f057600080fd5b50565b600081359050613802816137dc565b92915050565b60006020828403121561381e5761381d6133be565b5b600061382c848285016137f3565b91505092915050565b600060208201905061384a60008301846135fa565b92915050565b60008151905061385f81613513565b92915050565b60006020828403121561387b5761387a6133be565b5b600061388984828501613850565b91505092915050565b600082825260208201905092915050565b7f596f75204172656e742054686174205370656369616c00000000000000000000600082015250565b60006138d9601683613892565b91506138e4826138a3565b602082019050919050565b60006020820190508181036000830152613908816138cc565b9050919050565b7f436f6e7472616374206e6f742073746172746564207965740000000000000000600082015250565b6000613945601883613892565b91506139508261390f565b602082019050919050565b6000602082019050818103600083015261397481613938565b9050919050565b7f4164647265737320697320626c61636b6c697374656400000000000000000000600082015250565b60006139b1601683613892565b91506139bc8261397b565b602082019050919050565b600060208201905081810360008301526139e0816139a4565b9050919050565b7f4e6f20696e74657265737420616363756d756c61746564000000000000000000600082015250565b6000613a1d601783613892565b9150613a28826139e7565b602082019050919050565b60006020820190508181036000830152613a4c81613a10565b9050919050565b7f45786365656473206d6178207061796f75740000000000000000000000000000600082015250565b6000613a89601283613892565b9150613a9482613a53565b602082019050919050565b60006020820190508181036000830152613ab881613a7c565b9050919050565b6000604082019050613ad460008301856135fa565b613ae16020830184613394565b9392505050565b600081519050613af78161342d565b92915050565b600060208284031215613b1357613b126133be565b5b6000613b2184828501613ae8565b91505092915050565b7f4d696e696d756d20696e766573746d656e74206e6f74206d6574000000000000600082015250565b6000613b60601a83613892565b9150613b6b82613b2a565b602082019050919050565b60006020820190508181036000830152613b8f81613b53565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bd08261338a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c0257613c01613b96565b5b600182019050919050565b7f4d6178206465706f736974206c696d6974207265616368656400000000000000600082015250565b6000613c43601983613892565b9150613c4e82613c0d565b602082019050919050565b60006020820190508181036000830152613c7281613c36565b9050919050565b6000606082019050613c8e60008301866135fa565b613c9b60208301856135fa565b613ca86040830184613394565b949350505050565b7f5265666572726572206d75737420626520612076616c69642075736572000000600082015250565b6000613ce6601d83613892565b9150613cf182613cb0565b602082019050919050565b60006020820190508181036000830152613d1581613cd9565b9050919050565b7f496e73756666696369656e7420726566546f6b656e2062616c616e6365000000600082015250565b6000613d52601d83613892565b9150613d5d82613d1c565b602082019050919050565b6000604082019050613d7d6000830184613394565b8181036020830152613d8e81613d45565b905092915050565b7f43616e6e6f7420726566657220796f757273656c660000000000000000000000600082015250565b6000613dcc601583613892565b9150613dd782613d96565b602082019050919050565b60006020820190508181036000830152613dfb81613dbf565b9050919050565b6000613e0d826134c5565b9050919050565b613e1d81613e02565b82525050565b6000602082019050613e386000830184613e14565b92915050565b6000613e498261338a565b9150613e548361338a565b9250828202613e628161338a565b91508282048414831517613e7957613e78613b96565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613eba8261338a565b9150613ec58361338a565b925082613ed557613ed4613e80565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f3c602183613892565b9150613f4782613ee0565b604082019050919050565b60006020820190508181036000830152613f6b81613f2f565b9050919050565b6000613f7d8261338a565b9150613f888361338a565b9250828201905080821115613fa057613f9f613b96565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613fdc601b83613892565b9150613fe782613fa6565b602082019050919050565b6000602082019050818103600083015261400b81613fcf565b9050919050565b600081519050919050565b60005b8381101561403b578082015181840152602081019050614020565b60008484015250505050565b6000601f19601f8301169050919050565b600061406382614012565b61406d8185613892565b935061407d81856020860161401d565b61408681614047565b840191505092915050565b600060208201905081810360008301526140ab8184614058565b905092915050565b60006140be8261338a565b91506140c98361338a565b92508282039050818111156140e1576140e0613b96565b5b9291505056fea2646970667358221220ae4ba78bff6d67ad8c89df7a16069c260b28a2549c5e51e6b5df1d5987e09c2864736f6c63430008130033