ETH Price: $3,468.40 (+1.77%)
Gas: 8 Gwei

Contract

0x07a13eea351D501cFedf96BDA8528bBC71CA5D80
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00
Transaction Hash
Method
Block
From
To
Value
Set Approval For...201093102024-06-17 5:05:3514 days ago1718600735IN
0x07a13eea...C71CA5D80
0 ETH0.000122452.62893948
Set Approval For...199776262024-05-29 19:34:4732 days ago1717011287IN
0x07a13eea...C71CA5D80
0 ETH0.0005796512.44430754
Approve199642562024-05-27 22:41:3534 days ago1716849695IN
0x07a13eea...C71CA5D80
0 ETH0.0006191712.57930168
Approve199642462024-05-27 22:39:3534 days ago1716849575IN
0x07a13eea...C71CA5D80
0 ETH0.0006057912.30730887
Approve199641022024-05-27 22:10:3534 days ago1716847835IN
0x07a13eea...C71CA5D80
0 ETH0.0006536713.28014713
Approve199640772024-05-27 22:05:3534 days ago1716847535IN
0x07a13eea...C71CA5D80
0 ETH0.0007484515.20569003
Approve199639122024-05-27 21:32:3534 days ago1716845555IN
0x07a13eea...C71CA5D80
0 ETH0.0008536117.34212997
Approve199638332024-05-27 21:16:3534 days ago1716844595IN
0x07a13eea...C71CA5D80
0 ETH0.0009536819.37516946
Approve199637512024-05-27 21:00:1134 days ago1716843611IN
0x07a13eea...C71CA5D80
0 ETH0.001051421.36576893
Approve199636502024-05-27 20:39:5934 days ago1716842399IN
0x07a13eea...C71CA5D80
0 ETH0.0010158620.64348899
Set Approval For...198992502024-05-18 20:35:5943 days ago1716064559IN
0x07a13eea...C71CA5D80
0 ETH0.000140833.02343735
Transfer From197420582024-04-26 20:59:2365 days ago1714165163IN
0x07a13eea...C71CA5D80
0 ETH0.000465877.45704225
Set Approval For...197420552024-04-26 20:58:4765 days ago1714165127IN
0x07a13eea...C71CA5D80
0 ETH0.000320696.87945516
Transfer From196787992024-04-18 0:35:1174 days ago1713400511IN
0x07a13eea...C71CA5D80
0 ETH0.0004608611.16689677
Set Approval For...196298942024-04-11 4:06:3581 days ago1712808395IN
0x07a13eea...C71CA5D80
0 ETH0.0004063916.41864399
Set Approval For...196294812024-04-11 2:43:2381 days ago1712803403IN
0x07a13eea...C71CA5D80
0 ETH0.0007131715.31067187
Set Approval For...195010942024-03-24 1:17:2399 days ago1711243043IN
0x07a13eea...C71CA5D80
0 ETH0.0007450315.96604015
Transfer From193227562024-02-28 1:27:59124 days ago1709083679IN
0x07a13eea...C71CA5D80
0 ETH0.0024302653.5595805
Transfer From193227552024-02-28 1:27:47124 days ago1709083667IN
0x07a13eea...C71CA5D80
0 ETH0.0026873553.5595805
Transfer From193227542024-02-28 1:27:35124 days ago1709083655IN
0x07a13eea...C71CA5D80
0 ETH0.0026873553.5595805
Transfer From193227532024-02-28 1:27:23124 days ago1709083643IN
0x07a13eea...C71CA5D80
0 ETH0.0026873553.5595805
Transfer From193227522024-02-28 1:27:11124 days ago1709083631IN
0x07a13eea...C71CA5D80
0 ETH0.0026873553.5595805
Transfer From193227492024-02-28 1:26:35124 days ago1709083595IN
0x07a13eea...C71CA5D80
0 ETH0.0036032253.5595805
Set Approval For...193227472024-02-28 1:26:11124 days ago1709083571IN
0x07a13eea...C71CA5D80
0 ETH0.001666235.70638708
Set Approval For...193031492024-02-25 7:36:47127 days ago1708846607IN
0x07a13eea...C71CA5D80
0 ETH0.0012069725.91190954
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
132919232021-09-25 1:18:561010 days ago1632532736
0x07a13eea...C71CA5D80
0.05 ETH
132919222021-09-25 1:18:281010 days ago1632532708
0x07a13eea...C71CA5D80
0.05 ETH
132919222021-09-25 1:18:281010 days ago1632532708
0x07a13eea...C71CA5D80
0.05 ETH
132919222021-09-25 1:18:281010 days ago1632532708
0x07a13eea...C71CA5D80
0.05 ETH
132919222021-09-25 1:18:281010 days ago1632532708
0x07a13eea...C71CA5D80
0.05 ETH
132919222021-09-25 1:18:281010 days ago1632532708
0x07a13eea...C71CA5D80
0.05 ETH
132919222021-09-25 1:18:281010 days ago1632532708
0x07a13eea...C71CA5D80
0.05 ETH
132919222021-09-25 1:18:281010 days ago1632532708
0x07a13eea...C71CA5D80
0.05 ETH
132919222021-09-25 1:18:281010 days ago1632532708
0x07a13eea...C71CA5D80
0.05 ETH
132919212021-09-25 1:18:081010 days ago1632532688
0x07a13eea...C71CA5D80
0.05 ETH
132919212021-09-25 1:18:081010 days ago1632532688
0x07a13eea...C71CA5D80
0.05 ETH
132919212021-09-25 1:18:081010 days ago1632532688
0x07a13eea...C71CA5D80
0.05 ETH
132919212021-09-25 1:18:081010 days ago1632532688
0x07a13eea...C71CA5D80
0.05 ETH
132919212021-09-25 1:18:081010 days ago1632532688
0x07a13eea...C71CA5D80
0.05 ETH
132919212021-09-25 1:18:081010 days ago1632532688
0x07a13eea...C71CA5D80
0.05 ETH
132919212021-09-25 1:18:081010 days ago1632532688
0x07a13eea...C71CA5D80
0.05 ETH
132919212021-09-25 1:18:081010 days ago1632532688
0x07a13eea...C71CA5D80
0.05 ETH
132919212021-09-25 1:18:081010 days ago1632532688
0x07a13eea...C71CA5D80
0.05 ETH
132919212021-09-25 1:18:081010 days ago1632532688
0x07a13eea...C71CA5D80
0.05 ETH
132919212021-09-25 1:18:081010 days ago1632532688
0x07a13eea...C71CA5D80
0.05 ETH
132919202021-09-25 1:18:041010 days ago1632532684
0x07a13eea...C71CA5D80
0.05 ETH
132919202021-09-25 1:18:041010 days ago1632532684
0x07a13eea...C71CA5D80
0.05 ETH
132919192021-09-25 1:17:551010 days ago1632532675
0x07a13eea...C71CA5D80
0.05 ETH
132919192021-09-25 1:17:551010 days ago1632532675
0x07a13eea...C71CA5D80
0.05 ETH
132919192021-09-25 1:17:551010 days ago1632532675
0x07a13eea...C71CA5D80
0.05 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ERC721

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-09-26
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;


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

interface IERC721 is IERC165 {
    
    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);

    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);

    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);

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

    function ownerOf(uint256 _tokenId) external view returns (address);
    
    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external;

    function safeTransferFrom(address _from, address _to, uint256 _tokenId) external;

    function transferFrom(address _from, address _to, uint256 _tokenId) external;

    function approve(address _approved, uint256 _tokenId) external;

    function setApprovalForAll(address _operator, bool _approved) external;

    function getApproved(uint256 _tokenId) external view returns (address);

    function isApprovedForAll(address _owner, address _operator) external view returns (bool);
    
}

interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
     */
    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}

interface IERC721Metadata is IERC721 {

    /**
     * @dev Returns the token collection name.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the token collection symbol.
     */
    function symbol() external view returns (string memory);
    
    function totalSupply() external view returns(uint256);
    
    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

library Strings {
    bytes16 private constant alphabet = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = alphabet[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }

}

abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

contract ERC721 is ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;
    
    uint256 private _totalMintsAllowed = 4;
    
    string private uriLink = "https://spicypumpkins.com/api/json";
    
    bool private _minting = true;
    
    address payable private _owner;
    
    uint256 private _count;
    
    string private _name;

    string private _symbol;

    mapping(uint256 => address) private _owners;
    
    mapping(uint256 => string) private _uri;

    mapping(address => uint256) private _balances;

    mapping(uint256 => address) private _tokenApprovals;
    
    mapping(address => uint256) private _minted;

