[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "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": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "totalCheckIns", "type": "uint256" } ], "name": "CheckedIn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "NFTRewarded", "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": 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": [], "name": "CHECKINS_FOR_NFT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "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": [], "name": "checkIn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "checkIns", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "hasReceivedNFT", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "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": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "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": [ { "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" } ]
608060405234801561001057600080fd5b50336040518060400160405280601281526020017110da1958dad25b8814995dd85c990813919560721b8152506040518060400160405280600781526020016621a422a1a5a4a760c91b815250816000908161006c91906101af565b50600161007982826101af565b5050506001600160a01b0381166100aa57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100b3816100be565b50600060075561026d565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013a57607f821691505b60208210810361015a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101aa57806000526020600020601f840160051c810160208510156101875750805b601f840160051c820191505b818110156101a75760008155600101610193565b50505b505050565b81516001600160401b038111156101c8576101c8610110565b6101dc816101d68454610126565b84610160565b6020601f82116001811461021057600083156101f85750848201515b600019600385901b1c1916600184901b1784556101a7565b600084815260208120601f198516915b828110156102405787850151825560209485019460019092019101610220565b508482101561025e5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6112a68061027c6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806370a08231116100ad578063b88d4fde11610071578063b88d4fde1461026c578063c87b56dd1461027f578063e985e9c514610292578063ef6cde64146102a5578063f2fde38b146102d357600080fd5b806370a0823114610225578063715018a6146102385780638da5cb5b1461024057806395d89b4114610251578063a22cb4651461025957600080fd5b80631acc9b62116100f45780631acc9b62146101b65780632140bec0146101e457806323b872dd146101ec57806342842e0e146101ff5780636352211e1461021257600080fd5b806301ffc9a71461013157806306fdde0314610159578063081812fc1461016e578063095ea7b314610199578063183ff085146101ae575b600080fd5b61014461013f366004610eeb565b6102e6565b60405190151581526020015b60405180910390f35b610161610338565b6040516101509190610f58565b61018161017c366004610f6b565b6103ca565b6040516001600160a01b039091168152602001610150565b6101ac6101a7366004610fa0565b6103f3565b005b6101ac610402565b6101d66101c4366004610fca565b60086020526000908152604090205481565b604051908152602001610150565b6101d6600a81565b6101ac6101fa366004610fe5565b610558565b6101ac61020d366004610fe5565b6105e3565b610181610220366004610f6b565b610603565b6101d6610233366004610fca565b61060e565b6101ac610656565b6006546001600160a01b0316610181565b610161610668565b6101ac610267366004611022565b610677565b6101ac61027a366004611074565b610682565b61016161028d366004610f6b565b61069a565b6101446102a0366004611158565b61070f565b6101446102b3366004610fa0565b600960209081526000928352604080842090915290825290205460ff1681565b6101ac6102e1366004610fca565b61073d565b60006001600160e01b031982166380ac58cd60e01b148061031757506001600160e01b03198216635b5e139f60e01b145b8061033257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546103479061118b565b80601f01602080910402602001604051908101604052809291908181526020018280546103739061118b565b80156103c05780601f10610395576101008083540402835291602001916103c0565b820191906000526020600020905b8154815290600101906020018083116103a357829003601f168201915b5050505050905090565b60006103d58261077b565b506000828152600460205260409020546001600160a01b0316610332565b6103fe8282336107b4565b5050565b336104465760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064015b60405180910390fd5b3360008181526008602090815260409182902080546001019081905591519182527fdddb6e14f7f2101397a6526aab95e964de7f1f44ed06aa47a1c9a0e6b9924456910160405180910390a2336000908152600860205260409020546104ae90600a906111c5565b1580156104dd57503360009081526009602090815260408083206008835281842054845290915290205460ff16155b156105565760078054600181019091556104f733826107c1565b33600081815260096020908152604080832060088352818420548452825291829020805460ff1916600117905590518381527f8c4b0bd0847d940a8f64327b75ae300814f43d12e16f2f0b6da686d784f00beb910160405180910390a2505b565b6001600160a01b03821661058257604051633250574960e11b81526000600482015260240161043d565b600061058f8383336107db565b9050836001600160a01b0316816001600160a01b0316146105dd576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161043d565b50505050565b6105fe83838360405180602001604052806000815250610682565b505050565b60006103328261077b565b60006001600160a01b03821661063a576040516322718ad960e21b81526000600482015260240161043d565b506001600160a01b031660009081526003602052604090205490565b61065e6108d4565b6105566000610901565b6060600180546103479061118b565b6103fe338383610953565b61068d848484610558565b6105dd33858585856109f2565b60606106a58261077b565b5060006106bd60408051602081019091526000815290565b905060008151116106dd5760405180602001604052806000815250610708565b806106e784610b1d565b6040516020016106f89291906111e7565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6107456108d4565b6001600160a01b03811661076f57604051631e4fbdf760e01b81526000600482015260240161043d565b61077881610901565b50565b6000818152600260205260408120546001600160a01b03168061033257604051637e27328960e01b81526004810184905260240161043d565b6105fe8383836001610bb0565b6103fe828260405180602001604052806000815250610cb6565b6000828152600260205260408120546001600160a01b039081169083161561080857610808818486610cce565b6001600160a01b0381161561084657610825600085600080610bb0565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615610875576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105565760405163118cdaa760e01b815233600482015260240161043d565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661098557604051630b61174360e31b81526001600160a01b038316600482015260240161043d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610b1657604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610a34908890889087908790600401611216565b6020604051808303816000875af1925050508015610a6f575060408051601f3d908101601f19168201909252610a6c91810190611253565b60015b610ad8573d808015610a9d576040519150601f19603f3d011682016040523d82523d6000602084013e610aa2565b606091505b508051600003610ad057604051633250574960e11b81526001600160a01b038516600482015260240161043d565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610b1457604051633250574960e11b81526001600160a01b038516600482015260240161043d565b505b5050505050565b60606000610b2a83610d32565b600101905060008167ffffffffffffffff811115610b4a57610b4a61105e565b6040519080825280601f01601f191660200182016040528015610b74576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610b7e57509392505050565b8080610bc457506001600160a01b03821615155b15610c86576000610bd48461077b565b90506001600160a01b03831615801590610c005750826001600160a01b0316816001600160a01b031614155b8015610c135750610c11818461070f565b155b15610c3c5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161043d565b8115610c845783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610cc08383610e0a565b6105fe3360008585856109f2565b610cd9838383610e6f565b6105fe576001600160a01b038316610d0757604051637e27328960e01b81526004810182905260240161043d565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161043d565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610d715772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610d9d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610dbb57662386f26fc10000830492506010015b6305f5e1008310610dd3576305f5e100830492506008015b6127108310610de757612710830492506004015b60648310610df9576064830492506002015b600a83106103325760010192915050565b6001600160a01b038216610e3457604051633250574960e11b81526000600482015260240161043d565b6000610e42838360006107db565b90506001600160a01b038116156105fe576040516339e3563760e11b81526000600482015260240161043d565b60006001600160a01b03831615801590610ecd5750826001600160a01b0316846001600160a01b03161480610ea95750610ea9848461070f565b80610ecd57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160e01b03198116811461077857600080fd5b600060208284031215610efd57600080fd5b813561070881610ed5565b60005b83811015610f23578181015183820152602001610f0b565b50506000910152565b60008151808452610f44816020860160208601610f08565b601f01601f19169290920160200192915050565b6020815260006107086020830184610f2c565b600060208284031215610f7d57600080fd5b5035919050565b80356001600160a01b0381168114610f9b57600080fd5b919050565b60008060408385031215610fb357600080fd5b610fbc83610f84565b946020939093013593505050565b600060208284031215610fdc57600080fd5b61070882610f84565b600080600060608486031215610ffa57600080fd5b61100384610f84565b925061101160208501610f84565b929592945050506040919091013590565b6000806040838503121561103557600080fd5b61103e83610f84565b91506020830135801515811461105357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561108a57600080fd5b61109385610f84565b93506110a160208601610f84565b925060408501359150606085013567ffffffffffffffff8111156110c457600080fd5b8501601f810187136110d557600080fd5b803567ffffffffffffffff8111156110ef576110ef61105e565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561111e5761111e61105e565b60405281815282820160200189101561113657600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6000806040838503121561116b57600080fd5b61117483610f84565b915061118260208401610f84565b90509250929050565b600181811c9082168061119f57607f821691505b6020821081036111bf57634e487b7160e01b600052602260045260246000fd5b50919050565b6000826111e257634e487b7160e01b600052601260045260246000fd5b500690565b600083516111f9818460208801610f08565b83519083019061120d818360208801610f08565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061124990830184610f2c565b9695505050505050565b60006020828403121561126557600080fd5b815161070881610ed556fea26469706673582212208fb16893c0636f9bb10cc7b1660d226c992952de5e5802269846f6af3f10843164736f6c634300081b0033