ETH Price: $2,272.44 (-3.13%)

Token

BigTownChef (CHEF)
 

Overview

Max Total Supply

10,000 CHEF

Holders

2,323

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 CHEF
0x31fc0277931b35ef80527267aedd31609c490c7f
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

A collection of 10,000 Genesis Chef NFTs – your ticket to Gino's Big Town Chef – a play-to-earn farming, trading and cook-off battle game by Gino D'Acampo. Genesis Chef NFTs boast forever unique visual properties, superior in-game skill attributes, are guaranteed Big Town Pets...

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ChefAvatar

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
File 1 of 20 : ChefAvatar.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "@openzeppelin/contracts/access/Ownable.sol";
import "erc721a/contracts/ERC721A.sol";
import './Sale/ChefSaleManager.sol';
import './Sale/ChefRevealProvider.sol';
contract ChefAvatar is ERC721A, Ownable {
using Strings for uint256;
event RevealProviderChanged(address newRevealProvider);
event SaleManagerChanged(address newSaleManager);
ChefRevealProvider public chefRevealProvider;
ChefSaleManager public saleManager;
uint256 public immutable maxSupply;
string private _baseTokenURI;
uint256 public revealOffset; // It will be used to shuffle IPFS files as (revealOffset + tokenId) % maxSupply
constructor(
uint256 _reserved,
uint256 _maxSupply,
address treasury,
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 2 of 20 : Ownable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 3 of 20 : IERC20.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 4 of 20 : SafeERC20.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol)
pragma solidity ^0.8.0;
import "../IERC20.sol";
import "../../../utils/Address.sol";
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using Address for address;
function safeTransfer(
IERC20 token,
address to,
uint256 value
) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 5 of 20 : IERC721.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)
pragma solidity ^0.8.0;
import "../../utils/introspection/IERC165.sol";
/**
* @dev Required interface of an ERC721 compliant contract.
*/
interface IERC721 is IERC165 {
/**
* @dev Emitted when `tokenId` token is transferred from `from` to `to`.
*/
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
*/
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
*/
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 6 of 20 : IERC721Receiver.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol)
pragma solidity ^0.8.0;
/**
* @title ERC721 token receiver interface
* @dev Interface for any contract that wants to support safeTransfers
* from ERC721 asset contracts.
*/
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);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 7 of 20 : IERC721Enumerable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol)
pragma solidity ^0.8.0;
import "../IERC721.sol";
/**
* @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
* @dev See https://eips.ethereum.org/EIPS/eip-721
*/
interface IERC721Enumerable is IERC721 {
/**
* @dev Returns the total amount of tokens stored by the contract.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns a token ID owned by `owner` at a given `index` of its token list.
* Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
*/
function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);
/**
* @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
* Use along with {totalSupply} to enumerate all tokens.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 8 of 20 : IERC721Metadata.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)
pragma solidity ^0.8.0;
import "../IERC721.sol";
/**
* @title ERC-721 Non-Fungible Token Standard, optional metadata extension
* @dev See https://eips.ethereum.org/EIPS/eip-721
*/
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);
/**
* @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
*/
function tokenURI(uint256 tokenId) external view returns (string memory);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 9 of 20 : Address.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)
pragma solidity ^0.8.1;
/**
* @dev Collection of functions related to the address type
*/
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
* ====
*
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 10 of 20 : Context.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 11 of 20 : Strings.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)
pragma solidity ^0.8.0;
/**
* @dev String operations.
*/
library Strings {
bytes16 private constant _HEX_SYMBOLS = "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;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 12 of 20 : MerkleProof.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/MerkleProof.sol)
pragma solidity ^0.8.0;
/**
* @dev These functions deal with verification of Merkle Trees proofs.
*
* The proofs can be generated using the JavaScript library
* https://github.com/miguelmota/merkletreejs[merkletreejs].
* Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.
*
* See `test/utils/cryptography/MerkleProof.test.js` for some examples.
*/
library MerkleProof {
/**
* @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
* defined by `root`. For this, a `proof` must be provided, containing
* sibling hashes on the branch from the leaf to the root of the tree. Each
* pair of leaves and each pair of pre-images are assumed to be sorted.
*/
function verify(
bytes32[] memory proof,
bytes32 root,
bytes32 leaf
) internal pure returns (bool) {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 13 of 20 : ERC165.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)
pragma solidity ^0.8.0;
import "./IERC165.sol";
/**
* @dev Implementation of the {IERC165} interface.
*
* Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
* for the additional interface id that will be supported. For example:
*
* ```solidity
* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
* }
* ```
*
* Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
*/
abstract contract ERC165 is IERC165 {
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 14 of 20 : IERC165.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 15 of 20 : ChefRevealProvider.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "../../Chainlink/VRFConsumerBase.sol";
import "../ChefAvatar.sol";
/// @title A title that should describe the contract/interface
/// https://docs.chain.link/docs/vrf-contracts/
/// You can get the keyhash and vrfCoordinator from here https://docs.chain.link/docs/vrf-contracts/
contract ChefRevealProvider is VRFConsumerBase, Ownable {
using SafeERC20 for IERC20;
uint256 public fee;
uint256 public randomNumber;
bytes32 public immutable keyHash;
bytes32 public requestId;
event FeeChanged(uint256 newFee);
ChefAvatar public immutable chefAvatar;
/// @dev Ctor
/// @param VRFCoordinator: address of the VRF coordinator
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 16 of 20 : ChefSaleManager.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";
import '@openzeppelin/contracts/access/Ownable.sol';
import '../ChefAvatar.sol';
/// @title Tickets that exchange to a Chef. Sold during the Big Town Chef sale.
/// @author Valerio Leo @valeriohq
contract ChefSaleManager is Ownable {
uint256 public presalePrice;
uint256 public publicFixedPrice;
ChefAvatar public chefAvatar;
address public treasury;
uint256 public presaleStart = block.timestamp + 180 days; // default to half a year from now
uint256 public presaleLength = 1 days; // default to 1 day after presaleStart
uint256 public publicStart = block.timestamp + 180 days; // default to half a year from now
uint256 public publicSaleMaxPurchaseQuantity = 3;
bytes32 public merkleRoot;
event MerkleRootChanged(bytes32 newMerkleRoot);
event TreasuryChanged(address newTreasury);
event PricesChanged(uint256 newPresalePrice, uint256 newPublicFixedPrice);
event PresaleConfigChanged(uint256 newPresaleStart, uint256 newPresaleLength);
event PublicSaleConfigChanged(uint256 newPublicStart);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 17 of 20 : VRFConsumerBase.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.8.10;
import "./interfaces/ILinkToken.sol";
import "./VRFRequestIDBase.sol";
/** ****************************************************************************
* @notice Interface for contracts using VRF randomness
* *****************************************************************************
* @dev PURPOSE
*
* @dev Reggie the Random Oracle (not his real job) wants to provide randomness
* @dev to Vera the verifier in such a way that Vera can be sure he's not
* @dev making his output up to suit himself. Reggie provides Vera a public key
* @dev to which he knows the secret key. Each time Vera provides a seed to
* @dev Reggie, he gives back a value which is computed completely
* @dev deterministically from the seed and the secret key.
*
* @dev Reggie provides a proof by which Vera can verify that the output was
* @dev correctly computed once Reggie tells it to her, but without that proof,
* @dev the output is indistinguishable to her from a uniform random sample
* @dev from the output space.
*
* @dev The purpose of this contract is to make it easy for unrelated contracts
* @dev to talk to Vera the verifier about the work Reggie is doing, to provide
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 18 of 20 : VRFRequestIDBase.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.8.10;
contract VRFRequestIDBase {
/**
* @notice returns the seed which is actually input to the VRF coordinator
*
* @dev To prevent repetition of VRF output due to repetition of the
* @dev user-supplied seed, that seed is combined in a hash with the
* @dev user-specific nonce, and the address of the consuming contract. The
* @dev risk of repetition is mostly mitigated by inclusion of a blockhash in
* @dev the final seed, but the nonce does protect against repetition in
* @dev requests which are included in a single block.
*
* @param _userSeed VRF seed input provided by user
* @param _requester Address of the requesting contract
* @param _nonce User-specific nonce at the time of the request
*/
function makeVRFInputSeed(bytes32 _keyHash, uint256 _userSeed,
address _requester, uint256 _nonce)
internal pure returns (uint256)
{
return uint256(keccak256(abi.encode(_keyHash, _userSeed, _requester, _nonce)));
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 19 of 20 : ILinkToken.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// SPDX-License-Identifier: MIT
pragma solidity 0.8.10;
interface ILinkToken {
function allowance(address owner, address spender) external view returns (uint256 remaining);
function approve(address spender, uint256 value) external returns (bool success);
function balanceOf(address owner) external view returns (uint256 balance);
function decimals() external view returns (uint8 decimalPlaces);
function decreaseApproval(address spender, uint256 addedValue) external returns (bool success);
function increaseApproval(address spender, uint256 subtractedValue) external;
function name() external view returns (string memory tokenName);
function symbol() external view returns (string memory tokenSymbol);
function totalSupply() external view returns (uint256 totalTokensIssued);
function transfer(address to, uint256 value) external returns (bool success);
function transferAndCall(address to, uint256 value, bytes memory data) external returns (bool success);
function transferFrom(address from, address to, uint256 value) external returns (bool success);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 20 of 20 : ERC721A.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// Creator: Chiru Labs
pragma solidity ^0.8.4;
import '@openzeppelin/contracts/token/ERC721/IERC721.sol';
import '@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol';
import '@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol';
import '@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol';
import '@openzeppelin/contracts/utils/Address.sol';
import '@openzeppelin/contracts/utils/Context.sol';
import '@openzeppelin/contracts/utils/Strings.sol';
import '@openzeppelin/contracts/utils/introspection/ERC165.sol';
error ApprovalCallerNotOwnerNorApproved();
error ApprovalQueryForNonexistentToken();
error ApproveToCaller();
error ApprovalToCurrentOwner();
error BalanceQueryForZeroAddress();
error MintedQueryForZeroAddress();
error BurnedQueryForZeroAddress();
error AuxQueryForZeroAddress();
error MintToZeroAddress();
error MintZeroQuantity();
error OwnerIndexOutOfBounds();
error OwnerQueryForNonexistentToken();
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Settings
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs",
"useLiteralContent": true
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": [],
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"uint256","name":"_reserved","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"address","name":"treasury","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"baseTokenURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApprovalToCurrentOwner","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newRevealProvider","type":"address"}],"name":"RevealProviderChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newSaleManager","type":"address"}],"name":"SaleManagerChanged","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":"userProvidedSeed","type":"uint256"}],"name":"callReveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"chefRevealProvider","outputs":[{"internalType":"contract ChefRevealProvider","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"randomness","type":"uint256"}],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealOffset","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":"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":[],"name":"saleManager","outputs":[{"internalType":"contract ChefSaleManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newTokenURI","type":"string"}],"name":"setBaseTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_chefRevealProvider","type":"address"}],"name":"setChefRevealProvider","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_chefSaleManager","type":"address"}],"name":"setChefSaleManager","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b506040516200455538038062004555833981810160405281019062000037919062000b30565b828281600290805190602001906200005192919062000843565b5080600390805190602001906200006a92919062000843565b506200007b6200013360201b60201c565b6000819055505050620000a3620000976200013860201b60201c565b6200014060201b60201c565b84861115620000e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000e09062000cb0565b60405180910390fd5b846080818152505080600b90805190602001906200010992919062000843565b50600086111562000127576200012684876200020660201b60201c565b5b50505050505062000f97565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b608051816200021a6200029760201b60201c565b62000226919062000d01565b11156200026a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002619062000dae565b60405180910390fd5b620002938282604051806020016040528060008152506001620002b660201b620014d71760201c565b5050565b6000620002a96200013360201b60201c565b6001546000540303905090565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141562000324576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084141562000360576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620003756000868387620006b260201b60201c565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000819050600085820190508380156200054d57506200054c8773ffffffffffffffffffffffffffffffffffffffff16620006b860201b620018a51760201c565b5b1562000620575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4620005cb6000888480600101955088620006db60201b60201c565b62000602576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80821415620005545782600054146200061a57600080fd5b6200068d565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48082141562000621575b816000819055505050620006ab60008683876200083d60201b60201c565b5050505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02620007096200013860201b60201c565b8786866040518563ffffffff1660e01b81526004016200072d949392919062000e4f565b6020604051808303816000875af19250505080156200076c57506040513d601f19601f8201168201806040525081019062000769919062000f00565b60015b620007ea573d80600081146200079f576040519150601f19603f3d011682016040523d82523d6000602084013e620007a4565b606091505b50600081511415620007e2576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b50505050565b828054620008519062000f61565b90600052602060002090601f016020900481019282620008755760008555620008c1565b82601f106200089057805160ff1916838001178555620008c1565b82800160010185558215620008c1579182015b82811115620008c0578251825591602001919060010190620008a3565b5b509050620008d09190620008d4565b5090565b5b80821115620008ef576000816000905550600101620008d5565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6200091c8162000907565b81146200092857600080fd5b50565b6000815190506200093c8162000911565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200096f8262000942565b9050919050565b620009818162000962565b81146200098d57600080fd5b50565b600081519050620009a18162000976565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620009fc82620009b1565b810181811067ffffffffffffffff8211171562000a1e5762000a1d620009c2565b5b80604052505050565b600062000a33620008f3565b905062000a418282620009f1565b919050565b600067ffffffffffffffff82111562000a645762000a63620009c2565b5b62000a6f82620009b1565b9050602081019050919050565b60005b8381101562000a9c57808201518184015260208101905062000a7f565b8381111562000aac576000848401525b50505050565b600062000ac962000ac38462000a46565b62000a27565b90508281526020810184848401111562000ae85762000ae7620009ac565b5b62000af584828562000a7c565b509392505050565b600082601f83011262000b155762000b14620009a7565b5b815162000b2784826020860162000ab2565b91505092915050565b60008060008060008060c0878903121562000b505762000b4f620008fd565b5b600062000b6089828a016200092b565b965050602062000b7389828a016200092b565b955050604062000b8689828a0162000990565b945050606087015167ffffffffffffffff81111562000baa5762000ba962000902565b5b62000bb889828a0162000afd565b935050608087015167ffffffffffffffff81111562000bdc5762000bdb62000902565b5b62000bea89828a0162000afd565b92505060a087015167ffffffffffffffff81111562000c0e5762000c0d62000902565b5b62000c1c89828a0162000afd565b9150509295509295509295565b600082825260208201905092915050565b7f436865664176617461723a207265736572766564206d757374206265206c657360008201527f73207468616e206f7220657175616c20746f206d6178537570706c7900000000602082015250565b600062000c98603c8362000c29565b915062000ca58262000c3a565b604082019050919050565b6000602082019050818103600083015262000ccb8162000c89565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d0e8262000907565b915062000d1b8362000907565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d535762000d5262000cd2565b5b828201905092915050565b7f6d617820737570706c7920726561636865640000000000000000000000000000600082015250565b600062000d9660128362000c29565b915062000da38262000d5e565b602082019050919050565b6000602082019050818103600083015262000dc98162000d87565b9050919050565b62000ddb8162000962565b82525050565b62000dec8162000907565b82525050565b600081519050919050565b600082825260208201905092915050565b600062000e1b8262000df2565b62000e27818562000dfd565b935062000e3981856020860162000a7c565b62000e4481620009b1565b840191505092915050565b600060808201905062000e66600083018762000dd0565b62000e75602083018662000dd0565b62000e84604083018562000de1565b818103606083015262000e98818462000e0e565b905095945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62000eda8162000ea3565b811462000ee657600080fd5b50565b60008151905062000efa8162000ecf565b92915050565b60006020828403121562000f195762000f18620008fd565b5b600062000f298482850162000ee9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f7a57607f821691505b6020821081141562000f915762000f9062000f32565b5b50919050565b60805161359462000fc1600039600081816112d201528181611329015261228701526135946000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80636352211e116100f9578063a22cb46511610097578063c87b56dd11610071578063c87b56dd146104c9578063d5abeb01146104f9578063e985e9c514610517578063f2fde38b14610547576101c4565b8063a22cb46514610475578063b88d4fde14610491578063c2ca0ac5146104ad576101c4565b8063746e60b5116100d3578063746e60b5146103ff5780638da5cb5b1461041d57806394bf804d1461043b57806395d89b4114610457576101c4565b80636352211e1461039557806370a08231146103c5578063715018a6146103f5576101c4565b806321330bc41161016657806342842e0e1161014057806342842e0e1461030f5780634f558e791461032b57806350f8099e1461035b5780635ef200f114610379576101c4565b806321330bc4146102bb57806323b872dd146102d757806330176e13146102f3576101c4565b8063095ea7b3116101a2578063095ea7b3146102475780630bd007341461026357806318160ddd1461027f5780632097ac3b1461029d576101c4565b806301ffc9a7146101c957806306fdde03146101f9578063081812fc14610217575b600080fd5b6101e360048036038101906101de919061272a565b610563565b6040516101f09190612772565b60405180910390f35b610201610645565b60405161020e9190612826565b60405180910390f35b610231600480360381019061022c919061287e565b6106d7565b60405161023e91906128ec565b60405180910390f35b610261600480360381019061025c9190612933565b610753565b005b61027d60048036038101906102789190612973565b61085e565b005b610287610955565b60405161029491906129af565b60405180910390f35b6102a561096c565b6040516102b291906129af565b60405180910390f35b6102d560048036038101906102d09190612973565b610972565b005b6102f160048036038101906102ec91906129ca565b610a69565b005b61030d60048036038101906103089190612a82565b610a79565b005b610329600480360381019061032491906129ca565b610b0b565b005b6103456004803603810190610340919061287e565b610b2b565b6040516103529190612772565b60405180910390f35b610363610b3d565b6040516103709190612b2e565b60405180910390f35b610393600480360381019061038e919061287e565b610b63565b005b6103af60048036038101906103aa919061287e565b610cb4565b6040516103bc91906128ec565b60405180910390f35b6103df60048036038101906103da9190612973565b610cca565b6040516103ec91906129af565b60405180910390f35b6103fd610d9a565b005b610407610e22565b6040516104149190612b6a565b60405180910390f35b610425610e48565b60405161043291906128ec565b60405180910390f35b61045560048036038101906104509190612b85565b610e72565b005b61045f610f10565b60405161046c9190612826565b60405180910390f35b61048f600480360381019061048a9190612bf1565b610fa2565b005b6104ab60048036038101906104a69190612d61565b61111a565b005b6104c760048036038101906104c2919061287e565b611196565b005b6104e360048036038101906104de919061287e565b611275565b6040516104f09190612826565b60405180910390f35b610501611327565b60405161050e91906129af565b60405180910390f35b610531600480360381019061052c9190612de4565b61134b565b60405161053e9190612772565b60405180910390f35b610561600480360381019061055c9190612973565b6113df565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061062e57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061063e575061063d826118c8565b5b9050919050565b60606002805461065490612e53565b80601f016020809104026020016040519081016040528092919081815260200182805461068090612e53565b80156106cd5780601f106106a2576101008083540402835291602001916106cd565b820191906000526020600020905b8154815290600101906020018083116106b057829003601f168201915b5050505050905090565b60006106e282611932565b610718576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061075e82610cb4565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107c6576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107e5611980565b73ffffffffffffffffffffffffffffffffffffffff1614158015610817575061081581610810611980565b61134b565b155b1561084e576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610859838383611988565b505050565b610866611980565b73ffffffffffffffffffffffffffffffffffffffff16610884610e48565b73ffffffffffffffffffffffffffffffffffffffff16146108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190612ed1565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f6ac4cf0c58a8856b014df7518078a430cab0f5a24a0b7f091a289736aa6697908160405161094a91906128ec565b60405180910390a150565b600061095f611a3a565b6001546000540303905090565b600c5481565b61097a611980565b73ffffffffffffffffffffffffffffffffffffffff16610998610e48565b73ffffffffffffffffffffffffffffffffffffffff16146109ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e590612ed1565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa4884576a4a03f95ad8d62ebdb9129568b9637fe826ce9d0b3c57d422d9da9cc81604051610a5e91906128ec565b60405180910390a150565b610a74838383611a3f565b505050565b610a81611980565b73ffffffffffffffffffffffffffffffffffffffff16610a9f610e48565b73ffffffffffffffffffffffffffffffffffffffff1614610af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aec90612ed1565b60405180910390fd5b8181600b9190610b069291906125d8565b505050565b610b268383836040518060200160405280600081525061111a565b505050565b6000610b3682611932565b9050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b6b611980565b73ffffffffffffffffffffffffffffffffffffffff16610b89610e48565b73ffffffffffffffffffffffffffffffffffffffff1614610bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd690612ed1565b60405180910390fd5b6000600c5414610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b90612f3d565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b37217a4826040518263ffffffff1660e01b8152600401610c7f91906129af565b600060405180830381600087803b158015610c9957600080fd5b505af1158015610cad573d6000803e3d6000fd5b5050505050565b6000610cbf82611f30565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d32576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b610da2611980565b73ffffffffffffffffffffffffffffffffffffffff16610dc0610e48565b73ffffffffffffffffffffffffffffffffffffffff1614610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d90612ed1565b60405180910390fd5b610e2060006121bf565b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef990612fa9565b60405180910390fd5b610f0c8183612285565b5050565b606060038054610f1f90612e53565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4b90612e53565b8015610f985780601f10610f6d57610100808354040283529160200191610f98565b820191906000526020600020905b815481529060010190602001808311610f7b57829003601f168201915b5050505050905090565b610faa611980565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561100f576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806007600061101c611980565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166110c9611980565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161110e9190612772565b60405180910390a35050565b611125848484611a3f565b6111448373ffffffffffffffffffffffffffffffffffffffff166118a5565b801561115957506111578484848461231a565b155b15611190576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d9061303b565b60405180910390fd5b6000600c541461126b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126290612f3d565b60405180910390fd5b80600c8190555050565b606061128082611932565b6112bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b6906130a7565b60405180910390fd5b600080600c54146112d057826112f2565b7f00000000000000000000000000000000000000000000000000000000000000005b9050600b6112ff8261246b565b604051602001611310929190613197565b604051602081830303815290604052915050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6113e7611980565b73ffffffffffffffffffffffffffffffffffffffff16611405610e48565b73ffffffffffffffffffffffffffffffffffffffff161461145b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145290612ed1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c29061322d565b60405180910390fd5b6114d4816121bf565b50565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611544576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084141561157f576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61158c60008683876125cc565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060008190506000858201905083801561175657506117558773ffffffffffffffffffffffffffffffffffffffff166118a5565b5b1561181c575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46117cb600088848060010195508861231a565b611801576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082141561175c57826000541461181757600080fd5b611888565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48082141561181d575b81600081905550505061189e60008683876125d2565b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008161193d611a3a565b1115801561194c575060005482105b8015611979575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600090565b6000611a4a82611f30565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611a71611980565b73ffffffffffffffffffffffffffffffffffffffff161480611aa45750611aa38260000151611a9e611980565b61134b565b5b80611ae95750611ab2611980565b73ffffffffffffffffffffffffffffffffffffffff16611ad1846106d7565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611b22576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611b8b576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611bf2576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bff85858560016125cc565b611c0f6000848460000151611988565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611ec057600054811015611ebf5782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611f2985858560016125d2565b5050505050565b611f3861265e565b600082905080611f46611a3a565b11158015611f55575060005481105b15612188576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161218657600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461206a5780925050506121ba565b5b60011561218557818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146121805780925050506121ba565b61206b565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f0000000000000000000000000000000000000000000000000000000000000000816122af610955565b6122b9919061327c565b11156122fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f19061331e565b60405180910390fd5b61231682826040518060200160405280600081525060016114d7565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612340611980565b8786866040518563ffffffff1660e01b81526004016123629493929190613393565b6020604051808303816000875af192505050801561239e57506040513d601f19601f8201168201806040525081019061239b91906133f4565b60015b612418573d80600081146123ce576040519150601f19603f3d011682016040523d82523d6000602084013e6123d3565b606091505b50600081511415612410576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b606060008214156124b3576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506125c7565b600082905060005b600082146124e55780806124ce90613421565b915050600a826124de9190613499565b91506124bb565b60008167ffffffffffffffff81111561250157612500612c36565b5b6040519080825280601f01601f1916602001820160405280156125335781602001600182028036833780820191505090505b5090505b600085146125c05760018261254c91906134ca565b9150600a8561255b91906134fe565b6030612567919061327c565b60f81b81838151811061257d5761257c61352f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856125b99190613499565b9450612537565b8093505050505b919050565b50505050565b50505050565b8280546125e490612e53565b90600052602060002090601f016020900481019282612606576000855561264d565b82601f1061261f57803560ff191683800117855561264d565b8280016001018555821561264d579182015b8281111561264c578235825591602001919060010190612631565b5b50905061265a91906126a1565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b808211156126ba5760008160009055506001016126a2565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612707816126d2565b811461271257600080fd5b50565b600081359050612724816126fe565b92915050565b6000602082840312156127405761273f6126c8565b5b600061274e84828501612715565b91505092915050565b60008115159050919050565b61276c81612757565b82525050565b60006020820190506127876000830184612763565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127c75780820151818401526020810190506127ac565b838111156127d6576000848401525b50505050565b6000601f19601f8301169050919050565b60006127f88261278d565b6128028185612798565b93506128128185602086016127a9565b61281b816127dc565b840191505092915050565b6000602082019050818103600083015261284081846127ed565b905092915050565b6000819050919050565b61285b81612848565b811461286657600080fd5b50565b60008135905061287881612852565b92915050565b600060208284031215612894576128936126c8565b5b60006128a284828501612869565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128d6826128ab565b9050919050565b6128e6816128cb565b82525050565b600060208201905061290160008301846128dd565b92915050565b612910816128cb565b811461291b57600080fd5b50565b60008135905061292d81612907565b92915050565b6000806040838503121561294a576129496126c8565b5b60006129588582860161291e565b925050602061296985828601612869565b9150509250929050565b600060208284031215612989576129886126c8565b5b60006129978482850161291e565b91505092915050565b6129a981612848565b82525050565b60006020820190506129c460008301846129a0565b92915050565b6000806000606084860312156129e3576129e26126c8565b5b60006129f18682870161291e565b9350506020612a028682870161291e565b9250506040612a1386828701612869565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112612a4257612a41612a1d565b5b8235905067ffffffffffffffff811115612a5f57612a5e612a22565b5b602083019150836001820283011115612a7b57612a7a612a27565b5b9250929050565b60008060208385031215612a9957612a986126c8565b5b600083013567ffffffffffffffff811115612ab757612ab66126cd565b5b612ac385828601612a2c565b92509250509250929050565b6000819050919050565b6000612af4612aef612aea846128ab565b612acf565b6128ab565b9050919050565b6000612b0682612ad9565b9050919050565b6000612b1882612afb565b9050919050565b612b2881612b0d565b82525050565b6000602082019050612b436000830184612b1f565b92915050565b6000612b5482612afb565b9050919050565b612b6481612b49565b82525050565b6000602082019050612b7f6000830184612b5b565b92915050565b60008060408385031215612b9c57612b9b6126c8565b5b6000612baa85828601612869565b9250506020612bbb8582860161291e565b9150509250929050565b612bce81612757565b8114612bd957600080fd5b50565b600081359050612beb81612bc5565b92915050565b60008060408385031215612c0857612c076126c8565b5b6000612c168582860161291e565b9250506020612c2785828601612bdc565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c6e826127dc565b810181811067ffffffffffffffff82111715612c8d57612c8c612c36565b5b80604052505050565b6000612ca06126be565b9050612cac8282612c65565b919050565b600067ffffffffffffffff821115612ccc57612ccb612c36565b5b612cd5826127dc565b9050602081019050919050565b82818337600083830152505050565b6000612d04612cff84612cb1565b612c96565b905082815260208101848484011115612d2057612d1f612c31565b5b612d2b848285612ce2565b509392505050565b600082601f830112612d4857612d47612a1d565b5b8135612d58848260208601612cf1565b91505092915050565b60008060008060808587031215612d7b57612d7a6126c8565b5b6000612d898782880161291e565b9450506020612d9a8782880161291e565b9350506040612dab87828801612869565b925050606085013567ffffffffffffffff811115612dcc57612dcb6126cd565b5b612dd887828801612d33565b91505092959194509250565b60008060408385031215612dfb57612dfa6126c8565b5b6000612e098582860161291e565b9250506020612e1a8582860161291e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e6b57607f821691505b60208210811415612e7f57612e7e612e24565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ebb602083612798565b9150612ec682612e85565b602082019050919050565b60006020820190508181036000830152612eea81612eae565b9050919050565b7f52657665616c20616c72656164792063616c6c65640000000000000000000000600082015250565b6000612f27601583612798565b9150612f3282612ef1565b602082019050919050565b60006020820190508181036000830152612f5681612f1a565b9050919050565b7f6f6e6c792073616c654d616e616765722063616e206d696e7400000000000000600082015250565b6000612f93601983612798565b9150612f9e82612f5d565b602082019050919050565b60006020820190508181036000830152612fc281612f86565b9050919050565b7f4f6e6c792074686520436865662052657665616c2050726f766964657220636160008201527f6e2072657665616c000000000000000000000000000000000000000000000000602082015250565b6000613025602883612798565b915061303082612fc9565b604082019050919050565b6000602082019050818103600083015261305481613018565b9050919050565b7f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000600082015250565b6000613091601183612798565b915061309c8261305b565b602082019050919050565b600060208201905081810360008301526130c081613084565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b600081546130f481612e53565b6130fe81866130c7565b94506001821660008114613119576001811461312a5761315d565b60ff1983168652818601935061315d565b613133856130d2565b60005b8381101561315557815481890152600182019150602081019050613136565b838801955050505b50505092915050565b60006131718261278d565b61317b81856130c7565b935061318b8185602086016127a9565b80840191505092915050565b60006131a382856130e7565b91506131af8284613166565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613217602683612798565b9150613222826131bb565b604082019050919050565b600060208201905081810360008301526132468161320a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061328782612848565b915061329283612848565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132c7576132c661324d565b5b828201905092915050565b7f6d617820737570706c7920726561636865640000000000000000000000000000600082015250565b6000613308601283612798565b9150613313826132d2565b602082019050919050565b60006020820190508181036000830152613337816132fb565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006133658261333e565b61336f8185613349565b935061337f8185602086016127a9565b613388816127dc565b840191505092915050565b60006080820190506133a860008301876128dd565b6133b560208301866128dd565b6133c260408301856129a0565b81810360608301526133d4818461335a565b905095945050505050565b6000815190506133ee816126fe565b92915050565b60006020828403121561340a576134096126c8565b5b6000613418848285016133df565b91505092915050565b600061342c82612848565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561345f5761345e61324d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134a482612848565b91506134af83612848565b9250826134bf576134be61346a565b5b828204905092915050565b60006134d582612848565b91506134e083612848565b9250828210156134f3576134f261324d565b5b828203905092915050565b600061350982612848565b915061351483612848565b9250826135245761352361346a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212208db689a146a9e5e8a5341fc522e70e764f4fd0cb0ede181253446ba0bcdb203264736f6c634300080a0033000000000000000000000000000000000000000000000000000000000000012c0000000000000000000000000000000000000000000000000000000000002710000000000000000000000000c1cb1c5b87ea0d307808473c092f192032ece30200000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000b426967546f776e43686566000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000443484546000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043697066733a2f2f62616679626569626d346d75737a6676716f76707866677361333237796575336b646e346234793734676e7371356f667633676e786c69696178652f0000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80636352211e116100f9578063a22cb46511610097578063c87b56dd11610071578063c87b56dd146104c9578063d5abeb01146104f9578063e985e9c514610517578063f2fde38b14610547576101c4565b8063a22cb46514610475578063b88d4fde14610491578063c2ca0ac5146104ad576101c4565b8063746e60b5116100d3578063746e60b5146103ff5780638da5cb5b1461041d57806394bf804d1461043b57806395d89b4114610457576101c4565b80636352211e1461039557806370a08231146103c5578063715018a6146103f5576101c4565b806321330bc41161016657806342842e0e1161014057806342842e0e1461030f5780634f558e791461032b57806350f8099e1461035b5780635ef200f114610379576101c4565b806321330bc4146102bb57806323b872dd146102d757806330176e13146102f3576101c4565b8063095ea7b3116101a2578063095ea7b3146102475780630bd007341461026357806318160ddd1461027f5780632097ac3b1461029d576101c4565b806301ffc9a7146101c957806306fdde03146101f9578063081812fc14610217575b600080fd5b6101e360048036038101906101de919061272a565b610563565b6040516101f09190612772565b60405180910390f35b610201610645565b60405161020e9190612826565b60405180910390f35b610231600480360381019061022c919061287e565b6106d7565b60405161023e91906128ec565b60405180910390f35b610261600480360381019061025c9190612933565b610753565b005b61027d60048036038101906102789190612973565b61085e565b005b610287610955565b60405161029491906129af565b60405180910390f35b6102a561096c565b6040516102b291906129af565b60405180910390f35b6102d560048036038101906102d09190612973565b610972565b005b6102f160048036038101906102ec91906129ca565b610a69565b005b61030d60048036038101906103089190612a82565b610a79565b005b610329600480360381019061032491906129ca565b610b0b565b005b6103456004803603810190610340919061287e565b610b2b565b6040516103529190612772565b60405180910390f35b610363610b3d565b6040516103709190612b2e565b60405180910390f35b610393600480360381019061038e919061287e565b610b63565b005b6103af60048036038101906103aa919061287e565b610cb4565b6040516103bc91906128ec565b60405180910390f35b6103df60048036038101906103da9190612973565b610cca565b6040516103ec91906129af565b60405180910390f35b6103fd610d9a565b005b610407610e22565b6040516104149190612b6a565b60405180910390f35b610425610e48565b60405161043291906128ec565b60405180910390f35b61045560048036038101906104509190612b85565b610e72565b005b61045f610f10565b60405161046c9190612826565b60405180910390f35b61048f600480360381019061048a9190612bf1565b610fa2565b005b6104ab60048036038101906104a69190612d61565b61111a565b005b6104c760048036038101906104c2919061287e565b611196565b005b6104e360048036038101906104de919061287e565b611275565b6040516104f09190612826565b60405180910390f35b610501611327565b60405161050e91906129af565b60405180910390f35b610531600480360381019061052c9190612de4565b61134b565b60405161053e9190612772565b60405180910390f35b610561600480360381019061055c9190612973565b6113df565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061062e57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061063e575061063d826118c8565b5b9050919050565b60606002805461065490612e53565b80601f016020809104026020016040519081016040528092919081815260200182805461068090612e53565b80156106cd5780601f106106a2576101008083540402835291602001916106cd565b820191906000526020600020905b8154815290600101906020018083116106b057829003601f168201915b5050505050905090565b60006106e282611932565b610718576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061075e82610cb4565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107c6576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107e5611980565b73ffffffffffffffffffffffffffffffffffffffff1614158015610817575061081581610810611980565b61134b565b155b1561084e576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610859838383611988565b505050565b610866611980565b73ffffffffffffffffffffffffffffffffffffffff16610884610e48565b73ffffffffffffffffffffffffffffffffffffffff16146108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190612ed1565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f6ac4cf0c58a8856b014df7518078a430cab0f5a24a0b7f091a289736aa6697908160405161094a91906128ec565b60405180910390a150565b600061095f611a3a565b6001546000540303905090565b600c5481565b61097a611980565b73ffffffffffffffffffffffffffffffffffffffff16610998610e48565b73ffffffffffffffffffffffffffffffffffffffff16146109ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e590612ed1565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa4884576a4a03f95ad8d62ebdb9129568b9637fe826ce9d0b3c57d422d9da9cc81604051610a5e91906128ec565b60405180910390a150565b610a74838383611a3f565b505050565b610a81611980565b73ffffffffffffffffffffffffffffffffffffffff16610a9f610e48565b73ffffffffffffffffffffffffffffffffffffffff1614610af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aec90612ed1565b60405180910390fd5b8181600b9190610b069291906125d8565b505050565b610b268383836040518060200160405280600081525061111a565b505050565b6000610b3682611932565b9050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b6b611980565b73ffffffffffffffffffffffffffffffffffffffff16610b89610e48565b73ffffffffffffffffffffffffffffffffffffffff1614610bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd690612ed1565b60405180910390fd5b6000600c5414610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b90612f3d565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b37217a4826040518263ffffffff1660e01b8152600401610c7f91906129af565b600060405180830381600087803b158015610c9957600080fd5b505af1158015610cad573d6000803e3d6000fd5b5050505050565b6000610cbf82611f30565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d32576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b610da2611980565b73ffffffffffffffffffffffffffffffffffffffff16610dc0610e48565b73ffffffffffffffffffffffffffffffffffffffff1614610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d90612ed1565b60405180910390fd5b610e2060006121bf565b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef990612fa9565b60405180910390fd5b610f0c8183612285565b5050565b606060038054610f1f90612e53565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4b90612e53565b8015610f985780601f10610f6d57610100808354040283529160200191610f98565b820191906000526020600020905b815481529060010190602001808311610f7b57829003601f168201915b5050505050905090565b610faa611980565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561100f576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806007600061101c611980565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166110c9611980565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161110e9190612772565b60405180910390a35050565b611125848484611a3f565b6111448373ffffffffffffffffffffffffffffffffffffffff166118a5565b801561115957506111578484848461231a565b155b15611190576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d9061303b565b60405180910390fd5b6000600c541461126b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126290612f3d565b60405180910390fd5b80600c8190555050565b606061128082611932565b6112bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b6906130a7565b60405180910390fd5b600080600c54146112d057826112f2565b7f00000000000000000000000000000000000000000000000000000000000027105b9050600b6112ff8261246b565b604051602001611310929190613197565b604051602081830303815290604052915050919050565b7f000000000000000000000000000000000000000000000000000000000000271081565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6113e7611980565b73ffffffffffffffffffffffffffffffffffffffff16611405610e48565b73ffffffffffffffffffffffffffffffffffffffff161461145b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145290612ed1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c29061322d565b60405180910390fd5b6114d4816121bf565b50565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611544576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084141561157f576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61158c60008683876125cc565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060008190506000858201905083801561175657506117558773ffffffffffffffffffffffffffffffffffffffff166118a5565b5b1561181c575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46117cb600088848060010195508861231a565b611801576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082141561175c57826000541461181757600080fd5b611888565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48082141561181d575b81600081905550505061189e60008683876125d2565b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008161193d611a3a565b1115801561194c575060005482105b8015611979575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600090565b6000611a4a82611f30565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611a71611980565b73ffffffffffffffffffffffffffffffffffffffff161480611aa45750611aa38260000151611a9e611980565b61134b565b5b80611ae95750611ab2611980565b73ffffffffffffffffffffffffffffffffffffffff16611ad1846106d7565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611b22576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611b8b576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611bf2576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bff85858560016125cc565b611c0f6000848460000151611988565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611ec057600054811015611ebf5782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611f2985858560016125d2565b5050505050565b611f3861265e565b600082905080611f46611a3a565b11158015611f55575060005481105b15612188576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161218657600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461206a5780925050506121ba565b5b60011561218557818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146121805780925050506121ba565b61206b565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f0000000000000000000000000000000000000000000000000000000000002710816122af610955565b6122b9919061327c565b11156122fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f19061331e565b60405180910390fd5b61231682826040518060200160405280600081525060016114d7565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612340611980565b8786866040518563ffffffff1660e01b81526004016123629493929190613393565b6020604051808303816000875af192505050801561239e57506040513d601f19601f8201168201806040525081019061239b91906133f4565b60015b612418573d80600081146123ce576040519150601f19603f3d011682016040523d82523d6000602084013e6123d3565b606091505b50600081511415612410576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b606060008214156124b3576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506125c7565b600082905060005b600082146124e55780806124ce90613421565b915050600a826124de9190613499565b91506124bb565b60008167ffffffffffffffff81111561250157612500612c36565b5b6040519080825280601f01601f1916602001820160405280156125335781602001600182028036833780820191505090505b5090505b600085146125c05760018261254c91906134ca565b9150600a8561255b91906134fe565b6030612567919061327c565b60f81b81838151811061257d5761257c61352f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856125b99190613499565b9450612537565b8093505050505b919050565b50505050565b50505050565b8280546125e490612e53565b90600052602060002090601f016020900481019282612606576000855561264d565b82601f1061261f57803560ff191683800117855561264d565b8280016001018555821561264d579182015b8281111561264c578235825591602001919060010190612631565b5b50905061265a91906126a1565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b808211156126ba5760008160009055506001016126a2565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612707816126d2565b811461271257600080fd5b50565b600081359050612724816126fe565b92915050565b6000602082840312156127405761273f6126c8565b5b600061274e84828501612715565b91505092915050565b60008115159050919050565b61276c81612757565b82525050565b60006020820190506127876000830184612763565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127c75780820151818401526020810190506127ac565b838111156127d6576000848401525b50505050565b6000601f19601f8301169050919050565b60006127f88261278d565b6128028185612798565b93506128128185602086016127a9565b61281b816127dc565b840191505092915050565b6000602082019050818103600083015261284081846127ed565b905092915050565b6000819050919050565b61285b81612848565b811461286657600080fd5b50565b60008135905061287881612852565b92915050565b600060208284031215612894576128936126c8565b5b60006128a284828501612869565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128d6826128ab565b9050919050565b6128e6816128cb565b82525050565b600060208201905061290160008301846128dd565b92915050565b612910816128cb565b811461291b57600080fd5b50565b60008135905061292d81612907565b92915050565b6000806040838503121561294a576129496126c8565b5b60006129588582860161291e565b925050602061296985828601612869565b9150509250929050565b600060208284031215612989576129886126c8565b5b60006129978482850161291e565b91505092915050565b6129a981612848565b82525050565b60006020820190506129c460008301846129a0565b92915050565b6000806000606084860312156129e3576129e26126c8565b5b60006129f18682870161291e565b9350506020612a028682870161291e565b9250506040612a1386828701612869565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112612a4257612a41612a1d565b5b8235905067ffffffffffffffff811115612a5f57612a5e612a22565b5b602083019150836001820283011115612a7b57612a7a612a27565b5b9250929050565b60008060208385031215612a9957612a986126c8565b5b600083013567ffffffffffffffff811115612ab757612ab66126cd565b5b612ac385828601612a2c565b92509250509250929050565b6000819050919050565b6000612af4612aef612aea846128ab565b612acf565b6128ab565b9050919050565b6000612b0682612ad9565b9050919050565b6000612b1882612afb565b9050919050565b612b2881612b0d565b82525050565b6000602082019050612b436000830184612b1f565b92915050565b6000612b5482612afb565b9050919050565b612b6481612b49565b82525050565b6000602082019050612b7f6000830184612b5b565b92915050565b60008060408385031215612b9c57612b9b6126c8565b5b6000612baa85828601612869565b9250506020612bbb8582860161291e565b9150509250929050565b612bce81612757565b8114612bd957600080fd5b50565b600081359050612beb81612bc5565b92915050565b60008060408385031215612c0857612c076126c8565b5b6000612c168582860161291e565b9250506020612c2785828601612bdc565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c6e826127dc565b810181811067ffffffffffffffff82111715612c8d57612c8c612c36565b5b80604052505050565b6000612ca06126be565b9050612cac8282612c65565b919050565b600067ffffffffffffffff821115612ccc57612ccb612c36565b5b612cd5826127dc565b9050602081019050919050565b82818337600083830152505050565b6000612d04612cff84612cb1565b612c96565b905082815260208101848484011115612d2057612d1f612c31565b5b612d2b848285612ce2565b509392505050565b600082601f830112612d4857612d47612a1d565b5b8135612d58848260208601612cf1565b91505092915050565b60008060008060808587031215612d7b57612d7a6126c8565b5b6000612d898782880161291e565b9450506020612d9a8782880161291e565b9350506040612dab87828801612869565b925050606085013567ffffffffffffffff811115612dcc57612dcb6126cd565b5b612dd887828801612d33565b91505092959194509250565b60008060408385031215612dfb57612dfa6126c8565b5b6000612e098582860161291e565b9250506020612e1a8582860161291e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e6b57607f821691505b60208210811415612e7f57612e7e612e24565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ebb602083612798565b9150612ec682612e85565b602082019050919050565b60006020820190508181036000830152612eea81612eae565b9050919050565b7f52657665616c20616c72656164792063616c6c65640000000000000000000000600082015250565b6000612f27601583612798565b9150612f3282612ef1565b602082019050919050565b60006020820190508181036000830152612f5681612f1a565b9050919050565b7f6f6e6c792073616c654d616e616765722063616e206d696e7400000000000000600082015250565b6000612f93601983612798565b9150612f9e82612f5d565b602082019050919050565b60006020820190508181036000830152612fc281612f86565b9050919050565b7f4f6e6c792074686520436865662052657665616c2050726f766964657220636160008201527f6e2072657665616c000000000000000000000000000000000000000000000000602082015250565b6000613025602883612798565b915061303082612fc9565b604082019050919050565b6000602082019050818103600083015261305481613018565b9050919050565b7f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000600082015250565b6000613091601183612798565b915061309c8261305b565b602082019050919050565b600060208201905081810360008301526130c081613084565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b600081546130f481612e53565b6130fe81866130c7565b94506001821660008114613119576001811461312a5761315d565b60ff1983168652818601935061315d565b613133856130d2565b60005b8381101561315557815481890152600182019150602081019050613136565b838801955050505b50505092915050565b60006131718261278d565b61317b81856130c7565b935061318b8185602086016127a9565b80840191505092915050565b60006131a382856130e7565b91506131af8284613166565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613217602683612798565b9150613222826131bb565b604082019050919050565b600060208201905081810360008301526132468161320a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061328782612848565b915061329283612848565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132c7576132c661324d565b5b828201905092915050565b7f6d617820737570706c7920726561636865640000000000000000000000000000600082015250565b6000613308601283612798565b9150613313826132d2565b602082019050919050565b60006020820190508181036000830152613337816132fb565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006133658261333e565b61336f8185613349565b935061337f8185602086016127a9565b613388816127dc565b840191505092915050565b60006080820190506133a860008301876128dd565b6133b560208301866128dd565b6133c260408301856129a0565b81810360608301526133d4818461335a565b905095945050505050565b6000815190506133ee816126fe565b92915050565b60006020828403121561340a576134096126c8565b5b6000613418848285016133df565b91505092915050565b600061342c82612848565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561345f5761345e61324d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006134a482612848565b91506134af83612848565b9250826134bf576134be61346a565b5b828204905092915050565b60006134d582612848565b91506134e083612848565b9250828210156134f3576134f261324d565b5b828203905092915050565b600061350982612848565b915061351483612848565b9250826135245761352361346a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212208db689a146a9e5e8a5341fc522e70e764f4fd0cb0ede181253446ba0bcdb203264736f6c634300080a0033

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

