[ { "inputs": [ { "internalType": "string", "name": "_uri", "type": "string" } ], "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" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "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": 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": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" } ], "name": "Airdrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "_royaltyAmount", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "hiddenMetadataUri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "maxMintAmountPerTx", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [], "name": "reservePieces", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "revealed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "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": "sale", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "_uri", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_hiddenMetadataUri", "type": "string" } ], "name": "setHiddenMetadataUri", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxMintAmountPerTx", "type": "uint256" } ], "name": "setMaxMintAmountPerTx", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mintPrice", "type": "uint256" } ], "name": "setMintPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_state", "type": "bool" } ], "name": "setRevealed", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_sale", "type": "bool" } ], "name": "setSaleStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_supplyLimit", "type": "uint256" } ], "name": "setsupplyLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "supplyLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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" }, { "inputs": [], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405260006008556000600c556064600d556001600e556045600f556040518060400160405280600481526020017f736f6f6e00000000000000000000000000000000000000000000000000000000815250601190816200006391906200064a565b506000601260006101000a81548160ff0219169083151502179055506000601260016101000a81548160ff021916908315150217905550348015620000a757600080fd5b506040516200434e3803806200434e8339818101604052810190620000cd919062000895565b6064336040518060400160405280600b81526020017f546865204a757374696e730000000000000000000000000000000000000000008152506040518060400160405280600781526020017f4a555354494e530000000000000000000000000000000000000000000000000081525081600090816200014d91906200064a565b5080600190816200015f91906200064a565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620001d75760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620001ce91906200092b565b60405180910390fd5b620001e8816200021160201b60201c565b50600160078190555080600981905550506200020a81620002d760201b60201c565b5062000948565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002e7620002fc60201b60201c565b8060109081620002f891906200064a565b5050565b6200030c6200039e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000332620003a660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200039c576200035e6200039e60201b60201c565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016200039391906200092b565b60405180910390fd5b565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200045257607f821691505b6020821081036200046857620004676200040a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004d27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000493565b620004de868362000493565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200052b620005256200051f84620004f6565b62000500565b620004f6565b9050919050565b6000819050919050565b62000547836200050a565b6200055f620005568262000532565b848454620004a0565b825550505050565b600090565b6200057662000567565b620005838184846200053c565b505050565b5b81811015620005ab576200059f6000826200056c565b60018101905062000589565b5050565b601f821115620005fa57620005c4816200046e565b620005cf8462000483565b81016020851015620005df578190505b620005f7620005ee8562000483565b83018262000588565b50505b505050565b600082821c905092915050565b60006200061f60001984600802620005ff565b1980831691505092915050565b60006200063a83836200060c565b9150826002028217905092915050565b6200065582620003d0565b67ffffffffffffffff811115620006715762000670620003db565b5b6200067d825462000439565b6200068a828285620005af565b600060209050601f831160018114620006c25760008415620006ad578287015190505b620006b985826200062c565b86555062000729565b601f198416620006d2866200046e565b60005b82811015620006fc57848901518255600182019150602085019450602081019050620006d5565b868310156200071c578489015162000718601f8916826200060c565b8355505b6001600288020188555050505b505050505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200076b826200074f565b810181811067ffffffffffffffff821117156200078d576200078c620003db565b5b80604052505050565b6000620007a262000731565b9050620007b0828262000760565b919050565b600067ffffffffffffffff821115620007d357620007d2620003db565b5b620007de826200074f565b9050602081019050919050565b60005b838110156200080b578082015181840152602081019050620007ee565b60008484015250505050565b60006200082e6200082884620007b5565b62000796565b9050828152602081018484840111156200084d576200084c6200074a565b5b6200085a848285620007eb565b509392505050565b600082601f8301126200087a576200087962000745565b5b81516200088c84826020860162000817565b91505092915050565b600060208284031215620008ae57620008ad6200073b565b5b600082015167ffffffffffffffff811115620008cf57620008ce62000740565b5b620008dd8482850162000862565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200091382620008e6565b9050919050565b620009258162000906565b82525050565b60006020820190506200094260008301846200091a565b92915050565b6139f680620009586000396000f3fe6080604052600436106102195760003560e01c80636ad1fe0211610123578063a45ba8e7116100ab578063e0a808531161006f578063e0a808531461078a578063e985e9c5146107b3578063eac989f8146107f0578063f2fde38b1461081b578063f4a0a5281461084457610219565b8063a45ba8e7146106a7578063b071401b146106d2578063b88d4fde146106fb578063c87b56dd14610724578063d897833e1461076157610219565b80638da5cb5b116100f25780638da5cb5b146105e157806394354fd01461060c57806395d89b4114610637578063a0712d6814610662578063a22cb4651461067e57610219565b80636ad1fe021461053957806370a0823114610564578063715018a6146105a15780637871e154146105b857610219565b806339cc97b5116101a65780635183022711610175578063518302271461045257806355f804b31461047d5780636352211e146104a65780636817c76c146104e357806369b538241461050e57610219565b806339cc97b5146103d25780633ccfd60b146103e957806342842e0e146104005780634fdd43cb1461042957610219565b8063095ea7b3116101ed578063095ea7b3146102ec57806318160ddd1461031557806319d1997a1461034057806323b872dd1461036b5780632a55205a1461039457610219565b806275770a1461021e57806301ffc9a71461024757806306fdde0314610284578063081812fc146102af575b600080fd5b34801561022a57600080fd5b506102456004803603810190610240919061276e565b61086d565b005b34801561025357600080fd5b5061026e600480360381019061026991906127f3565b61087f565b60405161027b919061283b565b60405180910390f35b34801561029057600080fd5b506102996108f9565b6040516102a691906128e6565b60405180910390f35b3480156102bb57600080fd5b506102d660048036038101906102d1919061276e565b61098b565b6040516102e39190612949565b60405180910390f35b3480156102f857600080fd5b50610313600480360381019061030e9190612990565b6109a7565b005b34801561032157600080fd5b5061032a6109bd565b60405161033791906129df565b60405180910390f35b34801561034c57600080fd5b506103556109c7565b60405161036291906129df565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d91906129fa565b6109cd565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190612a4d565b610acf565b6040516103c9929190612a8d565b60405180910390f35b3480156103de57600080fd5b506103e7610af9565b005b3480156103f557600080fd5b506103fe610bd4565b005b34801561040c57600080fd5b50610427600480360381019061042291906129fa565b610c69565b005b34801561043557600080fd5b50610450600480360381019061044b9190612beb565b610c89565b005b34801561045e57600080fd5b50610467610ca4565b604051610474919061283b565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f9190612beb565b610cb7565b005b3480156104b257600080fd5b506104cd60048036038101906104c8919061276e565b610cd2565b6040516104da9190612949565b60405180910390f35b3480156104ef57600080fd5b506104f8610ce4565b60405161050591906129df565b60405180910390f35b34801561051a57600080fd5b50610523610cea565b60405161053091906129df565b60405180910390f35b34801561054557600080fd5b5061054e610cf0565b60405161055b919061283b565b60405180910390f35b34801561057057600080fd5b5061058b60048036038101906105869190612c34565b610d03565b60405161059891906129df565b60405180910390f35b3480156105ad57600080fd5b506105b6610dbd565b005b3480156105c457600080fd5b506105df60048036038101906105da9190612c61565b610dd1565b005b3480156105ed57600080fd5b506105f6610eb4565b6040516106039190612949565b60405180910390f35b34801561061857600080fd5b50610621610ede565b60405161062e91906129df565b60405180910390f35b34801561064357600080fd5b5061064c610ee4565b60405161065991906128e6565b60405180910390f35b61067c6004803603810190610677919061276e565b610f76565b005b34801561068a57600080fd5b506106a560048036038101906106a09190612ccd565b61114d565b005b3480156106b357600080fd5b506106bc611163565b6040516106c991906128e6565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f4919061276e565b6111f1565b005b34801561070757600080fd5b50610722600480360381019061071d9190612dae565b611203565b005b34801561073057600080fd5b5061074b6004803603810190610746919061276e565b611220565b60405161075891906128e6565b60405180910390f35b34801561076d57600080fd5b5061078860048036038101906107839190612e31565b611370565b005b34801561079657600080fd5b506107b160048036038101906107ac9190612e31565b611395565b005b3480156107bf57600080fd5b506107da60048036038101906107d59190612e5e565b6113ba565b6040516107e7919061283b565b60405180910390f35b3480156107fc57600080fd5b5061080561144e565b60405161081291906128e6565b60405180910390f35b34801561082757600080fd5b50610842600480360381019061083d9190612c34565b6114dc565b005b34801561085057600080fd5b5061086b6004803603810190610866919061276e565b611562565b005b610875611574565b80600d8190555050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108f257506108f1826115fb565b5b9050919050565b60606000805461090890612ecd565b80601f016020809104026020016040519081016040528092919081815260200182805461093490612ecd565b80156109815780601f1061095657610100808354040283529160200191610981565b820191906000526020600020905b81548152906001019060200180831161096457829003601f168201915b5050505050905090565b6000610996826116dd565b506109a082611765565b9050919050565b6109b982826109b46117a2565b6117aa565b5050565b6000600b54905090565b600d5481565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a3f5760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610a369190612949565b60405180910390fd5b6000610a538383610a4e6117a2565b6117bc565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ac9578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610ac093929190612efe565b60405180910390fd5b50505050565b60008030612710600f5485610ae49190612f64565b610aee9190612fd5565b915091509250929050565b610b01611574565b6000610b0b6109bd565b14610b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4290613052565b60405180910390fd5b6000600190506000610b5b6119d6565b905060005b82811015610bcf576000600b54600d54610b7a9190613072565b83610b8591906130a6565b9050600b60008154610b96906130d7565b9190508190555060006001610baa83611a0e565b610bb4919061311f565b9050610bc03382611b11565b50508080600101915050610b60565b505050565b610bdc611574565b610be4611b2f565b610bec610eb4565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c569061319f565b60405180910390fd5b610c67611b75565b565b610c8483838360405180602001604052806000815250611203565b505050565b610c91611574565b8060119081610ca0919061336b565b5050565b601260019054906101000a900460ff1681565b610cbf611574565b8060109081610cce919061336b565b5050565b6000610cdd826116dd565b9050919050565b600c5481565b600f5481565b601260009054906101000a900460ff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d765760006040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610d6d9190612949565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dc5611574565b610dcf6000611b7f565b565b610dd9611574565b600d5482610de56109bd565b610def919061311f565b1115610e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2790613489565b60405180910390fd5b6000610e3a6119d6565b905060005b83811015610eae576000600b54600d54610e599190613072565b83610e6491906130a6565b9050600b60008154610e75906130d7565b9190508190555060006001610e8983611a0e565b610e93919061311f565b9050610e9f8582611b11565b50508080600101915050610e3f565b50505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5481565b606060018054610ef390612ecd565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1f90612ecd565b8015610f6c5780601f10610f4157610100808354040283529160200191610f6c565b820191906000526020600020905b815481529060010190602001808311610f4f57829003601f168201915b5050505050905090565b6000610f806109bd565b9050601260009054906101000a900460ff16610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc8906134f5565b60405180910390fd5b600082118015610fe35750600e548211155b611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101990613561565b60405180910390fd5b600d548282611031919061311f565b1115611072576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611069906135cd565b60405180910390fd5b600c54826110809190612f64565b3410156110c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b990613639565b60405180910390fd5b60006110cc6119d6565b905060005b83811015611147576000600b54600d546110eb9190613072565b836110f691906130a6565b9050600b60008154611107906130d7565b919050819055506000600161111b83611a0e565b611125919061311f565b90506111386111326117a2565b82611b11565b505080806001019150506110d1565b50505050565b61115f6111586117a2565b8383611c45565b5050565b6011805461117090612ecd565b80601f016020809104026020016040519081016040528092919081815260200182805461119c90612ecd565b80156111e95780601f106111be576101008083540402835291602001916111e9565b820191906000526020600020905b8154815290600101906020018083116111cc57829003601f168201915b505050505081565b6111f9611574565b80600e8190555050565b61120e8484846109cd565b61121a84848484611db4565b50505050565b6060600073ffffffffffffffffffffffffffffffffffffffff1661124383611f6b565b73ffffffffffffffffffffffffffffffffffffffff1603611299576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611290906136cb565b60405180910390fd5b60001515601260019054906101000a900460ff16151503611312576000601180546112c390612ecd565b9050116112df576040518060200160405280600081525061130b565b60116112ea83611fa8565b6040516020016112fb9291906137f6565b6040516020818303038152906040525b905061136b565b600061131c612076565b9050600081511161133c5760405180602001604052806000815250611367565b8061134684611fa8565b604051602001611357929190613825565b6040516020818303038152906040525b9150505b919050565b611378611574565b80601260006101000a81548160ff02191690831515021790555050565b61139d611574565b80601260016101000a81548160ff02191690831515021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6010805461145b90612ecd565b80601f016020809104026020016040519081016040528092919081815260200182805461148790612ecd565b80156114d45780601f106114a9576101008083540402835291602001916114d4565b820191906000526020600020905b8154815290600101906020018083116114b757829003601f168201915b505050505081565b6114e4611574565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115565760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161154d9190612949565b60405180910390fd5b61155f81611b7f565b50565b61156a611574565b80600c8190555050565b61157c6117a2565b73ffffffffffffffffffffffffffffffffffffffff1661159a610eb4565b73ffffffffffffffffffffffffffffffffffffffff16146115f9576115bd6117a2565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016115f09190612949565b60405180910390fd5b565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116c657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806116d657506116d582612108565b5b9050919050565b6000806116e983611f6b565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361175c57826040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161175391906129df565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b6117b78383836001612172565b505050565b6000806117c884611f6b565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461180a57611809818486612337565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461189b5761184c600085600080612172565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461191e576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b6000600b544243406040516020016119f0939291906138a0565b6040516020818303038152906040528051906020012060001c905090565b600080600854600954611a219190613072565b90506000806000600a6000600186611a399190613072565b81526020019081526020016000205403611a6157600183611a5a9190613072565b9150611a84565b600a6000600185611a729190613072565b81526020019081526020016000205491505b6000600a60008781526020019081526020016000205403611abf5784905081600a600087815260200190815260200160002081905550611aee565b600a600086815260200190815260200160002054905081600a6000878152602001908152602001600020819055505b60086000815480929190611b01906130d7565b9190505550809350505050919050565b611b2b8282604051806020016040528060008152506123fb565b5050565b600260075403611b6b576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600781905550565b6001600781905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cb657816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401611cad9190612949565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611da7919061283b565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115611f65578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02611df86117a2565b8685856040518563ffffffff1660e01b8152600401611e1a9493929190613932565b6020604051808303816000875af1925050508015611e5657506040513d601f19601f82011682018060405250810190611e539190613993565b60015b611eda573d8060008114611e86576040519150601f19603f3d011682016040523d82523d6000602084013e611e8b565b606091505b506000815103611ed257836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611ec99190612949565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611f6357836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611f5a9190612949565b60405180910390fd5b505b50505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b606060006001611fb784612417565b01905060008167ffffffffffffffff811115611fd657611fd5612ac0565b5b6040519080825280601f01601f1916602001820160405280156120085781602001600182028036833780820191505090505b509050600082602001820190505b60011561206b578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161205f5761205e612fa6565b5b04945060008503612016575b819350505050919050565b60606010805461208590612ecd565b80601f01602080910402602001604051908101604052809291908181526020018280546120b190612ecd565b80156120fe5780601f106120d3576101008083540402835291602001916120fe565b820191906000526020600020905b8154815290600101906020018083116120e157829003601f168201915b5050505050905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b80806121ab5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156122df5760006121bb846116dd565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561222657508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015612239575061223781846113ba565b155b1561227b57826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016122729190612949565b60405180910390fd5b81156122dd57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b61234283838361256a565b6123f657600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123b757806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016123ae91906129df565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016123ed929190612a8d565b60405180910390fd5b505050565b612405838361262b565b6124126000848484611db4565b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612475577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161246b5761246a612fa6565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106124b2576d04ee2d6d415b85acef810000000083816124a8576124a7612fa6565b5b0492506020810190505b662386f26fc1000083106124e157662386f26fc1000083816124d7576124d6612fa6565b5b0492506010810190505b6305f5e100831061250a576305f5e1008381612500576124ff612fa6565b5b0492506008810190505b612710831061252f57612710838161252557612524612fa6565b5b0492506004810190505b60648310612552576064838161254857612547612fa6565b5b0492506002810190505b600a8310612561576001810190505b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561262257508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806125e357506125e284846113ba565b5b8061262157508273ffffffffffffffffffffffffffffffffffffffff1661260983611765565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361269d5760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016126949190612949565b60405180910390fd5b60006126ab838360006117bc565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461271f5760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016127169190612949565b60405180910390fd5b505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61274b81612738565b811461275657600080fd5b50565b60008135905061276881612742565b92915050565b6000602082840312156127845761278361272e565b5b600061279284828501612759565b91505092915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6127d08161279b565b81146127db57600080fd5b50565b6000813590506127ed816127c7565b92915050565b6000602082840312156128095761280861272e565b5b6000612817848285016127de565b91505092915050565b60008115159050919050565b61283581612820565b82525050565b6000602082019050612850600083018461282c565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612890578082015181840152602081019050612875565b60008484015250505050565b6000601f19601f8301169050919050565b60006128b882612856565b6128c28185612861565b93506128d2818560208601612872565b6128db8161289c565b840191505092915050565b6000602082019050818103600083015261290081846128ad565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061293382612908565b9050919050565b61294381612928565b82525050565b600060208201905061295e600083018461293a565b92915050565b61296d81612928565b811461297857600080fd5b50565b60008135905061298a81612964565b92915050565b600080604083850312156129a7576129a661272e565b5b60006129b58582860161297b565b92505060206129c685828601612759565b9150509250929050565b6129d981612738565b82525050565b60006020820190506129f460008301846129d0565b92915050565b600080600060608486031215612a1357612a1261272e565b5b6000612a218682870161297b565b9350506020612a328682870161297b565b9250506040612a4386828701612759565b9150509250925092565b60008060408385031215612a6457612a6361272e565b5b6000612a7285828601612759565b9250506020612a8385828601612759565b9150509250929050565b6000604082019050612aa2600083018561293a565b612aaf60208301846129d0565b9392505050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612af88261289c565b810181811067ffffffffffffffff82111715612b1757612b16612ac0565b5b80604052505050565b6000612b2a612724565b9050612b368282612aef565b919050565b600067ffffffffffffffff821115612b5657612b55612ac0565b5b612b5f8261289c565b9050602081019050919050565b82818337600083830152505050565b6000612b8e612b8984612b3b565b612b20565b905082815260208101848484011115612baa57612ba9612abb565b5b612bb5848285612b6c565b509392505050565b600082601f830112612bd257612bd1612ab6565b5b8135612be2848260208601612b7b565b91505092915050565b600060208284031215612c0157612c0061272e565b5b600082013567ffffffffffffffff811115612c1f57612c1e612733565b5b612c2b84828501612bbd565b91505092915050565b600060208284031215612c4a57612c4961272e565b5b6000612c588482850161297b565b91505092915050565b60008060408385031215612c7857612c7761272e565b5b6000612c8685828601612759565b9250506020612c978582860161297b565b9150509250929050565b612caa81612820565b8114612cb557600080fd5b50565b600081359050612cc781612ca1565b92915050565b60008060408385031215612ce457612ce361272e565b5b6000612cf28582860161297b565b9250506020612d0385828601612cb8565b9150509250929050565b600067ffffffffffffffff821115612d2857612d27612ac0565b5b612d318261289c565b9050602081019050919050565b6000612d51612d4c84612d0d565b612b20565b905082815260208101848484011115612d6d57612d6c612abb565b5b612d78848285612b6c565b509392505050565b600082601f830112612d9557612d94612ab6565b5b8135612da5848260208601612d3e565b91505092915050565b60008060008060808587031215612dc857612dc761272e565b5b6000612dd68782880161297b565b9450506020612de78782880161297b565b9350506040612df887828801612759565b925050606085013567ffffffffffffffff811115612e1957612e18612733565b5b612e2587828801612d80565b91505092959194509250565b600060208284031215612e4757612e4661272e565b5b6000612e5584828501612cb8565b91505092915050565b60008060408385031215612e7557612e7461272e565b5b6000612e838582860161297b565b9250506020612e948582860161297b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612ee557607f821691505b602082108103612ef857612ef7612e9e565b5b50919050565b6000606082019050612f13600083018661293a565b612f2060208301856129d0565b612f2d604083018461293a565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f6f82612738565b9150612f7a83612738565b9250828202612f8881612738565b91508282048414831517612f9f57612f9e612f35565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612fe082612738565b9150612feb83612738565b925082612ffb57612ffa612fa6565b5b828204905092915050565b7f416c7265616479205265736572766564204a757374696e730000000000000000600082015250565b600061303c601883612861565b915061304782613006565b602082019050919050565b6000602082019050818103600083015261306b8161302f565b9050919050565b600061307d82612738565b915061308883612738565b92508282039050818111156130a05761309f612f35565b5b92915050565b60006130b182612738565b91506130bc83612738565b9250826130cc576130cb612fa6565b5b828206905092915050565b60006130e282612738565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361311457613113612f35565b5b600182019050919050565b600061312a82612738565b915061313583612738565b925082820190508082111561314d5761314c612f35565b5b92915050565b7f5769746864726177616c20556e7375636365737366756c000000000000000000600082015250565b6000613189601783612861565b915061319482613153565b602082019050919050565b600060208201905081810360008301526131b88161317c565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026132217fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826131e4565b61322b86836131e4565b95508019841693508086168417925050509392505050565b6000819050919050565b600061326861326361325e84612738565b613243565b612738565b9050919050565b6000819050919050565b6132828361324d565b61329661328e8261326f565b8484546131f1565b825550505050565b600090565b6132ab61329e565b6132b6818484613279565b505050565b5b818110156132da576132cf6000826132a3565b6001810190506132bc565b5050565b601f82111561331f576132f0816131bf565b6132f9846131d4565b81016020851015613308578190505b61331c613314856131d4565b8301826132bb565b50505b505050565b600082821c905092915050565b600061334260001984600802613324565b1980831691505092915050565b600061335b8383613331565b9150826002028217905092915050565b61337482612856565b67ffffffffffffffff81111561338d5761338c612ac0565b5b6133978254612ecd565b6133a28282856132de565b600060209050601f8311600181146133d557600084156133c3578287015190505b6133cd858261334f565b865550613435565b601f1984166133e3866131bf565b60005b8281101561340b578489015182556001820191506020850194506020810190506133e6565b868310156134285784890151613424601f891682613331565b8355505b6001600288020188555050505b505050505050565b7f446f6e7420686176652074686174206d616e79204a757374696e732100000000600082015250565b6000613473601c83612861565b915061347e8261343d565b602082019050919050565b600060208201905081810360008301526134a281613466565b9050919050565b7f53616c65206e6f74206f70656e2074727920616761696e206c61746572210000600082015250565b60006134df601e83612861565b91506134ea826134a9565b602082019050919050565b6000602082019050818103600083015261350e816134d2565b9050919050565b7f546f6f206d616e79204a757374696e73206174206f6e63652100000000000000600082015250565b600061354b601983612861565b915061355682613515565b602082019050919050565b6000602082019050818103600083015261357a8161353e565b9050919050565b7f416c6c206f7574206f66204a757374696e732100000000000000000000000000600082015250565b60006135b7601383612861565b91506135c282613581565b602082019050919050565b600060208201905081810360008301526135e6816135aa565b9050919050565b7f4e6f7420656e6f75676820417661782100000000000000000000000000000000600082015250565b6000613623601083612861565b915061362e826135ed565b602082019050919050565b6000602082019050818103600083015261365281613616565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006136b5602f83612861565b91506136c082613659565b604082019050919050565b600060208201905081810360008301526136e4816136a8565b9050919050565b600081905092915050565b6000815461370381612ecd565b61370d81866136eb565b94506001821660008114613728576001811461373d57613770565b60ff1983168652811515820286019350613770565b613746856131bf565b60005b8381101561376857815481890152600182019150602081019050613749565b838801955050505b50505092915050565b600061378482612856565b61378e81856136eb565b935061379e818560208601612872565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b60006137e06005836136eb565b91506137eb826137aa565b600582019050919050565b600061380282856136f6565b915061380e8284613779565b9150613819826137d3565b91508190509392505050565b60006138318285613779565b915061383d8284613779565b9150613848826137d3565b91508190509392505050565b6000819050919050565b61386f61386a82612738565b613854565b82525050565b6000819050919050565b6000819050919050565b61389a61389582613875565b61387f565b82525050565b60006138ac828661385e565b6020820191506138bc828561385e565b6020820191506138cc8284613889565b602082019150819050949350505050565b600081519050919050565b600082825260208201905092915050565b6000613904826138dd565b61390e81856138e8565b935061391e818560208601612872565b6139278161289c565b840191505092915050565b6000608082019050613947600083018761293a565b613954602083018661293a565b61396160408301856129d0565b818103606083015261397381846138f9565b905095945050505050565b60008151905061398d816127c7565b92915050565b6000602082840312156139a9576139a861272e565b5b60006139b78482850161397e565b9150509291505056fea264697066735822122028273fd9ab12fbc79d26d5456c9c754530486a32c91945b9c8b7d1c64fe283d464736f6c6343000818003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d64616a53663478666e72556e4d4e31475144456e47313335415879504336516b6e595a6b6a384e56627a62772f00000000000000000000