19 txs
20 calls
constructor
constructor(string name_, string symbol_)
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getMintCount
viewfunction getMintCount(uint256 mintCount_) view returns (uint256 whitelistMint_, uint256 normalMint_)
getMintLeft
viewfunction getMintLeft() view returns (uint256)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
maxTotalSupply
viewfunction maxTotalSupply() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
priceInEther
viewfunction priceInEther() view returns (uint256)
saleStarted
viewfunction saleStarted() view returns (bool)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenByIndex
viewfunction tokenByIndex(uint256 index) view returns (uint256)
tokenOfOwnerByIndex
viewfunction tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
uri
viewfunction uri() view returns (string)
whitelist
viewfunction whitelist(address) view returns (bool)
whitelistMinted
viewfunction whitelistMinted(address) view returns (uint256)
whitelistPerWallet
viewfunction whitelistPerWallet() view returns (uint256)
approve
nonpayablefunction approve(address to, uint256 tokenId)
editWhitelist
nonpayablefunction editWhitelist(address[] users_, bool add_)
mint
payablefunction mint(uint256 mintCount_) payable
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes _data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setBaseURI
nonpayablefunction setBaseURI(string uri_)
setPrice
nonpayablefunction setPrice(uint256 price_)
setWhitelistPerWallet
nonpayablefunction setWhitelistPerWallet(uint256 amount_)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
triggerSale
nonpayablefunction triggerSale(bool start_)
withdrawEther
nonpayablefunction withdrawEther(address recipient_)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b506040516200270838038062002708833981016040819052620000349162000250565b818162000041336200008d565b815162000056906001906020850190620000dd565b5080516200006c906002906020840190620000dd565b5050611000600b55505066470de4df820000600d55506001600e55620002f7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620000eb90620002ba565b90600052602060002090601f0160209004810192826200010f57600085556200015a565b82601f106200012a57805160ff19168380011785556200015a565b828001600101855582156200015a579182015b828111156200015a5782518255916020019190600101906200013d565b50620001689291506200016c565b5090565b5b808211156200016857600081556001016200016d565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001ab57600080fd5b81516001600160401b0380821115620001c857620001c862000183565b604051601f8301601f19908116603f01168101908282118183101715620001f357620001f362000183565b816040528381526020925086838588010111156200021057600080fd5b600091505b8382101562000234578582018301518183018401529082019062000215565b83821115620002465760008385830101525b9695505050505050565b600080604083850312156200026457600080fd5b82516001600160401b03808211156200027c57600080fd5b6200028a8683870162000199565b93506020850151915080821115620002a157600080fd5b50620002b08582860162000199565b9150509250929050565b600181811c90821680620002cf57607f821691505b60208210811415620002f157634e487b7160e01b600052602260045260246000fd5b50919050565b61240180620003076000396000f3fe6080604052600436106102045760003560e01c806382a8d72e11610118578063af933b57116100a0578063d40224ec1161006f578063d40224ec146105c2578063db09a3f5146105e2578063e985e9c514610617578063eac989f814610660578063f2fde38b1461067557600080fd5b8063af933b571461054c578063b680c3ef1461056c578063b88d4fde14610582578063c87b56dd146105a257600080fd5b806395d89b41116100e757806395d89b41146104a757806398a8cffe146104bc5780639b19251a146104e9578063a0712d6814610519578063a22cb4651461052c57600080fd5b806382a8d72e146104335780638da5cb5b1461044957806391b7f5ed14610467578063927ac44d1461048757600080fd5b80632f745c591161019b5780635c474f9e1161016a5780635c474f9e146103af5780636352211e146103c957806370a08231146103e9578063715018a61461040957806380fee0e41461041e57600080fd5b80632f745c591461032f57806342842e0e1461034f5780634f6ccce71461036f57806355f804b31461038f57600080fd5b8063152d13bc116101d7578063152d13bc146102ba57806318160ddd146102da57806323b872dd146102f95780632ab4d0521461031957600080fd5b806301ffc9a71461020957806306fdde031461023e578063081812fc14610260578063095ea7b314610298575b600080fd5b34801561021557600080fd5b50610229610224366004611d98565b610695565b60405190151581526020015b60405180910390f35b34801561024a57600080fd5b506102536106c0565b6040516102359190611e0d565b34801561026c57600080fd5b5061028061027b366004611e20565b610752565b6040516001600160a01b039091168152602001610235565b3480156102a457600080fd5b506102b86102b3366004611e55565b6107ec565b005b3480156102c657600080fd5b506102b86102d5366004611e20565b610902565b3480156102e657600080fd5b506009545b604051908152602001610235565b34801561030557600080fd5b506102b8610314366004611e7f565b610931565b34801561032557600080fd5b506102eb600b5481565b34801561033b57600080fd5b506102eb61034a366004611e55565b610962565b34801561035b57600080fd5b506102b861036a366004611e7f565b6109f8565b34801561037b57600080fd5b506102eb61038a366004611e20565b610a13565b34801561039b57600080fd5b506102b86103aa366004611ebb565b610aa6565b3480156103bb57600080fd5b50600c546102299060ff1681565b3480156103d557600080fd5b506102806103e4366004611e20565b610adc565b3480156103f557600080fd5b506102eb610404366004611f2d565b610b53565b34801561041557600080fd5b506102b8610bda565b34801561042a57600080fd5b506102eb610c10565b34801561043f57600080fd5b506102eb600d5481565b34801561045557600080fd5b506000546001600160a01b0316610280565b34801561047357600080fd5b506102b8610482366004611e20565b610c2d565b34801561049357600080fd5b506102b86104a2366004611f58565b610c5c565b3480156104b357600080fd5b50610253610cfd565b3480156104c857600080fd5b506102eb6104d7366004611f2d565b60116020526000908152604090205481565b3480156104f557600080fd5b50610229610504366004611f2d565b60106020526000908152604090205460ff1681565b6102b8610527366004611e20565b610d0c565b34801561053857600080fd5b506102b8610547366004611fdc565b610ec3565b34801561055857600080fd5b506102b8610567366004611f2d565b610ed2565b34801561057857600080fd5b506102eb600e5481565b34801561058e57600080fd5b506102b861059d366004612025565b610f9f565b3480156105ae57600080fd5b506102536105bd366004611e20565b610fd1565b3480156105ce57600080fd5b506102b86105dd366004612101565b6110ac565b3480156105ee57600080fd5b506106026105fd366004611e20565b6110e9565b60408051928352602083019190915201610235565b34801561062357600080fd5b5061022961063236600461211c565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b34801561066c57600080fd5b5061025361114c565b34801561068157600080fd5b506102b8610690366004611f2d565b6111da565b60006001600160e01b0319821663780e9d6360e01b14806106ba57506106ba82611275565b92915050565b6060600180546106cf90612146565b80601f01602080910402602001604051908101604052809291908181526020018280546106fb90612146565b80156107485780601f1061071d57610100808354040283529160200191610748565b820191906000526020600020905b81548152906001019060200180831161072b57829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b03166107d05760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b60006107f782610adc565b9050806001600160a01b0316836001600160a01b031614156108655760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016107c7565b336001600160a01b038216148061088157506108818133610632565b6108f35760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016107c7565b6108fd83836112c5565b505050565b6000546001600160a01b0316331461092c5760405162461bcd60e51b81526004016107c790612181565b600e55565b61093b3382611333565b6109575760405162461bcd60e51b81526004016107c7906121b6565b6108fd83838361142a565b600061096d83610b53565b82106109cf5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016107c7565b506001600160a01b03919091166000908152600760209081526040808320938352929052205490565b6108fd83838360405180602001604052806000815250610f9f565b6000610a1e60095490565b8210610a815760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016107c7565b60098281548110610a9457610a94612207565b90600052602060002001549050919050565b6000546001600160a01b03163314610ad05760405162461bcd60e51b81526004016107c790612181565b6108fd600f8383611ce9565b6000818152600360205260408120546001600160a01b0316806106ba5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016107c7565b60006001600160a01b038216610bbe5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016107c7565b506001600160a01b031660009081526004602052604090205490565b6000546001600160a01b03163314610c045760405162461bcd60e51b81526004016107c790612181565b610c0e60006115d1565b565b6000610c1b60095490565b600b54610c289190612233565b905090565b6000546001600160a01b03163314610c575760405162461bcd60e51b81526004016107c790612181565b600d55565b6000546001600160a01b03163314610c865760405162461bcd60e51b81526004016107c790612181565b60005b82811015610cf7578160106000868685818110610ca857610ca8612207565b9050602002016020810190610cbd9190611f2d565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610cef8161224a565b915050610c89565b50505050565b6060600280546106cf90612146565b600c5460ff16610d5e5760405162461bcd60e51b815260206004820152601b60248201527f46534e46543a2073616c6520686173206e6f742073746172746564000000000060448201526064016107c7565b60008111610da15760405162461bcd60e51b815260206004820152601060248201526f1194d391950e881e995c9bc81b5a5b9d60821b60448201526064016107c7565b610da9610c10565b811115610ded5760405162461bcd60e51b81526020600482015260126024820152711194d391950e8818d85c081c995858da195960721b60448201526064016107c7565b600080610df9836110e9565b91509150600d5481610e0b9190612265565b3414610e645760405162461bcd60e51b815260206004820152602260248201527f46534e46543a2077726f6e6720657468657220616d6f756e742070726f766964604482015261195960f21b60648201526084016107c7565b3360009081526011602052604081208054849290610e83908490612284565b90915550600090505b83811015610cf757610eb133610ea160095490565b610eac906001612284565b611621565b80610ebb8161224a565b915050610e8c565b610ece33838361176f565b5050565b6000546001600160a01b03163314610efc5760405162461bcd60e51b81526004016107c790612181565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610f49576040519150601f19603f3d011682016040523d82523d6000602084013e610f4e565b606091505b5050905080610ece5760405162461bcd60e51b815260206004820152601c60248201527f46534e46543a206661696c6564207472616e736665722065746865720000000060448201526064016107c7565b610fa93383611333565b610fc55760405162461bcd60e51b81526004016107c7906121b6565b610cf78484848461183e565b6000818152600360205260409020546060906001600160a01b03166110505760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016107c7565b600061105a611871565b9050600081511161107a57604051806020016040528060008152506110a5565b8061108484611880565b60405160200161109592919061229c565b6040516020818303038152906040525b9392505050565b6000546001600160a01b031633146110d65760405162461bcd60e51b81526004016107c790612181565b600c805460ff1916911515919091179055565b33600090815260106020526040812054819060ff161561113b57600e543360009081526011602052604090205461113891611124919061197e565b600e546111319190612233565b849061197e565b91505b6111458284612233565b9050915091565b600f805461115990612146565b80601f016020809104026020016040519081016040528092919081815260200182805461118590612146565b80156111d25780601f106111a7576101008083540402835291602001916111d2565b820191906000526020600020905b8154815290600101906020018083116111b557829003601f168201915b505050505081565b6000546001600160a01b031633146112045760405162461bcd60e51b81526004016107c790612181565b6001600160a01b0381166112695760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107c7565b611272816115d1565b50565b60006001600160e01b031982166380ac58cd60e01b14806112a657506001600160e01b03198216635b5e139f60e01b145b806106ba57506301ffc9a760e01b6001600160e01b03198316146106ba565b600081815260056020526040902080546001600160a01b0319166001600160a01b03841690811790915581906112fa82610adc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600360205260408120546001600160a01b03166113ac5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016107c7565b60006113b783610adc565b9050806001600160a01b0316846001600160a01b031614806113f25750836001600160a01b03166113e784610752565b6001600160a01b0316145b8061142257506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661143d82610adc565b6001600160a01b0316146114a15760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016107c7565b6001600160a01b0382166115035760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016107c7565b61150e838383611994565b6115196000826112c5565b6001600160a01b0383166000908152600460205260408120805460019290611542908490612233565b90915550506001600160a01b0382166000908152600460205260408120805460019290611570908490612284565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166116775760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107c7565b6000818152600360205260409020546001600160a01b0316156116dc5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107c7565b6116e860008383611994565b6001600160a01b0382166000908152600460205260408120805460019290611711908490612284565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b816001600160a01b0316836001600160a01b031614156117d15760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016107c7565b6001600160a01b03838116600081815260066020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61184984848461142a565b61185584848484611a4c565b610cf75760405162461bcd60e51b81526004016107c7906122cb565b6060600f80546106cf90612146565b6060816118a45750506040805180820190915260018152600360fc1b602082015290565b8160005b81156118ce57806118b88161224a565b91506118c79050600a83612333565b91506118a8565b60008167ffffffffffffffff8111156118e9576118e961200f565b6040519080825280601f01601f191660200182016040528015611913576020820181803683370190505b5090505b841561142257611928600183612233565b9150611935600a86612347565b611940906030612284565b60f81b81838151811061195557611955612207565b60200101906001600160f81b031916908160001a905350611977600a86612333565b9450611917565b600081831061198d57816110a5565b5090919050565b6001600160a01b0383166119ef576119ea81600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155565b611a12565b816001600160a01b0316836001600160a01b031614611a1257611a128382611b59565b6001600160a01b038216611a29576108fd81611bf6565b826001600160a01b0316826001600160a01b0316146108fd576108fd8282611ca5565b60006001600160a01b0384163b15611b4e57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611a9090339089908890889060040161235b565b602060405180830381600087803b158015611aaa57600080fd5b505af1925050508015611ada575060408051601f3d908101601f19168201909252611ad791810190612398565b60015b611b34573d808015611b08576040519150601f19603f3d011682016040523d82523d6000602084013e611b0d565b606091505b508051611b2c5760405162461bcd60e51b81526004016107c7906122cb565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611422565b506001949350505050565b60006001611b6684610b53565b611b709190612233565b600083815260086020526040902054909150808214611bc3576001600160a01b03841660009081526007602090815260408083208584528252808320548484528184208190558352600890915290208190555b5060009182526008602090815260408084208490556001600160a01b039094168352600781528383209183525290812055565b600954600090611c0890600190612233565b6000838152600a602052604081205460098054939450909284908110611c3057611c30612207565b906000526020600020015490508060098381548110611c5157611c51612207565b6000918252602080832090910192909255828152600a90915260408082208490558582528120556009805480611c8957611c896123b5565b6001900381819060005260206000200160009055905550505050565b6000611cb083610b53565b6001600160a01b039093166000908152600760209081526040808320868452825280832085905593825260089052919091209190915550565b828054611cf590612146565b90600052602060002090601f016020900481019282611d175760008555611d5d565b82601f10611d305782800160ff19823516178555611d5d565b82800160010185558215611d5d579182015b82811115611d5d578235825591602001919060010190611d42565b50611d69929150611d6d565b5090565b5b80821115611d695760008155600101611d6e565b6001600160e01b03198116811461127257600080fd5b600060208284031215611daa57600080fd5b81356110a581611d82565b60005b83811015611dd0578181015183820152602001611db8565b83811115610cf75750506000910152565b60008151808452611df9816020860160208601611db5565b601f01601f19169290920160200192915050565b6020815260006110a56020830184611de1565b600060208284031215611e3257600080fd5b5035919050565b80356001600160a01b0381168114611e5057600080fd5b919050565b60008060408385031215611e6857600080fd5b611e7183611e39565b946020939093013593505050565b600080600060608486031215611e9457600080fd5b611e9d84611e39565b9250611eab60208501611e39565b9150604084013590509250925092565b60008060208385031215611ece57600080fd5b823567ffffffffffffffff80821115611ee657600080fd5b818501915085601f830112611efa57600080fd5b813581811115611f0957600080fd5b866020828501011115611f1b57600080fd5b60209290920196919550909350505050565b600060208284031215611f3f57600080fd5b6110a582611e39565b80358015158114611e5057600080fd5b600080600060408486031215611f6d57600080fd5b833567ffffffffffffffff80821115611f8557600080fd5b818601915086601f830112611f9957600080fd5b813581811115611fa857600080fd5b8760208260051b8501011115611fbd57600080fd5b602092830195509350611fd39186019050611f48565b90509250925092565b60008060408385031215611fef57600080fd5b611ff883611e39565b915061200660208401611f48565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561203b57600080fd5b61204485611e39565b935061205260208601611e39565b925060408501359150606085013567ffffffffffffffff8082111561207657600080fd5b818701915087601f83011261208a57600080fd5b81358181111561209c5761209c61200f565b604051601f8201601f19908116603f011681019083821181831017156120c4576120c461200f565b816040528281528a60208487010111156120dd57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60006020828403121561211357600080fd5b6110a582611f48565b6000806040838503121561212f57600080fd5b61213883611e39565b915061200660208401611e39565b600181811c9082168061215a57607f821691505b6020821081141561217b57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156122455761224561221d565b500390565b600060001982141561225e5761225e61221d565b5060010190565b600081600019048311821515161561227f5761227f61221d565b500290565b600082198211156122975761229761221d565b500190565b600083516122ae818460208801611db5565b8351908301906122c2818360208801611db5565b01949350505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826123425761234261231d565b500490565b6000826123565761235661231d565b500690565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061238e90830184611de1565b9695505050505050565b6000602082840312156123aa57600080fd5b81516110a581611d82565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220bf95a7f50216532c6a8235780cde348498a30a7705f51ae5a91601e3f41cb29364736f6c6343000809003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001f5365737472792046656c646d616e20262047726f6f76794d696e782e65746800000000000000000000000000000000000000000000000000000000000000000553464e4654000000000000000000000000000000000000000000000000000000