ETH Price: $2,353.28 (+0.66%)

Contract

0xa77B8125840C33df2792d449043426606AA32D57
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Base Reward166211132023-02-13 16:45:23577 days ago1676306723IN
0xa77B8125...06AA32D57
0 ETH0.0009741833.93318707
Set Base Reward166210502023-02-13 16:32:35577 days ago1676305955IN
0xa77B8125...06AA32D57
0 ETH0.0012242.4956927
Set Stake Open162153472022-12-19 1:06:35633 days ago1671411995IN
0xa77B8125...06AA32D57
0 ETH0.0002982412.42900895
Batch Stake162142792022-12-18 21:30:59633 days ago1671399059IN
0xa77B8125...06AA32D57
0 ETH0.0008978410.93757462
Batch Claim162135482022-12-18 19:03:47633 days ago1671390227IN
0xa77B8125...06AA32D57
0 ETH0.001904113.09092683
Batch Unstake162118152022-12-18 13:16:35634 days ago1671369395IN
0xa77B8125...06AA32D57
0 ETH0.0011640515.51325796
Batch Stake162114502022-12-18 12:02:59634 days ago1671364979IN
0xa77B8125...06AA32D57
0 ETH0.0006987412.63225013
Batch Claim162101842022-12-18 7:49:23634 days ago1671349763IN
0xa77B8125...06AA32D57
0 ETH0.0023829814.72169948
Batch Stake162096562022-12-18 6:02:35634 days ago1671343355IN
0xa77B8125...06AA32D57
0 ETH0.0010162315.11450002
Batch Stake162091632022-12-18 4:23:23634 days ago1671337403IN
0xa77B8125...06AA32D57
0 ETH0.0008131114.7
Batch Stake162091482022-12-18 4:20:23634 days ago1671337223IN
0xa77B8125...06AA32D57
0 ETH0.0008131114.7
Batch Stake162056192022-12-17 16:30:11635 days ago1671294611IN
0xa77B8125...06AA32D57
0 ETH0.0008349315.09450562
Batch Stake162056172022-12-17 16:29:47635 days ago1671294587IN
0xa77B8125...06AA32D57
0 ETH0.00087315.78273252
Batch Stake162055922022-12-17 16:24:47635 days ago1671294287IN
0xa77B8125...06AA32D57
0 ETH0.0008982616.2393646
Batch Stake162055852022-12-17 16:23:23635 days ago1671294203IN
0xa77B8125...06AA32D57
0 ETH0.0008451615.27938701
Batch Stake162051942022-12-17 15:04:47635 days ago1671289487IN
0xa77B8125...06AA32D57
0 ETH0.0017236615.83348454
Batch Stake162051662022-12-17 14:59:11635 days ago1671289151IN
0xa77B8125...06AA32D57
0 ETH0.0008113814.67196024
Batch Stake162048132022-12-17 13:47:47635 days ago1671284867IN
0xa77B8125...06AA32D57
0 ETH0.0006814112.31900156
Batch Stake162041862022-12-17 11:42:11635 days ago1671277331IN
0xa77B8125...06AA32D57
0 ETH0.0013195316.07469418
Batch Stake162029892022-12-17 7:41:23635 days ago1671262883IN
0xa77B8125...06AA32D57
0 ETH0.0006637612
Batch Claim162019902022-12-17 4:20:35635 days ago1671250835IN
0xa77B8125...06AA32D57
0 ETH0.0029919815.38010813
Batch Stake162010542022-12-17 1:12:35635 days ago1671239555IN
0xa77B8125...06AA32D57
0 ETH0.0007983814.43373524
Batch Stake162008762022-12-17 0:36:47635 days ago1671237407IN
0xa77B8125...06AA32D57
0 ETH0.0008131414.70052162
Batch Unstake161987612022-12-16 17:30:23636 days ago1671211823IN
0xa77B8125...06AA32D57
0 ETH0.0021303328.19579127
Batch Stake161984712022-12-16 16:32:11636 days ago1671208331IN
0xa77B8125...06AA32D57
0 ETH0.0014872826.88796323
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Stake

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-10
*/

// File: openzeppelin-contracts/contracts/utils/introspection/IERC165.sol


// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

// File: openzeppelin-contracts/contracts/token/ERC721/IERC721.sol


// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)

pragma solidity ^0.8.0;


/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);
}

// File: openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol


// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol)

pragma solidity ^0.8.0;


/**
 * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Enumerable is IERC721 {
    /**
     * @dev Returns the total amount of tokens stored by the contract.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns a token ID owned by `owner` at a given `index` of its token list.
     * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);

    /**
     * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
     * Use along with {totalSupply} to enumerate all tokens.
     */
    function tokenByIndex(uint256 index) external view returns (uint256);
}

// File: openzeppelin-contracts/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

// File: openzeppelin-contracts/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: NFTStake.sol


pragma solidity ^0.8.0;



interface IMint{
    function mint(address to, uint256 id, uint256 amount, bytes memory data) external;
}