    mapping(address => mapping(address => bool)) private _operatorApprovals;

    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
        _owners[0] = msg.sender;
        _balances[msg.sender] = 1;
        _owner = payable(msg.sender);
    }
    
    function setMinting(bool boolean) external {
        require(msg.sender == _owner);
        _minting = boolean;
    }
    
    function transferOwnership(address to) external {
        require(msg.sender == _owner);
        _owner = payable(to);
    }
    
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return interfaceId == type(IERC721).interfaceId
            || interfaceId == type(IERC721Metadata).interfaceId
            || super.supportsInterface(interfaceId);
    }

    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }

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

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

    function tokenURI(uint256 tokenId) external view override returns (string memory) {
        return _uri[tokenId];
    }

    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    function approve(address to, uint256 tokenId) external override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(msg.sender == owner || isApprovedForAll(owner, msg.sender),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(operator != msg.sender, "ERC721: approve to caller");

        _operatorApprovals[msg.sender][operator] = approved;
        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    function transferFrom(address from, address to, uint256 tokenId) external override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(msg.sender, tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(address from, address to, uint256 tokenId) external override {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, ""), "ERC721: transfer to non ERC721Receiver implementer");
    }

    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) external override {
        require(_isApprovedOrOwner(msg.sender, tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    function _exists(uint256 tokenId) internal view returns (bool) {
        return _owners[tokenId] != address(0);
    }

    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = _owners[tokenId];
        require(spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender), "ERC721: Not approved or owner");
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }
    
    function mint(address to) external payable returns(uint256 ID) {return internalMint(to);}
    
    function internalMint(address to) internal returns(uint256 ID){
        require(_minted[msg.sender] < _totalMintsAllowed);
        require(_count < 4444, "All NFT's minted");
        require(_minting, "Minting disabeled");
        require(msg.value == 50000000000000000, "Insufficient Eth");
        _owner.transfer(address(this).balance);
        require(to != address(0), "ERC721: mint to the zero address");
        
        uint256 count = _count;
        string memory link = uriLink;
        
        ++_balances[to];
        _owners[count] = to;
            
        string memory uri = concat(link, count.toString());
        uri = concat(uri, ".json");
        _uri[count] = uri;
        
        ++_count;
        
        emit Transfer(address(0), to, count);
        
        ++_minted[msg.sender];
        return count;
    }

    function concat(string memory _base, string memory _value) pure internal returns (string memory) {
        bytes memory _baseBytes = bytes(_base);
        bytes memory _valueBytes = bytes(_value);
        
        string memory _tmpValue = new string(_baseBytes.length + _valueBytes.length);
        bytes memory _newValue = bytes(_tmpValue);
        
        uint i;
        uint j;
        
        for(i=0;i<_baseBytes.length;i++) {
            _newValue[j++] = _baseBytes[i];
        }
        
        for(i=0;i<_valueBytes.length;i++) {
            _newValue[j++] = _valueBytes[i];
        }
        
        return string(_newValue);
    }
    
    function multiMint(address to, uint256 amount) external payable returns(uint256[] memory IDs){
        require(msg.value == 50000000000000000 * amount, "Insufficient Eth");
        IDs = new uint256[](amount);
        for(uint256 t; t < amount; ++t) {
            IDs[t] = internalMint(to);
        }
        
    }
    
    function changeMax(uint256 newMax) external {
        require(msg.sender == _owner);
        _totalMintsAllowed = newMax;
    }
    function _transfer(address from, address to, uint256 tokenId) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
        require(to != address(0), "ERC721: transfer to the zero address");

        // Clear approvals from the previous owner
        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);
    }

    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data)
        private returns (bool)
    {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(msg.sender, from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    // solhint-disable-next-line no-inline-assembly
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"changeMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"ID","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"multiMint","outputs":[{"internalType":"uint256[]","name":"IDs","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"boolean","type":"bool"}],"name":"setMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526004600055604051806060016040528060228152602001620036d260229139600190805190602001906200003a9291906200019b565b506001600260006101000a81548160ff0219169083151502179055503480156200006357600080fd5b50604051620036f4380380620036f48339818101604052810190620000899190620002bd565b8160049080519060200190620000a19291906200019b565b508060059080519060200190620000ba9291906200019b565b50336006600080815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062000461565b828054620001a990620003cd565b90600052602060002090601f016020900481019282620001cd576000855562000219565b82601f10620001e857805160ff191683800117855562000219565b8280016001018555821562000219579182015b8281111562000218578251825591602001919060010190620001fb565b5b5090506200022891906200022c565b5090565b5b80821115620002475760008160009055506001016200022d565b5090565b6000620002626200025c8462000364565b62000330565b9050828152602081018484840111156200027b57600080fd5b6200028884828562000397565b509392505050565b600082601f830112620002a257600080fd5b8151620002b48482602086016200024b565b91505092915050565b60008060408385031215620002d157600080fd5b600083015167ffffffffffffffff811115620002ec57600080fd5b620002fa8582860162000290565b925050602083015167ffffffffffffffff8111156200031857600080fd5b620003268582860162000290565b9150509250929050565b6000604051905081810181811067ffffffffffffffff821117156200035a576200035962000432565b5b8060405250919050565b600067ffffffffffffffff82111562000382576200038162000432565b5b601f19601f8301169050602081019050919050565b60005b83811015620003b75780820151818401526020810190506200039a565b83811115620003c7576000848401525b50505050565b60006002820490506001821680620003e657607f821691505b60208210811415620003fd57620003fc62000403565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61326180620004716000396000f3fe6080604052600436106101145760003560e01c80636352211e116100a0578063b4c7f06611610064578063b4c7f066146103bb578063b88d4fde146103e4578063c87b56dd1461040d578063e985e9c51461044a578063f2fde38b1461048757610114565b80636352211e146102bd5780636a627842146102fa57806370a082311461032a57806395d89b4114610367578063a22cb4651461039257610114565b8063121dbc31116100e7578063121dbc31146101e757806318160ddd1461021057806323b872dd1461023b5780632649d62e1461026457806342842e0e1461029457610114565b806301ffc9a71461011957806306fdde0314610156578063081812fc14610181578063095ea7b3146101be575b600080fd5b34801561012557600080fd5b50610140600480360381019061013b91906123bd565b6104b0565b60405161014d9190612b61565b60405180910390f35b34801561016257600080fd5b5061016b610592565b6040516101789190612b7c565b60405180910390f35b34801561018d57600080fd5b506101a860048036038101906101a3919061240f565b610624565b6040516101b59190612ad8565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e09190612358565b6106a9565b005b3480156101f357600080fd5b5061020e6004803603810190610209919061240f565b6107b3565b005b34801561021c57600080fd5b50610225610817565b6040516102329190612d9e565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190612252565b610821565b005b61027e60048036038101906102799190612358565b61087a565b60405161028b9190612b3f565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b69190612252565b6109b2565b005b3480156102c957600080fd5b506102e460048036038101906102df919061240f565b610a1c565b6040516102f19190612ad8565b60405180910390f35b610314600480360381019061030f91906121ed565b610ace565b6040516103219190612d9e565b60405180910390f35b34801561033657600080fd5b50610351600480360381019061034c91906121ed565b610ae0565b60405161035e9190612d9e565b60405180910390f35b34801561037357600080fd5b5061037c610b98565b6040516103899190612b7c565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b4919061231c565b610c2a565b005b3480156103c757600080fd5b506103e260048036038101906103dd9190612394565b610d96565b005b3480156103f057600080fd5b5061040b600480360381019061040691906122a1565b610e0d565b005b34801561041957600080fd5b50610434600480360381019061042f919061240f565b610e68565b6040516104419190612b7c565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c9190612216565b610f0d565b60405161047e9190612b61565b60405180910390f35b34801561049357600080fd5b506104ae60048036038101906104a991906121ed565b610fa1565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057b57507f43481e42000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061058b575061058a8261103f565b5b9050919050565b6060600480546105a190613056565b80601f01602080910402602001604051908101604052809291908181526020018280546105cd90613056565b801561061a5780601f106105ef5761010080835404028352916020019161061a565b820191906000526020600020905b8154815290600101906020018083116105fd57829003601f168201915b5050505050905090565b600061062f826110a9565b61066e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066590612cfe565b60405180910390fd5b6009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006106b482610a1c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071c90612d3e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061076557506107648133610f0d565b5b6107a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079b90612c5e565b60405180910390fd5b6107ae8383611115565b505050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461080d57600080fd5b8060008190555050565b600061115c905090565b61082b33826111ce565b61086a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086190612d7e565b60405180910390fd5b610875838383611394565b505050565b60608166b1a2bc2ec5000061088f9190612f12565b34146108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c790612cbe565b60405180910390fd5b8167ffffffffffffffff811115610910577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561093e5781602001602082028036833780820191505090505b50905060005b828110156109ab57610955846115e5565b82828151811061098e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001018181525050806109a490613088565b9050610944565b5092915050565b6109bd838383611394565b6109d883838360405180602001604052806000815250611a74565b610a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0e90612b9e565b60405180910390fd5b505050565b6000806006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abc90612c9e565b60405180910390fd5b80915050919050565b6000610ad9826115e5565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4890612c7e565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060058054610ba790613056565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd390613056565b8015610c205780601f10610bf557610100808354040283529160200191610c20565b820191906000526020600020905b815481529060010190602001808311610c0357829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9090612bfe565b60405180910390fd5b80600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610d8a9190612b61565b60405180910390a35050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610df057600080fd5b80600260006101000a81548160ff02191690831515021790555050565b610e1733836111ce565b610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d90612d7e565b60405180910390fd5b610e6284848484611c04565b50505050565b6060600760008381526020019081526020016000208054610e8890613056565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb490613056565b8015610f015780601f10610ed657610100808354040283529160200191610f01565b820191906000526020600020905b815481529060010190602001808311610ee457829003601f168201915b50505050509050919050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ffb57600080fd5b80600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816009600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661118883610a1c565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006111d9826110a9565b611218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120f90612c3e565b60405180910390fd5b60006006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806112bd57508373ffffffffffffffffffffffffffffffffffffffff166112a584610624565b73ffffffffffffffffffffffffffffffffffffffff16145b806112ce57506112cd8185610f0d565b5b61130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490612d5e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061137a57508373ffffffffffffffffffffffffffffffffffffffff1661136284610624565b73ffffffffffffffffffffffffffffffffffffffff16145b8061138b575061138a8185610f0d565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166113b482610a1c565b73ffffffffffffffffffffffffffffffffffffffff161461140a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140190612d1e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561147a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147190612bde565b60405180910390fd5b611485600082611115565b6001600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114d59190612f6c565b925050819055506001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461152c9190612e8b565b92505081905550816006600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60008054600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061163357600080fd5b61115c60035410611679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167090612bbe565b60405180910390fd5b600260009054906101000a900460ff166116c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bf90612c1e565b60405180910390fd5b66b1a2bc2ec500003414611711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170890612cbe565b60405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611779573d6000803e3d6000fd5b50600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e190612cde565b60405180910390fd5b6000600354905060006001805461180090613056565b80601f016020809104026020016040519081016040528092919081815260200182805461182c90613056565b80156118795780601f1061184e57610100808354040283529160200191611879565b820191906000526020600020905b81548152906001019060200180831161185c57829003601f168201915b50505050509050600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546118cc90613088565b91905081905550836006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006119398261193485611c60565b611e0d565b905061197a816040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250611e0d565b9050806007600085815260200190815260200160002090805190602001906119a3929190612079565b506003600081546119b390613088565b91905081905550828573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154611a6290613088565b91905081905550829350505050919050565b6000611a958473ffffffffffffffffffffffffffffffffffffffff16612066565b15611bf7578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b8152600401611ad99493929190612af3565b602060405180830381600087803b158015611af357600080fd5b505af1925050508015611b2457506040513d601f19601f82011682018060405250810190611b2191906123e6565b60015b611ba7573d8060008114611b54576040519150601f19603f3d011682016040523d82523d6000602084013e611b59565b606091505b50600081511415611b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9690612b9e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611bfc565b600190505b949350505050565b611c0f848484611394565b611c1b84848484611a74565b611c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5190612b9e565b60405180910390fd5b50505050565b60606000821415611ca8576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611e08565b600082905060005b60008214611cda578080611cc390613088565b915050600a82611cd39190612ee1565b9150611cb0565b60008167ffffffffffffffff811115611d1c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611d4e5781602001600182028036833780820191505090505b5090505b60008514611e0157600182611d679190612f6c565b9150600a85611d7691906130d1565b6030611d829190612e8b565b60f81b818381518110611dbe577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611dfa9190612ee1565b9450611d52565b8093505050505b919050565b606060008390506000839050600081518351611e299190612e8b565b67ffffffffffffffff811115611e68577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611e9a5781602001600182028036833780820191505090505b5090506000819050600080600091505b8551821015611f7e57858281518110611eec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b838280611f0390613088565b935081518110611f3c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508180611f7690613088565b925050611eaa565b600091505b845182101561205757848281518110611fc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b838280611fdc90613088565b935081518110612015577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350818061204f90613088565b925050611f83565b82965050505050505092915050565b600080823b905060008111915050919050565b82805461208590613056565b90600052602060002090601f0160209004810192826120a757600085556120ee565b82601f106120c057805160ff19168380011785556120ee565b828001600101855582156120ee579182015b828111156120ed5782518255916020019190600101906120d2565b5b5090506120fb91906120ff565b5090565b5b80821115612118576000816000905550600101612100565b5090565b600061212f61212a84612dea565b612db9565b90508281526020810184848401111561214757600080fd5b612152848285613014565b509392505050565b600081359050612169816131cf565b92915050565b60008135905061217e816131e6565b92915050565b600081359050612193816131fd565b92915050565b6000815190506121a8816131fd565b92915050565b600082601f8301126121bf57600080fd5b81356121cf84826020860161211c565b91505092915050565b6000813590506121e781613214565b92915050565b6000602082840312156121ff57600080fd5b600061220d8482850161215a565b91505092915050565b6000806040838503121561222957600080fd5b60006122378582860161215a565b92505060206122488582860161215a565b9150509250929050565b60008060006060848603121561226757600080fd5b60006122758682870161215a565b93505060206122868682870161215a565b9250506040612297868287016121d8565b9150509250925092565b600080600080608085870312156122b757600080fd5b60006122c58782880161215a565b94505060206122d68782880161215a565b93505060406122e7878288016121d8565b925050606085013567ffffffffffffffff81111561230457600080fd5b612310878288016121ae565b91505092959194509250565b6000806040838503121561232f57600080fd5b600061233d8582860161215a565b925050602061234e8582860161216f565b9150509250929050565b6000806040838503121561236b57600080fd5b60006123798582860161215a565b925050602061238a858286016121d8565b9150509250929050565b6000602082840312156123a657600080fd5b60006123b48482850161216f565b91505092915050565b6000602082840312156123cf57600080fd5b60006123dd84828501612184565b91505092915050565b6000602082840312156123f857600080fd5b600061240684828501612199565b91505092915050565b60006020828403121561242157600080fd5b600061242f848285016121d8565b91505092915050565b60006124448383612aba565b60208301905092915050565b61245981612fa0565b82525050565b600061246a82612e2a565b6124748185612e58565b935061247f83612e1a565b8060005b838110156124b05781516124978882612438565b97506124a283612e4b565b925050600181019050612483565b5085935050505092915050565b6124c681612fb2565b82525050565b60006124d782612e35565b6124e18185612e69565b93506124f1818560208601613023565b6124fa816131be565b840191505092915050565b600061251082612e40565b61251a8185612e7a565b935061252a818560208601613023565b612533816131be565b840191505092915050565b600061254b603283612e7a565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b60006125b1601083612e7a565b91507f416c6c204e46542773206d696e746564000000000000000000000000000000006000830152602082019050919050565b60006125f1602483612e7a565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612657601983612e7a565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000612697601183612e7a565b91507f4d696e74696e67206469736162656c65640000000000000000000000000000006000830152602082019050919050565b60006126d7602c83612e7a565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b600061273d603883612e7a565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b60006127a3602a83612e7a565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b6000612809602983612e7a565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b600061286f601083612e7a565b91507f496e73756666696369656e7420457468000000000000000000000000000000006000830152602082019050919050565b60006128af602083612e7a565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b60006128ef602c83612e7a565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b6000612955602983612e7a565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006129bb602183612e7a565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a21601d83612e7a565b91507f4552433732313a204e6f7420617070726f766564206f72206f776e65720000006000830152602082019050919050565b6000612a61603183612e7a565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b612ac38161300a565b82525050565b612ad28161300a565b82525050565b6000602082019050612aed6000830184612450565b92915050565b6000608082019050612b086000830187612450565b612b156020830186612450565b612b226040830185612ac9565b8181036060830152612b3481846124cc565b905095945050505050565b60006020820190508181036000830152612b59818461245f565b905092915050565b6000602082019050612b7660008301846124bd565b92915050565b60006020820190508181036000830152612b968184612505565b905092915050565b60006020820190508181036000830152612bb78161253e565b9050919050565b60006020820190508181036000830152612bd7816125a4565b9050919050565b60006020820190508181036000830152612bf7816125e4565b9050919050565b60006020820190508181036000830152612c178161264a565b9050919050565b60006020820190508181036000830152612c378161268a565b9050919050565b60006020820190508181036000830152612c57816126ca565b9050919050565b60006020820190508181036000830152612c7781612730565b9050919050565b60006020820190508181036000830152612c9781612796565b9050919050565b60006020820190508181036000830152612cb7816127fc565b9050919050565b60006020820190508181036000830152612cd781612862565b9050919050565b60006020820190508181036000830152612cf7816128a2565b9050919050565b60006020820190508181036000830152612d17816128e2565b9050919050565b60006020820190508181036000830152612d3781612948565b9050919050565b60006020820190508181036000830152612d57816129ae565b9050919050565b60006020820190508181036000830152612d7781612a14565b9050919050565b60006020820190508181036000830152612d9781612a54565b9050919050565b6000602082019050612db36000830184612ac9565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612de057612ddf61318f565b5b8060405250919050565b600067ffffffffffffffff821115612e0557612e0461318f565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612e968261300a565b9150612ea18361300a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ed657612ed5613102565b5b828201905092915050565b6000612eec8261300a565b9150612ef78361300a565b925082612f0757612f06613131565b5b828204905092915050565b6000612f1d8261300a565b9150612f288361300a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f6157612f60613102565b5b828202905092915050565b6000612f778261300a565b9150612f828361300a565b925082821015612f9557612f94613102565b5b828203905092915050565b6000612fab82612fea565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613041578082015181840152602081019050613026565b83811115613050576000848401525b50505050565b6000600282049050600182168061306e57607f821691505b6020821081141561308257613081613160565b5b50919050565b60006130938261300a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130c6576130c5613102565b5b600182019050919050565b60006130dc8261300a565b91506130e78361300a565b9250826130f7576130f6613131565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6131d881612fa0565b81146131e357600080fd5b50565b6131ef81612fb2565b81146131fa57600080fd5b50565b61320681612fbe565b811461321157600080fd5b50565b61321d8161300a565b811461322857600080fd5b5056fea2646970667358221220b1a82e20083911d0bcc3517682561bb50e696d5a0bb035de1511fc94926bbe6564736f6c6343000800003368747470733a2f2f737069637970756d706b696e732e636f6d2f6170692f6a736f6e00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000e53706963792050756d706b696e7300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025350000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101145760003560e01c80636352211e116100a0578063b4c7f06611610064578063b4c7f066146103bb578063b88d4fde146103e4578063c87b56dd1461040d578063e985e9c51461044a578063f2fde38b1461048757610114565b80636352211e146102bd5780636a627842146102fa57806370a082311461032a57806395d89b4114610367578063a22cb4651461039257610114565b8063121dbc31116100e7578063121dbc31146101e757806318160ddd1461021057806323b872dd1461023b5780632649d62e1461026457806342842e0e1461029457610114565b806301ffc9a71461011957806306fdde0314610156578063081812fc14610181578063095ea7b3146101be575b600080fd5b34801561012557600080fd5b50610140600480360381019061013b91906123bd565b6104b0565b60405161014d9190612b61565b60405180910390f35b34801561016257600080fd5b5061016b610592565b6040516101789190612b7c565b60405180910390f35b34801561018d57600080fd5b506101a860048036038101906101a3919061240f565b610624565b6040516101b59190612ad8565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e09190612358565b6106a9565b005b3480156101f357600080fd5b5061020e6004803603810190610209919061240f565b6107b3565b005b34801561021c57600080fd5b50610225610817565b6040516102329190612d9e565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190612252565b610821565b005b61027e60048036038101906102799190612358565b61087a565b60405161028b9190612b3f565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b69190612252565b6109b2565b005b3480156102c957600080fd5b506102e460048036038101906102df919061240f565b610a1c565b6040516102f19190612ad8565b60405180910390f35b610314600480360381019061030f91906121ed565b610ace565b6040516103219190612d9e565b60405180910390f35b34801561033657600080fd5b50610351600480360381019061034c91906121ed565b610ae0565b60405161035e9190612d9e565b60405180910390f35b34801561037357600080fd5b5061037c610b98565b6040516103899190612b7c565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b4919061231c565b610c2a565b005b3480156103c757600080fd5b506103e260048036038101906103dd9190612394565b610d96565b005b3480156103f057600080fd5b5061040b600480360381019061040691906122a1565b610e0d565b005b34801561041957600080fd5b50610434600480360381019061042f919061240f565b610e68565b6040516104419190612b7c565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c9190612216565b610f0d565b60405161047e9190612b61565b60405180910390f35b34801561049357600080fd5b506104ae60048036038101906104a991906121ed565b610fa1565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057b57507f43481e42000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061058b575061058a8261103f565b5b9050919050565b6060600480546105a190613056565b80601f01602080910402602001604051908101604052809291908181526020018280546105cd90613056565b801561061a5780601f106105ef5761010080835404028352916020019161061a565b820191906000526020600020905b8154815290600101906020018083116105fd57829003601f168201915b5050505050905090565b600061062f826110a9565b61066e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066590612cfe565b60405180910390fd5b6009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006106b482610a1c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071c90612d3e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061076557506107648133610f0d565b5b6107a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079b90612c5e565b60405180910390fd5b6107ae8383611115565b505050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461080d57600080fd5b8060008190555050565b600061115c905090565b61082b33826111ce565b61086a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086190612d7e565b60405180910390fd5b610875838383611394565b505050565b60608166b1a2bc2ec5000061088f9190612f12565b34146108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c790612cbe565b60405180910390fd5b8167ffffffffffffffff811115610910577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561093e5781602001602082028036833780820191505090505b50905060005b828110156109ab57610955846115e5565b82828151811061098e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001018181525050806109a490613088565b9050610944565b5092915050565b6109bd838383611394565b6109d883838360405180602001604052806000815250611a74565b610a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0e90612b9e565b60405180910390fd5b505050565b6000806006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abc90612c9e565b60405180910390fd5b80915050919050565b6000610ad9826115e5565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4890612c7e565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060058054610ba790613056565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd390613056565b8015610c205780601f10610bf557610100808354040283529160200191610c20565b820191906000526020600020905b815481529060010190602001808311610c0357829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9090612bfe565b60405180910390fd5b80600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610d8a9190612b61565b60405180910390a35050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610df057600080fd5b80600260006101000a81548160ff02191690831515021790555050565b610e1733836111ce565b610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d90612d7e565b60405180910390fd5b610e6284848484611c04565b50505050565b6060600760008381526020019081526020016000208054610e8890613056565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb490613056565b8015610f015780601f10610ed657610100808354040283529160200191610f01565b820191906000526020600020905b815481529060010190602001808311610ee457829003601f168201915b50505050509050919050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ffb57600080fd5b80600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816009600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661118883610a1c565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006111d9826110a9565b611218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120f90612c3e565b60405180910390fd5b60006006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806112bd57508373ffffffffffffffffffffffffffffffffffffffff166112a584610624565b73ffffffffffffffffffffffffffffffffffffffff16145b806112ce57506112cd8185610f0d565b5b61130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490612d5e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061137a57508373ffffffffffffffffffffffffffffffffffffffff1661136284610624565b73ffffffffffffffffffffffffffffffffffffffff16145b8061138b575061138a8185610f0d565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166113b482610a1c565b73ffffffffffffffffffffffffffffffffffffffff161461140a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140190612d1e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561147a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147190612bde565b60405180910390fd5b611485600082611115565b6001600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114d59190612f6c565b925050819055506001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461152c9190612e8b565b92505081905550816006600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60008054600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061163357600080fd5b61115c60035410611679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167090612bbe565b60405180910390fd5b600260009054906101000a900460ff166116c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bf90612c1e565b60405180910390fd5b66b1a2bc2ec500003414611711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170890612cbe565b60405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611779573d6000803e3d6000fd5b50600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e190612cde565b60405180910390fd5b6000600354905060006001805461180090613056565b80601f016020809104026020016040519081016040528092919081815260200182805461182c90613056565b80156118795780601f1061184e57610100808354040283529160200191611879565b820191906000526020600020905b81548152906001019060200180831161185c57829003601f168201915b50505050509050600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546118cc90613088565b91905081905550836006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006119398261193485611c60565b611e0d565b905061197a816040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250611e0d565b9050806007600085815260200190815260200160002090805190602001906119a3929190612079565b506003600081546119b390613088565b91905081905550828573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154611a6290613088565b91905081905550829350505050919050565b6000611a958473ffffffffffffffffffffffffffffffffffffffff16612066565b15611bf7578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b8152600401611ad99493929190612af3565b602060405180830381600087803b158015611af357600080fd5b505af1925050508015611b2457506040513d601f19601f82011682018060405250810190611b2191906123e6565b60015b611ba7573d8060008114611b54576040519150601f19603f3d011682016040523d82523d6000602084013e611b59565b606091505b50600081511415611b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9690612b9e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611bfc565b600190505b949350505050565b611c0f848484611394565b611c1b84848484611a74565b611c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5190612b9e565b60405180910390fd5b50505050565b60606000821415611ca8576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611e08565b600082905060005b60008214611cda578080611cc390613088565b915050600a82611cd39190612ee1565b9150611cb0565b60008167ffffffffffffffff811115611d1c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611d4e5781602001600182028036833780820191505090505b5090505b60008514611e0157600182611d679190612f6c565b9150600a85611d7691906130d1565b6030611d829190612e8b565b60f81b818381518110611dbe577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611dfa9190612ee1565b9450611d52565b8093505050505b919050565b606060008390506000839050600081518351611e299190612e8b565b67ffffffffffffffff811115611e68577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611e9a5781602001600182028036833780820191505090505b5090506000819050600080600091505b8551821015611f7e57858281518110611eec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b838280611f0390613088565b935081518110611f3c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508180611f7690613088565b925050611eaa565b600091505b845182101561205757848281518110611fc5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b838280611fdc90613088565b935081518110612015577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350818061204f90613088565b925050611f83565b82965050505050505092915050565b600080823b905060008111915050919050565b82805461208590613056565b90600052602060002090601f0160209004810192826120a757600085556120ee565b82601f106120c057805160ff19168380011785556120ee565b828001600101855582156120ee579182015b828111156120ed5782518255916020019190600101906120d2565b5b5090506120fb91906120ff565b5090565b5b80821115612118576000816000905550600101612100565b5090565b600061212f61212a84612dea565b612db9565b90508281526020810184848401111561214757600080fd5b612152848285613014565b509392505050565b600081359050612169816131cf565b92915050565b60008135905061217e816131e6565b92915050565b600081359050612193816131fd565b92915050565b6000815190506121a8816131fd565b92915050565b600082601f8301126121bf57600080fd5b81356121cf84826020860161211c565b91505092915050565b6000813590506121e781613214565b92915050565b6000602082840312156121ff57600080fd5b600061220d8482850161215a565b91505092915050565b6000806040838503121561222957600080fd5b60006122378582860161215a565b92505060206122488582860161215a565b9150509250929050565b60008060006060848603121561226757600080fd5b60006122758682870161215a565b93505060206122868682870161215a565b9250506040612297868287016121d8565b9150509250925092565b600080600080608085870312156122b757600080fd5b60006122c58782880161215a565b94505060206122d68782880161215a565b93505060406122e7878288016121d8565b925050606085013567ffffffffffffffff81111561230457600080fd5b612310878288016121ae565b91505092959194509250565b6000806040838503121561232f57600080fd5b600061233d8582860161215a565b925050602061234e8582860161216f565b9150509250929050565b6000806040838503121561236b57600080fd5b60006123798582860161215a565b925050602061238a858286016121d8565b9150509250929050565b6000602082840312156123a657600080fd5b60006123b48482850161216f565b91505092915050565b6000602082840312156123cf57600080fd5b60006123dd84828501612184565b91505092915050565b6000602082840312156123f857600080fd5b600061240684828501612199565b91505092915050565b60006020828403121561242157600080fd5b600061242f848285016121d8565b91505092915050565b60006124448383612aba565b60208301905092915050565b61245981612fa0565b82525050565b600061246a82612e2a565b6124748185612e58565b935061247f83612e1a565b8060005b838110156124b05781516124978882612438565b97506124a283612e4b565b925050600181019050612483565b5085935050505092915050565b6124c681612fb2565b82525050565b60006124d782612e35565b6124e18185612e69565b93506124f1818560208601613023565b6124fa816131be565b840191505092915050565b600061251082612e40565b61251a8185612e7a565b935061252a818560208601613023565b612533816131be565b840191505092915050565b600061254b603283612e7a565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b60006125b1601083612e7a565b91507f416c6c204e46542773206d696e746564000000000000000000000000000000006000830152602082019050919050565b60006125f1602483612e7a565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612657601983612e7a565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000612697601183612e7a565b91507f4d696e74696e67206469736162656c65640000000000000000000000000000006000830152602082019050919050565b60006126d7602c83612e7a565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b600061273d603883612e7a565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b60006127a3602a83612e7a565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b6000612809602983612e7a565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b600061286f601083612e7a565b91507f496e73756666696369656e7420457468000000000000000000000000000000006000830152602082019050919050565b60006128af602083612e7a565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b60006128ef602c83612e7a565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b6000612955602983612e7a565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006129bb602183612e7a565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a21601d83612e7a565b91507f4552433732313a204e6f7420617070726f766564206f72206f776e65720000006000830152602082019050919050565b6000612a61603183612e7a565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b612ac38161300a565b82525050565b612ad28161300a565b82525050565b6000602082019050612aed6000830184612450565b92915050565b6000608082019050612b086000830187612450565b612b156020830186612450565b612b226040830185612ac9565b8181036060830152612b3481846124cc565b905095945050505050565b60006020820190508181036000830152612b59818461245f565b905092915050565b6000602082019050612b7660008301846124bd565b92915050565b60006020820190508181036000830152612b968184612505565b905092915050565b60006020820190508181036000830152612bb78161253e565b9050919050565b60006020820190508181036000830152612bd7816125a4565b9050919050565b60006020820190508181036000830152612bf7816125e4565b9050919050565b60006020820190508181036000830152612c178161264a565b9050919050565b60006020820190508181036000830152612c378161268a565b9050919050565b60006020820190508181036000830152612c57816126ca565b9050919050565b60006020820190508181036000830152612c7781612730565b9050919050565b60006020820190508181036000830152612c9781612796565b9050919050565b60006020820190508181036000830152612cb7816127fc565b9050919050565b60006020820190508181036000830152612cd781612862565b9050919050565b60006020820190508181036000830152612cf7816128a2565b9050919050565b60006020820190508181036000830152612d17816128e2565b9050919050565b60006020820190508181036000830152612d3781612948565b9050919050565b60006020820190508181036000830152612d57816129ae565b9050919050565b60006020820190508181036000830152612d7781612a14565b9050919050565b60006020820190508181036000830152612d9781612a54565b9050919050565b6000602082019050612db36000830184612ac9565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612de057612ddf61318f565b5b8060405250919050565b600067ffffffffffffffff821115612e0557612e0461318f565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612e968261300a565b9150612ea18361300a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ed657612ed5613102565b5b828201905092915050565b6000612eec8261300a565b9150612ef78361300a565b925082612f0757612f06613131565b5b828204905092915050565b6000612f1d8261300a565b9150612f288361300a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f6157612f60613102565b5b828202905092915050565b6000612f778261300a565b9150612f828361300a565b925082821015612f9557612f94613102565b5b828203905092915050565b6000612fab82612fea565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613041578082015181840152602081019050613026565b83811115613050576000848401525b50505050565b6000600282049050600182168061306e57607f821691505b6020821081141561308257613081613160565b5b50919050565b60006130938261300a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130c6576130c5613102565b5b600182019050919050565b60006130dc8261300a565b91506130e78361300a565b9250826130f7576130f6613131565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6131d881612fa0565b81146131e357600080fd5b50565b6131ef81612fb2565b81146131fa57600080fd5b50565b61320681612fbe565b811461321157600080fd5b50565b61321d8161300a565b811461322857600080fd5b5056fea2646970667358221220b1a82e20083911d0bcc3517682561bb50e696d5a0bb035de1511fc94926bbe6564736f6c63430008000033

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

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000e53706963792050756d706b696e7300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025350000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): Spicy Pumpkins
Arg [1] : symbol_ (string): SP

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000e
Arg [3] : 53706963792050756d706b696e73000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [5] : 5350000000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

12918:9078:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14214:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14977:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15911:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15516:387;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20334:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15201:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16609:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20000:322;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16914:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14730:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18352:89;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14514:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15085:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16140:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13943:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17175:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15285:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16437:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14075:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14214:292;14316:4;14355:25;14340:40;;;:11;:40;;;;:105;;;;14412:33;14397:48;;;:11;:48;;;;14340:105;:158;;;;14462:36;14486:11;14462:23;:36::i;:::-;14340:158;14333:165;;14214:292;;;:::o;14977:100::-;15031:13;15064:5;15057:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14977:100;:::o;15911:221::-;15987:7;16015:16;16023:7;16015;:16::i;:::-;16007:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16100:15;:24;16116:7;16100:24;;;;;;;;;;;;;;;;;;;;;16093:31;;15911:221;;;:::o;15516:387::-;15591:13;15607:23;15622:7;15607:14;:23::i;:::-;15591:39;;15655:5;15649:11;;:2;:11;;;;15641:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;15733:5;15719:19;;:10;:19;;;:58;;;;15742:35;15759:5;15766:10;15742:16;:35::i;:::-;15719:58;15711:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;15874:21;15883:2;15887:7;15874:8;:21::i;:::-;15516:387;;;:::o;20334:130::-;20411:6;;;;;;;;;;;20397:20;;:10;:20;;;20389:29;;;;;;20450:6;20429:18;:27;;;;20334:130;:::o;15201:76::-;15255:7;15271:4;15264:11;;15201:76;:::o;16609:297::-;16764:39;16783:10;16795:7;16764:18;:39::i;:::-;16756:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;16870:28;16880:4;16886:2;16890:7;16870:9;:28::i;:::-;16609:297;;;:::o;20000:322::-;20072:20;20145:6;20125:17;:26;;;;:::i;:::-;20112:9;:39;20104:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20203:6;20189:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20183:27;;20225:9;20221:84;20240:6;20236:1;:10;20221:84;;;20277:16;20290:2;20277:12;:16::i;:::-;20268:3;20272:1;20268:6;;;;;;;;;;;;;;;;;;;;;:25;;;;;20248:3;;;;:::i;:::-;;;20221:84;;;;20000:322;;;;:::o;16914:253::-;17012:28;17022:4;17028:2;17032:7;17012:9;:28::i;:::-;17059:45;17082:4;17088:2;17092:7;17059:45;;;;;;;;;;;;:22;:45::i;:::-;17051:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;16914:253;;;:::o;14730:239::-;14802:7;14822:13;14838:7;:16;14846:7;14838:16;;;;;;;;;;;;;;;;;;;;;14822:32;;14890:1;14873:19;;:5;:19;;;;14865:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;14956:5;14949:12;;;14730:239;;;:::o;18352:89::-;18403:10;18423:16;18436:2;18423:12;:16::i;:::-;18416:23;;18352:89;;;:::o;14514:208::-;14586:7;14631:1;14614:19;;:5;:19;;;;14606:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14698:9;:16;14708:5;14698:16;;;;;;;;;;;;;;;;14691:23;;14514:208;;;:::o;15085:104::-;15141:13;15174:7;15167:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15085:104;:::o;16140:289::-;16255:10;16243:22;;:8;:22;;;;16235:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;16351:8;16308:18;:30;16327:10;16308:30;;;;;;;;;;;;;;;:40;16339:8;16308:40;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;16402:8;16375:46;;16390:10;16375:46;;;16412:8;16375:46;;;;;;:::i;:::-;;;;;;;;16140:289;;:::o;13943:120::-;14019:6;;;;;;;;;;;14005:20;;:10;:20;;;13997:29;;;;;;14048:7;14037:8;;:18;;;;;;;;;;;;;;;;;;13943:120;:::o;17175:277::-;17301:39;17320:10;17332:7;17301:18;:39::i;:::-;17293:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;17405:39;17419:4;17425:2;17429:7;17438:5;17405:13;:39::i;:::-;17175:277;;;;:::o;15285:121::-;15352:13;15385:4;:13;15390:7;15385:13;;;;;;;;;;;15378:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15285:121;;;:::o;16437:164::-;16534:4;16558:18;:25;16577:5;16558:25;;;;;;;;;;;;;;;:35;16584:8;16558:35;;;;;;;;;;;;;;;;;;;;;;;;;16551:42;;16437:164;;;;:::o;14075:127::-;14156:6;;;;;;;;;;;14142:20;;:10;:20;;;14134:29;;;;;;14191:2;14174:6;;:20;;;;;;;;;;;;;;;;;;14075:127;:::o;12754:157::-;12839:4;12878:25;12863:40;;;:11;:40;;;;12856:47;;12754:157;;;:::o;17740:119::-;17797:4;17849:1;17821:30;;:7;:16;17829:7;17821:16;;;;;;;;;;;;;;;;;;;;;:30;;;;17814:37;;17740:119;;;:::o;20970:174::-;21072:2;21045:15;:24;21061:7;21045:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;21128:7;21124:2;21090:46;;21099:23;21114:7;21099:14;:23::i;:::-;21090:46;;;;;;;;;;;;20970:174;;:::o;17867:473::-;17952:4;17977:16;17985:7;17977;:16::i;:::-;17969:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18053:13;18069:7;:16;18077:7;18069:16;;;;;;;;;;;;;;;;;;;;;18053:32;;18115:5;18104:16;;:7;:16;;;:51;;;;18148:7;18124:31;;:20;18136:7;18124:11;:20::i;:::-;:31;;;18104:51;:87;;;;18159:32;18176:5;18183:7;18159:16;:32::i;:::-;18104:87;18096:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;18255:5;18244:16;;:7;:16;;;:51;;;;18288:7;18264:31;;:20;18276:7;18264:11;:20::i;:::-;:31;;;18244:51;:87;;;;18299:32;18316:5;18323:7;18299:16;:32::i;:::-;18244:87;18236:96;;;17867:473;;;;:::o;20470:492::-;20595:4;20568:31;;:23;20583:7;20568:14;:23::i;:::-;:31;;;20560:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;20678:1;20664:16;;:2;:16;;;;20656:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;20786:29;20803:1;20807:7;20786:8;:29::i;:::-;20847:1;20828:9;:15;20838:4;20828:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;20876:1;20859:9;:13;20869:2;20859:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;20907:2;20888:7;:16;20896:7;20888:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;20946:7;20942:2;20927:27;;20936:4;20927:27;;;;;;;;;;;;20470:492;;;:::o;18453:862::-;18504:10;18556:18;;18534:7;:19;18542:10;18534:19;;;;;;;;;;;;;;;;:40;18526:49;;;;;;18603:4;18594:6;;:13;18586:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;18647:8;;;;;;;;;;;18639:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18709:17;18696:9;:30;18688:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;18758:6;;;;;;;;;;;:15;;:38;18774:21;18758:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18829:1;18815:16;;:2;:16;;;;18807:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;18889:13;18905:6;;18889:22;;18922:18;18943:7;18922:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18973:9;:13;18983:2;18973:13;;;;;;;;;;;;;;;;18971:15;;;;;:::i;:::-;;;;;;;;19014:2;18997:7;:14;19005:5;18997:14;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;19041:17;19061:30;19068:4;19074:16;:5;:14;:16::i;:::-;19061:6;:30::i;:::-;19041:50;;19108:20;19115:3;19108:20;;;;;;;;;;;;;;;;;:6;:20::i;:::-;19102:26;;19153:3;19139:4;:11;19144:5;19139:11;;;;;;;;;;;:17;;;;;;;;;;;;:::i;:::-;;19179:6;;19177:8;;;;;:::i;:::-;;;;;;;;19236:5;19232:2;19211:31;;19228:1;19211:31;;;;;;;;;;;;19265:7;:19;19273:10;19265:19;;;;;;;;;;;;;;;;19263:21;;;;;:::i;:::-;;;;;;;;19302:5;19295:12;;;;;18453:862;;;:::o;21152:841::-;21273:4;21299:15;:2;:13;;;:15::i;:::-;21295:691;;;21351:2;21335:36;;;21372:10;21384:4;21390:7;21399:5;21335:70;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;21331:600;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21596:1;21579:6;:13;:18;21575:341;;;21622:60;;;;;;;;;;:::i;:::-;;;;;;;;21575:341;21866:6;21860:13;21851:6;21847:2;21843:15;21836:38;21331:600;21466:45;;;21456:55;;;:6;:55;;;;21449:62;;;;;21295:691;21970:4;21963:11;;21152:841;;;;;;;:::o;17460:272::-;17574:28;17584:4;17590:2;17594:7;17574:9;:28::i;:::-;17621:48;17644:4;17650:2;17654:7;17663:5;17621:22;:48::i;:::-;17613:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;17460:272;;;;:::o;10890:723::-;10946:13;11176:1;11167:5;:10;11163:53;;;11194:10;;;;;;;;;;;;;;;;;;;;;11163:53;11226:12;11241:5;11226:20;;11257:14;11282:78;11297:1;11289:4;:9;11282:78;;11315:8;;;;;:::i;:::-;;;;11346:2;11338:10;;;;;:::i;:::-;;;11282:78;;;11370:19;11402:6;11392:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11370:39;;11420:154;11436:1;11427:5;:10;11420:154;;11464:1;11454:11;;;;;:::i;:::-;;;11531:2;11523:5;:10;;;;:::i;:::-;11510:2;:24;;;;:::i;:::-;11497:39;;11480:6;11487;11480:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;11560:2;11551:11;;;;;:::i;:::-;;;11420:154;;;11598:6;11584:21;;;;;10890:723;;;;:::o;19323:665::-;19405:13;19431:23;19463:5;19431:38;;19480:24;19513:6;19480:40;;19541:23;19598:11;:18;19578:10;:17;:38;;;;:::i;:::-;19567:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19541:76;;19628:22;19659:9;19628:41;;19690:6;19707;19740:1;19738:3;;19734:90;19744:10;:17;19742:1;:19;19734:90;;;19799:10;19810:1;19799:13;;;;;;;;;;;;;;;;;;;;;;;;19782:9;19792:3;;;;;:::i;:::-;;;19782:14;;;;;;;;;;;;;;;;;;;:30;;;;;;;;;;;19762:3;;;;;:::i;:::-;;;;19734:90;;;19850:1;19848:3;;19844:92;19854:11;:18;19852:1;:20;19844:92;;;19910:11;19922:1;19910:14;;;;;;;;;;;;;;;;;;;;;;;;19893:9;19903:3;;;;;:::i;:::-;;;19893:14;;;;;;;;;;;;;;;;;;;:31;;;;;;;;;;;19873:3;;;;;:::i;:::-;;;;19844:92;;;19970:9;19956:24;;;;;;;;19323:665;;;;:::o;3447:422::-;3507:4;3715:12;3826:7;3814:20;3806:28;;3860:1;3853:4;:8;3846:15;;;3447:422;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:342:1:-;;109:64;124:48;165:6;124:48;:::i;:::-;109:64;:::i;:::-;100:73;;196:6;189:5;182:21;234:4;227:5;223:16;272:3;263:6;258:3;254:16;251:25;248:2;;;289:1;286;279:12;248:2;302:41;336:6;331:3;326;302:41;:::i;:::-;90:259;;;;;;:::o;355:139::-;;439:6;426:20;417:29;;455:33;482:5;455:33;:::i;:::-;407:87;;;;:::o;500:133::-;;581:6;568:20;559:29;;597:30;621:5;597:30;:::i;:::-;549:84;;;;:::o;639:137::-;;722:6;709:20;700:29;;738:32;764:5;738:32;:::i;:::-;690:86;;;;:::o;782:141::-;;869:6;863:13;854:22;;885:32;911:5;885:32;:::i;:::-;844:79;;;;:::o;942:271::-;;1046:3;1039:4;1031:6;1027:17;1023:27;1013:2;;1064:1;1061;1054:12;1013:2;1104:6;1091:20;1129:78;1203:3;1195:6;1188:4;1180:6;1176:17;1129:78;:::i;:::-;1120:87;;1003:210;;;;;:::o;1219:139::-;;1303:6;1290:20;1281:29;;1319:33;1346:5;1319:33;:::i;:::-;1271:87;;;;:::o;1364:262::-;;1472:2;1460:9;1451:7;1447:23;1443:32;1440:2;;;1488:1;1485;1478:12;1440:2;1531:1;1556:53;1601:7;1592:6;1581:9;1577:22;1556:53;:::i;:::-;1546:63;;1502:117;1430:196;;;;:::o;1632:407::-;;;1757:2;1745:9;1736:7;1732:23;1728:32;1725:2;;;1773:1;1770;1763:12;1725:2;1816:1;1841:53;1886:7;1877:6;1866:9;1862:22;1841:53;:::i;:::-;1831:63;;1787:117;1943:2;1969:53;2014:7;2005:6;1994:9;1990:22;1969:53;:::i;:::-;1959:63;;1914:118;1715:324;;;;;:::o;2045:552::-;;;;2187:2;2175:9;2166:7;2162:23;2158:32;2155:2;;;2203:1;2200;2193:12;2155:2;2246:1;2271:53;2316:7;2307:6;2296:9;2292:22;2271:53;:::i;:::-;2261:63;;2217:117;2373:2;2399:53;2444:7;2435:6;2424:9;2420:22;2399:53;:::i;:::-;2389:63;;2344:118;2501:2;2527:53;2572:7;2563:6;2552:9;2548:22;2527:53;:::i;:::-;2517:63;;2472:118;2145:452;;;;;:::o;2603:809::-;;;;;2771:3;2759:9;2750:7;2746:23;2742:33;2739:2;;;2788:1;2785;2778:12;2739:2;2831:1;2856:53;2901:7;2892:6;2881:9;2877:22;2856:53;:::i;:::-;2846:63;;2802:117;2958:2;2984:53;3029:7;3020:6;3009:9;3005:22;2984:53;:::i;:::-;2974:63;;2929:118;3086:2;3112:53;3157:7;3148:6;3137:9;3133:22;3112:53;:::i;:::-;3102:63;;3057:118;3242:2;3231:9;3227:18;3214:32;3273:18;3265:6;3262:30;3259:2;;;3305:1;3302;3295:12;3259:2;3333:62;3387:7;3378:6;3367:9;3363:22;3333:62;:::i;:::-;3323:72;;3185:220;2729:683;;;;;;;:::o;3418:401::-;;;3540:2;3528:9;3519:7;3515:23;3511:32;3508:2;;;3556:1;3553;3546:12;3508:2;3599:1;3624:53;3669:7;3660:6;3649:9;3645:22;3624:53;:::i;:::-;3614:63;;3570:117;3726:2;3752:50;3794:7;3785:6;3774:9;3770:22;3752:50;:::i;:::-;3742:60;;3697:115;3498:321;;;;;:::o;3825:407::-;;;3950:2;3938:9;3929:7;3925:23;3921:32;3918:2;;;3966:1;3963;3956:12;3918:2;4009:1;4034:53;4079:7;4070:6;4059:9;4055:22;4034:53;:::i;:::-;4024:63;;3980:117;4136:2;4162:53;4207:7;4198:6;4187:9;4183:22;4162:53;:::i;:::-;4152:63;;4107:118;3908:324;;;;;:::o;4238:256::-;;4343:2;4331:9;4322:7;4318:23;4314:32;4311:2;;;4359:1;4356;4349:12;4311:2;4402:1;4427:50;4469:7;4460:6;4449:9;4445:22;4427:50;:::i;:::-;4417:60;;4373:114;4301:193;;;;:::o;4500:260::-;;4607:2;4595:9;4586:7;4582:23;4578:32;4575:2;;;4623:1;4620;4613:12;4575:2;4666:1;4691:52;4735:7;4726:6;4715:9;4711:22;4691:52;:::i;:::-;4681:62;;4637:116;4565:195;;;;:::o;4766:282::-;;4884:2;4872:9;4863:7;4859:23;4855:32;4852:2;;;4900:1;4897;4890:12;4852:2;4943:1;4968:63;5023:7;5014:6;5003:9;4999:22;4968:63;:::i;:::-;4958:73;;4914:127;4842:206;;;;:::o;5054:262::-;;5162:2;5150:9;5141:7;5137:23;5133:32;5130:2;;;5178:1;5175;5168:12;5130:2;5221:1;5246:53;5291:7;5282:6;5271:9;5267:22;5246:53;:::i;:::-;5236:63;;5192:117;5120:196;;;;:::o;5322:179::-;;5412:46;5454:3;5446:6;5412:46;:::i;:::-;5490:4;5485:3;5481:14;5467:28;;5402:99;;;;:::o;5507:118::-;5594:24;5612:5;5594:24;:::i;:::-;5589:3;5582:37;5572:53;;:::o;5661:732::-;;5809:54;5857:5;5809:54;:::i;:::-;5879:86;5958:6;5953:3;5879:86;:::i;:::-;5872:93;;5989:56;6039:5;5989:56;:::i;:::-;6068:7;6099:1;6084:284;6109:6;6106:1;6103:13;6084:284;;;6185:6;6179:13;6212:63;6271:3;6256:13;6212:63;:::i;:::-;6205:70;;6298:60;6351:6;6298:60;:::i;:::-;6288:70;;6144:224;6131:1;6128;6124:9;6119:14;;6084:284;;;6088:14;6384:3;6377:10;;5785:608;;;;;;;:::o;6399:109::-;6480:21;6495:5;6480:21;:::i;:::-;6475:3;6468:34;6458:50;;:::o;6514:360::-;;6628:38;6660:5;6628:38;:::i;:::-;6682:70;6745:6;6740:3;6682:70;:::i;:::-;6675:77;;6761:52;6806:6;6801:3;6794:4;6787:5;6783:16;6761:52;:::i;:::-;6838:29;6860:6;6838:29;:::i;:::-;6833:3;6829:39;6822:46;;6604:270;;;;;:::o;6880:364::-;;6996:39;7029:5;6996:39;:::i;:::-;7051:71;7115:6;7110:3;7051:71;:::i;:::-;7044:78;;7131:52;7176:6;7171:3;7164:4;7157:5;7153:16;7131:52;:::i;:::-;7208:29;7230:6;7208:29;:::i;:::-;7203:3;7199:39;7192:46;;6972:272;;;;;:::o;7250:382::-;;7413:67;7477:2;7472:3;7413:67;:::i;:::-;7406:74;;7510:34;7506:1;7501:3;7497:11;7490:55;7576:20;7571:2;7566:3;7562:12;7555:42;7623:2;7618:3;7614:12;7607:19;;7396:236;;;:::o;7638:314::-;;7801:67;7865:2;7860:3;7801:67;:::i;:::-;7794:74;;7898:18;7894:1;7889:3;7885:11;7878:39;7943:2;7938:3;7934:12;7927:19;;7784:168;;;:::o;7958:368::-;;8121:67;8185:2;8180:3;8121:67;:::i;:::-;8114:74;;8218:34;8214:1;8209:3;8205:11;8198:55;8284:6;8279:2;8274:3;8270:12;8263:28;8317:2;8312:3;8308:12;8301:19;;8104:222;;;:::o;8332:323::-;;8495:67;8559:2;8554:3;8495:67;:::i;:::-;8488:74;;8592:27;8588:1;8583:3;8579:11;8572:48;8646:2;8641:3;8637:12;8630:19;;8478:177;;;:::o;8661:315::-;;8824:67;8888:2;8883:3;8824:67;:::i;:::-;8817:74;;8921:19;8917:1;8912:3;8908:11;8901:40;8967:2;8962:3;8958:12;8951:19;;8807:169;;;:::o;8982:376::-;;9145:67;9209:2;9204:3;9145:67;:::i;:::-;9138:74;;9242:34;9238:1;9233:3;9229:11;9222:55;9308:14;9303:2;9298:3;9294:12;9287:36;9349:2;9344:3;9340:12;9333:19;;9128:230;;;:::o;9364:388::-;;9527:67;9591:2;9586:3;9527:67;:::i;:::-;9520:74;;9624:34;9620:1;9615:3;9611:11;9604:55;9690:26;9685:2;9680:3;9676:12;9669:48;9743:2;9738:3;9734:12;9727:19;;9510:242;;;:::o;9758:374::-;;9921:67;9985:2;9980:3;9921:67;:::i;:::-;9914:74;;10018:34;10014:1;10009:3;10005:11;9998:55;10084:12;10079:2;10074:3;10070:12;10063:34;10123:2;10118:3;10114:12;10107:19;;9904:228;;;:::o;10138:373::-;;10301:67;10365:2;10360:3;10301:67;:::i;:::-;10294:74;;10398:34;10394:1;10389:3;10385:11;10378:55;10464:11;10459:2;10454:3;10450:12;10443:33;10502:2;10497:3;10493:12;10486:19;;10284:227;;;:::o;10517:314::-;;10680:67;10744:2;10739:3;10680:67;:::i;:::-;10673:74;;10777:18;10773:1;10768:3;10764:11;10757:39;10822:2;10817:3;10813:12;10806:19;;10663:168;;;:::o;10837:330::-;;11000:67;11064:2;11059:3;11000:67;:::i;:::-;10993:74;;11097:34;11093:1;11088:3;11084:11;11077:55;11158:2;11153:3;11149:12;11142:19;;10983:184;;;:::o;11173:376::-;;11336:67;11400:2;11395:3;11336:67;:::i;:::-;11329:74;;11433:34;11429:1;11424:3;11420:11;11413:55;11499:14;11494:2;11489:3;11485:12;11478:36;11540:2;11535:3;11531:12;11524:19;;11319:230;;;:::o;11555:373::-;;11718:67;11782:2;11777:3;11718:67;:::i;:::-;11711:74;;11815:34;11811:1;11806:3;11802:11;11795:55;11881:11;11876:2;11871:3;11867:12;11860:33;11919:2;11914:3;11910:12;11903:19;;11701:227;;;:::o;11934:365::-;;12097:67;12161:2;12156:3;12097:67;:::i;:::-;12090:74;;12194:34;12190:1;12185:3;12181:11;12174:55;12260:3;12255:2;12250:3;12246:12;12239:25;12290:2;12285:3;12281:12;12274:19;;12080:219;;;:::o;12305:327::-;;12468:67;12532:2;12527:3;12468:67;:::i;:::-;12461:74;;12565:31;12561:1;12556:3;12552:11;12545:52;12623:2;12618:3;12614:12;12607:19;;12451:181;;;:::o;12638:381::-;;12801:67;12865:2;12860:3;12801:67;:::i;:::-;12794:74;;12898:34;12894:1;12889:3;12885:11;12878:55;12964:19;12959:2;12954:3;12950:12;12943:41;13010:2;13005:3;13001:12;12994:19;;12784:235;;;:::o;13025:108::-;13102:24;13120:5;13102:24;:::i;:::-;13097:3;13090:37;13080:53;;:::o;13139:118::-;13226:24;13244:5;13226:24;:::i;:::-;13221:3;13214:37;13204:53;;:::o;13263:222::-;;13394:2;13383:9;13379:18;13371:26;;13407:71;13475:1;13464:9;13460:17;13451:6;13407:71;:::i;:::-;13361:124;;;;:::o;13491:640::-;;13724:3;13713:9;13709:19;13701:27;;13738:71;13806:1;13795:9;13791:17;13782:6;13738:71;:::i;:::-;13819:72;13887:2;13876:9;13872:18;13863:6;13819:72;:::i;:::-;13901;13969:2;13958:9;13954:18;13945:6;13901:72;:::i;:::-;14020:9;14014:4;14010:20;14005:2;13994:9;13990:18;13983:48;14048:76;14119:4;14110:6;14048:76;:::i;:::-;14040:84;;13691:440;;;;;;;:::o;14137:373::-;;14318:2;14307:9;14303:18;14295:26;;14367:9;14361:4;14357:20;14353:1;14342:9;14338:17;14331:47;14395:108;14498:4;14489:6;14395:108;:::i;:::-;14387:116;;14285:225;;;;:::o;14516:210::-;;14641:2;14630:9;14626:18;14618:26;;14654:65;14716:1;14705:9;14701:17;14692:6;14654:65;:::i;:::-;14608:118;;;;:::o;14732:313::-;;14883:2;14872:9;14868:18;14860:26;;14932:9;14926:4;14922:20;14918:1;14907:9;14903:17;14896:47;14960:78;15033:4;15024:6;14960:78;:::i;:::-;14952:86;;14850:195;;;;:::o;15051:419::-;;15255:2;15244:9;15240:18;15232:26;;15304:9;15298:4;15294:20;15290:1;15279:9;15275:17;15268:47;15332:131;15458:4;15332:131;:::i;:::-;15324:139;;15222:248;;;:::o;15476:419::-;;15680:2;15669:9;15665:18;15657:26;;15729:9;15723:4;15719:20;15715:1;15704:9;15700:17;15693:47;15757:131;15883:4;15757:131;:::i;:::-;15749:139;;15647:248;;;:::o;15901:419::-;;16105:2;16094:9;16090:18;16082:26;;16154:9;16148:4;16144:20;16140:1;16129:9;16125:17;16118:47;16182:131;16308:4;16182:131;:::i;:::-;16174:139;;16072:248;;;:::o;16326:419::-;;16530:2;16519:9;16515:18;16507:26;;16579:9;16573:4;16569:20;16565:1;16554:9;16550:17;16543:47;16607:131;16733:4;16607:131;:::i;:::-;16599:139;;16497:248;;;:::o;16751:419::-;;16955:2;16944:9;16940:18;16932:26;;17004:9;16998:4;16994:20;16990:1;16979:9;16975:17;16968:47;17032:131;17158:4;17032:131;:::i;:::-;17024:139;;16922:248;;;:::o;17176:419::-;;17380:2;17369:9;17365:18;17357:26;;17429:9;17423:4;17419:20;17415:1;17404:9;17400:17;17393:47;17457:131;17583:4;17457:131;:::i;:::-;17449:139;;17347:248;;;:::o;17601:419::-;;17805:2;17794:9;17790:18;17782:26;;17854:9;17848:4;17844:20;17840:1;17829:9;17825:17;17818:47;17882:131;18008:4;17882:131;:::i;:::-;17874:139;;17772:248;;;:::o;18026:419::-;;18230:2;18219:9;18215:18;18207:26;;18279:9;18273:4;18269:20;18265:1;18254:9;18250:17;18243:47;18307:131;18433:4;18307:131;:::i;:::-;18299:139;;18197:248;;;:::o;18451:419::-;;18655:2;18644:9;18640:18;18632:26;;18704:9;18698:4;18694:20;18690:1;18679:9;18675:17;18668:47;18732:131;18858:4;18732:131;:::i;:::-;18724:139;;18622:248;;;:::o;18876:419::-;;19080:2;19069:9;19065:18;19057:26;;19129:9;19123:4;19119:20;19115:1;19104:9;19100:17;19093:47;19157:131;19283:4;19157:131;:::i;:::-;19149:139;;19047:248;;;:::o;19301:419::-;;19505:2;19494:9;19490:18;19482:26;;19554:9;19548:4;19544:20;19540:1;19529:9;19525:17;19518:47;19582:131;19708:4;19582:131;:::i;:::-;19574:139;;19472:248;;;:::o;19726:419::-;;19930:2;19919:9;19915:18;19907:26;;19979:9;19973:4;19969:20;19965:1;19954:9;19950:17;19943:47;20007:131;20133:4;20007:131;:::i;:::-;19999:139;;19897:248;;;:::o;20151:419::-;;20355:2;20344:9;20340:18;20332:26;;20404:9;20398:4;20394:20;20390:1;20379:9;20375:17;20368:47;20432:131;20558:4;20432:131;:::i;:::-;20424:139;;20322:248;;;:::o;20576:419::-;;20780:2;20769:9;20765:18;20757:26;;20829:9;20823:4;20819:20;20815:1;20804:9;20800:17;20793:47;20857:131;20983:4;20857:131;:::i;:::-;20849:139;;20747:248;;;:::o;21001:419::-;;21205:2;21194:9;21190:18;21182:26;;21254:9;21248:4;21244:20;21240:1;21229:9;21225:17;21218:47;21282:131;21408:4;21282:131;:::i;:::-;21274:139;;21172:248;;;:::o;21426:419::-;;21630:2;21619:9;21615:18;21607:26;;21679:9;21673:4;21669:20;21665:1;21654:9;21650:17;21643:47;21707:131;21833:4;21707:131;:::i;:::-;21699:139;;21597:248;;;:::o;21851:222::-;;21982:2;21971:9;21967:18;21959:26;;21995:71;22063:1;22052:9;22048:17;22039:6;21995:71;:::i;:::-;21949:124;;;;:::o;22079:283::-;;22145:2;22139:9;22129:19;;22187:4;22179:6;22175:17;22294:6;22282:10;22279:22;22258:18;22246:10;22243:34;22240:62;22237:2;;;22305:18;;:::i;:::-;22237:2;22345:10;22341:2;22334:22;22119:243;;;;:::o;22368:331::-;;22519:18;22511:6;22508:30;22505:2;;;22541:18;;:::i;:::-;22505:2;22626:4;22622:9;22615:4;22607:6;22603:17;22599:33;22591:41;;22687:4;22681;22677:15;22669:23;;22434:265;;;:::o;22705:132::-;;22795:3;22787:11;;22825:4;22820:3;22816:14;22808:22;;22777:60;;;:::o;22843:114::-;;22944:5;22938:12;22928:22;;22917:40;;;:::o;22963:98::-;;23048:5;23042:12;23032:22;;23021:40;;;:::o;23067:99::-;;23153:5;23147:12;23137:22;;23126:40;;;:::o;23172:113::-;;23274:4;23269:3;23265:14;23257:22;;23247:38;;;:::o;23291:184::-;;23424:6;23419:3;23412:19;23464:4;23459:3;23455:14;23440:29;;23402:73;;;;:::o;23481:168::-;;23598:6;23593:3;23586:19;23638:4;23633:3;23629:14;23614:29;;23576:73;;;;:::o;23655:169::-;;23773:6;23768:3;23761:19;23813:4;23808:3;23804:14;23789:29;;23751:73;;;;:::o;23830:305::-;;23889:20;23907:1;23889:20;:::i;:::-;23884:25;;23923:20;23941:1;23923:20;:::i;:::-;23918:25;;24077:1;24009:66;24005:74;24002:1;23999:81;23996:2;;;24083:18;;:::i;:::-;23996:2;24127:1;24124;24120:9;24113:16;;23874:261;;;;:::o;24141:185::-;;24198:20;24216:1;24198:20;:::i;:::-;24193:25;;24232:20;24250:1;24232:20;:::i;:::-;24227:25;;24271:1;24261:2;;24276:18;;:::i;:::-;24261:2;24318:1;24315;24311:9;24306:14;;24183:143;;;;:::o;24332:348::-;;24395:20;24413:1;24395:20;:::i;:::-;24390:25;;24429:20;24447:1;24429:20;:::i;:::-;24424:25;;24617:1;24549:66;24545:74;24542:1;24539:81;24534:1;24527:9;24520:17;24516:105;24513:2;;;24624:18;;:::i;:::-;24513:2;24672:1;24669;24665:9;24654:20;;24380:300;;;;:::o;24686:191::-;;24746:20;24764:1;24746:20;:::i;:::-;24741:25;;24780:20;24798:1;24780:20;:::i;:::-;24775:25;;24819:1;24816;24813:8;24810:2;;;24824:18;;:::i;:::-;24810:2;24869:1;24866;24862:9;24854:17;;24731:146;;;;:::o;24883:96::-;;24949:24;24967:5;24949:24;:::i;:::-;24938:35;;24928:51;;;:::o;24985:90::-;;25062:5;25055:13;25048:21;25037:32;;25027:48;;;:::o;25081:149::-;;25157:66;25150:5;25146:78;25135:89;;25125:105;;;:::o;25236:126::-;;25313:42;25306:5;25302:54;25291:65;;25281:81;;;:::o;25368:77::-;;25434:5;25423:16;;25413:32;;;:::o;25451:154::-;25535:6;25530:3;25525;25512:30;25597:1;25588:6;25583:3;25579:16;25572:27;25502:103;;;:::o;25611:307::-;25679:1;25689:113;25703:6;25700:1;25697:13;25689:113;;;25788:1;25783:3;25779:11;25773:18;25769:1;25764:3;25760:11;25753:39;25725:2;25722:1;25718:10;25713:15;;25689:113;;;25820:6;25817:1;25814:13;25811:2;;;25900:1;25891:6;25886:3;25882:16;25875:27;25811:2;25660:258;;;;:::o;25924:320::-;;26005:1;25999:4;25995:12;25985:22;;26052:1;26046:4;26042:12;26073:18;26063:2;;26129:4;26121:6;26117:17;26107:27;;26063:2;26191;26183:6;26180:14;26160:18;26157:38;26154:2;;;26210:18;;:::i;:::-;26154:2;25975:269;;;;:::o;26250:233::-;;26312:24;26330:5;26312:24;:::i;:::-;26303:33;;26358:66;26351:5;26348:77;26345:2;;;26428:18;;:::i;:::-;26345:2;26475:1;26468:5;26464:13;26457:20;;26293:190;;;:::o;26489:176::-;;26538:20;26556:1;26538:20;:::i;:::-;26533:25;;26572:20;26590:1;26572:20;:::i;:::-;26567:25;;26611:1;26601:2;;26616:18;;:::i;:::-;26601:2;26657:1;26654;26650:9;26645:14;;26523:142;;;;:::o;26671:180::-;26719:77;26716:1;26709:88;26816:4;26813:1;26806:15;26840:4;26837:1;26830:15;26857:180;26905:77;26902:1;26895:88;27002:4;26999:1;26992:15;27026:4;27023:1;27016:15;27043:180;27091:77;27088:1;27081:88;27188:4;27185:1;27178:15;27212:4;27209:1;27202:15;27229:180;27277:77;27274:1;27267:88;27374:4;27371:1;27364:15;27398:4;27395:1;27388:15;27415:102;;27507:2;27503:7;27498:2;27491:5;27487:14;27483:28;27473:38;;27463:54;;;:::o;27523:122::-;27596:24;27614:5;27596:24;:::i;:::-;27589:5;27586:35;27576:2;;27635:1;27632;27625:12;27576:2;27566:79;:::o;27651:116::-;27721:21;27736:5;27721:21;:::i;:::-;27714:5;27711:32;27701:2;;27757:1;27754;27747:12;27701:2;27691:76;:::o;27773:120::-;27845:23;27862:5;27845:23;:::i;:::-;27838:5;27835:34;27825:2;;27883:1;27880;27873:12;27825:2;27815:78;:::o;27899:122::-;27972:24;27990:5;27972:24;:::i;:::-;27965:5;27962:35;27952:2;;28011:1;28008;28001:12;27952:2;27942:79;:::o

Swarm Source

ipfs://b1a82e20083911d0bcc3517682561bb50e696d5a0bb035de1511fc94926bbe65

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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