1 tx
1 call
constructor
constructor()
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
explicitOwnershipOf
viewfunction explicitOwnershipOf(uint256 tokenId) view returns (tuple)
explicitOwnershipsOf
viewfunction explicitOwnershipsOf(uint256[] tokenIds) view returns (tuple[])
getActiveStageFromTimestamp
viewfunction getActiveStageFromTimestamp(uint64 timestamp) view returns (uint256)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getGlobalWalletLimit
viewfunction getGlobalWalletLimit() view returns (uint256)
getMaxMintableSupply
viewfunction getMaxMintableSupply() view returns (uint256)
getNumberStages
viewfunction getNumberStages() view returns (uint256)
getStageInfo
viewfunction getStageInfo(uint256 index) view returns (tuple, uint32, uint256)
getTokenURISuffix
viewfunction getTokenURISuffix() view returns (string)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
min_fee
viewfunction min_fee() view returns (uint256)
name
viewfunction name() view returns (string)
OPERATOR_FILTER_REGISTRY
viewfunction OPERATOR_FILTER_REGISTRY() view returns (address)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
threshold
viewfunction threshold() view returns (uint256)
tokensOfOwner
viewfunction tokensOfOwner(address owner) view returns (uint256[])
tokensOfOwnerIn
viewfunction tokensOfOwnerIn(address owner, uint256 start, uint256 stop) view returns (uint256[])
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalMintedByAddress
viewfunction totalMintedByAddress(address a) view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
approve
payablefunction approve(address operator, uint256 tokenId) payable
mint
payablefunction mint(uint32 qty, bytes32[] proof) payable
ownerMint
payablefunction ownerMint(uint32 qty, address to) payable
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
payablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data) payable
safeTransferFrom
payablefunction safeTransferFrom(address from, address to, uint256 tokenId) payable
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setBaseURI
nonpayablefunction setBaseURI(string baseURI)
setBaseURIPermanent
nonpayablefunction setBaseURIPermanent()
setGlobalWalletLimit
nonpayablefunction setGlobalWalletLimit(uint256 globalWalletLimit)
setMaxMintableSupply
nonpayablefunction setMaxMintableSupply(uint256 maxMintableSupply)
setStages
nonpayablefunction setStages(tuple[] newStages)
setTokenURISuffix
nonpayablefunction setTokenURISuffix(string suffix)
transferFrom
payablefunction transferFrom(address from, address to, uint256 tokenId) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateStage
nonpayablefunction updateStage(uint256 index, uint80 cost, uint32 walletLimit, bytes32 merkleRoot, uint24 maxStageSupply, uint64 startTimeUnixSeconds, uint64 endTimeUnixSeconds)
withdraw
nonpayablefunction withdraw()
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
ConsecutiveTransfer
event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PermanentBaseURI
event PermanentBaseURI(string baseURI)
SetActiveStage
event SetActiveStage(uint256 activeStage)
SetBaseURI
event SetBaseURI(string baseURI)
SetGlobalWalletLimit
event SetGlobalWalletLimit(uint256 globalWalletLimit)
SetMaxMintableSupply
event SetMaxMintableSupply(uint256 maxMintableSupply)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
UpdateStage
event UpdateStage(uint256 stage, uint80 cost, uint32 walletLimit, bytes32 merkleRoot, uint24 maxStageSupply, uint64 startTimeUnixSeconds, uint64 endTimeUnixSeconds)
Withdraw
event Withdraw(uint256 value)
errors
ApprovalCallerNotOwnerNorApproved
error ApprovalCallerNotOwnerNorApproved()
ApprovalQueryForNonexistentToken
error ApprovalQueryForNonexistentToken()
BalanceQueryForZeroAddress
error BalanceQueryForZeroAddress()
CannotIncreaseMaxMintableSupply
error CannotIncreaseMaxMintableSupply()
CannotUpdatePermanentBaseURI
error CannotUpdatePermanentBaseURI()
GlobalWalletLimitOverflow
error GlobalWalletLimitOverflow()
InsufficientStageTimeGap
error InsufficientStageTimeGap()
InvalidProof
error InvalidProof()
InvalidQueryRange
error InvalidQueryRange()
InvalidStage
error InvalidStage()
InvalidStageArgsLength
error InvalidStageArgsLength()
InvalidStartAndEndTimestamp
error InvalidStartAndEndTimestamp()
MintERC2309QuantityExceedsLimit
error MintERC2309QuantityExceedsLimit()
MintToZeroAddress
error MintToZeroAddress()
MintZeroQuantity
error MintZeroQuantity()
NoSupplyLeft
error NoSupplyLeft()
NotEnoughValue
error NotEnoughValue()
OperatorNotAllowed
error OperatorNotAllowed(address operator)
OwnerQueryForNonexistentToken
error OwnerQueryForNonexistentToken()
OwnershipNotInitializedForExtraData
error OwnershipNotInitializedForExtraData()
StageSupplyExceeded
error StageSupplyExceeded()
TimestampExpired
error TimestampExpired()
TransferCallerNotOwnerNorApproved
error TransferCallerNotOwnerNorApproved()
TransferFromIncorrectOwner
error TransferFromIncorrectOwner()
TransferToNonERC721ReceiverImplementer
error TransferToNonERC721ReceiverImplementer()
TransferToZeroAddress
error TransferToZeroAddress()
URIQueryForNonexistentToken
error URIQueryForNonexistentToken()
WalletGlobalLimitExceeded
error WalletGlobalLimitExceeded()
WalletStageLimitExceeded
error WalletStageLimitExceeded()
WithdrawFailed
error WithdrawFailed()
creation bytecode
0x61014d600b556005600c908155600d80546001600160a01b031916739e6865daeeedd093ea4a4f6c9bfbbb0ce6bc8b1717905566b1a2bc2ec50000600e556729a2241af62c0000600f5560c060405260809081526b697066733a2f2f6e756c6c2f60a01b60a052601090620000759082620004cc565b50604080518082019091526005815264173539b7b760d91b6020820152601190620000a19082620004cc565b50348015620000af57600080fd5b50733cc6cdda760b79bafa08df41ecfa224f810dceb660016040518060400160405280600f81526020016e141bdb1e48151a194814185c9c9bdd608a1b8152506040518060400160405280600381526020016205054560ec1b81525081600290816200011c9190620004cc565b5060036200012b8282620004cc565b505060008055506200013d33620003d5565b60016009556daaeb6d7670e522a718067333cd4e3b1562000274578015620001ce57604051633e9f1edf60e11b81526daaeb6d7670e522a718067333cd4e90637d3e3dbe9062000194903090869060040162000598565b600060405180830381600087803b158015620001af57600080fd5b505af1158015620001c4573d6000803e3d6000fd5b5050505062000274565b6001600160a01b03821615620002135760405163a0af290360e01b81526daaeb6d7670e522a718067333cd4e9063a0af29039062000194903090869060040162000598565b604051632210724360e11b81523060048201526daaeb6d7670e522a718067333cd4e90634420e48690602401600060405180830381600087803b1580156200025a57600080fd5b505af11580156200026f573d6000803e3d6000fd5b505050505b50506040805160c08101825268015af1d78b58c4000081526005602082019081526000928201838152606083018481526364931091608085019081526364e188d960a08601908152601280546001810182559752945160039096027fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec344481018054955163ffffffff166a0100000000000000000000026001600160701b03199096166001600160501b0398909816979097179490941790955590517fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec3445830155517fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34469091018054935192516001600160401b039081166b01000000000000000000000002600160581b600160981b0319949091166301000000026001600160581b031990951662ffffff93909316929092179390931791909116179055620005b2565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200045257607f821691505b6020821081036200047357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004c757600081815260208120601f850160051c81016020861015620004a25750805b601f850160051c820191505b81811015620004c357828155600101620004ae565b5050505b505050565b81516001600160401b03811115620004e857620004e862000427565b6200050081620004f984546200043d565b8462000479565b602080601f8311600181146200053857600084156200051f5750858301515b600019600386901b1c1916600185901b178555620004c3565b600085815260208120601f198616915b82811015620005695788860151825594840194600190910190840162000548565b5085821015620005885787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b0392831681529116602082015260400190565b61351f80620005c26000396000f3fe6080604052600436106101d65760003560e01c806301ffc9a7146101db57806306fdde0314610210578063081812fc14610232578063095ea7b31461025f5780631053a81514610274578063107af24b1461028957806318160ddd1461029c57806323b872dd146102bf578063372992e4146102d25780633ccfd60b146102f257806341f434341461030757806342842e0e1461032957806342cde4e81461033c5780634b1c53b41461035257806355f804b3146103675780635bbb2177146103875780636352211e146103b457806367808a34146103d457806370a08231146103f457806370da24ee14610414578063715018a61461042957806373e1607e1461043e5780638462151c1461045e5780638da5cb5b1461048b5780638dcdb09d146104a057806395d89b41146104c057806397cf84fc146104d557806399a2557a146104f5578063a22cb46514610515578063a3759f6014610535578063a9852bfb146105d1578063aac5ab1f146105f1578063b7a9fa6014610604578063b88d4fde14610619578063c23dc68f1461062c578063c87b56dd14610659578063e985e9c514610679578063efdaa2ec146106c2578063f2fde38b146106d7578063f8d09696146106f7578063fa42717714610717575b600080fd5b3480156101e757600080fd5b506101fb6101f636600461296f565b61072d565b60405190151581526020015b60405180910390f35b34801561021c57600080fd5b5061022561077f565b60405161020791906129e4565b34801561023e57600080fd5b5061025261024d3660046129f7565b610811565b6040516102079190612a10565b61027261026d366004612a40565b610855565b005b34801561028057600080fd5b5061027261086e565b610272610297366004612ac9565b6108be565b3480156102a857600080fd5b50600154600054035b604051908152602001610207565b6102726102cd366004612b1b565b6108dc565b3480156102de57600080fd5b506102726102ed3660046129f7565b610907565b3480156102fe57600080fd5b5061027261096e565b34801561031357600080fd5b506102526daaeb6d7670e522a718067333cd4e81565b610272610337366004612b1b565b610a19565b34801561034857600080fd5b506102b1600f5481565b34801561035e57600080fd5b50600b546102b1565b34801561037357600080fd5b50610272610382366004612b57565b610a3e565b34801561039357600080fd5b506103a76103a2366004612bc8565b610aa9565b6040516102079190612c45565b3480156103c057600080fd5b506102526103cf3660046129f7565b610b5b565b3480156103e057600080fd5b506102b16103ef366004612c9e565b610b66565b34801561040057600080fd5b506102b161040f366004612cb9565b610c2e565b34801561042057600080fd5b506012546102b1565b34801561043557600080fd5b50610272610c7c565b34801561044a57600080fd5b50610272610459366004612cfe565b610c90565b34801561046a57600080fd5b5061047e610479366004612cb9565b610ef3565b6040516102079190612d76565b34801561049757600080fd5b50610252610fd9565b3480156104ac57600080fd5b506102726104bb366004612dae565b610fe8565b3480156104cc57600080fd5b50610225611476565b3480156104e157600080fd5b506102b16104f0366004612cb9565b611485565b34801561050157600080fd5b5061047e610510366004612e10565b611490565b34801561052157600080fd5b50610272610530366004612e51565b611609565b34801561054157600080fd5b506105556105503660046129f7565b61161d565b6040805184516001600160501b0316815260208086015163ffffffff90811691830191909152858301519282019290925260608086015162ffffff16908201526080808601516001600160401b039081169183019190915260a095860151169481019490945290911660c083015260e082015261010001610207565b3480156105dd57600080fd5b506102726105ec366004612b57565b61173c565b6102726105ff366004612e88565b611751565b34801561061057600080fd5b50610225611817565b610272610627366004612ed1565b611826565b34801561063857600080fd5b5061064c6106473660046129f7565b611853565b6040516102079190612fac565b34801561066557600080fd5b506102256106743660046129f7565b611896565b34801561068557600080fd5b506101fb610694366004612fba565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b3480156106ce57600080fd5b50600c546102b1565b3480156106e357600080fd5b506102726106f2366004612cb9565b61199f565b34801561070357600080fd5b506102726107123660046129f7565b611a18565b34801561072357600080fd5b506102b1600e5481565b60006301ffc9a760e01b6001600160e01b03198316148061075e57506380ac58cd60e01b6001600160e01b03198316145b806107795750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606002805461078e90612fd6565b80601f01602080910402602001604051908101604052809291908181526020018280546107ba90612fd6565b80156108075780601f106107dc57610100808354040283529160200191610807565b820191906000526020600020905b8154815290600101906020018083116107ea57829003601f168201915b5050505050905090565b600061081c82611a78565b610839576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b8161085f81611a9f565b6108698383611b4f565b505050565b610876611bef565b600a805460ff191660011790556040517fc6a6c2b165e62c9d37fc51a18ed76e5be22304bc1d337877c98f31c23e40b0f5906108b490601090613010565b60405180910390a1565b6108c6611c4e565b6108d283338484611ca7565b6108696001600955565b826001600160a01b03811633146108f6576108f633611a9f565b6109018484846121f3565b50505050565b61090f611bef565b600b5481111561093257604051630590c51360e01b815260040160405180910390fd5b600c8190556040518181527f5307de8ad7d34d5ddfd5171435c143bdc645493980f453eb5d7cdb3e494a1b35906020015b60405180910390a150565b610976611bef565b6040514790600090339083908381818185875af1925050503d80600081146109ba576040519150601f19603f3d011682016040523d82523d6000602084013e6109bf565b606091505b50509050806109e157604051631d42c86760e21b815260040160405180910390fd5b6040518281527f5b6b431d4476a211bb7d41c20d1aab9ae2321deee0d20be3d9fc9b1093fa6e3d906020015b60405180910390a15050565b826001600160a01b0381163314610a3357610a3333611a9f565b61090184848461237a565b610a46611bef565b600a5460ff1615610a6a576040516306ccad4160e41b815260040160405180910390fd5b6010610a778284836130e1565b507f23c8c9488efebfd474e85a7956de6f39b17c7ab88502d42a623db2d8e382bbaa8282604051610a0d9291906131a0565b6060816000816001600160401b03811115610ac657610ac6612ebb565b604051908082528060200260200182016040528015610aff57816020015b610aec6128fd565b815260200190600190039081610ae45790505b50905060005b828114610b5257610b2d868683818110610b2157610b216131cf565b90506020020135611853565b828281518110610b3f57610b3f6131cf565b6020908102919091010152600101610b05565b50949350505050565b600061077982612395565b6000805b601254811015610c145760128181548110610b8757610b876131cf565b60009182526020909120600260039092020101546001600160401b036301000000909104811690841610801590610bf7575060128181548110610bcc57610bcc6131cf565b60009182526020909120600260039092020101546001600160401b03600160581b9091048116908416105b15610c025792915050565b80610c0c816131fb565b915050610b6a565b5060405163e82a532960e01b815260040160405180910390fd5b60006001600160a01b038216610c57576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600560205260409020546001600160401b031690565b610c84611bef565b610c8e60006123fc565b565b610c98611bef565b6012548710610cba5760405163e82a532960e01b815260040160405180910390fd5b60018710610d27576012610ccf600189613214565b81548110610cdf57610cdf6131cf565b60009182526020909120600260039092020101546001600160401b03600160581b90910481169083161015610d2757604051636bc1af9360e01b815260040160405180910390fd5b610d31828261244e565b8560128881548110610d4557610d456131cf565b906000526020600020906003020160000160006101000a8154816001600160501b0302191690836001600160501b031602179055508460128881548110610d8e57610d8e6131cf565b9060005260206000209060030201600001600a6101000a81548163ffffffff021916908363ffffffff1602179055508360128881548110610dd157610dd16131cf565b9060005260206000209060030201600101819055508260128881548110610dfa57610dfa6131cf565b906000526020600020906003020160020160006101000a81548162ffffff021916908362ffffff1602179055508160128881548110610e3b57610e3b6131cf565b906000526020600020906003020160020160036101000a8154816001600160401b0302191690836001600160401b031602179055508060128881548110610e8457610e846131cf565b9060005260206000209060030201600201600b6101000a8154816001600160401b0302191690836001600160401b031602179055506000805160206134ca83398151915287878787878787604051610ee2979695949392919061322b565b60405180910390a150505050505050565b60606000806000610f0385610c2e565b90506000816001600160401b03811115610f1f57610f1f612ebb565b604051908082528060200260200182016040528015610f48578160200160208202803683370190505b509050610f536128fd565b60005b838614610fcd57610f6681612484565b91508160400151610fc55781516001600160a01b031615610f8657815194505b876001600160a01b0316856001600160a01b031603610fc55780838780600101985081518110610fb857610fb86131cf565b6020026020010181815250505b600101610f56565b50909695505050505050565b6008546001600160a01b031690565b610ff0611bef565b60125460005b8181101561105f57601280548061100f5761100f61327b565b60008281526020812060036000199093019283020180546001600160701b0319168155600181019190915560020180546001600160981b0319169055905580611057816131fb565b915050610ff6565b5060005b828110156109015760018110611102578383611080600184613214565b81811061108f5761108f6131cf565b905060c0020160a00160208101906110a79190612c9e565b6001600160401b03168484838181106110c2576110c26131cf565b905060c0020160800160208101906110da9190612c9e565b6001600160401b0316101561110257604051636bc1af9360e01b815260040160405180910390fd5b61115e848483818110611117576111176131cf565b905060c00201608001602081019061112f9190612c9e565b858584818110611141576111416131cf565b905060c0020160a00160208101906111599190612c9e565b61244e565b60126040518060c0016040528086868581811061117d5761117d6131cf565b61119392602060c0909202019081019150613291565b6001600160501b031681526020018686858181106111b3576111b36131cf565b905060c0020160200160208101906111cb91906132ac565b63ffffffff1681526020018686858181106111e8576111e86131cf565b905060c00201604001358152602001868685818110611209576112096131cf565b905060c00201606001602081019061122191906132c7565b62ffffff16815260200186868581811061123d5761123d6131cf565b905060c0020160800160208101906112559190612c9e565b6001600160401b03168152602001868685818110611275576112756131cf565b905060c0020160a001602081019061128d9190612c9e565b6001600160401b039081169091528254600181810185556000948552602094859020845160039093020180549585015163ffffffff16600160501b026001600160701b03199096166001600160501b0390931692909217949094178155604083015193810193909355606082015160029093018054608084015160a0909401518316600160581b02600160581b600160981b0319949093166301000000026001600160581b031990911662ffffff9095169490941793909317919091161790556000805160206134ca8339815191528185858281811061136f5761136f6131cf565b61138592602060c0909202019081019150613291565b868685818110611397576113976131cf565b905060c0020160200160208101906113af91906132ac565b8787868181106113c1576113c16131cf565b905060c00201604001358888878181106113dd576113dd6131cf565b905060c0020160600160208101906113f591906132c7565b898988818110611407576114076131cf565b905060c00201608001602081019061141f9190612c9e565b8a8a89818110611431576114316131cf565b905060c0020160a00160208101906114499190612c9e565b60405161145c979695949392919061322b565b60405180910390a18061146e816131fb565b915050611063565b60606003805461078e90612fd6565b6000610779826124a4565b60608183106114b257604051631960ccad60e11b815260040160405180910390fd5b6000806114be60005490565b9050808411156114cc578093505b60006114d787610c2e565b9050848610156114f657858503818110156114f0578091505b506114fa565b5060005b6000816001600160401b0381111561151457611514612ebb565b60405190808252806020026020018201604052801561153d578160200160208202803683370190505b5090508160000361155357935061160292505050565b600061155e88611853565b90506000816040015161156f575080515b885b8881141580156115815750848714155b156115f65761158f81612484565b925082604001516115ee5782516001600160a01b0316156115af57825191505b8a6001600160a01b0316826001600160a01b0316036115ee57808488806001019950815181106115e1576115e16131cf565b6020026020010181815250505b600101611571565b50505092835250909150505b9392505050565b8161161381611a9f565b61086983836124cc565b611625612924565b6012546000908190841061166f5760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964537461676560a01b60448201526064015b60405180910390fd5b60008481526013602090815260408083203384528252808320548784526014909252909120546012805463ffffffff90931692879081106116b2576116b26131cf565b60009182526020918290206040805160c08101825260039390930290910180546001600160501b0381168452600160501b900463ffffffff169383019390935260018301549082015260029091015462ffffff81166060830152630100000081046001600160401b039081166080840152600160581b9091041660a0820152969195509350915050565b611744611bef565b60116108698284836130e1565b611759611bef565b8163ffffffff16600b54816117716001546000540390565b61177b91906132e2565b111561179a5760405163800113cb60e01b815260040160405180910390fd5b8263ffffffff16600e546117ae91906132fa565b3410156117ce57604051630717c22560e51b815260040160405180910390fd5b6117de828463ffffffff16612538565b600d546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610901573d6000803e3d6000fd5b60606011805461078e90612fd6565b836001600160a01b03811633146118405761184033611a9f565b61184c85858585612552565b5050505050565b61185b6128fd565b6118636128fd565b60005483106118725792915050565b61187b83612484565b905080604001511561188d5792915050565b61160283612596565b60606118a182611a78565b6118be57604051630a14c4b560e41b815260040160405180910390fd5b6000601080546118cd90612fd6565b80601f01602080910402602001604051908101604052809291908181526020018280546118f990612fd6565b80156119465780601f1061191b57610100808354040283529160200191611946565b820191906000526020600020905b81548152906001019060200180831161192957829003601f168201915b50505050509050805160000361196b5760405180602001604052806000815250611602565b80611975846125af565b601160405160200161198993929190613319565b6040516020818303038152906040529392505050565b6119a7611bef565b6001600160a01b038116611a0c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611666565b611a15816123fc565b50565b611a20611bef565b600b54811115611a435760405163430b83b160e11b815260040160405180910390fd5b600b8190556040518181527fc7bbc2b288fc13314546ea4aa51f6bcf71b7ba4740beeb3d32e9acef57b6668a90602001610963565b6000805482108015610779575050600090815260046020526040902054600160e01b161590565b6daaeb6d7670e522a718067333cd4e3b15611a1557604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015611b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3091906133b9565b611a155780604051633b79c77360e21b81526004016116669190612a10565b6000611b5a82610b5b565b9050336001600160a01b03821614611b9357611b768133610694565b611b93576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b33611bf8610fd9565b6001600160a01b031614610c8e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611666565b600260095403611ca05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611666565b6002600955565b8363ffffffff16600b5481611cbf6001546000540390565b611cc991906132e2565b1115611ce85760405163800113cb60e01b815260040160405180910390fd5b42611cf1612924565b6000611cfc83610b66565b905060128181548110611d1157611d116131cf565b60009182526020918290206040805160c08101825260039390930290910180546001600160501b038116808552600160501b90910463ffffffff16948401949094526001810154918301919091526002015462ffffff81166060830152630100000081046001600160401b039081166080840152600160581b9091041660a0820152600f549093501115611ded57600e54825163ffffffff8a1691611dbe916001600160501b03166132e2565b611dc891906132fa565b341015611de857604051630717c22560e51b815260040160405180910390fd5b611e29565b8151611e009063ffffffff8a16906133d6565b6001600160501b0316341015611e2957604051630717c22560e51b815260040160405180910390fd5b606082015162ffffff1615611e8357606082015160008281526014602052604090205462ffffff90911690611e659063ffffffff8b16906132e2565b1115611e835760405162d0844960e21b815260040160405180910390fd5b600c5415611ec757600c548863ffffffff16611e9e896124a4565b611ea891906132e2565b1115611ec75760405163751304ed60e11b815260040160405180910390fd5b602082015163ffffffff1615611f395760208083015160008381526013835260408082206001600160a01b038c168352909352919091205463ffffffff91821691611f14918b9116613405565b63ffffffff161115611f395760405163b4f3729b60e01b815260040160405180910390fd5b604082015115611fd8578160400151611fba878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040516001600160601b031960608e901b1660208201526034019150611f9f9050565b604051602081830303815290604052805190602001206125f3565b14611fd8576040516309bde33960e01b815260040160405180910390fd5b60008181526013602090815260408083206001600160a01b038b168452909152812080548a929061201090849063ffffffff16613405565b92506101000a81548163ffffffff021916908363ffffffff1602179055508763ffffffff1660146000838152602001908152602001600020600082825461205791906132e2565b9091555061206d90508763ffffffff8a16612538565b600f5482516001600160501b0316101561213157600d54600e546001600160a01b03909116906108fc906120a89063ffffffff8c16906132fa565b6040518115909202916000818181858888f193505050501580156120d0573d6000803e3d6000fd5b506120d9610fd9565b6001600160a01b03166108fc8963ffffffff16600e546120f991906132fa565b6121039034613214565b6040518115909202916000818181858888f1935050505015801561212b573d6000803e3d6000fd5b506121e9565b600d546001600160a01b03166108fc63ffffffff8a1661215260423461342d565b61215c91906132fa565b6040518115909202916000818181858888f19350505050158015612184573d6000803e3d6000fd5b5061218d610fd9565b6001600160a01b03166108fc63ffffffff8a166121ab60423461342d565b6121b591906132fa565b6121bf9034613214565b6040518115909202916000818181858888f193505050501580156121e7573d6000803e3d6000fd5b505b5050505050505050565b60006121fe82612395565b9050836001600160a01b0316816001600160a01b0316146122315760405162a1148160e81b815260040160405180910390fd5b60008281526006602052604090208054338082146001600160a01b0388169091141761227e576122618633610694565b61227e57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b0385166122a557604051633a954ecd60e21b815260040160405180910390fd5b80156122b057600082555b6001600160a01b038681166000908152600560205260408082208054600019019055918716815220805460010190556122ed85600160e11b612640565b600085815260046020526040812091909155600160e11b84169003612342576001840160008181526004602052604081205490036123405760005481146123405760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b03166000805160206134aa83398151915260405160405180910390a45b505050505050565b61086983838360405180602001604052806000815250611826565b6000816000548110156123e35760008181526004602052604081205490600160e01b821690036123e1575b806000036116025750600019016000818152600460205260409020546123c0565b505b604051636f96cda160e11b815260040160405180910390fd5b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b806001600160401b0316826001600160401b03161061248057604051631750215560e11b815260040160405180910390fd5b5050565b61248c6128fd565b60008281526004602052604090205461077990612655565b6001600160a01b03166000908152600560205260409081902054901c6001600160401b031690565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b612480828260405180602001604052806000815250612698565b61255d8484846108dc565b6001600160a01b0383163b1561090157612579848484846126fe565b610901576040516368d2bf6b60e11b815260040160405180910390fd5b61259e6128fd565b6107796125aa83612395565b612655565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a9004806125c95750819003601f19909101908152919050565b600081815b84518110156126385761262482868381518110612617576126176131cf565b60200260200101516127e9565b915080612630816131fb565b9150506125f8565b509392505050565b4260a01b176001600160a01b03919091161790565b61265d6128fd565b6001600160a01b03821681526001600160401b0360a083901c166020820152600160e01b82161515604082015260e89190911c606082015290565b6126a28383612815565b6001600160a01b0383163b15610869576000548281035b6126cc60008683806001019450866126fe565b6126e9576040516368d2bf6b60e11b815260040160405180910390fd5b8181106126b957816000541461184c57600080fd5b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a029061273390339089908890889060040161344f565b6020604051808303816000875af192505050801561276e575060408051601f3d908101601f1916820190925261276b9181019061348c565b60015b6127cc573d80801561279c576040519150601f19603f3d011682016040523d82523d6000602084013e6127a1565b606091505b5080516000036127c4576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b6000818310612805576000828152602084905260409020611602565b5060009182526020526040902090565b600080549082900361283a5760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038316600090815260056020526040902080546001600160401b018402019055612871836001841460e11b612640565b6000828152600460205260408120919091556001600160a01b0384169083830190839083906000805160206134aa8339815191528180a4600183015b8181146128d357808360006000805160206134aa833981519152600080a46001016128ad565b50816000036128f457604051622e076360e81b815260040160405180910390fd5b60005550505050565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b6001600160e01b031981168114611a1557600080fd5b60006020828403121561298157600080fd5b813561160281612959565b60005b838110156129a757818101518382015260200161298f565b838111156109015750506000910152565b600081518084526129d081602086016020860161298c565b601f01601f19169290920160200192915050565b60208152600061160260208301846129b8565b600060208284031215612a0957600080fd5b5035919050565b6001600160a01b0391909116815260200190565b80356001600160a01b0381168114612a3b57600080fd5b919050565b60008060408385031215612a5357600080fd5b612a5c83612a24565b946020939093013593505050565b803563ffffffff81168114612a3b57600080fd5b60008083601f840112612a9057600080fd5b5081356001600160401b03811115612aa757600080fd5b6020830191508360208260051b8501011115612ac257600080fd5b9250929050565b600080600060408486031215612ade57600080fd5b612ae784612a6a565b925060208401356001600160401b03811115612b0257600080fd5b612b0e86828701612a7e565b9497909650939450505050565b600080600060608486031215612b3057600080fd5b612b3984612a24565b9250612b4760208501612a24565b9150604084013590509250925092565b60008060208385031215612b6a57600080fd5b82356001600160401b0380821115612b8157600080fd5b818501915085601f830112612b9557600080fd5b813581811115612ba457600080fd5b866020828501011115612bb657600080fd5b60209290920196919550909350505050565b60008060208385031215612bdb57600080fd5b82356001600160401b03811115612bf157600080fd5b612bfd85828601612a7e565b90969095509350505050565b80516001600160a01b031682526020808201516001600160401b03169083015260408082015115159083015260609081015162ffffff16910152565b6020808252825182820181905260009190848201906040850190845b81811015610fcd57612c74838551612c09565b9284019260809290920191600101612c61565b80356001600160401b0381168114612a3b57600080fd5b600060208284031215612cb057600080fd5b61160282612c87565b600060208284031215612ccb57600080fd5b61160282612a24565b80356001600160501b0381168114612a3b57600080fd5b803562ffffff81168114612a3b57600080fd5b600080600080600080600060e0888a031215612d1957600080fd5b87359650612d2960208901612cd4565b9550612d3760408901612a6a565b945060608801359350612d4c60808901612ceb565b9250612d5a60a08901612c87565b9150612d6860c08901612c87565b905092959891949750929550565b6020808252825182820181905260009190848201906040850190845b81811015610fcd57835183529284019291840191600101612d92565b60008060208385031215612dc157600080fd5b82356001600160401b0380821115612dd857600080fd5b818501915085601f830112612dec57600080fd5b813581811115612dfb57600080fd5b86602060c083028501011115612bb657600080fd5b600080600060608486031215612e2557600080fd5b612e2e84612a24565b95602085013595506040909401359392505050565b8015158114611a1557600080fd5b60008060408385031215612e6457600080fd5b612e6d83612a24565b91506020830135612e7d81612e43565b809150509250929050565b60008060408385031215612e9b57600080fd5b612ea483612a6a565b9150612eb260208401612a24565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215612ee757600080fd5b612ef085612a24565b9350612efe60208601612a24565b92506040850135915060608501356001600160401b0380821115612f2157600080fd5b818701915087601f830112612f3557600080fd5b813581811115612f4757612f47612ebb565b604051601f8201601f19908116603f01168101908382118183101715612f6f57612f6f612ebb565b816040528281528a6020848701011115612f8857600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b608081016107798284612c09565b60008060408385031215612fcd57600080fd5b612ea483612a24565b600181811c90821680612fea57607f821691505b60208210810361300a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208083526000845461302481612fd6565b80848701526040600180841660008114613045576001811461305f5761308d565b60ff1985168984015283151560051b89018301955061308d565b896000528660002060005b858110156130855781548b820186015290830190880161306a565b8a0184019650505b509398975050505050505050565b601f82111561086957600081815260208120601f850160051c810160208610156130c25750805b601f850160051c820191505b81811015612372578281556001016130ce565b6001600160401b038311156130f8576130f8612ebb565b61310c836131068354612fd6565b8361309b565b6000601f84116001811461314057600085156131285750838201355b600019600387901b1c1916600186901b17835561184c565b600083815260209020601f19861690835b828110156131715786850135825560209485019460019092019101613151565b508682101561318e5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161320d5761320d6131e5565b5060010190565b600082821015613226576132266131e5565b500390565b9687526001600160501b0395909516602087015263ffffffff939093166040860152606085019190915262ffffff1660808401526001600160401b0390811660a08401521660c082015260e00190565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156132a357600080fd5b61160282612cd4565b6000602082840312156132be57600080fd5b61160282612a6a565b6000602082840312156132d957600080fd5b61160282612ceb565b600082198211156132f5576132f56131e5565b500190565b6000816000190483118215151615613314576133146131e5565b500290565b60008451602061332c8285838a0161298c565b85519184019161333f8184848a0161298c565b855492019160009061335081612fd6565b60018281168015613368576001811461337d576133a9565b60ff19841687528215158302870194506133a9565b896000528560002060005b848110156133a157815489820152908301908701613388565b505082870194505b50929a9950505050505050505050565b6000602082840312156133cb57600080fd5b815161160281612e43565b60006001600160501b03828116848216811515828404821116156133fc576133fc6131e5565b02949350505050565b600063ffffffff808316818516808303821115613424576134246131e5565b01949350505050565b60008261344a57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613482908301846129b8565b9695505050505050565b60006020828403121561349e57600080fd5b81516116028161295956feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efb3268648542a1bb1b2dd12e3b14aeb5a3ab22c592de96bdd3e842154a5b394faa26469706673582212203bac07a334336e20bf00254eec419589450a3e518e884c37ef553ce7a29224aa64736f6c634300080f0033