[ { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyMinted", "type": "error" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "ExceedsMaxMint", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "NotAllowed", "type": "error" }, { "inputs": [], "name": "NotEnoughAVAX", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "WrongAmount", "type": "error" }, { "inputs": [], "name": "WrongPhase", "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": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "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": "MAX_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_minters", "type": "address[]" } ], "name": "addAllowlist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_owners", "type": "address[]" } ], "name": "airdrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "allowlistAllocation", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "allowlistMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cost", "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": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxAllowlistMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxPublicMint", "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": "phase", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "publicMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "publicMinted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "_tokenAmount", "type": "uint256" } ], "name": "recoverERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "recoverERC721", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_minters", "type": "address[]" } ], "name": "removeAllowlist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "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": "payable", "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": "payable", "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": "baseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_cost", "type": "uint256" } ], "name": "setCost", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "uint96", "name": "_feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_allowlistMint", "type": "uint256" }, { "internalType": "uint256", "name": "_publicMint", "type": "uint256" } ], "name": "setMaxMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_phase", "type": "uint256" } ], "name": "setPhase", "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": "_amount", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" } ], "name": "teamAllocation", "outputs": [], "stateMutability": "nonpayable", "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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405266f8b0a10e470000600c556002600d556005600e553480156200002657600080fd5b50604051620041fd380380620041fd83398181016040528101906200004c919062000465565b6040518060400160405280600b81526020017f4d79737465727920426f780000000000000000000000000000000000000000008152506040518060400160405280600481526020017f424f5858000000000000000000000000000000000000000000000000000000008152508160029081620000c9919062000726565b508060039081620000db919062000726565b50620000ec6200012e60201b60201c565b600081905550505062000114620001086200013760201b60201c565b6200013f60201b60201c565b6200012682826200020560201b60201c565b505062000928565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000215620003a860201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff16111562000276576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200026d9062000894565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002df9062000906565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600960008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6000612710905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003e482620003b7565b9050919050565b620003f681620003d7565b81146200040257600080fd5b50565b6000815190506200041681620003eb565b92915050565b60006bffffffffffffffffffffffff82169050919050565b6200043f816200041c565b81146200044b57600080fd5b50565b6000815190506200045f8162000434565b92915050565b600080604083850312156200047f576200047e620003b2565b5b60006200048f8582860162000405565b9250506020620004a2858286016200044e565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200052e57607f821691505b602082108103620005445762000543620004e6565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005ae7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200056f565b620005ba86836200056f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200060762000601620005fb84620005d2565b620005dc565b620005d2565b9050919050565b6000819050919050565b6200062383620005e6565b6200063b62000632826200060e565b8484546200057c565b825550505050565b600090565b6200065262000643565b6200065f81848462000618565b505050565b5b8181101562000687576200067b60008262000648565b60018101905062000665565b5050565b601f821115620006d657620006a0816200054a565b620006ab846200055f565b81016020851015620006bb578190505b620006d3620006ca856200055f565b83018262000664565b50505b505050565b600082821c905092915050565b6000620006fb60001984600802620006db565b1980831691505092915050565b6000620007168383620006e8565b9150826002028217905092915050565b6200073182620004ac565b67ffffffffffffffff8111156200074d576200074c620004b7565b5b62000759825462000515565b620007668282856200068b565b600060209050601f8311600181146200079e576000841562000789578287015190505b62000795858262000708565b86555062000805565b601f198416620007ae866200054a565b60005b82811015620007d857848901518255600182019150602085019450602081019050620007b1565b86831015620007f85784890151620007f4601f891682620006e8565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b60006200087c602a836200080d565b915062000889826200081e565b604082019050919050565b60006020820190508181036000830152620008af816200086d565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b6000620008ee6019836200080d565b9150620008fb82620008b6565b602082019050919050565b600060208201905081810360008301526200092181620008df565b9050919050565b6138c580620009386000396000f3fe6080604052600436106102305760003560e01c806359530eb11161012e578063a22cb465116100ab578063c87b56dd1161006f578063c87b56dd146107be578063cabadaa0146107fb578063e985e9c514610826578063ebd3d96b14610863578063f2fde38b146108a057610230565b8063a22cb46514610707578063b1c9fe6e14610730578063b88d4fde1461075b578063bcb49d9e14610777578063c180526a146107a257610230565b8063819d4cc6116100f2578063819d4cc6146106365780638980f11f1461065f5780638da5cb5b146106885780639387e6dd146106b357806395d89b41146106dc57610230565b806359530eb1146105535780636352211e1461057c57806370a08231146105b9578063715018a6146105f6578063729ad39e1461060d57610230565b806323b872dd116101bc57806332cb6b0c1161018057806332cb6b0c146104a35780633ccfd60b146104ce57806342842e0e146104e557806344a0d68a1461050157806355f804b31461052a57610230565b806323b872dd146103db5780632617dd4d146103f75780632a55205a146104205780632cc826551461045e5780632db115441461048757610230565b8063095ea7b311610203578063095ea7b3146103035780631015805b1461031f57806313faede61461035c57806318160ddd1461038757806321edc4cb146103b257610230565b806301ffc9a71461023557806304634d8d1461027257806306fdde031461029b578063081812fc146102c6575b600080fd5b34801561024157600080fd5b5061025c600480360381019061025791906127f4565b6108c9565b604051610269919061283c565b60405180910390f35b34801561027e57600080fd5b50610299600480360381019061029491906128f9565b6108eb565b005b3480156102a757600080fd5b506102b0610901565b6040516102bd91906129d2565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e89190612a2a565b610993565b6040516102fa9190612a66565b60405180910390f35b61031d60048036038101906103189190612a81565b610a12565b005b34801561032b57600080fd5b5061034660048036038101906103419190612ac1565b610b56565b6040516103539190612afd565b60405180910390f35b34801561036857600080fd5b50610371610b6e565b60405161037e9190612afd565b60405180910390f35b34801561039357600080fd5b5061039c610b74565b6040516103a99190612afd565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d49190612b18565b610b8b565b005b6103f560048036038101906103f09190612b58565b610ba5565b005b34801561040357600080fd5b5061041e60048036038101906104199190612c10565b610ec7565b005b34801561042c57600080fd5b5061044760048036038101906104429190612b18565b610f62565b604051610455929190612c5d565b60405180910390f35b34801561046a57600080fd5b5061048560048036038101906104809190612a2a565b61114c565b005b6104a1600480360381019061049c9190612a2a565b61115e565b005b3480156104af57600080fd5b506104b8611318565b6040516104c59190612afd565b60405180910390f35b3480156104da57600080fd5b506104e361131e565b005b6104ff60048036038101906104fa9190612b58565b611375565b005b34801561050d57600080fd5b5061052860048036038101906105239190612a2a565b611395565b005b34801561053657600080fd5b50610551600480360381019061054c9190612db6565b6113a7565b005b34801561055f57600080fd5b5061057a60048036038101906105759190612dff565b6113c2565b005b34801561058857600080fd5b506105a3600480360381019061059e9190612a2a565b611426565b6040516105b09190612a66565b60405180910390f35b3480156105c557600080fd5b506105e060048036038101906105db9190612ac1565b611438565b6040516105ed9190612afd565b60405180910390f35b34801561060257600080fd5b5061060b6114f0565b005b34801561061957600080fd5b50610634600480360381019061062f9190612c10565b611504565b005b34801561064257600080fd5b5061065d60048036038101906106589190612a81565b6115b5565b005b34801561066b57600080fd5b5061068660048036038101906106819190612a81565b611630565b005b34801561069457600080fd5b5061069d6116bb565b6040516106aa9190612a66565b60405180910390f35b3480156106bf57600080fd5b506106da60048036038101906106d59190612c10565b6116e5565b005b3480156106e857600080fd5b506106f161177f565b6040516106fe91906129d2565b60405180910390f35b34801561071357600080fd5b5061072e60048036038101906107299190612e6b565b611811565b005b34801561073c57600080fd5b5061074561191c565b6040516107529190612afd565b60405180910390f35b61077560048036038101906107709190612f4c565b611922565b005b34801561078357600080fd5b5061078c611995565b6040516107999190612afd565b60405180910390f35b6107bc60048036038101906107b79190612a2a565b61199b565b005b3480156107ca57600080fd5b506107e560048036038101906107e09190612a2a565b611b48565b6040516107f291906129d2565b60405180910390f35b34801561080757600080fd5b50610810611be6565b60405161081d9190612afd565b60405180910390f35b34801561083257600080fd5b5061084d60048036038101906108489190612fcf565b611bec565b60405161085a919061283c565b60405180910390f35b34801561086f57600080fd5b5061088a60048036038101906108859190612ac1565b611c80565b6040516108979190612afd565b60405180910390f35b3480156108ac57600080fd5b506108c760048036038101906108c29190612ac1565b611c98565b005b60006108d482611d1b565b806108e457506108e382611dad565b5b9050919050565b6108f3611e27565b6108fd8282611ea5565b5050565b6060600280546109109061303e565b80601f016020809104026020016040519081016040528092919081815260200182805461093c9061303e565b80156109895780601f1061095e57610100808354040283529160200191610989565b820191906000526020600020905b81548152906001019060200180831161096c57829003601f168201915b5050505050905090565b600061099e8261203a565b6109d4576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a1d82611426565b90508073ffffffffffffffffffffffffffffffffffffffff16610a3e612099565b73ffffffffffffffffffffffffffffffffffffffff1614610aa157610a6a81610a65612099565b611bec565b610aa0576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600f6020528060005260406000206000915090505481565b600c5481565b6000610b7e6120a1565b6001546000540303905090565b610b93611e27565b81600d8190555080600e819055505050565b6000610bb0826120aa565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c17576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610c2384612176565b91509150610c398187610c34612099565b61219d565b610c8557610c4e86610c49612099565b611bec565b610c84576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610ceb576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cf886868660016121e1565b8015610d0357600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550610dd185610dad8888876121e7565b7c02000000000000000000000000000000000000000000000000000000001761220f565b600460008681526020019081526020016000208190555060007c0200000000000000000000000000000000000000000000000000000000841603610e575760006001850190506000600460008381526020019081526020016000205403610e55576000548114610e54578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610ebf868686600161223a565b505050505050565b610ecf611e27565b60005b82829050811015610f5d57600d5460106000858585818110610ef757610ef661306f565b5b9050602002016020810190610f0c9190612ac1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080610f55906130cd565b915050610ed2565b505050565b6000806000600a60008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036110f75760096040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b6000611101612240565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff168661112d9190613115565b611137919061319e565b90508160000151819350935050509250929050565b611154611e27565b80600b8190555050565b6002600b541461119a576040517fe2586bcc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c54816111a89190613115565b3410156111e1576040517f4a873e2c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e54600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261122f91906131cf565b1115611267576040517f49986e7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e781611273610b74565b61127d91906131cf565b11156112b5576040517f52f7657b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461130491906131cf565b92505081905550611315338261224a565b50565b6103e781565b611326611e27565b60003390508073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611371573d6000803e3d6000fd5b5050565b61139083838360405180602001604052806000815250611922565b505050565b61139d611e27565b80600c8190555050565b6113af611e27565b80601190816113be91906133d1565b5050565b6113ca611e27565b6103e7826113d6610b74565b6113e091906131cf565b1115611418576040517f52f7657b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611422818361224a565b5050565b6000611431826120aa565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361149f576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b6114f8611e27565b6115026000612405565b565b61150c611e27565b6103e78282905061151b610b74565b61152591906131cf565b111561155d576040517f52f7657b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b828290508110156115b05761159d8383838181106115815761158061306f565b5b90506020020160208101906115969190612ac1565b600161224a565b80806115a8906130cd565b915050611560565b505050565b6115bd611e27565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b81526004016115fa939291906134a3565b600060405180830381600087803b15801561161457600080fd5b505af1158015611628573d6000803e3d6000fd5b505050505050565b611638611e27565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611673929190612c5d565b6020604051808303816000875af1158015611692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b691906134ef565b505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6116ed611e27565b60005b8282905081101561177a576000601060008585858181106117145761171361306f565b5b90506020020160208101906117299190612ac1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080611772906130cd565b9150506116f0565b505050565b60606003805461178e9061303e565b80601f01602080910402602001604051908101604052809291908181526020018280546117ba9061303e565b80156118075780601f106117dc57610100808354040283529160200191611807565b820191906000526020600020905b8154815290600101906020018083116117ea57829003601f168201915b5050505050905090565b806007600061181e612099565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166118cb612099565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611910919061283c565b60405180910390a35050565b600b5481565b61192d848484610ba5565b60008373ffffffffffffffffffffffffffffffffffffffff163b1461198f57611958848484846124cb565b61198e576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b600d5481565b6001600b54146119d7576040517fe2586bcc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c54816119e59190613115565b341015611a1e576040517f4a873e2c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115611a97576040517f49986e7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e781611aa3610b74565b611aad91906131cf565b1115611ae5576040517f52f7657b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b34919061351c565b92505081905550611b45338261224a565b50565b6060611b538261203a565b611b89576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611b9361261b565b90506000815103611bb35760405180602001604052806000815250611bde565b80611bbd846126ad565b604051602001611bce92919061358c565b6040516020818303038152906040525b915050919050565b600e5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60106020528060005260406000206000915090505481565b611ca0611e27565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0690613622565b60405180910390fd5b611d1881612405565b50565b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d7657506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611da65750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611e205750611e1f826126fd565b5b9050919050565b611e2f612767565b73ffffffffffffffffffffffffffffffffffffffff16611e4d6116bb565b73ffffffffffffffffffffffffffffffffffffffff1614611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a9061368e565b60405180910390fd5b565b611ead612240565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115611f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0290613720565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f719061378c565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600960008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6000816120456120a1565b11158015612054575060005482105b8015612092575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b60006001905090565b600080829050806120b96120a1565b1161213f5760005481101561213e5760006004600083815260200190815260200160002054905060007c010000000000000000000000000000000000000000000000000000000082160361213c575b60008103612132576004600083600190039350838152602001908152602001600020549050612108565b8092505050612171565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e86121fe86868461276f565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b6000612710905090565b6000805490506000820361228a576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61229760008483856121e1565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061230e836122ff60008660006121e7565b61230885612778565b1761220f565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b8181146123af57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600181019050612374565b50600082036123ea576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000819055505050612400600084838561223a565b505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026124f1612099565b8786866040518563ffffffff1660e01b81526004016125139493929190613801565b6020604051808303816000875af192505050801561254f57506040513d601f19601f8201168201806040525081019061254c9190613862565b60015b6125c8573d806000811461257f576040519150601f19603f3d011682016040523d82523d6000602084013e612584565b606091505b5060008151036125c0576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60606011805461262a9061303e565b80601f01602080910402602001604051908101604052809291908181526020018280546126569061303e565b80156126a35780601f10612678576101008083540402835291602001916126a3565b820191906000526020600020905b81548152906001019060200180831161268657829003601f168201915b5050505050905090565b606060a060405101806040526020810391506000825281835b6001156126e857600184039350600a81066030018453600a81049050806126c6575b50828103602084039350808452505050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b60009392505050565b60006001821460e11b9050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6127d18161279c565b81146127dc57600080fd5b50565b6000813590506127ee816127c8565b92915050565b60006020828403121561280a57612809612792565b5b6000612818848285016127df565b91505092915050565b60008115159050919050565b61283681612821565b82525050565b6000602082019050612851600083018461282d565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061288282612857565b9050919050565b61289281612877565b811461289d57600080fd5b50565b6000813590506128af81612889565b92915050565b60006bffffffffffffffffffffffff82169050919050565b6128d6816128b5565b81146128e157600080fd5b50565b6000813590506128f3816128cd565b92915050565b600080604083850312156129105761290f612792565b5b600061291e858286016128a0565b925050602061292f858286016128e4565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612973578082015181840152602081019050612958565b83811115612982576000848401525b50505050565b6000601f19601f8301169050919050565b60006129a482612939565b6129ae8185612944565b93506129be818560208601612955565b6129c781612988565b840191505092915050565b600060208201905081810360008301526129ec8184612999565b905092915050565b6000819050919050565b612a07816129f4565b8114612a1257600080fd5b50565b600081359050612a24816129fe565b92915050565b600060208284031215612a4057612a3f612792565b5b6000612a4e84828501612a15565b91505092915050565b612a6081612877565b82525050565b6000602082019050612a7b6000830184612a57565b92915050565b60008060408385031215612a9857612a97612792565b5b6000612aa6858286016128a0565b9250506020612ab785828601612a15565b9150509250929050565b600060208284031215612ad757612ad6612792565b5b6000612ae5848285016128a0565b91505092915050565b612af7816129f4565b82525050565b6000602082019050612b126000830184612aee565b92915050565b60008060408385031215612b2f57612b2e612792565b5b6000612b3d85828601612a15565b9250506020612b4e85828601612a15565b9150509250929050565b600080600060608486031215612b7157612b70612792565b5b6000612b7f868287016128a0565b9350506020612b90868287016128a0565b9250506040612ba186828701612a15565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112612bd057612bcf612bab565b5b8235905067ffffffffffffffff811115612bed57612bec612bb0565b5b602083019150836020820283011115612c0957612c08612bb5565b5b9250929050565b60008060208385031215612c2757612c26612792565b5b600083013567ffffffffffffffff811115612c4557612c44612797565b5b612c5185828601612bba565b92509250509250929050565b6000604082019050612c726000830185612a57565b612c7f6020830184612aee565b9392505050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cc382612988565b810181811067ffffffffffffffff82111715612ce257612ce1612c8b565b5b80604052505050565b6000612cf5612788565b9050612d018282612cba565b919050565b600067ffffffffffffffff821115612d2157612d20612c8b565b5b612d2a82612988565b9050602081019050919050565b82818337600083830152505050565b6000612d59612d5484612d06565b612ceb565b905082815260208101848484011115612d7557612d74612c86565b5b612d80848285612d37565b509392505050565b600082601f830112612d9d57612d9c612bab565b5b8135612dad848260208601612d46565b91505092915050565b600060208284031215612dcc57612dcb612792565b5b600082013567ffffffffffffffff811115612dea57612de9612797565b5b612df684828501612d88565b91505092915050565b60008060408385031215612e1657612e15612792565b5b6000612e2485828601612a15565b9250506020612e35858286016128a0565b9150509250929050565b612e4881612821565b8114612e5357600080fd5b50565b600081359050612e6581612e3f565b92915050565b60008060408385031215612e8257612e81612792565b5b6000612e90858286016128a0565b9250506020612ea185828601612e56565b9150509250929050565b600067ffffffffffffffff821115612ec657612ec5612c8b565b5b612ecf82612988565b9050602081019050919050565b6000612eef612eea84612eab565b612ceb565b905082815260208101848484011115612f0b57612f0a612c86565b5b612f16848285612d37565b509392505050565b600082601f830112612f3357612f32612bab565b5b8135612f43848260208601612edc565b91505092915050565b60008060008060808587031215612f6657612f65612792565b5b6000612f74878288016128a0565b9450506020612f85878288016128a0565b9350506040612f9687828801612a15565b925050606085013567ffffffffffffffff811115612fb757612fb6612797565b5b612fc387828801612f1e565b91505092959194509250565b60008060408385031215612fe657612fe5612792565b5b6000612ff4858286016128a0565b9250506020613005858286016128a0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061305657607f821691505b6020821081036130695761306861300f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130d8826129f4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361310a5761310961309e565b5b600182019050919050565b6000613120826129f4565b915061312b836129f4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156131645761316361309e565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006131a9826129f4565b91506131b4836129f4565b9250826131c4576131c361316f565b5b828204905092915050565b60006131da826129f4565b91506131e5836129f4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561321a5761321961309e565b5b828201905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026132877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261324a565b613291868361324a565b95508019841693508086168417925050509392505050565b6000819050919050565b60006132ce6132c96132c4846129f4565b6132a9565b6129f4565b9050919050565b6000819050919050565b6132e8836132b3565b6132fc6132f4826132d5565b848454613257565b825550505050565b600090565b613311613304565b61331c8184846132df565b505050565b5b8181101561334057613335600082613309565b600181019050613322565b5050565b601f8211156133855761335681613225565b61335f8461323a565b8101602085101561336e578190505b61338261337a8561323a565b830182613321565b50505b505050565b600082821c905092915050565b60006133a86000198460080261338a565b1980831691505092915050565b60006133c18383613397565b9150826002028217905092915050565b6133da82612939565b67ffffffffffffffff8111156133f3576133f2612c8b565b5b6133fd825461303e565b613408828285613344565b600060209050601f83116001811461343b5760008415613429578287015190505b61343385826133b5565b86555061349b565b601f19841661344986613225565b60005b828110156134715784890151825560018201915060208501945060208101905061344c565b8683101561348e578489015161348a601f891682613397565b8355505b6001600288020188555050505b505050505050565b60006060820190506134b86000830186612a57565b6134c56020830185612a57565b6134d26040830184612aee565b949350505050565b6000815190506134e981612e3f565b92915050565b60006020828403121561350557613504612792565b5b6000613513848285016134da565b91505092915050565b6000613527826129f4565b9150613532836129f4565b9250828210156135455761354461309e565b5b828203905092915050565b600081905092915050565b600061356682612939565b6135708185613550565b9350613580818560208601612955565b80840191505092915050565b6000613598828561355b565b91506135a4828461355b565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061360c602683612944565b9150613617826135b0565b604082019050919050565b6000602082019050818103600083015261363b816135ff565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613678602083612944565b915061368382613642565b602082019050919050565b600060208201905081810360008301526136a78161366b565b9050919050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b600061370a602a83612944565b9150613715826136ae565b604082019050919050565b60006020820190508181036000830152613739816136fd565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b6000613776601983612944565b915061378182613740565b602082019050919050565b600060208201905081810360008301526137a581613769565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006137d3826137ac565b6137dd81856137b7565b93506137ed818560208601612955565b6137f681612988565b840191505092915050565b60006080820190506138166000830187612a57565b6138236020830186612a57565b6138306040830185612aee565b818103606083015261384281846137c8565b905095945050505050565b60008151905061385c816127c8565b92915050565b60006020828403121561387857613877612792565b5b60006138868482850161384d565b9150509291505056fea26469706673582212207395a0d79fe1b313a8bc02f866954ea5c9ca2a5024d48f6403cd1d1da4b6ee5c64736f6c634300080f0033000000000000000000000000dffa523c71903c52abf36d9e865bad2c6455f6df0000000000000000000000000000000000000000000000000000000000000384