000000000000000000000000000000000000000000000000000000000000012c0000000000000000000000000000000000000000000000000000000000002710000000000000000000000000c1cb1c5b87ea0d307808473c092f192032ece30200000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000b426967546f776e43686566000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000443484546000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043697066733a2f2f62616679626569626d346d75737a6676716f76707866677361333237796575336b646e346234793734676e7371356f667633676e786c69696178652f0000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _reserved (uint256): 300
Arg [1] : _maxSupply (uint256): 10000
Arg [2] : treasury (address): 0xC1cb1C5b87Ea0d307808473C092F192032eCe302
Arg [3] : name (string): BigTownChef
Arg [4] : symbol (string): CHEF
Arg [5] : baseTokenURI (string): ipfs://bafybeibm4muszfvqovpxfgsa327yeu3kdn4b4y74gnsq5ofv3gnxliiaxe/

-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000000000012c
Arg [1] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [2] : 000000000000000000000000c1cb1c5b87ea0d307808473c092f192032ece302
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [6] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [7] : 426967546f776e43686566000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [9] : 4348454600000000000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000043
Arg [11] : 697066733a2f2f62616679626569626d346d75737a6676716f76707866677361
Arg [12] : 333237796575336b646e346234793734676e7371356f667633676e786c696961
Arg [13] : 78652f0000000000000000000000000000000000000000000000000000000000


Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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