contract Stake is Ownable{
    struct StakeInfo{
        uint32 stakeTime;
        uint32 unstakeTime;
        uint192 claimedReward;
    }
    IERC721Enumerable immutable public stakeNFT;
    IMint immutable public rewardNFT;
    bytes public powers = hex"72646e6481646e727384646e646464646464707e737064766464647372726e80706e6e70727272727064727064727a7d706e647c6473647d827c64647a64767c817a6464706472756464736464706e6464736464647373647c6e736e64647064646472646473726464646478826e886470716e76646464737364647f646470646e6472647e7072727264727264817c64647d72738064647a73727270646464727664647f70726480707364646e6472736473647281707c646e6464646473847f64766e72647064827f76727c7d836464647072646e6e6e6e6e6464647364647e6e646e647d647278646e707864646e6470736e6e7c737364647a6e7d6473707e7c7a648073706e6464647064767876646464646e64737264647c648b7a7664646e646e727e7372736e7264736e7664646472646464806464757270717d64827a64726e6464726e6464758164646e64646e6464726464647f707e64727c70737264647d6e64647281706473647c6470647064646e88647373707e6464716470707072727e70646e70806464736e8272646470847c7d7070647c646e7c64756464646e647e73646e76647f7270646e73726e7d6e7d64647064707064647f646473646e6464646e64707f6464728a6e647270726473726e647c7064726472646e64736472646e6464727372646e647a64648c707f76766e64646e767f7271648e7a647d72647a7264647f737d7273767f6e646472826e706e7e72646473647370647c64728773726e64646e64727072647664727670647573737c646464737373646482647f6e736470707c707c64646464726464646473646464646464646e6e7c64707e7d7271646464706476647072706e6488647f6e6464647364646e70646473736464768964647d64647364736473707c647364647d6e72647364646e707264646e64646470738f6464737064648a647c767e6e7364706464646e7264647a64646472648064736476646464738c6464736464646e72646e6e7d64647d647264646e647364646e6472647072647370647f737d7c6471647f7071707e647d7e648a64728170646e7c70647f72647c706472706e6485647264736464706e6e64647b6e647364647672707d7c6482737570646464647376646464647078706464816473647064707078766e7b64646e6e6471726473647373647671766e76707280646464706e6e6464717e736e6464726e64647673766e647664647872757164647d646e73726e646e786e72646e706473646e647264726e73726e7f647e73726e7f73716464727072647064786e6e646e646e8e64647670706464646464646464646e6e7e706464647064807f757e7273726e84646e6470647c6e70858a6e7a707673646e72647376706464726470646e7c76737f6e6e64647c827672737364646464726464726464706e7f6464646464647064707b646464886464646e64736464716e766472717364646464736e6e64646e737f7f64727e6470706464727f7a736e806e6464646464646e6e646e7c7a717f6473648b7664647364716482646e707d8d7f64736e64727064646475646e6e7f727c647d64706e7c6464737c726464647c64736e82708c706e647073646e6e707364646e647264646e646e6464646e76647870646464717264647364646464736473646e7270727064647d6464646e64646e647264766e6e647d70856e736470646464646e707064646e7f728264766476647a7064646e646476647378727164817f7e737c7073646e7364726464646e647c6e6e73647264646e646464887c6e647876767f707664646464766e756e6464736e64726e647c826464647273646473707064767f7a646e72647d6470726e8164727273647364647264706e7264647d7273896e648164647b64647072647a737373756e727073646464646e64646470877c7d7c7d736472647064807c6464647c64727070766e727e827d647d647f64827c6e70736e6e73727264726e647273647c70646464647e72726e64646e7164647073646464646470646e646464756e8264646e7d736483646e64766e6464646e6464737f6e736464647270706e8164727264768372707175646e7c76726e646464707d7a767d6464647670646464646e647d707264646482736e646e647664647364647264646e64706464706e6e7a7064727370646464646464647d6473646473736e708164736485837c6464708264646464646464727c707070737384827364726476726464706e85647672647c7164647d707672846e6e6e726e7e6464706e76706e71737e707172646470646472646472766464647281766464646e877c6e64646e647b7364646e73648064726464736e6e7364857c6e6e6e7273727b726464738164727264726e70726e64646470707372647e737c6e647673727271647264646464707c6472736470646e648164766464646e64806464646476646e7176726464646e646e6e766e646473726e7c6e6464647f6e64707072717d6e6e647072827264647070727664707064646e8c7276647d72807a647364647f64647373706464647c647f64756e727d736e646e64646e6464736481647e7264647c736e70648a767e646464646e647c6e8264816464647364736464726470648b716473647864647e647264647c7c7e7264737075726470706e64647272736464647d7664737a727c706e64727c646e726473646464726476647064707c647664726470646e6e76646473646470647672707e6e7a72646473706e7f6e64707072647364727e646e64648c64647e7f72737e6472646e646e76737064646464736476646e7064646e6472646464736464646472706e6464727d646e73646e6472646464647c70647064736464647e6e91767e647264647073646e6476707f7f6470726e7c6e7e7072647672647e85648264646464647d707c7364736481736472766473647d7c646e73646e647c6e64826e647e736e726e7c8564646e6e827f7e6e8f73646473647d7f64646464768864647c7a6e766464647375716e78646464706e827872648073647d70756e727064648364737264647c7270826472786e64647c706e6e64766473646464717676727364727b6e647f646e64707670647264647c73767364646e6e64767c6472707e647e6e647c7264736470646e647e646464646473727064766464647a7564647081786472816470737f646e707a646e706470737364736e64646e73726464727564646e6464646464646470757c64767f6e737f646464647d7064646e64807d7264737c6464647a6464647e64647a6472647082646e83737364646e64646e646e76706e647064646e7072646e726e73647f6e766e6e6464647e72807c646e72737082767f64647164646472736464646e64646e737e76856e647287726472767f6e647270646464706e726e64716e73646e6472646476646464647d6464647064647064727e6470757f70646464646464646e7e6473807c6472646e6e64766e73646e728a64647264736e7e726464647272646e73726464736464646e6e646e72707371647c707d897f6e646e7664646e64726476767164646e7f646464647e6e6e7264737370647f72646e6e646e646e6e7064727f6e647c7f646e72706e76646e70647373827664647172646470726e73647f6e7a64646e70646e7a64726e70648264646464646e73646e646e72706472646470729064766472647264736470736473647284646464736e646e7d647076706e6464647c736464727f737e7f727372647264647c6e7364727264648164646472726476726e708e6486647f64647664726464646472737c708064646e646464828c7b646e7281766473647364707387646480646e64647264647070766e646464647c8e6470646464647b6e82766481817f646e6470787064726464837d7c70646464736e7064816464736473646475727873736472706464706e6e6464706464737373717373737d64646e6473727e6470726e646e6472877c646e73646e64806476737d6e73756e6e6464647a717264736e6464707c646e826464647d647e6e647870736472716e647276727264646464648172736e6e647d6e707364647164707e647f7064646464647264646464726e736473646476736464727364736e647270646e7e80706e6e64646464726473646464646e6e647d646e80646470646464646e6e7c6e646470646464647264706e64707e646e726e6464737c64646e7f7f736470707264757e737864727f647373647a64646e6e6e646e72707f647373648276646e7c6e64647f7264646e64647d7272646e72727f7573646e6e6e7c72647e646464707383646e647d64767b707c70726470646470648872647264737c706e647d70727373706e786e647364647f647364708264727270646e647e64648c7864726472707064716472736464737370736472737064826464646e736e76646e646e646e64646e7e738072646480646e70646e64646464646464648173646e646e72706470707164646472737064766e766464646464646464647e7d7064737b64647f646472646488646476707f646e826e7381646464647064726e72726464736e64736e727082727a738b707a6e646464756476647264646e73647c836464806464817c7c647264806470647e6484646e64646e647e64807272727070646473646e64647564726e766e7c6e648764647264646464726473737573737e7d726e647c647276647c6e7d7072726470707a6e64647172647076646e64647a706464647073766473647d7a707264737e647f6464736e7373826e736e6e757873647d736473646478646464646e7075647264647c6470647f64736e7f7364767a647d6e7370727c6e646472807d7364846e646e64726e6e7d7664646484707a646473736464737c706e73706473646464647c647d7c646e646472646464647272646464647871647e6464737d6464646464647b72726464707080717b6e7d6e7064647c7364727c707064646e6472647c64728264717f6e7073646464646e6e646e6e6e8464646470647e7370737373646e867273646e64646e6473646e727d727276646464707d806470647264647c6e64736e88646464647d6e7d6e648776766e76646464806464647e64646e6e64647f64727364646464647064737064647264647c6464646464646472707c726e647f766473877c646472646464766470647c73646476646e70647d6e768e726e708b7f6464647876716472646e64897e6464736e647f8264646470647f7272646464706e6e8c646475647273646e737270727d6e6e73646464736e6464768a8f70647370736e64646e647c72706470736472646464646e72647264736e646470826464646464646e7c6464806464736482707e647d7e646e707f76736481647c647f6e6464646464647364826e7c64706464646e646473757178646e64647664768264646473647f7f64737664646464727364646e7a706464646464647c6e646473708864707272646464736e6470726464646e7a6e6e7e7364706e6e64647e64828070756e646e7264646e7364647372726e647c64706e726e647264646473646e646e7664646470647c6470707872726464646e7f6e6e706e64648164648064647e64646e706e6472646464647d82646e70646e70646e646e72646464737c647c7e647d64647c6476737d826464756470647f6e70766e64647064647270646482807c7f7e6464647664726e64726e6e7d64646473856e6e7d646464817364726473726e6470726473646e646470646e76647d7373726e707d64647264706e64646e6489646e64646464647e64707364646e736e736e646464737264646e80647e7c647064646e7082646e64647a6475736e64826472646464727f737364726e716e8d7d646470646464646464646483647c647564646e647c6e647e7064766464647e6464646e648564706e6e64706e64707370707064647e8f81647f647564736e736472707073727c6472647681646481647282716e6472807064727f706e6e73647a646e82647f646e7270767c6472646e7f6464646470647a647070646470647e647f6e647264646464646464646e647264706e646472766e7d76647e70727a736464737c6480707664736e78737c646464646464827a646464706e646482726e646473646471726e7e737c7064647664726464737e727c6e82647070646e707a64647c737873706e8b646e7376647f807364706464856e6464736464727372738464646e6e646464706e6464707c7264707f6e7f707564646e647064706e64646464766464646e8264736464767664647673647a76646e726e7f647064766e6471648b64646e8c6e6e7c76736e647c8364726e647c7c646470736e6e6476727364646e646e8271646e76647070707a64647270646464707070646470646470708175706e6e6e728c73726476736476706464647d64647064647070646e647064646e648264646e64647c7e7676647e6e64646e6e6e64647264706464646e6e7382647c7a6464737c6e647a76647375707364647c6464646e646e6e737f7d6e6470646e646e737a6470646464707a726e7572706475646e6e72646464647264647c64646e646464646464646e7c6464726e6464727e727e646e7d726488646e64708e7073647572727c6e6e7f6472647076736e64647e647364736e64646e6e6464646464736e726e6e73646e72826e7f6472647364647c6470707364647c6464706464646464647264646470646e646472726e646e64706464646464736464707f7f647a6e6e6464706464646e756464646e7a64726e707e6e6e6e716e647f7d737f707364647c6e787273707f64727264647070766464646e70647c7364647d6475646e707e7c7370766e6e7071647c8470646470726464766464706e7e727f64867364728970648064727c64647264647e6e7c64737c6472716e6464727d6e7f647070647c727075736471736482646476707264646e64647e7370707070648a7b7264646e736e647c6480646472707372907271646e8573647370706e7e7273647d70726e7080766464816e6476646464647c7373736464706e7276647673646e707d6464647d6e726e737c6e64647c7d6e647c7370647d64727c707f6476646464806e6e64736e646464648b7c7f646e646e80768173647373726e827e7f707273646e646e64727f64646e646e6e6e717d826e646481647d7f6e64647864647264728164646473647c706e7d647273726e7d646e64728070646470726464646e6470827c7a648264646e6e646464647d6464647f766464647f73726e64706470647f707a646464646464707d7f648c8972706473726e6464647e6e73706e64648364727384646471646470706472646e64647c646e827e7364706e64707d6e646e646e737d7c7c6e6464766e7364646464726473726476646475647b647172707c6e6464647d647f73707d647e807d646464767c737864647a6464647c647364647164646e6482646e64646e72806e6464726472646464756473647c72726473647d64717f7e64736464647f64646473706e64706464707d736473737c647664766464726e6e7685646464646480647c64647d726e6e7a7d6e7d64647c6482726e647e70707c6e647672808a816e7264727c64886464648164736472647273726e6470706e647364707f7f646e647d6e7064736e646e70826e706464787e6470727e7364648164706464737c6e70646473827c7d737364728172647264647364647270727e726e64646e7d7264646e70706e6e6e70786464706472647e6464646e7064646476647264736e6480647e6464647c707c7285736e766464726e7064726464647264736e6e7064647f646e6464646476646e647d6e6470757d646464707a647f7264646e70647d6464647f7364856464726464736e6464646e646464647d73648b6e70646e6473727d6e737373726e7d647e6e6464647c646464786e64726473707c646e7c64726464766472727e8a64647d826464737c716472716e7d73646470648272726464646e7e6476806464877f64646e647a647b78707f6e706e70706464706e7264726464766464646e6e72907273646464736e736464646472837f7e73647e7176647264816e647073646e736464646489726e646e7c6464647e64907d64646478706e646464737d646e6e7c64736e64647064726e76647f64706e70646464647073646e646e6e736e6470706e646e6e737a706e646e6464707d70646e72726e7064766e7f727e727264727a646464646e64726e6464727264707c7f6472706473646476707a648473728664727c727c64646e7264706e64646482646e64646e647e737364646e6e646464648264647c6e7064646e707c726e7d64727d64767c70647f7c64706e6464766470707270726472647a6e6464737d8b6464646e646e64716464736e6e736464707d647276646472646464917d64737676646464648c7264826e736464706e64717264647d64736e646464646464737264647d647d646480646e73727071886464766e6e6e64646473726470646464648e648b73646470757664646e6e6464737273736472726e726e7b736472726e647073647083887c646464706464646473646464736e647c6464646464647d7f706e7f648464647b646e7e64647c647664646e6e647076737c64648364647064726464646e7373707f646e70647d7c647c75646e64646464646472727c736464646e7264646e737264767a648064707c646e64646e6e6e73647f64646e7c6464736475646e70737a646e647e84646470647d6472707c7073647264736e6e7c706464727c6e647070646470727d726476707276706472707080646e7064737c7d737f64647e646e646e6e7c76726464648264737264646472646473647064647d6e646e647f646e6e647f6e706e6e6470726e64737064737f646e646e726e646e646e70727c646472726e6e646e64647a6e73736464646464827064647d726464646e646e646470646e64896e6464756e6464646464706470647f7064646464647064647364646e6e736472646472736e646464646e737b64646481726e646e647c6472707070646e6464647d64737664647375647370646476647e6470646464646e7164726e6e64648c64646e647f64647664726464647064647d647a7664767d6e72756e647273646e64648f7272727080726e6e70646464647071727c7a8064717c8e6e6e757572646e64736473707f737a64707373647264767d647273647670736e73706e64646e846464646e7372646476647e72647f7e647f64737a647c646472727f647d766e648b646470727d647d64707e6e737070646464706e73707c6476647d64736464726e7264737364727264646e647070706e64736e70646464766e7670767264707c647064647264647664646464647376646473646e856472646e64646480647373647264726464767d6e6e647086648276756e6472706e6e887f64646e7a70647364717f727376726e646e70646e64647d708a646464647d64647664646e846473646e6e7a6e737c756464647d7364646e647d707376646e64646464647f6470646e7c7364707264706473646464646473647c6481727664766476647e6470646470736464647064646e72708364646470706e8064726464727c6464857d6e706e7d826464706e737064646e646464707664646e72648a646464646e64647164646470707f647264647671646e6464727f7e7370736464647c646464706e64647f64707c71646e72646472787d7364646464736470726464648a647a647d706473736e64647272646476647d647e646e736e736e64706e6e72726e87647c647064646e727864707272736e64736464717064648a646e64707e827264736470736e64646464736e7a7a7e816e8972706e647672646470647d646e64766470896472646e646e7d72736e64807264648064727673647064647c64646e64707e646e64708664727078647064786e6e736485646473736476646473717070706e646e7f8972727c6e7d71646e64646e647c6e6475707c646e6464647d726464727d64737081646464646e647d7d7a826e6e64646472736e7f6464647f64707e6e647d70646470706464647c64737f707370826e64647064726470647b6e647264767c646e6e6e737f6e6464786e82647c6476646e7f707364647e7d73646e64707284646e64646e647f6464706464727064648564806e72727f6470647e647676646e646e7e646e646e646e64716e64808f73646464646464646e6472736e64646464736e6e646e736e64736464707e64737d646470808f64726473646e64647375706e64646e64736464646e64647064726464646e73736473647d6e70707e8c647f646464727d726480646464647c707372646e75706476646e826464767e647c647e7d727264767c6464727e737c64716e647d738064647c6464827f72646e8264726e7280706e6464647a7c7c6e6e64646476646e6e6464727c647d727c73726e6464737082766464707070647f7276646e717384708b646464736478647064647f64647e6e647c7a7c767e64737e64727364646471647a72706e6e6473646464646464647364826473726464767272647d7270646464716e647e647164737388646e647373646464646464707c706472647c726e64727264647e6e64647364807264646e6472646e726e70647c6464646464646464646464736e647c7378647c6e706464737c7b646464647c726481707664646e72876476647c71646471648570646470646e7c6e64707e64737c7f646e6e7d6e7564706464647f7a73647e836471646e6464726473647c6e706e7f6482727a6e646e64726e717f8e64766464646464767264737f6476736e647f64646473736472866e728064647676647c64646488646464757a7e64647178646e6e6e646472646e72647264646464646470647c647364646e64727c71707b6e647c75707372726e7c6473829173646e646473706e766464647a81827e647164646e6464736e72646e64647676647072646e7d64706e7f727272726e7c646464706464646464737e73727064648b78647664647664706464727272646487728e7e7364646464647264647e6e6475737f646e736473737264737064646e6464706e6470647e8e64726e706464886e73646478646473707e7064766e6e647c70647e7d81646464646e73646e7c647270647e7264706e646482647064646e7d64816473887d647370706464647372737264726464737564646464646e7e646464646470647b7264806470646e646e64646e6464648264647064647364646476647c72737c807e6464727d7c6464647c736e7d64646e7c70647d647e64646e6488646e646464736464646e708264766e6464647273726470647282646e7364706e648d737e70647d7272646472646e75806476647064706464736e64707664816464646472726482707e737f647d6472706e646e64646e6464647080647e7264736464766e70837c646471736e736464647c64727064707c73646480726e6e7364646464737664647364708273736e64706464706e64706464837276646e6464826e8b6e70646464646464646473817a71646e646482646473736470737e8c70647f6e6464647264646464646e70876e647d6e70727f7f826470647370786e647d6464707f6e647f7064646e647264647a647364646e6476647d7e7c767272727f72646482737264708c76726464647c646e64736e646e727c708064647073646e646472737664737f647c756e64646e7d646e6e64736464646e736e73646473736464646e73646e646472727c7f826e76647364788c6e736e647e6e64706e72706e646e70646464647d727364646464756475646473766e7f76706e6473706475737a7a767d6e647382706464736e64726e647e6464736e707364706e7e6472726e646e816e646e648364646470646464706472736473766472737e647e64647e828964647d736e70736e7c7f827375738071647f70646e786464646e6464647f6e6e7f64737d827c6476647a6470737e7c6464807d647864737d6464646464648b64726e70727673647c64737c64647370646464736e6e6e6464817c756473647c6e6472737364896e7376737264736464726464647f6e73646e6e64707c647664706464646e64647364646464647276647373647364736e6464736e7164646e7c7d736e7c73647273767070726464646e647f64806e6e6470647d7170647a6464647b64648564647064647270648b6473706e647c736e6e6e7076707280646470807080648464647f71727264646e756e72646464647064647c846e707273646e7270736464647270646464646464648b647f7364707e736e64647e8d6e6464647172726e64706464726e70647a706464648d766464826e8d7072646472647064736e7364707075646e647a64737370767e8e64726e6e64727c70767364757a7b7264827364706e646e706e826464648f648d7f6464647a64648a7e7270706480647270726e706464647064727a647c736464736e6475646471647270736e7f646473727f646480727f7264646e64647264726473737264726470826e6e64647f6e7164726464646464726e64647064647c73716473647073646e6472647b6472646e73646e7673646e6e6470706464826e73647e646476646464737c7d6464728d726e7c737264737b647e7e6e7864646464646e64737864646464646470726e6e647664647364738b727064726464767283727f646464727164646e646e736464646e7c8264646e64736e70706e6464647d816e646e6e6464646e646e8f70646e76646e6e70646464827c7073726464646e7b6e6464647270646e6e64827370716470647e64646e64736e7673646e707e64646e6e6464647364756e647c7064646480646e72877d6464706e706464707064647172648e73646464647c646470646473717270716464646e707072836473646464736464647364727264736473857c6464646e646e64647c717073646e6464647170647f6472647e64646464727c64647d70737c646464906e647d646e73806e8b64827f7f707c647e6e706464707064646e73737380646e647f76707089647f64646464647c646e73767d647d707a646476727070706476646470646e757085646e6e7e6e786e646471728270646470726e73726473647c647c757678647676647270647373736470647c64646470706472706464718364766473816e766e7e647c71647c64647c72726464646478768164647264647d6473807064646e646e64727c7e73646464707f6472707e6e646e647f7264646464646464647073726473707664646464646464646470737c647c728e7a6472706e7073646e7370736e726464766e6473646464647c6472707264647c73706e727664647d7264717364726e6464646464766464727070727e6e7f64647e736472646464646e64646464836e64646e70766473706472646464647e767a646e64857d7364647a7e6470646e6e64646e64707f6e646e75707364826464767f8a82706464766473646e648164766e646464646e72647264726e7682737373736e6464646480646464857c7270646e76727364647671647d6464646482727f7a646464646464647670736e7d647c64727073647c6464646e7672766e64737064727664766464647d70646473707264869164646464646e817272646464648e6e7c6e6472766473728e72736464726e7278757c64647270707d7664816464707e72647c70817364646e646472707d6e64706e7d64647064647064646464647073647f726e";
    uint256 public baseReward = 1e16;
    bool public stakeOpen = true;
    uint8[] public rewardPerDay = [0,2,4,6,10,14,18,22,28,34,40,46,52,60,68,76,84,92,100,10];
    mapping(address => uint192) public rewards;
    mapping(uint256 => StakeInfo) public stakeInfos;
    uint256 private oneday = 1 days;
    uint32 public lockTime = 3 days;
    mapping(uint256 => bool) public blackTokens;
    
    constructor(IERC721Enumerable _stakeNFT, IMint _rewardNFT){
        stakeNFT = _stakeNFT;
        rewardNFT = _rewardNFT;
    }
    
    modifier check(uint256 tokenId, bool isStake){
        require(stakeNFT.ownerOf(tokenId) == msg.sender, "Stake:notOwner");
        require((stakeInfos[tokenId].stakeTime > 0) == isStake, "Stake:stakeStatus");
        _;
    }
    
    modifier onlyOpen(){
        require(stakeOpen, "Stake:notOpen");
        _;
    }
    
    function _stake(uint256 tokenId) internal check(tokenId, false){
        stakeInfos[tokenId] = StakeInfo(uint32(block.timestamp), 0, 0);
    }
    
    function stake(uint16 tokenId) external onlyOpen{
        _stake(tokenId);
    }
    
    function batchStake(uint16[] calldata tokenIds) external onlyOpen{
        for(uint256 i = 0; i < tokenIds.length; i++){
            _stake(tokenIds[i]);
        }
    }
    
    function _unstake(uint256 tokenId) internal check(tokenId, true) returns(uint192 reward){
        uint192 allReward = getReward(tokenId);
        reward = allReward - stakeInfos[tokenId].claimedReward;
        stakeInfos[tokenId] = StakeInfo(0, uint32(block.timestamp), 0);
    }
    
    function unstake(uint16 tokenId) external{
        rewards[msg.sender] += _unstake(tokenId);
    }
    
    function batchUnstake(uint16[] calldata tokenIds) external{
        uint192 reward;
        for(uint256 i = 0; i < tokenIds.length; i++){
            reward += _unstake(tokenIds[i]);
        }
        rewards[msg.sender] += reward;
    }
    
    function _claimReward(uint256 tokenId) internal check(tokenId, true) returns(uint192 reward){
        uint192 allReward = getReward(tokenId);
        reward = allReward - stakeInfos[tokenId].claimedReward;
        stakeInfos[tokenId].claimedReward = allReward;
    }
    
    function _claim(uint192 reward) internal {
        uint192 amount = reward / 1e18;
        require(amount > 0, "Stake:notEnoughReward");
        rewards[msg.sender] = reward % 1e18;
        rewardNFT.mint(msg.sender, 0, amount, "");
    }
    
    function claim(uint16 tokenId) external{
        uint192 reward = _claimReward(tokenId) + rewards[msg.sender];
        _claim(reward);
    }
    
    function batchClaim(uint16[] calldata tokenIds) external{
        uint192 reward = rewards[msg.sender];
        for(uint256 i = 0; i < tokenIds.length; i++){
            reward += _claimReward(tokenIds[i]);
        }
        _claim(reward);
    }
    
    function getPower(uint16 tokenId) external view returns(uint8){
        return uint8(powers[tokenId]);
    }
    
    function getReward(uint256 stakeTime, uint256 unstakeTime, uint256 power) public view returns(uint192){
        uint256 day = (unstakeTime - stakeTime) / oneday;
        uint256 len = rewardPerDay.length-1;
        uint256 multiple = day < len ? rewardPerDay[day] : rewardPerDay[len-1] + (day-len+1)*rewardPerDay[len];
        return uint192(baseReward*multiple*power/100);
    }
    
    function getReward(uint256 tokenId) public view returns(uint192){
        if(blackTokens[tokenId]) return 0;
        StakeInfo memory stakeInfo = stakeInfos[tokenId];
        if(stakeInfo.stakeTime == 0) return 0;
        return getReward(stakeInfo.stakeTime, block.timestamp, uint8(powers[tokenId]));
    }
    
    function nestingTransfer(uint256 tokenId) external view returns(bool){
        StakeInfo memory stakeInfo = stakeInfos[tokenId];
        return stakeInfo.stakeTime == 0 && (stakeInfo.unstakeTime == 0 || block.timestamp > stakeInfo.unstakeTime + lockTime);
    }
    
    function setStakeOpen(bool enable) external onlyOwner{
        stakeOpen = enable;
    }
    
    function setBaseReward(uint256 _baseReward) external onlyOwner{
        baseReward = _baseReward;
    }
    
    function setRewardPerDay(uint8[] memory _rewardPerDay) external onlyOwner{
        require(_rewardPerDay.length >= 2 && _rewardPerDay[0] == 0, "Stake:invalid rewardPerDay");
        rewardPerDay = _rewardPerDay;
    }
    
    function setPowers(bytes calldata _powers) external onlyOwner{
        powers = _powers;
    }
    
    function setPower(uint16[] calldata indexes, bytes calldata _powers) external onlyOwner{
        require(indexes.length == _powers.length, "Stake:arrayNotMatch");
        for(uint256 i = 0; i < indexes.length; i++){
            powers[indexes[i]] = _powers[i];
        }
    }
    
    function setLockTime(uint32 _lockTime) external onlyOwner{
        lockTime = _lockTime;
    }
    
    function setBlackToken(bool isBlack, uint256[] calldata tokenIds) external onlyOwner{
        for(uint256 i = 0; i < tokenIds.length; i++){
            blackTokens[tokenIds[i]] = isBlack;
        }
    }
    
    function tokenIdsWithStakeInfo(address account, uint256 pageStart, uint256 pageSize) external view returns(uint256 len, uint256[] memory tokenIds, StakeInfo[] memory _stakeInfos, uint192[] memory _totalRewards){
        len = stakeNFT.balanceOf(account);
        uint256 size;
        if(pageStart < len){
            size = len - pageStart;
            if(size > pageSize) size = pageSize;
        }
        tokenIds = new uint256[](size);
        _stakeInfos = new StakeInfo[](size);
        _totalRewards = new uint192[](size);
        for(uint256 i = 0; i < size; i++){
            uint256 tokenId = stakeNFT.tokenOfOwnerByIndex(account, pageStart+i);
            tokenIds[i] = tokenId;
            _stakeInfos[i] = stakeInfos[tokenId];
            _totalRewards[i] = getReward(tokenId);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IERC721Enumerable","name":"_stakeNFT","type":"address"},{"internalType":"contract IMint","name":"_rewardNFT","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"baseReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"tokenIds","type":"uint16[]"}],"name":"batchClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"tokenIds","type":"uint16[]"}],"name":"batchStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"tokenIds","type":"uint16[]"}],"name":"batchUnstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"blackTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"tokenId","type":"uint16"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"tokenId","type":"uint16"}],"name":"getPower","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"stakeTime","type":"uint256"},{"internalType":"uint256","name":"unstakeTime","type":"uint256"},{"internalType":"uint256","name":"power","type":"uint256"}],"name":"getReward","outputs":[{"internalType":"uint192","name":"","type":"uint192"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getReward","outputs":[{"internalType":"uint192","name":"","type":"uint192"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"nestingTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"powers","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardNFT","outputs":[{"internalType":"contract IMint","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardPerDay","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint192","name":"","type":"uint192"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_baseReward","type":"uint256"}],"name":"setBaseReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isBlack","type":"bool"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"setBlackToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_lockTime","type":"uint32"}],"name":"setLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"indexes","type":"uint16[]"},{"internalType":"bytes","name":"_powers","type":"bytes"}],"name":"setPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_powers","type":"bytes"}],"name":"setPowers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8[]","name":"_rewardPerDay","type":"uint8[]"}],"name":"setRewardPerDay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setStakeOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"tokenId","type":"uint16"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakeInfos","outputs":[{"internalType":"uint32","name":"stakeTime","type":"uint32"},{"internalType":"uint32","name":"unstakeTime","type":"uint32"},{"internalType":"uint192","name":"claimedReward","type":"uint192"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakeNFT","outputs":[{"internalType":"contract IERC721Enumerable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakeOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"pageStart","type":"uint256"},{"internalType":"uint256","name":"pageSize","type":"uint256"}],"name":"tokenIdsWithStakeInfo","outputs":[{"internalType":"uint256","name":"len","type":"uint256"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"components":[{"internalType":"uint32","name":"stakeTime","type":"uint32"},{"internalType":"uint32","name":"unstakeTime","type":"uint32"},{"internalType":"uint192","name":"claimedReward","type":"uint192"}],"internalType":"struct Stake.StakeInfo[]","name":"_stakeInfos","type":"tuple[]"},{"internalType":"uint192[]","name":"_totalRewards","type":"uint192[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"tokenId","type":"uint16"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}]

61280060405261271060c0818152906200251060e03980516200002b91600191602090910190620001b2565b50662386f26fc1000060029081556003805460ff191660011790556040805161028081018252600081526020810192909252600490820181905260066060830152600a60808301819052600e60a0840152601260c0840152601660e0840152601c61010084015260226101208401526028610140840152602e6101608401526034610180840152603c6101a084015260446101c0840152604c6101e08401526054610200840152605c6102208401526064610240840152610260830152620000f591601462000241565b50620151806007556008805463ffffffff19166203f4801790553480156200011c57600080fd5b5060405162004c2038038062004c208339810160408190526200013f9162000314565b6200014a3362000162565b6001600160a01b039182166080521660a05262000390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620001c09062000353565b90600052602060002090601f016020900481019282620001e457600085556200022f565b82601f10620001ff57805160ff19168380011785556200022f565b828001600101855582156200022f579182015b828111156200022f57825182559160200191906001019062000212565b506200023d929150620002e4565b5090565b82805482825590600052602060002090601f016020900481019282156200022f5791602002820160005b83821115620002ab57835183826101000a81548160ff021916908360ff16021790555092602001926001016020816000010492830192600103026200026b565b8015620002da5782816101000a81549060ff0219169055600101602081600001049283019260010302620002ab565b50506200023d9291505b5b808211156200023d5760008155600101620002e5565b6001600160a01b03811681146200031157600080fd5b50565b600080604083850312156200032857600080fd5b82516200033581620002fb565b60208401519092506200034881620002fb565b809150509250929050565b600181811c908216806200036857607f821691505b602082108114156200038a57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a051612130620003e0600039600081816104a501526117f601526000818161044b0152818161098e01528181610b210152818161121e0152818161142501526115d601526121306000f3fe608060405234801561001057600080fd5b50600436106101e45760003560e01c806376ad03bc1161010f578063c8ea4dd6116100a2578063e6bf145411610071578063e6bf145414610500578063e9e1921a14610513578063edac5f3e14610526578063f2fde38b1461053957600080fd5b8063c8ea4dd6146104a0578063d5bf33e1146104c7578063d79cb81c146104da578063db6f2906146104ed57600080fd5b8063b48509e6116100de578063b48509e614610446578063b4e78ea41461046d578063b92bd2f11461047a578063bc0dfbfd1461048d57600080fd5b806376ad03bc146103e45780637d5df37e146103fb5780638da5cb5b1461040e578063a3489f551461043357600080fd5b80631c4b774b116101875780634710c848116101565780634710c84814610371578063534a75f5146103a4578063715018a6146103c757806372a20c78146103cf57600080fd5b80631c4b774b146102c7578063224e5e22146102da5780632f57ee41146102ed5780633d5ec47e1461030057600080fd5b8063089135b0116101c3578063089135b0146102575780630bacec211461027c5780630d6680871461028f5780630ece3849146102b457600080fd5b806246aba3146101e95780630373a23a146101fe5780630700037d14610211575b600080fd5b6101fc6101f736600461198c565b61054c565b005b6101fc61020c3660046119b0565b6105a8565b61023a61021f3660046119de565b6005602052600090815260409020546001600160c01b031681565b6040516001600160c01b0390911681526020015b60405180910390f35b61026a6102653660046119b0565b6105b5565b60405160ff909116815260200161024e565b61023a61028a3660046119fb565b6105e9565b60085461029f9063ffffffff1681565b60405163ffffffff909116815260200161024e565b6101fc6102c2366004611a72565b61072c565b61023a6102d53660046119b0565b6107db565b61026a6102e836600461198c565b6108ba565b6101fc6102fb36600461198c565b61090e565b61034561030e3660046119b0565b60066020526000908152604090205463ffffffff80821691640100000000810490911690600160401b90046001600160c01b031683565b6040805163ffffffff94851681529390921660208401526001600160c01b03169082015260600161024e565b61039461037f3660046119b0565b60096020526000908152604090205460ff1681565b604051901515815260200161024e565b6103b76103b2366004611ab3565b610965565b60405161024e9493929190611b2c565b6101fc610c9a565b6103d7610cae565b60405161024e9190611bf0565b6103ed60025481565b60405190815260200161024e565b6101fc610409366004611c86565b610d3c565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161024e565b6101fc610441366004611cd0565b610d55565b61041b7f000000000000000000000000000000000000000000000000000000000000000081565b6003546103949060ff1681565b6101fc610488366004611d22565b610dc4565b61039461049b3660046119b0565b610ed3565b61041b7f000000000000000000000000000000000000000000000000000000000000000081565b6101fc6104d5366004611a72565b610f64565b6101fc6104e8366004611d8d565b610fe2565b6101fc6104fb366004611db3565b611006565b6101fc61050e366004611df5565b611021565b6101fc610521366004611a72565b6110bb565b6101fc61053436600461198c565b61114d565b6101fc6105473660046119de565b611188565b6105598161ffff166111fe565b33600090815260056020526040812080549091906105819084906001600160c01b0316611ecf565b92506101000a8154816001600160c01b0302191690836001600160c01b0316021790555050565b6105b06113a6565b600255565b600481815481106105c557600080fd5b9060005260206000209060209182820401919006915054906101000a900460ff1681565b60008060075485856105fb9190611efa565b6106059190611f27565b60045490915060009061061a90600190611efa565b905060008183106106c6576004828154811061063857610638611f3b565b60009182526020918290209181049091015460ff601f9092166101000a9004166106628385611efa565b61066d906001611f51565b6106779190611f69565b6004610684600185611efa565b8154811061069457610694611f3b565b90600052602060002090602091828204019190069054906101000a900460ff1660ff166106c19190611f51565b6106fa565b600483815481106106d9576106d9611f3b565b60009182526020918290209181049091015460ff601f9092166101000a9004165b90506064858260025461070d9190611f69565b6107179190611f69565b6107219190611f27565b979650505050505050565b6000805b828110156107895761076b84848381811061074d5761074d611f3b565b9050602002016020810190610762919061198c565b61ffff166111fe565b6107759083611ecf565b91508061078181611f88565b915050610730565b5033600090815260056020526040812080548392906107b29084906001600160c01b0316611ecf565b92506101000a8154816001600160c01b0302191690836001600160c01b03160217905550505050565b60008181526009602052604081205460ff16156107fa57506000919050565b6000828152600660209081526040918290208251606081018452905463ffffffff808216808452640100000000830490911693830193909352600160401b90046001600160c01b0316928101929092526108575750600092915050565b6108b3816000015163ffffffff1642600186815461087490611fa3565b811061088257610882611f3b565b8154600116156108a15790600052602060002090602091828204019190065b9054600160f81b911a0260f81c6105e9565b9392505050565b600060018261ffff1681546108ce90611fa3565b81106108dc576108dc611f3b565b8154600116156108fb5790600052602060002090602091828204019190065b9054600160f81b911a0260f81c92915050565b60035460ff166109555760405162461bcd60e51b815260206004820152600d60248201526c29ba30b5b29d3737ba27b832b760991b60448201526064015b60405180910390fd5b6109628161ffff16611400565b50565b6040516370a0823160e01b81526001600160a01b038481166004830152600091606091829182917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f99190611fde565b9350600084871015610a1c57610a0f8786611efa565b905085811115610a1c5750845b806001600160401b03811115610a3457610a34611dce565b604051908082528060200260200182016040528015610a5d578160200160208202803683370190505b509350806001600160401b03811115610a7857610a78611dce565b604051908082528060200260200182016040528015610ac357816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610a965790505b509250806001600160401b03811115610ade57610ade611dce565b604051908082528060200260200182016040528015610b07578160200160208202803683370190505b50915060005b81811015610c8f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016632f745c598b610b51858d611f51565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015610b9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbe9190611fde565b905080868381518110610bd357610bd3611f3b565b6020908102919091018101919091526000828152600682526040908190208151606081018352905463ffffffff808216835264010000000082041693820193909352600160401b9092046001600160c01b0316908201528551869084908110610c3e57610c3e611f3b565b6020026020010181905250610c52816107db565b848381518110610c6457610c64611f3b565b6001600160c01b03909216602092830291909101909101525080610c8781611f88565b915050610b0d565b505093509350935093565b610ca26113a6565b610cac6000611566565b565b60018054610cbb90611fa3565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce790611fa3565b8015610d345780601f10610d0957610100808354040283529160200191610d34565b820191906000526020600020905b815481529060010190602001808311610d1757829003601f168201915b505050505081565b610d446113a6565b610d5060018383611856565b505050565b610d5d6113a6565b60005b81811015610dbe578360096000858585818110610d7f57610d7f611f3b565b90506020020135815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610db690611f88565b915050610d60565b50505050565b610dcc6113a6565b828114610e115760405162461bcd60e51b81526020600482015260136024820152720a6e8c2d6ca74c2e4e4c2f29cdee89ac2e8c6d606b1b604482015260640161094c565b60005b83811015610ecc57828282818110610e2e57610e2e611f3b565b9050013560f81c60f81b6001868684818110610e4c57610e4c611f3b565b9050602002016020810190610e61919061198c565b61ffff168154610e7090611fa3565b8110610e7e57610e7e611f3b565b815460011615610e9d5790600052602060002090602091828204019190065b601f036101000a81548160ff02191690600160f81b840402179055508080610ec490611f88565b915050610e14565b5050505050565b60008181526006602090815260408083208151606081018352905463ffffffff808216808452640100000000830490911694830194909452600160401b90046001600160c01b031691810191909152901580156108b35750602081015163ffffffff1615806108b357506008546020820151610f559163ffffffff1690611ff7565b63ffffffff1642119392505050565b336000908152600560205260408120546001600160c01b0316905b82811015610fd857610fba848483818110610f9c57610f9c611f3b565b9050602002016020810190610fb1919061198c565b61ffff166115b6565b610fc49083611ecf565b915080610fd081611f88565b915050610f7f565b50610d5081611718565b610fea6113a6565b6008805463ffffffff191663ffffffff92909216919091179055565b61100e6113a6565b6003805460ff1916911515919091179055565b6110296113a6565b600281511015801561105857508060008151811061104957611049611f3b565b602002602001015160ff166000145b6110a45760405162461bcd60e51b815260206004820152601a60248201527f5374616b653a696e76616c696420726577617264506572446179000000000000604482015260640161094c565b80516110b79060049060208401906118da565b5050565b60035460ff166110fd5760405162461bcd60e51b815260206004820152600d60248201526c29ba30b5b29d3737ba27b832b760991b604482015260640161094c565b60005b81811015610d505761113b83838381811061111d5761111d611f3b565b9050602002016020810190611132919061198c565b61ffff16611400565b8061114581611f88565b915050611100565b336000908152600560205260408120546001600160c01b031661117361ffff84166115b6565b61117d9190611ecf565b90506110b781611718565b6111906113a6565b6001600160a01b0381166111f55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161094c565b61096281611566565b6040516331a9108f60e11b815260048101829052600090829060019033907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa15801561126d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112919190612016565b6001600160a01b0316146112b75760405162461bcd60e51b815260040161094c90612033565b60008281526006602052604090205463ffffffff161515811515146112ee5760405162461bcd60e51b815260040161094c9061205b565b60006112f9856107db565b60008681526006602052604090205490915061132590600160401b90046001600160c01b031682612086565b6040805160608101825260008082524263ffffffff90811660208085019182528486018481529b8452600690529390912091518254935199516001600160c01b0316600160401b026001600160401b039a83166401000000000267ffffffffffffffff19909516919092161792909217979097161790955550929392505050565b6000546001600160a01b03163314610cac5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161094c565b6040516331a9108f60e11b815260048101829052819060009033906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa15801561146c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114909190612016565b6001600160a01b0316146114b65760405162461bcd60e51b815260040161094c90612033565b60008281526006602052604090205463ffffffff161515811515146114ed5760405162461bcd60e51b815260040161094c9061205b565b50506040805160608101825263ffffffff428116825260006020808401828152848601838152968352600690915293902091518254935194516001600160c01b0316600160401b026001600160401b039583166401000000000267ffffffffffffffff1990951691909216179290921792909216179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516331a9108f60e11b815260048101829052600090829060019033907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611625573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116499190612016565b6001600160a01b03161461166f5760405162461bcd60e51b815260040161094c90612033565b60008281526006602052604090205463ffffffff161515811515146116a65760405162461bcd60e51b815260040161094c9061205b565b60006116b1856107db565b6000868152600660205260409020549091506116dd90600160401b90046001600160c01b031682612086565b60009586526006602052604090952080546001600160c01b03909216600160401b026001600160401b03909216919091179055509192915050565b600061172c670de0b6b3a7640000836120ae565b90506000816001600160c01b03161161177f5760405162461bcd60e51b815260206004820152601560248201527414dd185ad94e9b9bdd115b9bdd59da14995dd85c99605a1b604482015260640161094c565b611791670de0b6b3a7640000836120d4565b3360008181526005602052604080822080546001600160c01b0319166001600160c01b039586161790555163731133e960e01b815260048101929092526024820181905291831660448201526080606482015260848101919091526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063731133e99060a401600060405180830381600087803b15801561183a57600080fd5b505af115801561184e573d6000803e3d6000fd5b505050505050565b82805461186290611fa3565b90600052602060002090601f01602090048101928261188457600085556118ca565b82601f1061189d5782800160ff198235161785556118ca565b828001600101855582156118ca579182015b828111156118ca5782358255916020019190600101906118af565b506118d6929150611977565b5090565b82805482825590600052602060002090601f016020900481019282156118ca5791602002820160005b8382111561194157835183826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302611903565b801561196e5782816101000a81549060ff0219169055600101602081600001049283019260010302611941565b50506118d69291505b5b808211156118d65760008155600101611978565b60006020828403121561199e57600080fd5b813561ffff811681146108b357600080fd5b6000602082840312156119c257600080fd5b5035919050565b6001600160a01b038116811461096257600080fd5b6000602082840312156119f057600080fd5b81356108b3816119c9565b600080600060608486031215611a1057600080fd5b505081359360208301359350604090920135919050565b60008083601f840112611a3957600080fd5b5081356001600160401b03811115611a5057600080fd5b6020830191508360208260051b8501011115611a6b57600080fd5b9250929050565b60008060208385031215611a8557600080fd5b82356001600160401b03811115611a9b57600080fd5b611aa785828601611a27565b90969095509350505050565b600080600060608486031215611ac857600080fd5b8335611ad3816119c9565b95602085013595506040909401359392505050565b600081518084526020808501945080840160005b83811015611b215781516001600160c01b031687529582019590820190600101611afc565b509495945050505050565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015611b6d57845183529383019391830191600101611b51565b505060409250848103838601528087518083528383019150838901925060005b81811015611bce578351805163ffffffff90811685528682015116868501528601516001600160c01b03168684015292840192606090920191600101611b8d565b50508581036060870152611be28188611ae8565b9a9950505050505050505050565b600060208083528351808285015260005b81811015611c1d57858101830151858201604001528201611c01565b81811115611c2f576000604083870101525b50601f01601f1916929092016040019392505050565b60008083601f840112611c5757600080fd5b5081356001600160401b03811115611c6e57600080fd5b602083019150836020828501011115611a6b57600080fd5b60008060208385031215611c9957600080fd5b82356001600160401b03811115611caf57600080fd5b611aa785828601611c45565b80358015158114611ccb57600080fd5b919050565b600080600060408486031215611ce557600080fd5b611cee84611cbb565b925060208401356001600160401b03811115611d0957600080fd5b611d1586828701611a27565b9497909650939450505050565b60008060008060408587031215611d3857600080fd5b84356001600160401b0380821115611d4f57600080fd5b611d5b88838901611a27565b90965094506020870135915080821115611d7457600080fd5b50611d8187828801611c45565b95989497509550505050565b600060208284031215611d9f57600080fd5b813563ffffffff811681146108b357600080fd5b600060208284031215611dc557600080fd5b6108b382611cbb565b634e487b7160e01b600052604160045260246000fd5b803560ff81168114611ccb57600080fd5b60006020808385031215611e0857600080fd5b82356001600160401b0380821115611e1f57600080fd5b818501915085601f830112611e3357600080fd5b813581811115611e4557611e45611dce565b8060051b604051601f19603f83011681018181108582111715611e6a57611e6a611dce565b604052918252848201925083810185019188831115611e8857600080fd5b938501935b82851015611ead57611e9e85611de4565b84529385019392850192611e8d565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b60006001600160c01b03828116848216808303821115611ef157611ef1611eb9565b01949350505050565b600082821015611f0c57611f0c611eb9565b500390565b634e487b7160e01b600052601260045260246000fd5b600082611f3657611f36611f11565b500490565b634e487b7160e01b600052603260045260246000fd5b60008219821115611f6457611f64611eb9565b500190565b6000816000190483118215151615611f8357611f83611eb9565b500290565b6000600019821415611f9c57611f9c611eb9565b5060010190565b600181811c90821680611fb757607f821691505b60208210811415611fd857634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215611ff057600080fd5b5051919050565b600063ffffffff808316818516808303821115611ef157611ef1611eb9565b60006020828403121561202857600080fd5b81516108b3816119c9565b6020808252600e908201526d29ba30b5b29d3737ba27bbb732b960911b604082015260600190565b6020808252601190820152705374616b653a7374616b6553746174757360781b604082015260600190565b60006001600160c01b03838116908316818110156120a6576120a6611eb9565b039392505050565b60006001600160c01b03838116806120c8576120c8611f11565b92169190910492915050565b60006001600160c01b03838116806120ee576120ee611f11565b9216919091069291505056fea2646970667358221220aae674d7d94d10284e765b4bf7d8a34f81fb6513dd6b925ef9677aadccdfb20764736f6c634300080b003372646e6481646e727384646e646464646464707e737064766464647372726e80706e6e70727272727064727064727a7d706e647c6473647d827c64647a64767c817a6464706472756464736464706e6464736464647373647c6e736e64647064646472646473726464646478826e886470716e76646464737364647f646470646e6472647e7072727264727264817c64647d72738064647a73727270646464727664647f70726480707364646e6472736473647281707c646e6464646473847f64766e72647064827f76727c7d836464647072646e6e6e6e6e6464647364647e6e646e647d647278646e707864646e6470736e6e7c737364647a6e7d6473707e7c7a648073706e6464647064767876646464646e64737264647c648b7a7664646e646e727e7372736e7264736e7664646472646464806464757270717d64827a64726e6464726e6464758164646e64646e6464726464647f707e64727c70737264647d6e64647281706473647c6470647064646e88647373707e6464716470707072727e70646e70806464736e8272646470847c7d7070647c646e7c64756464646e647e73646e76647f7270646e73726e7d6e7d64647064707064647f646473646e6464646e64707f6464728a6e647270726473726e647c7064726472646e64736472646e6464727372646e647a64648c707f76766e64646e767f7271648e7a647d72647a7264647f737d7273767f6e646472826e706e7e72646473647370647c64728773726e64646e64727072647664727670647573737c646464737373646482647f6e736470707c707c64646464726464646473646464646464646e6e7c64707e7d7271646464706476647072706e6488647f6e6464647364646e70646473736464768964647d64647364736473707c647364647d6e72647364646e707264646e64646470738f6464737064648a647c767e6e7364706464646e7264647a64646472648064736476646464738c6464736464646e72646e6e7d64647d647264646e647364646e6472647072647370647f737d7c6471647f7071707e647d7e648a64728170646e7c70647f72647c706472706e6485647264736464706e6e64647b6e647364647672707d7c6482737570646464647376646464647078706464816473647064707078766e7b64646e6e6471726473647373647671766e76707280646464706e6e6464717e736e6464726e64647673766e647664647872757164647d646e73726e646e786e72646e706473646e647264726e73726e7f647e73726e7f73716464727072647064786e6e646e646e8e64647670706464646464646464646e6e7e706464647064807f757e7273726e84646e6470647c6e70858a6e7a707673646e72647376706464726470646e7c76737f6e6e64647c827672737364646464726464726464706e7f6464646464647064707b646464886464646e64736464716e766472717364646464736e6e64646e737f7f64727e6470706464727f7a736e806e6464646464646e6e646e7c7a717f6473648b7664647364716482646e707d8d7f64736e64727064646475646e6e7f727c647d64706e7c6464737c726464647c64736e82708c706e647073646e6e707364646e647264646e646e6464646e76647870646464717264647364646464736473646e7270727064647d6464646e64646e647264766e6e647d70856e736470646464646e707064646e7f728264766476647a7064646e646476647378727164817f7e737c7073646e7364726464646e647c6e6e73647264646e646464887c6e647876767f707664646464766e756e6464736e64726e647c826464647273646473707064767f7a646e72647d6470726e8164727273647364647264706e7264647d7273896e648164647b64647072647a737373756e727073646464646e64646470877c7d7c7d736472647064807c6464647c64727070766e727e827d647d647f64827c6e70736e6e73727264726e647273647c70646464647e72726e64646e7164647073646464646470646e646464756e8264646e7d736483646e64766e6464646e6464737f6e736464647270706e8164727264768372707175646e7c76726e646464707d7a767d6464647670646464646e647d707264646482736e646e647664647364647264646e64706464706e6e7a7064727370646464646464647d6473646473736e708164736485837c6464708264646464646464727c707070737384827364726476726464706e85647672647c7164647d707672846e6e6e726e7e6464706e76706e71737e707172646470646472646472766464647281766464646e877c6e64646e647b7364646e73648064726464736e6e7364857c6e6e6e7273727b726464738164727264726e70726e64646470707372647e737c6e647673727271647264646464707c6472736470646e648164766464646e64806464646476646e7176726464646e646e6e766e646473726e7c6e6464647f6e64707072717d6e6e647072827264647070727664707064646e8c7276647d72807a647364647f64647373706464647c647f64756e727d736e646e64646e6464736481647e7264647c736e70648a767e646464646e647c6e8264816464647364736464726470648b716473647864647e647264647c7c7e7264737075726470706e64647272736464647d7664737a727c706e64727c646e726473646464726476647064707c647664726470646e6e76646473646470647672707e6e7a72646473706e7f6e64707072647364727e646e64648c64647e7f72737e6472646e646e76737064646464736476646e7064646e6472646464736464646472706e6464727d646e73646e6472646464647c70647064736464647e6e91767e647264647073646e6476707f7f6470726e7c6e7e7072647672647e85648264646464647d707c7364736481736472766473647d7c646e73646e647c6e64826e647e736e726e7c8564646e6e827f7e6e8f73646473647d7f64646464768864647c7a6e766464647375716e78646464706e827872648073647d70756e727064648364737264647c7270826472786e64647c706e6e64766473646464717676727364727b6e647f646e64707670647264647c73767364646e6e64767c6472707e647e6e647c7264736470646e647e646464646473727064766464647a7564647081786472816470737f646e707a646e706470737364736e64646e73726464727564646e6464646464646470757c64767f6e737f646464647d7064646e64807d7264737c6464647a6464647e64647a6472647082646e83737364646e64646e646e76706e647064646e7072646e726e73647f6e766e6e6464647e72807c646e72737082767f64647164646472736464646e64646e737e76856e647287726472767f6e647270646464706e726e64716e73646e6472646476646464647d6464647064647064727e6470757f70646464646464646e7e6473807c6472646e6e64766e73646e728a64647264736e7e726464647272646e73726464736464646e6e646e72707371647c707d897f6e646e7664646e64726476767164646e7f646464647e6e6e7264737370647f72646e6e646e646e6e7064727f6e647c7f646e72706e76646e70647373827664647172646470726e73647f6e7a64646e70646e7a64726e70648264646464646e73646e646e72706472646470729064766472647264736470736473647284646464736e646e7d647076706e6464647c736464727f737e7f727372647264647c6e7364727264648164646472726476726e708e6486647f64647664726464646472737c708064646e646464828c7b646e7281766473647364707387646480646e64647264647070766e646464647c8e6470646464647b6e82766481817f646e6470787064726464837d7c70646464736e7064816464736473646475727873736472706464706e6e6464706464737373717373737d64646e6473727e6470726e646e6472877c646e73646e64806476737d6e73756e6e6464647a717264736e6464707c646e826464647d647e6e647870736472716e647276727264646464648172736e6e647d6e707364647164707e647f7064646464647264646464726e736473646476736464727364736e647270646e7e80706e6e64646464726473646464646e6e647d646e80646470646464646e6e7c6e646470646464647264706e64707e646e726e6464737c64646e7f7f736470707264757e737864727f647373647a64646e6e6e646e72707f647373648276646e7c6e64647f7264646e64647d7272646e72727f7573646e6e6e7c72647e646464707383646e647d64767b707c70726470646470648872647264737c706e647d70727373706e786e647364647f647364708264727270646e647e64648c7864726472707064716472736464737370736472737064826464646e736e76646e646e646e64646e7e738072646480646e70646e64646464646464648173646e646e72706470707164646472737064766e766464646464646464647e7d7064737b64647f646472646488646476707f646e826e7381646464647064726e72726464736e64736e727082727a738b707a6e646464756476647264646e73647c836464806464817c7c647264806470647e6484646e64646e647e64807272727070646473646e64647564726e766e7c6e648764647264646464726473737573737e7d726e647c647276647c6e7d7072726470707a6e64647172647076646e64647a706464647073766473647d7a707264737e647f6464736e7373826e736e6e757873647d736473646478646464646e7075647264647c6470647f64736e7f7364767a647d6e7370727c6e646472807d7364846e646e64726e6e7d7664646484707a646473736464737c706e73706473646464647c647d7c646e646472646464647272646464647871647e6464737d6464646464647b72726464707080717b6e7d6e7064647c7364727c707064646e6472647c64728264717f6e7073646464646e6e646e6e6e8464646470647e7370737373646e867273646e64646e6473646e727d727276646464707d806470647264647c6e64736e88646464647d6e7d6e648776766e76646464806464647e64646e6e64647f64727364646464647064737064647264647c6464646464646472707c726e647f766473877c646472646464766470647c73646476646e70647d6e768e726e708b7f6464647876716472646e64897e6464736e647f8264646470647f7272646464706e6e8c646475647273646e737270727d6e6e73646464736e6464768a8f70647370736e64646e647c72706470736472646464646e72647264736e646470826464646464646e7c6464806464736482707e647d7e646e707f76736481647c647f6e6464646464647364826e7c64706464646e646473757178646e64647664768264646473647f7f64737664646464727364646e7a706464646464647c6e646473708864707272646464736e6470726464646e7a6e6e7e7364706e6e64647e64828070756e646e7264646e7364647372726e647c64706e726e647264646473646e646e7664646470647c6470707872726464646e7f6e6e706e64648164648064647e64646e706e6472646464647d82646e70646e70646e646e72646464737c647c7e647d64647c6476737d826464756470647f6e70766e64647064647270646482807c7f7e6464647664726e64726e6e7d64646473856e6e7d646464817364726473726e6470726473646e646470646e76647d7373726e707d64647264706e64646e6489646e64646464647e64707364646e736e736e646464737264646e80647e7c647064646e7082646e64647a6475736e64826472646464727f737364726e716e8d7d646470646464646464646483647c647564646e647c6e647e7064766464647e6464646e648564706e6e64706e64707370707064647e8f81647f647564736e736472707073727c6472647681646481647282716e6472807064727f706e6e73647a646e82647f646e7270767c6472646e7f6464646470647a647070646470647e647f6e647264646464646464646e647264706e646472766e7d76647e70727a736464737c6480707664736e78737c646464646464827a646464706e646482726e646473646471726e7e737c7064647664726464737e727c6e82647070646e707a64647c737873706e8b646e7376647f807364706464856e6464736464727372738464646e6e646464706e6464707c7264707f6e7f707564646e647064706e64646464766464646e8264736464767664647673647a76646e726e7f647064766e6471648b64646e8c6e6e7c76736e647c8364726e647c7c646470736e6e6476727364646e646e8271646e76647070707a64647270646464707070646470646470708175706e6e6e728c73726476736476706464647d64647064647070646e647064646e648264646e64647c7e7676647e6e64646e6e6e64647264706464646e6e7382647c7a6464737c6e647a76647375707364647c6464646e646e6e737f7d6e6470646e646e737a6470646464707a726e7572706475646e6e72646464647264647c64646e646464646464646e7c6464726e6464727e727e646e7d726488646e64708e7073647572727c6e6e7f6472647076736e64647e647364736e64646e6e6464646464736e726e6e73646e72826e7f6472647364647c6470707364647c6464706464646464647264646470646e646472726e646e64706464646464736464707f7f647a6e6e6464706464646e756464646e7a64726e707e6e6e6e716e647f7d737f707364647c6e787273707f64727264647070766464646e70647c7364647d6475646e707e7c7370766e6e7071647c8470646470726464766464706e7e727f64867364728970648064727c64647264647e6e7c64737c6472716e6464727d6e7f647070647c727075736471736482646476707264646e64647e7370707070648a7b7264646e736e647c6480646472707372907271646e8573647370706e7e7273647d70726e7080766464816e6476646464647c7373736464706e7276647673646e707d6464647d6e726e737c6e64647c7d6e647c7370647d64727c707f6476646464806e6e64736e646464648b7c7f646e646e80768173647373726e827e7f707273646e646e64727f64646e646e6e6e717d826e646481647d7f6e64647864647264728164646473647c706e7d647273726e7d646e64728070646470726464646e6470827c7a648264646e6e646464647d6464647f766464647f73726e64706470647f707a646464646464707d7f648c8972706473726e6464647e6e73706e64648364727384646471646470706472646e64647c646e827e7364706e64707d6e646e646e737d7c7c6e6464766e7364646464726473726476646475647b647172707c6e6464647d647f73707d647e807d646464767c737864647a6464647c647364647164646e6482646e64646e72806e6464726472646464756473647c72726473647d64717f7e64736464647f64646473706e64706464707d736473737c647664766464726e6e7685646464646480647c64647d726e6e7a7d6e7d64647c6482726e647e70707c6e647672808a816e7264727c64886464648164736472647273726e6470706e647364707f7f646e647d6e7064736e646e70826e706464787e6470727e7364648164706464737c6e70646473827c7d737364728172647264647364647270727e726e64646e7d7264646e70706e6e6e70786464706472647e6464646e7064646476647264736e6480647e6464647c707c7285736e766464726e7064726464647264736e6e7064647f646e6464646476646e647d6e6470757d646464707a647f7264646e70647d6464647f7364856464726464736e6464646e646464647d73648b6e70646e6473727d6e737373726e7d647e6e6464647c646464786e64726473707c646e7c64726464766472727e8a64647d826464737c716472716e7d73646470648272726464646e7e6476806464877f64646e647a647b78707f6e706e70706464706e7264726464766464646e6e72907273646464736e736464646472837f7e73647e7176647264816e647073646e736464646489726e646e7c6464647e64907d64646478706e646464737d646e6e7c64736e64647064726e76647f64706e70646464647073646e646e6e736e6470706e646e6e737a706e646e6464707d70646e72726e7064766e7f727e727264727a646464646e64726e6464727264707c7f6472706473646476707a648473728664727c727c64646e7264706e64646482646e64646e647e737364646e6e646464648264647c6e7064646e707c726e7d64727d64767c70647f7c64706e6464766470707270726472647a6e6464737d8b6464646e646e64716464736e6e736464707d647276646472646464917d64737676646464648c7264826e736464706e64717264647d64736e646464646464737264647d647d646480646e73727071886464766e6e6e64646473726470646464648e648b73646470757664646e6e6464737273736472726e726e7b736472726e647073647083887c646464706464646473646464736e647c6464646464647d7f706e7f648464647b646e7e64647c647664646e6e647076737c64648364647064726464646e7373707f646e70647d7c647c75646e64646464646472727c736464646e7264646e737264767a648064707c646e64646e6e6e73647f64646e7c6464736475646e70737a646e647e84646470647d6472707c7073647264736e6e7c706464727c6e647070646470727d726476707276706472707080646e7064737c7d737f64647e646e646e6e7c76726464648264737264646472646473647064647d6e646e647f646e6e647f6e706e6e6470726e64737064737f646e646e726e646e646e70727c646472726e6e646e64647a6e73736464646464827064647d726464646e646e646470646e64896e6464756e6464646464706470647f7064646464647064647364646e6e736472646472736e646464646e737b64646481726e646e647c6472707070646e6464647d64737664647375647370646476647e6470646464646e7164726e6e64648c64646e647f64647664726464647064647d647a7664767d6e72756e647273646e64648f7272727080726e6e70646464647071727c7a8064717c8e6e6e757572646e64736473707f737a64707373647264767d647273647670736e73706e64646e846464646e7372646476647e72647f7e647f64737a647c646472727f647d766e648b646470727d647d64707e6e737070646464706e73707c6476647d64736464726e7264737364727264646e647070706e64736e70646464766e7670767264707c647064647264647664646464647376646473646e856472646e64646480647373647264726464767d6e6e647086648276756e6472706e6e887f64646e7a70647364717f727376726e646e70646e64647d708a646464647d64647664646e846473646e6e7a6e737c756464647d7364646e647d707376646e64646464647f6470646e7c7364707264706473646464646473647c6481727664766476647e6470646470736464647064646e72708364646470706e8064726464727c6464857d6e706e7d826464706e737064646e646464707664646e72648a646464646e64647164646470707f647264647671646e6464727f7e7370736464647c646464706e64647f64707c71646e72646472787d7364646464736470726464648a647a647d706473736e64647272646476647d647e646e736e736e64706e6e72726e87647c647064646e727864707272736e64736464717064648a646e64707e827264736470736e64646464736e7a7a7e816e8972706e647672646470647d646e64766470896472646e646e7d72736e64807264648064727673647064647c64646e64707e646e64708664727078647064786e6e736485646473736476646473717070706e646e7f8972727c6e7d71646e64646e647c6e6475707c646e6464647d726464727d64737081646464646e647d7d7a826e6e64646472736e7f6464647f64707e6e647d70646470706464647c64737f707370826e64647064726470647b6e647264767c646e6e6e737f6e6464786e82647c6476646e7f707364647e7d73646e64707284646e64646e647f6464706464727064648564806e72727f6470647e647676646e646e7e646e646e646e64716e64808f73646464646464646e6472736e64646464736e6e646e736e64736464707e64737d646470808f64726473646e64647375706e64646e64736464646e64647064726464646e73736473647d6e70707e8c647f646464727d726480646464647c707372646e75706476646e826464767e647c647e7d727264767c6464727e737c64716e647d738064647c6464827f72646e8264726e7280706e6464647a7c7c6e6e64646476646e6e6464727c647d727c73726e6464737082766464707070647f7276646e717384708b646464736478647064647f64647e6e647c7a7c767e64737e64727364646471647a72706e6e6473646464646464647364826473726464767272647d7270646464716e647e647164737388646e647373646464646464707c706472647c726e64727264647e6e64647364807264646e6472646e726e70647c6464646464646464646464736e647c7378647c6e706464737c7b646464647c726481707664646e72876476647c71646471648570646470646e7c6e64707e64737c7f646e6e7d6e7564706464647f7a73647e836471646e6464726473647c6e706e7f6482727a6e646e64726e717f8e64766464646464767264737f6476736e647f64646473736472866e728064647676647c64646488646464757a7e64647178646e6e6e646472646e72647264646464646470647c647364646e64727c71707b6e647c75707372726e7c6473829173646e646473706e766464647a81827e647164646e6464736e72646e64647676647072646e7d64706e7f727272726e7c646464706464646464737e73727064648b78647664647664706464727272646487728e7e7364646464647264647e6e6475737f646e736473737264737064646e6464706e6470647e8e64726e706464886e73646478646473707e7064766e6e647c70647e7d81646464646e73646e7c647270647e7264706e646482647064646e7d64816473887d647370706464647372737264726464737564646464646e7e646464646470647b7264806470646e646e64646e6464648264647064647364646476647c72737c807e6464727d7c6464647c736e7d64646e7c70647d647e64646e6488646e646464736464646e708264766e6464647273726470647282646e7364706e648d737e70647d7272646472646e75806476647064706464736e64707664816464646472726482707e737f647d6472706e646e64646e6464647080647e7264736464766e70837c646471736e736464647c64727064707c73646480726e6e7364646464737664647364708273736e64706464706e64706464837276646e6464826e8b6e70646464646464646473817a71646e646482646473736470737e8c70647f6e6464647264646464646e70876e647d6e70727f7f826470647370786e647d6464707f6e647f7064646e647264647a647364646e6476647d7e7c767272727f72646482737264708c76726464647c646e64736e646e727c708064647073646e646472737664737f647c756e64646e7d646e6e64736464646e736e73646473736464646e73646e646472727c7f826e76647364788c6e736e647e6e64706e72706e646e70646464647d727364646464756475646473766e7f76706e6473706475737a7a767d6e647382706464736e64726e647e6464736e707364706e7e6472726e646e816e646e648364646470646464706472736473766472737e647e64647e828964647d736e70736e7c7f827375738071647f70646e786464646e6464647f6e6e7f64737d827c6476647a6470737e7c6464807d647864737d6464646464648b64726e70727673647c64737c64647370646464736e6e6e6464817c756473647c6e6472737364896e7376737264736464726464647f6e73646e6e64707c647664706464646e64647364646464647276647373647364736e6464736e7164646e7c7d736e7c73647273767070726464646e647f64806e6e6470647d7170647a6464647b64648564647064647270648b6473706e647c736e6e6e7076707280646470807080648464647f71727264646e756e72646464647064647c846e707273646e7270736464647270646464646464648b647f7364707e736e64647e8d6e6464647172726e64706464726e70647a706464648d766464826e8d7072646472647064736e7364707075646e647a64737370767e8e64726e6e64727c70767364757a7b7264827364706e646e706e826464648f648d7f6464647a64648a7e7270706480647270726e706464647064727a647c736464736e6475646471647270736e7f646473727f646480727f7264646e64647264726473737264726470826e6e64647f6e7164726464646464726e64647064647c73716473647073646e6472647b6472646e73646e7673646e6e6470706464826e73647e646476646464737c7d6464728d726e7c737264737b647e7e6e7864646464646e64737864646464646470726e6e647664647364738b727064726464767283727f646464727164646e646e736464646e7c8264646e64736e70706e6464647d816e646e6e6464646e646e8f70646e76646e6e70646464827c7073726464646e7b6e6464647270646e6e64827370716470647e64646e64736e7673646e707e64646e6e6464647364756e647c7064646480646e72877d6464706e706464707064647172648e73646464647c646470646473717270716464646e707072836473646464736464647364727264736473857c6464646e646e64647c717073646e6464647170647f6472647e64646464727c64647d70737c646464906e647d646e73806e8b64827f7f707c647e6e706464707064646e73737380646e647f76707089647f64646464647c646e73767d647d707a646476727070706476646470646e757085646e6e7e6e786e646471728270646470726e73726473647c647c757678647676647270647373736470647c64646470706472706464718364766473816e766e7e647c71647c64647c72726464646478768164647264647d6473807064646e646e64727c7e73646464707f6472707e6e646e647f7264646464646464647073726473707664646464646464646470737c647c728e7a6472706e7073646e7370736e726464766e6473646464647c6472707264647c73706e727664647d7264717364726e6464646464766464727070727e6e7f64647e736472646464646e64646464836e64646e70766473706472646464647e767a646e64857d7364647a7e6470646e6e64646e64707f6e646e75707364826464767f8a82706464766473646e648164766e646464646e72647264726e7682737373736e6464646480646464857c7270646e76727364647671647d6464646482727f7a646464646464647670736e7d647c64727073647c6464646e7672766e64737064727664766464647d70646473707264869164646464646e817272646464648e6e7c6e6472766473728e72736464726e7278757c64647270707d7664816464707e72647c70817364646e646472707d6e64706e7d64647064647064646464647073647f726e000000000000000000000000dcf68c8ebb18df1419c7dff17ed33505faf8a20c00000000000000000000000056b169c0f63d392dfd743e22bd9da4f6a8098372

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101e45760003560e01c806376ad03bc1161010f578063c8ea4dd6116100a2578063e6bf145411610071578063e6bf145414610500578063e9e1921a14610513578063edac5f3e14610526578063f2fde38b1461053957600080fd5b8063c8ea4dd6146104a0578063d5bf33e1146104c7578063d79cb81c146104da578063db6f2906146104ed57600080fd5b8063b48509e6116100de578063b48509e614610446578063b4e78ea41461046d578063b92bd2f11461047a578063bc0dfbfd1461048d57600080fd5b806376ad03bc146103e45780637d5df37e146103fb5780638da5cb5b1461040e578063a3489f551461043357600080fd5b80631c4b774b116101875780634710c848116101565780634710c84814610371578063534a75f5146103a4578063715018a6146103c757806372a20c78146103cf57600080fd5b80631c4b774b146102c7578063224e5e22146102da5780632f57ee41146102ed5780633d5ec47e1461030057600080fd5b8063089135b0116101c3578063089135b0146102575780630bacec211461027c5780630d6680871461028f5780630ece3849146102b457600080fd5b806246aba3146101e95780630373a23a146101fe5780630700037d14610211575b600080fd5b6101fc6101f736600461198c565b61054c565b005b6101fc61020c3660046119b0565b6105a8565b61023a61021f3660046119de565b6005602052600090815260409020546001600160c01b031681565b6040516001600160c01b0390911681526020015b60405180910390f35b61026a6102653660046119b0565b6105b5565b60405160ff909116815260200161024e565b61023a61028a3660046119fb565b6105e9565b60085461029f9063ffffffff1681565b60405163ffffffff909116815260200161024e565b6101fc6102c2366004611a72565b61072c565b61023a6102d53660046119b0565b6107db565b61026a6102e836600461198c565b6108ba565b6101fc6102fb36600461198c565b61090e565b61034561030e3660046119b0565b60066020526000908152604090205463ffffffff80821691640100000000810490911690600160401b90046001600160c01b031683565b6040805163ffffffff94851681529390921660208401526001600160c01b03169082015260600161024e565b61039461037f3660046119b0565b60096020526000908152604090205460ff1681565b604051901515815260200161024e565b6103b76103b2366004611ab3565b610965565b60405161024e9493929190611b2c565b6101fc610c9a565b6103d7610cae565b60405161024e9190611bf0565b6103ed60025481565b60405190815260200161024e565b6101fc610409366004611c86565b610d3c565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161024e565b6101fc610441366004611cd0565b610d55565b61041b7f000000000000000000000000dcf68c8ebb18df1419c7dff17ed33505faf8a20c81565b6003546103949060ff1681565b6101fc610488366004611d22565b610dc4565b61039461049b3660046119b0565b610ed3565b61041b7f00000000000000000000000056b169c0f63d392dfd743e22bd9da4f6a809837281565b6101fc6104d5366004611a72565b610f64565b6101fc6104e8366004611d8d565b610fe2565b6101fc6104fb366004611db3565b611006565b6101fc61050e366004611df5565b611021565b6101fc610521366004611a72565b6110bb565b6101fc61053436600461198c565b61114d565b6101fc6105473660046119de565b611188565b6105598161ffff166111fe565b33600090815260056020526040812080549091906105819084906001600160c01b0316611ecf565b92506101000a8154816001600160c01b0302191690836001600160c01b0316021790555050565b6105b06113a6565b600255565b600481815481106105c557600080fd5b9060005260206000209060209182820401919006915054906101000a900460ff1681565b60008060075485856105fb9190611efa565b6106059190611f27565b60045490915060009061061a90600190611efa565b905060008183106106c6576004828154811061063857610638611f3b565b60009182526020918290209181049091015460ff601f9092166101000a9004166106628385611efa565b61066d906001611f51565b6106779190611f69565b6004610684600185611efa565b8154811061069457610694611f3b565b90600052602060002090602091828204019190069054906101000a900460ff1660ff166106c19190611f51565b6106fa565b600483815481106106d9576106d9611f3b565b60009182526020918290209181049091015460ff601f9092166101000a9004165b90506064858260025461070d9190611f69565b6107179190611f69565b6107219190611f27565b979650505050505050565b6000805b828110156107895761076b84848381811061074d5761074d611f3b565b9050602002016020810190610762919061198c565b61ffff166111fe565b6107759083611ecf565b91508061078181611f88565b915050610730565b5033600090815260056020526040812080548392906107b29084906001600160c01b0316611ecf565b92506101000a8154816001600160c01b0302191690836001600160c01b03160217905550505050565b60008181526009602052604081205460ff16156107fa57506000919050565b6000828152600660209081526040918290208251606081018452905463ffffffff808216808452640100000000830490911693830193909352600160401b90046001600160c01b0316928101929092526108575750600092915050565b6108b3816000015163ffffffff1642600186815461087490611fa3565b811061088257610882611f3b565b8154600116156108a15790600052602060002090602091828204019190065b9054600160f81b911a0260f81c6105e9565b9392505050565b600060018261ffff1681546108ce90611fa3565b81106108dc576108dc611f3b565b8154600116156108fb5790600052602060002090602091828204019190065b9054600160f81b911a0260f81c92915050565b60035460ff166109555760405162461bcd60e51b815260206004820152600d60248201526c29ba30b5b29d3737ba27b832b760991b60448201526064015b60405180910390fd5b6109628161ffff16611400565b50565b6040516370a0823160e01b81526001600160a01b038481166004830152600091606091829182917f000000000000000000000000dcf68c8ebb18df1419c7dff17ed33505faf8a20c16906370a0823190602401602060405180830381865afa1580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f99190611fde565b9350600084871015610a1c57610a0f8786611efa565b905085811115610a1c5750845b806001600160401b03811115610a3457610a34611dce565b604051908082528060200260200182016040528015610a5d578160200160208202803683370190505b509350806001600160401b03811115610a7857610a78611dce565b604051908082528060200260200182016040528015610ac357816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610a965790505b509250806001600160401b03811115610ade57610ade611dce565b604051908082528060200260200182016040528015610b07578160200160208202803683370190505b50915060005b81811015610c8f5760006001600160a01b037f000000000000000000000000dcf68c8ebb18df1419c7dff17ed33505faf8a20c16632f745c598b610b51858d611f51565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015610b9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbe9190611fde565b905080868381518110610bd357610bd3611f3b565b6020908102919091018101919091526000828152600682526040908190208151606081018352905463ffffffff808216835264010000000082041693820193909352600160401b9092046001600160c01b0316908201528551869084908110610c3e57610c3e611f3b565b6020026020010181905250610c52816107db565b848381518110610c6457610c64611f3b565b6001600160c01b03909216602092830291909101909101525080610c8781611f88565b915050610b0d565b505093509350935093565b610ca26113a6565b610cac6000611566565b565b60018054610cbb90611fa3565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce790611fa3565b8015610d345780601f10610d0957610100808354040283529160200191610d34565b820191906000526020600020905b815481529060010190602001808311610d1757829003601f168201915b505050505081565b610d446113a6565b610d5060018383611856565b505050565b610d5d6113a6565b60005b81811015610dbe578360096000858585818110610d7f57610d7f611f3b565b90506020020135815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610db690611f88565b915050610d60565b50505050565b610dcc6113a6565b828114610e115760405162461bcd60e51b81526020600482015260136024820152720a6e8c2d6ca74c2e4e4c2f29cdee89ac2e8c6d606b1b604482015260640161094c565b60005b83811015610ecc57828282818110610e2e57610e2e611f3b565b9050013560f81c60f81b6001868684818110610e4c57610e4c611f3b565b9050602002016020810190610e61919061198c565b61ffff168154610e7090611fa3565b8110610e7e57610e7e611f3b565b815460011615610e9d5790600052602060002090602091828204019190065b601f036101000a81548160ff02191690600160f81b840402179055508080610ec490611f88565b915050610e14565b5050505050565b60008181526006602090815260408083208151606081018352905463ffffffff808216808452640100000000830490911694830194909452600160401b90046001600160c01b031691810191909152901580156108b35750602081015163ffffffff1615806108b357506008546020820151610f559163ffffffff1690611ff7565b63ffffffff1642119392505050565b336000908152600560205260408120546001600160c01b0316905b82811015610fd857610fba848483818110610f9c57610f9c611f3b565b9050602002016020810190610fb1919061198c565b61ffff166115b6565b610fc49083611ecf565b915080610fd081611f88565b915050610f7f565b50610d5081611718565b610fea6113a6565b6008805463ffffffff191663ffffffff92909216919091179055565b61100e6113a6565b6003805460ff1916911515919091179055565b6110296113a6565b600281511015801561105857508060008151811061104957611049611f3b565b602002602001015160ff166000145b6110a45760405162461bcd60e51b815260206004820152601a60248201527f5374616b653a696e76616c696420726577617264506572446179000000000000604482015260640161094c565b80516110b79060049060208401906118da565b5050565b60035460ff166110fd5760405162461bcd60e51b815260206004820152600d60248201526c29ba30b5b29d3737ba27b832b760991b604482015260640161094c565b60005b81811015610d505761113b83838381811061111d5761111d611f3b565b9050602002016020810190611132919061198c565b61ffff16611400565b8061114581611f88565b915050611100565b336000908152600560205260408120546001600160c01b031661117361ffff84166115b6565b61117d9190611ecf565b90506110b781611718565b6111906113a6565b6001600160a01b0381166111f55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161094c565b61096281611566565b6040516331a9108f60e11b815260048101829052600090829060019033907f000000000000000000000000dcf68c8ebb18df1419c7dff17ed33505faf8a20c6001600160a01b031690636352211e90602401602060405180830381865afa15801561126d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112919190612016565b6001600160a01b0316146112b75760405162461bcd60e51b815260040161094c90612033565b60008281526006602052604090205463ffffffff161515811515146112ee5760405162461bcd60e51b815260040161094c9061205b565b60006112f9856107db565b60008681526006602052604090205490915061132590600160401b90046001600160c01b031682612086565b6040805160608101825260008082524263ffffffff90811660208085019182528486018481529b8452600690529390912091518254935199516001600160c01b0316600160401b026001600160401b039a83166401000000000267ffffffffffffffff19909516919092161792909217979097161790955550929392505050565b6000546001600160a01b03163314610cac5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161094c565b6040516331a9108f60e11b815260048101829052819060009033906001600160a01b037f000000000000000000000000dcf68c8ebb18df1419c7dff17ed33505faf8a20c1690636352211e90602401602060405180830381865afa15801561146c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114909190612016565b6001600160a01b0316146114b65760405162461bcd60e51b815260040161094c90612033565b60008281526006602052604090205463ffffffff161515811515146114ed5760405162461bcd60e51b815260040161094c9061205b565b50506040805160608101825263ffffffff428116825260006020808401828152848601838152968352600690915293902091518254935194516001600160c01b0316600160401b026001600160401b039583166401000000000267ffffffffffffffff1990951691909216179290921792909216179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516331a9108f60e11b815260048101829052600090829060019033907f000000000000000000000000dcf68c8ebb18df1419c7dff17ed33505faf8a20c6001600160a01b031690636352211e90602401602060405180830381865afa158015611625573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116499190612016565b6001600160a01b03161461166f5760405162461bcd60e51b815260040161094c90612033565b60008281526006602052604090205463ffffffff161515811515146116a65760405162461bcd60e51b815260040161094c9061205b565b60006116b1856107db565b6000868152600660205260409020549091506116dd90600160401b90046001600160c01b031682612086565b60009586526006602052604090952080546001600160c01b03909216600160401b026001600160401b03909216919091179055509192915050565b600061172c670de0b6b3a7640000836120ae565b90506000816001600160c01b03161161177f5760405162461bcd60e51b815260206004820152601560248201527414dd185ad94e9b9bdd115b9bdd59da14995dd85c99605a1b604482015260640161094c565b611791670de0b6b3a7640000836120d4565b3360008181526005602052604080822080546001600160c01b0319166001600160c01b039586161790555163731133e960e01b815260048101929092526024820181905291831660448201526080606482015260848101919091526001600160a01b037f00000000000000000000000056b169c0f63d392dfd743e22bd9da4f6a8098372169063731133e99060a401600060405180830381600087803b15801561183a57600080fd5b505af115801561184e573d6000803e3d6000fd5b505050505050565b82805461186290611fa3565b90600052602060002090601f01602090048101928261188457600085556118ca565b82601f1061189d5782800160ff198235161785556118ca565b828001600101855582156118ca579182015b828111156118ca5782358255916020019190600101906118af565b506118d6929150611977565b5090565b82805482825590600052602060002090601f016020900481019282156118ca5791602002820160005b8382111561194157835183826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302611903565b801561196e5782816101000a81549060ff0219169055600101602081600001049283019260010302611941565b50506118d69291505b5b808211156118d65760008155600101611978565b60006020828403121561199e57600080fd5b813561ffff811681146108b357600080fd5b6000602082840312156119c257600080fd5b5035919050565b6001600160a01b038116811461096257600080fd5b6000602082840312156119f057600080fd5b81356108b3816119c9565b600080600060608486031215611a1057600080fd5b505081359360208301359350604090920135919050565b60008083601f840112611a3957600080fd5b5081356001600160401b03811115611a5057600080fd5b6020830191508360208260051b8501011115611a6b57600080fd5b9250929050565b60008060208385031215611a8557600080fd5b82356001600160401b03811115611a9b57600080fd5b611aa785828601611a27565b90969095509350505050565b600080600060608486031215611ac857600080fd5b8335611ad3816119c9565b95602085013595506040909401359392505050565b600081518084526020808501945080840160005b83811015611b215781516001600160c01b031687529582019590820190600101611afc565b509495945050505050565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015611b6d57845183529383019391830191600101611b51565b505060409250848103838601528087518083528383019150838901925060005b81811015611bce578351805163ffffffff90811685528682015116868501528601516001600160c01b03168684015292840192606090920191600101611b8d565b50508581036060870152611be28188611ae8565b9a9950505050505050505050565b600060208083528351808285015260005b81811015611c1d57858101830151858201604001528201611c01565b81811115611c2f576000604083870101525b50601f01601f1916929092016040019392505050565b60008083601f840112611c5757600080fd5b5081356001600160401b03811115611c6e57600080fd5b602083019150836020828501011115611a6b57600080fd5b60008060208385031215611c9957600080fd5b82356001600160401b03811115611caf57600080fd5b611aa785828601611c45565b80358015158114611ccb57600080fd5b919050565b600080600060408486031215611ce557600080fd5b611cee84611cbb565b925060208401356001600160401b03811115611d0957600080fd5b611d1586828701611a27565b9497909650939450505050565b60008060008060408587031215611d3857600080fd5b84356001600160401b0380821115611d4f57600080fd5b611d5b88838901611a27565b90965094506020870135915080821115611d7457600080fd5b50611d8187828801611c45565b95989497509550505050565b600060208284031215611d9f57600080fd5b813563ffffffff811681146108b357600080fd5b600060208284031215611dc557600080fd5b6108b382611cbb565b634e487b7160e01b600052604160045260246000fd5b803560ff81168114611ccb57600080fd5b60006020808385031215611e0857600080fd5b82356001600160401b0380821115611e1f57600080fd5b818501915085601f830112611e3357600080fd5b813581811115611e4557611e45611dce565b8060051b604051601f19603f83011681018181108582111715611e6a57611e6a611dce565b604052918252848201925083810185019188831115611e8857600080fd5b938501935b82851015611ead57611e9e85611de4565b84529385019392850192611e8d565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b60006001600160c01b03828116848216808303821115611ef157611ef1611eb9565b01949350505050565b600082821015611f0c57611f0c611eb9565b500390565b634e487b7160e01b600052601260045260246000fd5b600082611f3657611f36611f11565b500490565b634e487b7160e01b600052603260045260246000fd5b60008219821115611f6457611f64611eb9565b500190565b6000816000190483118215151615611f8357611f83611eb9565b500290565b6000600019821415611f9c57611f9c611eb9565b5060010190565b600181811c90821680611fb757607f821691505b60208210811415611fd857634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215611ff057600080fd5b5051919050565b600063ffffffff808316818516808303821115611ef157611ef1611eb9565b60006020828403121561202857600080fd5b81516108b3816119c9565b6020808252600e908201526d29ba30b5b29d3737ba27bbb732b960911b604082015260600190565b6020808252601190820152705374616b653a7374616b6553746174757360781b604082015260600190565b60006001600160c01b03838116908316818110156120a6576120a6611eb9565b039392505050565b60006001600160c01b03838116806120c8576120c8611f11565b92169190910492915050565b60006001600160c01b03838116806120ee576120ee611f11565b9216919091069291505056fea2646970667358221220aae674d7d94d10284e765b4bf7d8a34f81fb6513dd6b925ef9677aadccdfb20764736f6c634300080b0033

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

000000000000000000000000dcf68c8ebb18df1419c7dff17ed33505faf8a20c00000000000000000000000056b169c0f63d392dfd743e22bd9da4f6a8098372

-----Decoded View---------------
Arg [0] : _stakeNFT (address): 0xDCf68c8eBB18Df1419C7DFf17ed33505Faf8A20C
Arg [1] : _rewardNFT (address): 0x56B169C0F63d392DfD743e22Bd9DA4f6A8098372

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000dcf68c8ebb18df1419c7dff17ed33505faf8a20c
Arg [1] : 00000000000000000000000056b169c0f63d392dfd743e22bd9da4f6a8098372


Deployed Bytecode Sourcemap

10678:26333:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32565:100;;;;;;:::i;:::-;;:::i;:::-;;35108:105;;;;;;:::i;:::-;;:::i;31120:42::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;31120:42:0;;;;;;-1:-1:-1;;;;;1028:32:1;;;1010:51;;998:2;983:18;31120:42:0;;;;;;;;31025:88;;;;;;:::i;:::-;;:::i;:::-;;;1244:4:1;1232:17;;;1214:36;;1202:2;1187:18;31025:88:0;1072:184:1;34010:384:0;;;;;;:::i;:::-;;:::i;31261:31::-;;;;;;;;;;;;1756:10:1;1744:23;;;1726:42;;1714:2;1699:18;31261:31:0;1582:192:1;32677:243:0;;;;;;:::i;:::-;;:::i;34406:312::-;;;;;;:::i;:::-;;:::i;33888:110::-;;;;;;:::i;:::-;;:::i;31991:82::-;;;;;;:::i;:::-;;:::i;31169:47::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31169:47:0;;-1:-1:-1;;;;;31169:47:0;;;;;;;2798:10:1;2835:15;;;2817:34;;2887:15;;;;2882:2;2867:18;;2860:43;-1:-1:-1;;;;;2939:32:1;2919:18;;;2912:60;2776:2;2761:18;31169:47:0;2590:388:1;31299:43:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3148:14:1;;3141:22;3123:41;;3111:2;3096:18;31299:43:0;2983:187:1;36185:823:0;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;9692:103::-;;;:::i;10917:20027::-;;;:::i;:::-;;;;;;;:::i;30951:32::-;;;;;;;;;6474:25:1;;;6462:2;6447:18;30951:32:0;6328:177:1;35457:96:0;;;;;;:::i;:::-;;:::i;9044:87::-;9090:7;9117:6;-1:-1:-1;;;;;9117:6:0;9044:87;;;-1:-1:-1;;;;;7440:32:1;;;7422:51;;7410:2;7395:18;9044:87:0;7276:203:1;35966:207:0;;;;;;:::i;:::-;;:::i;10828:43::-;;;;;30990:28;;;;;;;;;35565:281;;;;;;:::i;:::-;;:::i;34730:264::-;;;;;;:::i;:::-;;:::i;10878:32::-;;;;;33624:252;;;;;;:::i;:::-;;:::i;35858:96::-;;;;;;:::i;:::-;;:::i;35006:90::-;;;;;;:::i;:::-;;:::i;35225:220::-;;;;;;:::i;:::-;;:::i;32085:173::-;;;;;;:::i;:::-;;:::i;33469:143::-;;;;;;:::i;:::-;;:::i;9950:201::-;;;;;;:::i;:::-;;:::i;32565:100::-;32640:17;32649:7;32640:17;;:8;:17::i;:::-;32625:10;32617:19;;;;:7;:19;;;;;:40;;:19;;;:40;;;;-1:-1:-1;;;;;32617:40:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;32617:40:0;;;;;-1:-1:-1;;;;;32617:40:0;;;;;;32565:100;:::o;35108:105::-;8930:13;:11;:13::i;:::-;35181:10:::1;:24:::0;35108:105::o;31025:88::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;34010:384::-;34104:7;34123:11;34165:6;;34152:9;34138:11;:23;;;;:::i;:::-;34137:34;;;;:::i;:::-;34196:12;:19;34123:48;;-1:-1:-1;34182:11:0;;34196:21;;34216:1;;34196:21;:::i;:::-;34182:35;;34228:16;34253:3;34247;:9;:83;;34313:12;34326:3;34313:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;34302:7;34306:3;34302;:7;:::i;:::-;:9;;34310:1;34302:9;:::i;:::-;34301:29;;;;:::i;:::-;34279:12;34292:5;34296:1;34292:3;:5;:::i;:::-;34279:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;;:::i;:::-;34247:83;;;34259:12;34272:3;34259:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;34247:83;34228:102;;34382:3;34376:5;34367:8;34356:10;;:19;;;;:::i;:::-;:25;;;;:::i;:::-;:29;;;;:::i;:::-;34341:45;34010:384;-1:-1:-1;;;;;;;34010:384:0:o;32677:243::-;32746:14;;32771:102;32790:19;;;32771:102;;;32840:21;32849:8;;32858:1;32849:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;32840:21;;:8;:21::i;:::-;32830:31;;;;:::i;:::-;;-1:-1:-1;32811:3:0;;;;:::i;:::-;;;;32771:102;;;-1:-1:-1;32891:10:0;32883:19;;;;:7;:19;;;;;:29;;32906:6;;32883:19;:29;;32906:6;;-1:-1:-1;;;;;32883:29:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;32883:29:0;;;;;-1:-1:-1;;;;;32883:29:0;;;;;;32735:185;32677:243;;:::o;34406:312::-;34462:7;34484:20;;;:11;:20;;;;;;;;34481:33;;;-1:-1:-1;34513:1:0;;34406:312;-1:-1:-1;34406:312:0:o;34481:33::-;34525:26;34554:19;;;:10;:19;;;;;;;;;34525:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;34525:48:0;;-1:-1:-1;;;;;34525:48:0;;;;;;;;34584:37;;-1:-1:-1;34620:1:0;;34406:312;-1:-1:-1;;34406:312:0:o;34584:37::-;34639:71;34649:9;:19;;;34639:71;;34670:15;34693:6;34700:7;34693:15;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;34693:15:0;;;34687:22;;34639:9;:71::i;:::-;34632:78;34406:312;-1:-1:-1;;;34406:312:0:o;33888:110::-;33944:5;33974:6;33981:7;33974:15;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;33974:15:0;;;33968:22;;;33888:110;-1:-1:-1;;33888:110:0:o;31991:82::-;31776:9;;;;31768:35;;;;-1:-1:-1;;;31768:35:0;;13168:2:1;31768:35:0;;;13150:21:1;13207:2;13187:18;;;13180:30;-1:-1:-1;;;13226:18:1;;;13219:43;13279:18;;31768:35:0;;;;;;;;;32050:15:::1;32057:7;32050:15;;:6;:15::i;:::-;31991:82:::0;:::o;36185:823::-;36412:27;;-1:-1:-1;;;36412:27:0;;-1:-1:-1;;;;;7440:32:1;;;36412:27:0;;;7422:51:1;36292:11:0;;36305:25;;;;;;36412:8;:18;;;;7395::1;;36412:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36406:33;;36450:12;36488:3;36476:9;:15;36473:118;;;36514:15;36520:9;36514:3;:15;:::i;:::-;36507:22;;36554:8;36547:4;:15;36544:35;;;-1:-1:-1;36571:8:0;36544:35;36626:4;-1:-1:-1;;;;;36612:19:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36612:19:0;;36601:30;;36672:4;-1:-1:-1;;;;;36656:21:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;36656:21:0;;-1:-1:-1;;36656:21:0;;;;;;;;;;;;36642:35;;36718:4;-1:-1:-1;;;;;36704:19:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36704:19:0;;36688:35;;36738:9;36734:267;36757:4;36753:1;:8;36734:267;;;36782:15;-1:-1:-1;;;;;36800:8:0;:28;;36829:7;36838:11;36848:1;36838:9;:11;:::i;:::-;36800:50;;-1:-1:-1;;;;;;36800:50:0;;;;;;;-1:-1:-1;;;;;13689:32:1;;;36800:50:0;;;13671:51:1;13738:18;;;13731:34;13644:18;;36800:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36782:68;;36879:7;36865:8;36874:1;36865:11;;;;;;;;:::i;:::-;;;;;;;;;;;:21;;;;36918:19;;;;:10;:19;;;;;;;36901:36;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;36901:36:0;;;-1:-1:-1;;;;;36901:36:0;;;;;:14;;;;36913:1;;36901:14;;;;;;:::i;:::-;;;;;;:36;;;;36971:18;36981:7;36971:9;:18::i;:::-;36952:13;36966:1;36952:16;;;;;;;;:::i;:::-;-1:-1:-1;;;;;36952:37:0;;;:16;;;;;;;;;;;:37;-1:-1:-1;36763:3:0;;;;:::i;:::-;;;;36734:267;;;;36395:613;36185:823;;;;;;;:::o;9692:103::-;8930:13;:11;:13::i;:::-;9757:30:::1;9784:1;9757:18;:30::i;:::-;9692:103::o:0;10917:20027::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;35457:96::-;8930:13;:11;:13::i;:::-;35529:16:::1;:6;35538:7:::0;;35529:16:::1;:::i;:::-;;35457:96:::0;;:::o;35966:207::-;8930:13;:11;:13::i;:::-;36065:9:::1;36061:105;36080:19:::0;;::::1;36061:105;;;36147:7;36120:11;:24;36132:8;;36141:1;36132:11;;;;;;;:::i;:::-;;;;;;;36120:24;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;36101:3;;;;;:::i;:::-;;;;36061:105;;;;35966:207:::0;;;:::o;35565:281::-;8930:13;:11;:13::i;:::-;35671:32;;::::1;35663:64;;;::::0;-1:-1:-1;;;35663:64:0;;13978:2:1;35663:64:0::1;::::0;::::1;13960:21:1::0;14017:2;13997:18;;;13990:30;-1:-1:-1;;;14036:18:1;;;14029:49;14095:18;;35663:64:0::1;13776:343:1::0;35663:64:0::1;35742:9;35738:101;35757:18:::0;;::::1;35738:101;;;35817:7;;35825:1;35817:10;;;;;;;:::i;:::-;;;;;;;;;35796:6;35803:7;;35811:1;35803:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;35796:18;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;-1:-1:-1::0;;;35796:31:0::1;;;;;;;35777:3;;;;;:::i;:::-;;;;35738:101;;;;35565:281:::0;;;;:::o;34730:264::-;34794:4;34839:19;;;:10;:19;;;;;;;;34810:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;34810:48:0;;-1:-1:-1;;;;;34810:48:0;;;;;;;;;34876:24;:110;;;;-1:-1:-1;34905:21:0;;;;:26;;;;:80;;-1:-1:-1;34977:8:0;;34953:21;;;;:32;;34977:8;;;34953:32;:::i;:::-;34935:50;;:15;:50;34869:117;34730:264;-1:-1:-1;;;34730:264:0:o;33624:252::-;33716:10;33691:14;33708:19;;;:7;:19;;;;;;-1:-1:-1;;;;;33708:19:0;;33738:106;33757:19;;;33738:106;;;33807:25;33820:8;;33829:1;33820:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;33807:25;;:12;:25::i;:::-;33797:35;;;;:::i;:::-;;-1:-1:-1;33778:3:0;;;;:::i;:::-;;;;33738:106;;;;33854:14;33861:6;33854;:14::i;35858:96::-;8930:13;:11;:13::i;:::-;35926:8:::1;:20:::0;;-1:-1:-1;;35926:20:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;35858:96::o;35006:90::-;8930:13;:11;:13::i;:::-;35070:9:::1;:18:::0;;-1:-1:-1;;35070:18:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35006:90::o;35225:220::-;8930:13;:11;:13::i;:::-;35341:1:::1;35317:13;:20;:25;;:50;;;;;35346:13;35360:1;35346:16;;;;;;;;:::i;:::-;;;;;;;:21;;35366:1;35346:21;35317:50;35309:89;;;::::0;-1:-1:-1;;;35309:89:0;;14559:2:1;35309:89:0::1;::::0;::::1;14541:21:1::0;14598:2;14578:18;;;14571:30;14637:28;14617:18;;;14610:56;14683:18;;35309:89:0::1;14357:350:1::0;35309:89:0::1;35409:28:::0;;::::1;::::0;:12:::1;::::0;:28:::1;::::0;::::1;::::0;::::1;:::i;:::-;;35225:220:::0;:::o;32085:173::-;31776:9;;;;31768:35;;;;-1:-1:-1;;;31768:35:0;;13168:2:1;31768:35:0;;;13150:21:1;13207:2;13187:18;;;13180:30;-1:-1:-1;;;13226:18:1;;;13219:43;13279:18;;31768:35:0;12966:337:1;31768:35:0;32165:9:::1;32161:90;32180:19:::0;;::::1;32161:90;;;32220:19;32227:8;;32236:1;32227:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;32220:19;;:6;:19::i;:::-;32201:3:::0;::::1;::::0;::::1;:::i;:::-;;;;32161:90;;33469:143:::0;33568:10;33519:14;33560:19;;;:7;:19;;;;;;-1:-1:-1;;;;;33560:19:0;33536:21;;;;:12;:21::i;:::-;:43;;;;:::i;:::-;33519:60;;33590:14;33597:6;33590;:14::i;9950:201::-;8930:13;:11;:13::i;:::-;-1:-1:-1;;;;;10039:22:0;::::1;10031:73;;;::::0;-1:-1:-1;;;10031:73:0;;14914:2:1;10031:73:0::1;::::0;::::1;14896:21:1::0;14953:2;14933:18;;;14926:30;14992:34;14972:18;;;14965:62;-1:-1:-1;;;15043:18:1;;;15036:36;15089:19;;10031:73:0::1;14712:402:1::0;10031:73:0::1;10115:28;10134:8;10115:18;:28::i;32270:283::-:0;31561:25;;-1:-1:-1;;;31561:25:0;;;;;6474::1;;;32343:14:0;;32320:7;;32329:4;;31590:10;;31561:8;-1:-1:-1;;;;;31561:16:0;;;;6447:18:1;;31561:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31561:39:0;;31553:66;;;;-1:-1:-1;;;31553:66:0;;;;;;;:::i;:::-;31671:1;31639:19;;;:10;:19;;;;;:29;;;:33;;31638:46;;;;31630:76;;;;-1:-1:-1;;;31630:76:0;;;;;;;:::i;:::-;32369:17:::1;32389:18;32399:7;32389:9;:18::i;:::-;32439:19;::::0;;;:10:::1;:19;::::0;;;;:33;32369:38;;-1:-1:-1;32427:45:0::1;::::0;-1:-1:-1;;;32439:33:0;::::1;-1:-1:-1::0;;;;;32439:33:0::1;32369:38:::0;32427:45:::1;:::i;:::-;32505:40;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;32505:40:0;;;32525:15:::1;32505:40;::::0;;::::1;;::::0;;::::1;::::0;;;;;;;;;32483:19;;;:10:::1;:19:::0;;;;;;:62;;;;;;;;-1:-1:-1;;;;;32483:62:0::1;-1:-1:-1::0;;;32483:62:0::1;-1:-1:-1::0;;;;;32483:62:0;;::::1;::::0;::::1;-1:-1:-1::0;;32483:62:0;;;;;;::::1;::::0;;;;::::1;::::0;;;::::1;;::::0;;;-1:-1:-1;32418:54:0;;32270:283;-1:-1:-1;;;32270:283:0:o;9209:132::-;9090:7;9117:6;-1:-1:-1;;;;;9117:6:0;7666:10;9273:23;9265:68;;;;-1:-1:-1;;;9265:68:0;;16502:2:1;9265:68:0;;;16484:21:1;;;16521:18;;;16514:30;16580:34;16560:18;;;16553:62;16632:18;;9265:68:0;16300:356:1;31835:144:0;31561:25;;-1:-1:-1;;;31561:25:0;;;;;6474::1;;;31883:7:0;;31892:5;;31590:10;;-1:-1:-1;;;;;31561:8:0;:16;;;;6447:18:1;;31561:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31561:39:0;;31553:66;;;;-1:-1:-1;;;31553:66:0;;;;;;;:::i;:::-;31671:1;31639:19;;;:10;:19;;;;;:29;;;:33;;31638:46;;;;31630:76;;;;-1:-1:-1;;;31630:76:0;;;;;;;:::i;:::-;-1:-1:-1;;31931:40:0::1;::::0;;::::1;::::0;::::1;::::0;;::::1;31948:15;31931:40:::0;::::1;::::0;;-1:-1:-1;31931:40:0::1;::::0;;::::1;::::0;;;;;;;;;31909:19;;;:10:::1;:19:::0;;;;;;:62;;;;;;;;-1:-1:-1;;;;;31909:62:0::1;-1:-1:-1::0;;;31909:62:0::1;-1:-1:-1::0;;;;;31909:62:0;;::::1;::::0;::::1;-1:-1:-1::0;;31909:62:0;;;;;;::::1;::::0;;;;::::1;::::0;;;::::1;;::::0;;31835:144::o;10311:191::-;10385:16;10404:6;;-1:-1:-1;;;;;10421:17:0;;;-1:-1:-1;;;;;;10421:17:0;;;;;;10454:40;;10404:6;;;;;;;10454:40;;10385:16;10454:40;10374:128;10311:191;:::o;32932:270::-;31561:25;;-1:-1:-1;;;31561:25:0;;;;;6474::1;;;33009:14:0;;32986:7;;32995:4;;31590:10;;31561:8;-1:-1:-1;;;;;31561:16:0;;;;6447:18:1;;31561:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31561:39:0;;31553:66;;;;-1:-1:-1;;;31553:66:0;;;;;;;:::i;:::-;31671:1;31639:19;;;:10;:19;;;;;:29;;;:33;;31638:46;;;;31630:76;;;;-1:-1:-1;;;31630:76:0;;;;;;;:::i;:::-;33035:17:::1;33055:18;33065:7;33055:9;:18::i;:::-;33105:19;::::0;;;:10:::1;:19;::::0;;;;:33;33035:38;;-1:-1:-1;33093:45:0::1;::::0;-1:-1:-1;;;33105:33:0;::::1;-1:-1:-1::0;;;;;33105:33:0::1;33035:38:::0;33093:45:::1;:::i;:::-;33149:19;::::0;;;:10:::1;:19;::::0;;;;;:45;;-1:-1:-1;;;;;33149:45:0;;::::1;-1:-1:-1::0;;;33149:45:0::1;-1:-1:-1::0;;;;;33149:45:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;33084:54:0;;32932:270;-1:-1:-1;;32932:270:0:o;33214:243::-;33266:14;33283:13;33292:4;33283:6;:13;:::i;:::-;33266:30;;33324:1;33315:6;-1:-1:-1;;;;;33315:10:0;;33307:44;;;;-1:-1:-1;;;33307:44:0;;17069:2:1;33307:44:0;;;17051:21:1;17108:2;17088:18;;;17081:30;-1:-1:-1;;;17127:18:1;;;17120:51;17188:18;;33307:44:0;16867:345:1;33307:44:0;33384:13;33393:4;33384:6;:13;:::i;:::-;33370:10;33362:19;;;;:7;:19;;;;;;:35;;-1:-1:-1;;;;;;33362:35:0;-1:-1:-1;;;;;33362:35:0;;;;;;33408:41;-1:-1:-1;;;33408:41:0;;;;;17690:51:1;;;;17757:18;;;17750:34;;;17820:32;;;17800:18;;;17793:60;17889:3;17869:18;;;17862:31;17909:19;;;17902:30;;;;-1:-1:-1;;;;;33408:9:0;:14;;;;17949:19:1;;33408:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33255:202;33214:243;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:272:1;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:6;223:5;219:18;212:5;209:29;199:57;;252:1;249;242:12;291:180;350:6;403:2;391:9;382:7;378:23;374:32;371:52;;;419:1;416;409:12;371:52;-1:-1:-1;442:23:1;;291:180;-1:-1:-1;291:180:1:o;476:131::-;-1:-1:-1;;;;;551:31:1;;541:42;;531:70;;597:1;594;587:12;612:247;671:6;724:2;712:9;703:7;699:23;695:32;692:52;;;740:1;737;730:12;692:52;779:9;766:23;798:31;823:5;798:31;:::i;1261:316::-;1338:6;1346;1354;1407:2;1395:9;1386:7;1382:23;1378:32;1375:52;;;1423:1;1420;1413:12;1375:52;-1:-1:-1;;1446:23:1;;;1516:2;1501:18;;1488:32;;-1:-1:-1;1567:2:1;1552:18;;;1539:32;;1261:316;-1:-1:-1;1261:316:1:o;1779:366::-;1841:8;1851:6;1905:3;1898:4;1890:6;1886:17;1882:27;1872:55;;1923:1;1920;1913:12;1872:55;-1:-1:-1;1946:20:1;;-1:-1:-1;;;;;1978:30:1;;1975:50;;;2021:1;2018;2011:12;1975:50;2058:4;2050:6;2046:17;2034:29;;2118:3;2111:4;2101:6;2098:1;2094:14;2086:6;2082:27;2078:38;2075:47;2072:67;;;2135:1;2132;2125:12;2072:67;1779:366;;;;;:::o;2150:435::-;2235:6;2243;2296:2;2284:9;2275:7;2271:23;2267:32;2264:52;;;2312:1;2309;2302:12;2264:52;2352:9;2339:23;-1:-1:-1;;;;;2377:6:1;2374:30;2371:50;;;2417:1;2414;2407:12;2371:50;2456:69;2517:7;2508:6;2497:9;2493:22;2456:69;:::i;:::-;2544:8;;2430:95;;-1:-1:-1;2150:435:1;-1:-1:-1;;;;2150:435:1:o;3175:383::-;3252:6;3260;3268;3321:2;3309:9;3300:7;3296:23;3292:32;3289:52;;;3337:1;3334;3327:12;3289:52;3376:9;3363:23;3395:31;3420:5;3395:31;:::i;:::-;3445:5;3497:2;3482:18;;3469:32;;-1:-1:-1;3548:2:1;3533:18;;;3520:32;;3175:383;-1:-1:-1;;;3175:383:1:o;3563:461::-;3616:3;3654:5;3648:12;3681:6;3676:3;3669:19;3707:4;3736:2;3731:3;3727:12;3720:19;;3773:2;3766:5;3762:14;3794:1;3804:195;3818:6;3815:1;3812:13;3804:195;;;3883:13;;-1:-1:-1;;;;;3879:39:1;3867:52;;3939:12;;;;3974:15;;;;3915:1;3833:9;3804:195;;;-1:-1:-1;4015:3:1;;3563:461;-1:-1:-1;;;;;3563:461:1:o;4029:1694::-;4407:4;4455:3;4444:9;4440:19;4486:6;4475:9;4468:25;4512:2;4550:3;4545:2;4534:9;4530:18;4523:31;4574:6;4609;4603:13;4640:6;4632;4625:22;4678:3;4667:9;4663:19;4656:26;;4717:2;4709:6;4705:15;4691:29;;4738:1;4748:169;4762:6;4759:1;4756:13;4748:169;;;4823:13;;4811:26;;4892:15;;;;4857:12;;;;4784:1;4777:9;4748:169;;;4752:3;;4936:2;4926:12;;4983:9;4978:3;4974:19;4969:2;4958:9;4954:18;4947:47;5016:3;5050:6;5044:13;5078:8;5073:3;5066:21;5114:2;5109:3;5105:12;5096:21;;5154:2;5146:6;5142:15;5126:31;;5177:1;5187:410;5203:8;5198:3;5195:17;5187:410;;;5268:15;;5347:9;;5306:10;5343:18;;;5329:33;;5408:11;;;5402:18;5398:27;5382:14;;;5375:51;5472:11;;5466:18;-1:-1:-1;;;;;5462:44:1;5446:14;;;5439:68;5570:17;;;;5540:4;5529:16;;;;5503:1;5222:11;5187:410;;;5191:3;;5646:9;5639:5;5635:21;5628:4;5617:9;5613:20;5606:51;5674:43;5711:5;5703:6;5674:43;:::i;:::-;5666:51;4029:1694;-1:-1:-1;;;;;;;;;;4029:1694:1:o;5728:595::-;5838:4;5867:2;5896;5885:9;5878:21;5928:6;5922:13;5971:6;5966:2;5955:9;5951:18;5944:34;5996:1;6006:140;6020:6;6017:1;6014:13;6006:140;;;6115:14;;;6111:23;;6105:30;6081:17;;;6100:2;6077:26;6070:66;6035:10;;6006:140;;;6164:6;6161:1;6158:13;6155:91;;;6234:1;6229:2;6220:6;6209:9;6205:22;6201:31;6194:42;6155:91;-1:-1:-1;6307:2:1;6286:15;-1:-1:-1;;6282:29:1;6267:45;;;;6314:2;6263:54;;5728:595;-1:-1:-1;;;5728:595:1:o;6510:347::-;6561:8;6571:6;6625:3;6618:4;6610:6;6606:17;6602:27;6592:55;;6643:1;6640;6633:12;6592:55;-1:-1:-1;6666:20:1;;-1:-1:-1;;;;;6698:30:1;;6695:50;;;6741:1;6738;6731:12;6695:50;6778:4;6770:6;6766:17;6754:29;;6830:3;6823:4;6814:6;6806;6802:19;6798:30;6795:39;6792:59;;;6847:1;6844;6837:12;6862:409;6932:6;6940;6993:2;6981:9;6972:7;6968:23;6964:32;6961:52;;;7009:1;7006;6999:12;6961:52;7049:9;7036:23;-1:-1:-1;;;;;7074:6:1;7071:30;7068:50;;;7114:1;7111;7104:12;7068:50;7153:58;7203:7;7194:6;7183:9;7179:22;7153:58;:::i;7484:160::-;7549:20;;7605:13;;7598:21;7588:32;;7578:60;;7634:1;7631;7624:12;7578:60;7484:160;;;:::o;7649:504::-;7741:6;7749;7757;7810:2;7798:9;7789:7;7785:23;7781:32;7778:52;;;7826:1;7823;7816:12;7778:52;7849:26;7865:9;7849:26;:::i;:::-;7839:36;;7926:2;7915:9;7911:18;7898:32;-1:-1:-1;;;;;7945:6:1;7942:30;7939:50;;;7985:1;7982;7975:12;7939:50;8024:69;8085:7;8076:6;8065:9;8061:22;8024:69;:::i;:::-;7649:504;;8112:8;;-1:-1:-1;7998:95:1;;-1:-1:-1;;;;7649:504:1:o;8391:743::-;8496:6;8504;8512;8520;8573:2;8561:9;8552:7;8548:23;8544:32;8541:52;;;8589:1;8586;8579:12;8541:52;8629:9;8616:23;-1:-1:-1;;;;;8699:2:1;8691:6;8688:14;8685:34;;;8715:1;8712;8705:12;8685:34;8754:69;8815:7;8806:6;8795:9;8791:22;8754:69;:::i;:::-;8842:8;;-1:-1:-1;8728:95:1;-1:-1:-1;8930:2:1;8915:18;;8902:32;;-1:-1:-1;8946:16:1;;;8943:36;;;8975:1;8972;8965:12;8943:36;;9014:60;9066:7;9055:8;9044:9;9040:24;9014:60;:::i;:::-;8391:743;;;;-1:-1:-1;9093:8:1;-1:-1:-1;;;;8391:743:1:o;9360:276::-;9418:6;9471:2;9459:9;9450:7;9446:23;9442:32;9439:52;;;9487:1;9484;9477:12;9439:52;9526:9;9513:23;9576:10;9569:5;9565:22;9558:5;9555:33;9545:61;;9602:1;9599;9592:12;9641:180;9697:6;9750:2;9738:9;9729:7;9725:23;9721:32;9718:52;;;9766:1;9763;9756:12;9718:52;9789:26;9805:9;9789:26;:::i;9826:127::-;9887:10;9882:3;9878:20;9875:1;9868:31;9918:4;9915:1;9908:15;9942:4;9939:1;9932:15;9958:156;10024:20;;10084:4;10073:16;;10063:27;;10053:55;;10104:1;10101;10094:12;10119:1117;10201:6;10232:2;10275;10263:9;10254:7;10250:23;10246:32;10243:52;;;10291:1;10288;10281:12;10243:52;10331:9;10318:23;-1:-1:-1;;;;;10401:2:1;10393:6;10390:14;10387:34;;;10417:1;10414;10407:12;10387:34;10455:6;10444:9;10440:22;10430:32;;10500:7;10493:4;10489:2;10485:13;10481:27;10471:55;;10522:1;10519;10512:12;10471:55;10558:2;10545:16;10580:2;10576;10573:10;10570:36;;;10586:18;;:::i;:::-;10632:2;10629:1;10625:10;10664:2;10658:9;10727:2;10723:7;10718:2;10714;10710:11;10706:25;10698:6;10694:38;10782:6;10770:10;10767:22;10762:2;10750:10;10747:18;10744:46;10741:72;;;10793:18;;:::i;:::-;10829:2;10822:22;10879:18;;;10913:15;;;;-1:-1:-1;10955:11:1;;;10951:20;;;10983:19;;;10980:39;;;11015:1;11012;11005:12;10980:39;11039:11;;;;11059:146;11075:6;11070:3;11067:15;11059:146;;;11141:21;11158:3;11141:21;:::i;:::-;11129:34;;11092:12;;;;11183;;;;11059:146;;;11224:6;10119:1117;-1:-1:-1;;;;;;;;10119:1117:1:o;11241:127::-;11302:10;11297:3;11293:20;11290:1;11283:31;11333:4;11330:1;11323:15;11357:4;11354:1;11347:15;11373:238;11413:3;-1:-1:-1;;;;;11480:10:1;;;11510;;;11540:12;;;11532:21;;11529:47;;;11556:18;;:::i;:::-;11592:13;;11373:238;-1:-1:-1;;;;11373:238:1:o;11616:125::-;11656:4;11684:1;11681;11678:8;11675:34;;;11689:18;;:::i;:::-;-1:-1:-1;11726:9:1;;11616:125::o;11746:127::-;11807:10;11802:3;11798:20;11795:1;11788:31;11838:4;11835:1;11828:15;11862:4;11859:1;11852:15;11878:120;11918:1;11944;11934:35;;11949:18;;:::i;:::-;-1:-1:-1;11983:9:1;;11878:120::o;12003:127::-;12064:10;12059:3;12055:20;12052:1;12045:31;12095:4;12092:1;12085:15;12119:4;12116:1;12109:15;12135:128;12175:3;12206:1;12202:6;12199:1;12196:13;12193:39;;;12212:18;;:::i;:::-;-1:-1:-1;12248:9:1;;12135:128::o;12268:168::-;12308:7;12374:1;12370;12366:6;12362:14;12359:1;12356:21;12351:1;12344:9;12337:17;12333:45;12330:71;;;12381:18;;:::i;:::-;-1:-1:-1;12421:9:1;;12268:168::o;12441:135::-;12480:3;-1:-1:-1;;12501:17:1;;12498:43;;;12521:18;;:::i;:::-;-1:-1:-1;12568:1:1;12557:13;;12441:135::o;12581:380::-;12660:1;12656:12;;;;12703;;;12724:61;;12778:4;12770:6;12766:17;12756:27;;12724:61;12831:2;12823:6;12820:14;12800:18;12797:38;12794:161;;;12877:10;12872:3;12868:20;12865:1;12858:31;12912:4;12909:1;12902:15;12940:4;12937:1;12930:15;12794:161;;12581:380;;;:::o;13308:184::-;13378:6;13431:2;13419:9;13410:7;13406:23;13402:32;13399:52;;;13447:1;13444;13437:12;13399:52;-1:-1:-1;13470:16:1;;13308:184;-1:-1:-1;13308:184:1:o;14124:228::-;14163:3;14191:10;14228:2;14225:1;14221:10;14258:2;14255:1;14251:10;14289:3;14285:2;14281:12;14276:3;14273:21;14270:47;;;14297:18;;:::i;15119:251::-;15189:6;15242:2;15230:9;15221:7;15217:23;15213:32;15210:52;;;15258:1;15255;15248:12;15210:52;15290:9;15284:16;15309:31;15334:5;15309:31;:::i;15375:338::-;15577:2;15559:21;;;15616:2;15596:18;;;15589:30;-1:-1:-1;;;15650:2:1;15635:18;;15628:44;15704:2;15689:18;;15375:338::o;15718:341::-;15920:2;15902:21;;;15959:2;15939:18;;;15932:30;-1:-1:-1;;;15993:2:1;15978:18;;15971:47;16050:2;16035:18;;15718:341::o;16064:231::-;16104:4;-1:-1:-1;;;;;16202:10:1;;;;16172;;16224:12;;;16221:38;;;16239:18;;:::i;:::-;16276:13;;16064:231;-1:-1:-1;;;16064:231:1:o;16661:201::-;16701:1;-1:-1:-1;;;;;16766:10:1;;;;16785:37;;16802:18;;:::i;:::-;16840:10;;16836:20;;;;;16661:201;-1:-1:-1;;16661:201:1:o;17217:193::-;17249:1;-1:-1:-1;;;;;17314:10:1;;;;17333:37;;17350:18;;:::i;:::-;17388:10;;17384:20;;;;;17217:193;-1:-1:-1;;17217:193:1:o

Swarm Source

ipfs://aae674d7d94d10284e765b4bf7d8a34f81fb6513dd6b925ef9677aadccdfb207

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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