0 txs
0 calls
constructor
constructor()
functions
getFixedPriceSale
viewfunction getFixedPriceSale(address nftContract, uint256 tokenId) view returns (tuple results)
MAX_BPS
viewfunction MAX_BPS() view returns (uint256)
MINTER_ROLE
viewfunction MINTER_ROLE() view returns (bytes32)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
protocolFeeBps
viewfunction protocolFeeBps() view returns (uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
referrerRewardBps
viewfunction referrerRewardBps() view returns (uint256)
saleDuration
viewfunction saleDuration() view returns (uint256)
spurs1155
viewfunction spurs1155() view returns (address)
startSaleTimerOnSupply
viewfunction startSaleTimerOnSupply() view returns (uint256)
treasury
viewfunction treasury() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
usdcSpursTokenId
viewfunction usdcSpursTokenId() view returns (uint256)
acceptOwnership
nonpayablefunction acceptOwnership()
cancelFixedPriceSale
nonpayablefunction cancelFixedPriceSale(address nftContract, uint256 tokenId)
createFixedPriceSale
nonpayablefunction createFixedPriceSale(address nftContract, uint256 tokenId, address creatorPaymentAddress)
initialize
nonpayablefunction initialize(address _admin, address _spurs1155, address _treasury)
mintFromFixedPriceSale
nonpayablefunction mintFromFixedPriceSale(address nftContract, uint256 tokenId, uint256 tokenQuantity, address tokenRecipient, address referrer)
ownerUpdateProtocolFee
nonpayablefunction ownerUpdateProtocolFee(uint256 newFeeBps)
ownerUpdateReferrerReward
nonpayablefunction ownerUpdateReferrerReward(uint256 newRewardBps)
ownerUpdateSaleDuration
nonpayablefunction ownerUpdateSaleDuration(uint256 newDuration)
ownerUpdateStartSaleTimerOnSupply
nonpayablefunction ownerUpdateStartSaleTimerOnSupply(uint256 newSupply)
ownerUpdateTreasury
nonpayablefunction ownerUpdateTreasury(address newTreasury)
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
CancelFixedPriceSale
event CancelFixedPriceSale(address indexed nftContract, uint256 indexed tokenId, uint256 cancelTime)
CreateFixedPriceSale
event CreateFixedPriceSale(address indexed nftContract, uint256 indexed tokenId, address indexed creatorPaymentAddress, uint256 startTime, uint256 endTime)
Initialized
event Initialized(uint64 version)
MintFromFixedPriceSale
event MintFromFixedPriceSale(address indexed nftContract, uint256 indexed tokenId, address indexed tokenRecipient, address referrer, uint256 tokenQuantity, uint256 protocolFee, uint256 referrerPayment, uint256 creatorPayment)
MintTimerStarted
event MintTimerStarted(address indexed nftContract, uint256 indexed tokenId, uint256 startTime, uint256 endTime)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
ProtocolFeeUpdated
event ProtocolFeeUpdated(uint256 oldFee, uint256 newFee)
ReferrerRewardUpdated
event ReferrerRewardUpdated(uint256 oldReward, uint256 newReward)
SaleDurationUpdated
event SaleDurationUpdated(uint256 oldDuration, uint256 newDuration)
StartSaleTimerOnSupplyUpdated
event StartSaleTimerOnSupplyUpdated(uint256 indexed oldSupply, uint256 indexed newSupply)
TreasuryUpdated
event TreasuryUpdated(address indexed oldTreasury, address indexed newTreasury)
Upgraded
event Upgraded(address indexed implementation)
USDCSpursTokenIdUpdated
event USDCSpursTokenIdUpdated(uint256 oldId, uint256 newId)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
CancelFixedPriceSale_TokenIdZero
error CancelFixedPriceSale_TokenIdZero()
CreateFixedPriceSale_CreatorPaymentAddressZero
error CreateFixedPriceSale_CreatorPaymentAddressZero()
CreateFixedPriceSale_TokenIdZero
error CreateFixedPriceSale_TokenIdZero()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
Initialize_AdminAddressZero
error Initialize_AdminAddressZero()
Initialize_Spurs1155AddressZero
error Initialize_Spurs1155AddressZero()
Initialize_TreasuryAddressZero
error Initialize_TreasuryAddressZero()
InvalidInitialization
error InvalidInitialization()
MintFromFixedPriceSale_TokenQuantityZero
error MintFromFixedPriceSale_TokenQuantityZero()
NotCollectionAdmin
error NotCollectionAdmin()
NotInitializing
error NotInitializing()
NotMinter
error NotMinter()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
OwnerUpdateProtocolFee_InvalidBasisPoints
error OwnerUpdateProtocolFee_InvalidBasisPoints()
OwnerUpdateReferrerReward_InvalidBasisPoints
error OwnerUpdateReferrerReward_InvalidBasisPoints()
OwnerUpdateSaleDuration_InvalidSaleDuration
error OwnerUpdateSaleDuration_InvalidSaleDuration()
OwnerUpdateTreasury_InvalidTreasuryAddress
error OwnerUpdateTreasury_InvalidTreasuryAddress()
OwnerUpdateTreasury_TreasuryAddressSame
error OwnerUpdateTreasury_TreasuryAddressSame()
SaleAlreadyExists
error SaleAlreadyExists()
SaleDoesNotExist
error SaleDoesNotExist()
SaleEnded
error SaleEnded()
SaleNotStarted
error SaleNotStarted()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
ValidateCombinedBalance_InsufficientCombinedBalance
error ValidateCombinedBalance_InsufficientCombinedBalance()
creation bytecode
0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250348015610042575f5ffd5b5061005161006460201b60201c565b61005f61006460201b60201c565b6101c4565b5f61007361016260201b60201c565b9050805f0160089054906101000a900460ff16156100bd576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8016815f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff161461015f5767ffffffffffffffff815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff60405161015691906101ab565b60405180910390a15b50565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f67ffffffffffffffff82169050919050565b6101a581610189565b82525050565b5f6020820190506101be5f83018461019c565b92915050565b608051613e1e6101ea5f395f8181611e4101528181611e9601526120500152613e1e5ff3fe60806040526004361061019b575f3560e01c806379ba5097116100eb578063d539139311610089578063e30c397811610063578063e30c39781461051d578063f2fde38b14610547578063f44b47561461056f578063fd967f47146105ab5761019b565b8063d5391393146104a1578063d9673330146104cb578063de3db047146104f35761019b565b80639a1515ed116100c55780639a1515ed146103ff578063ad3cb1cc14610427578063c0c53b8b14610451578063c468251d146104795761019b565b806379ba5097146103975780638da5cb5b146103ad5780638e2d365c146103d75761019b565b80634f1ef2861161015857806361d027b31161013257806361d027b3146103075780636d85bb6614610331578063715018a61461035957806372fcbbf81461036f5761019b565b80634f1ef2861461029957806352d1902d146102b55780635b44b645146102df5761019b565b8063330bf2a01461019f57806335659fb8146101c95780633711d9fb146101f35780633813477a1461021d57806345d951f8146102475780634709c8b01461026f575b5f5ffd5b3480156101aa575f5ffd5b506101b36105d5565b6040516101c09190612fc4565b60405180910390f35b3480156101d4575f5ffd5b506101dd6105f9565b6040516101ea9190612ff5565b60405180910390f35b3480156101fe575f5ffd5b506102076105ff565b6040516102149190612ff5565b60405180910390f35b348015610228575f5ffd5b50610231610605565b60405161023e9190612ff5565b60405180910390f35b348015610252575f5ffd5b5061026d600480360381019061026891906130bf565b61060b565b005b34801561027a575f5ffd5b506102836109c6565b6040516102909190612ff5565b60405180910390f35b6102b360048036038101906102ae919061324b565b6109cc565b005b3480156102c0575f5ffd5b506102c96109eb565b6040516102d691906132bd565b60405180910390f35b3480156102ea575f5ffd5b50610305600480360381019061030091906132d6565b610a1c565b005b348015610312575f5ffd5b5061031b610a5e565b6040516103289190613310565b60405180910390f35b34801561033c575f5ffd5b5061035760048036038101906103529190613329565b610a83565b005b348015610364575f5ffd5b5061036d610c36565b005b34801561037a575f5ffd5b5061039560048036038101906103909190613367565b610c49565b005b3480156103a2575f5ffd5b506103ab6111f9565b005b3480156103b8575f5ffd5b506103c1611287565b6040516103ce91906133ed565b60405180910390f35b3480156103e2575f5ffd5b506103fd60048036038101906103f891906132d6565b6112bc565b005b34801561040a575f5ffd5b5061042560048036038101906104209190613406565b611347565b005b348015610432575f5ffd5b5061043b6114f8565b6040516104489190613491565b60405180910390f35b34801561045c575f5ffd5b50610477600480360381019061047291906134b1565b611531565b005b348015610484575f5ffd5b5061049f600480360381019061049a91906132d6565b611914565b005b3480156104ac575f5ffd5b506104b56119a2565b6040516104c291906132bd565b60405180910390f35b3480156104d6575f5ffd5b506104f160048036038101906104ec91906132d6565b6119c6565b005b3480156104fe575f5ffd5b50610507611a54565b6040516105149190612ff5565b60405180910390f35b348015610528575f5ffd5b50610531611a5a565b60405161053e91906133ed565b60405180910390f35b348015610552575f5ffd5b5061056d60048036038101906105689190613501565b611a8f565b005b34801561057a575f5ffd5b5061059560048036038101906105909190613329565b611b48565b6040516105a291906135bf565b60405180910390f35b3480156105b6575f5ffd5b506105bf611c76565b6040516105cc9190612ff5565b60405180910390f35b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b60045481565b60035481565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610670576040517f6088c20700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82036106a9576040517f2a4e25be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b283611c7c565b6106bc8333611d4f565b5f73ffffffffffffffffffffffffffffffffffffffff1660055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078e576040517f2820487d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f4290505f600454826107a19190613605565b90505f60075411156107b4575f91505f90505b6040518060a001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281525060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030155608082015181600401559050508273ffffffffffffffffffffffffffffffffffffffff16848673ffffffffffffffffffffffffffffffffffffffff167fca443f756a3fe9cfa8d11e415ae1ef0fdf2426c33413696c1d9af55a7d81f96b5f5f60405161095e929190613671565b60405180910390a45f82146109bf57838573ffffffffffffffffffffffffffffffffffffffff167f891f405b2e98f2e4bafec1b7cd2a69924cbed8782c8f5b19df4aaf204d6910cf84846040516109b6929190613698565b60405180910390a35b5050505050565b60075481565b6109d4611e3f565b6109dd82611f25565b6109e78282611f30565b5050565b5f6109f461204e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b905090565b610a246120d5565b806007547fede86956ba263bacc9ccc204f6e685b01ebc1e98d0265f1efa281e421481ce4c60405160405180910390a38060078190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8103610abc576040517fe444eca700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ac68233611d4f565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2090505f73ffffffffffffffffffffffffffffffffffffffff16815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610b9c576040517f1a6cb34500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42816004015411610bd9576040517f0bd8a3eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428160040181905550818373ffffffffffffffffffffffffffffffffffffffff167fafdeadc27a20b64ac0a92121e9fc92742c16512a4b0c5702c353adef6fddeb2942604051610c299190612ff5565b60405180910390a3505050565b610c3e6120d5565b610c475f61215c565b565b5f8303610c82576040517f074bb53300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8681526020019081526020015f209050610dac816040518060a00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152602001600482015481525050612199565b5f610db5612253565b90505f5f610dc43388856123b1565b915091505f5f5f610dd68a89886123ec565b9250925092505f876003015403610ef3575f8c73ffffffffffffffffffffffffffffffffffffffff1663bd85b0398d6040518263ffffffff1660e01b8152600401610e219190612ff5565b602060405180830381865afa158015610e3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e6091906136d3565b90506007548b82610e719190613605565b10610ef1575f4290505f60045482610e899190613605565b90508d8f73ffffffffffffffffffffffffffffffffffffffff167f891f405b2e98f2e4bafec1b7cd2a69924cbed8782c8f5b19df4aaf204d6910cf8484604051610ed4929190613698565b60405180910390a3818a60030181905550808a6004018190555050505b505b8873ffffffffffffffffffffffffffffffffffffffff168b8d73ffffffffffffffffffffffffffffffffffffffff167f15a7e46a55ce67f69fb8d78bde14fdc0163f363ccb53489e8dd32e8ab4d833e68b8e888888604051610f599594939291906136fe565b60405180910390a45f866040015190505f861115611088575f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635552bc8b33885f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de3db0476040518163ffffffff1660e01b8152600401602060405180830381865afa158015611018573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103c91906136d3565b6040518463ffffffff1660e01b815260040161105a9392919061374f565b5f604051808303815f87803b158015611071575f5ffd5b505af1158015611083573d5f5f3e3d5ffd5b505050505b5f85111561114d578073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b81526004016110cd93929190613784565b6020604051808303815f875af11580156110e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110d91906137ee565b61114c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114390613889565b60405180910390fd5b5b61117e81896002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b8787876124b2565b8c73ffffffffffffffffffffffffffffffffffffffff1663f242432a5f8c8f8f6040518563ffffffff1660e01b81526004016111bd94939291906138da565b5f604051808303815f87803b1580156111d4575f5ffd5b505af11580156111e6573d5f5f3e3d5ffd5b5050505050505050505050505050505050565b5f611202612724565b90508073ffffffffffffffffffffffffffffffffffffffff16611223611a5a565b73ffffffffffffffffffffffffffffffffffffffff161461127b57806040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161127291906133ed565b60405180910390fd5b6112848161215c565b50565b5f5f61129161272b565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b6112c46120d5565b5f81036112fd576040517fdce36f3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6004549050816004819055507f2118433d65428f89e48e2d2b74f03e1e6600af264e4e218a415d0d67715e0fba818360405161133b929190613698565b60405180910390a15050565b61134f6120d5565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113b4576040517f6abe8c4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361143a576040517fda21134200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a60405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b5f61153a612752565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f5f8267ffffffffffffffff161480156115825750825b90505f60018367ffffffffffffffff161480156115b557505f3073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156115c3575080155b156115fa576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315611647576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16036116ac576040517f86eec62a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611711576040517f63fce92000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603611776576040517fa8c5fc5800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61177f88612779565b865f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109c46002819055506109c4600381905550620151806004819055506118b0875f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de3db0476040518163ffffffff1660e01b8152600401602060405180830381865afa158015611887573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118ab91906136d3565b61278d565b831561190a575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051611901919061397c565b60405180910390a15b5050505050505050565b61191c6120d5565b612710811115611958576040517fe3f0a03100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6003549050816003819055507fcde9b7ece6b59c3e24ef03f733a342d7a18b821ee44ea155463641e27e9ebbc68183604051611996929190613698565b60405180910390a15050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6119ce6120d5565b612710811115611a0a576040517fdf3efe4400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6002549050816002819055507fb404cac19fb1cbeff98d325795b08886e3cd8fe8cb1a2f193aac66f13fb239c38183604051611a48929190613698565b60405180910390a15050565b60015481565b5f5f611a646127d7565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b611a976120d5565b5f611aa06127d7565b905081815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16611b02611287565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b611b50612eb8565b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f206040518060a00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152602001600482015481525050905092915050565b61271081565b8073ffffffffffffffffffffffffffffffffffffffff166391d148547f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6306040518363ffffffff1660e01b8152600401611cd7929190613995565b602060405180830381865afa158015611cf2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d1691906137ee565b611d4c576040517ff8d2906c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611e0457508173ffffffffffffffffffffffffffffffffffffffff166391d148545f5f1b836040518363ffffffff1660e01b8152600401611dc3929190613995565b602060405180830381865afa158015611dde573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e0291906137ee565b155b15611e3b576040517f8700d7b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161480611eec57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611ed36127fe565b73ffffffffffffffffffffffffffffffffffffffff1614155b15611f23576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611f2d6120d5565b50565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f9857506040513d601f19601f82011682018060405250810190611f9591906139e6565b60015b611fd957816040517f4c9c8ce3000000000000000000000000000000000000000000000000000000008152600401611fd091906133ed565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b811461203f57806040517faa1d49a400000000000000000000000000000000000000000000000000000000815260040161203691906132bd565b60405180910390fd5b6120498383612851565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16146120d3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6120dd612724565b73ffffffffffffffffffffffffffffffffffffffff166120fb611287565b73ffffffffffffffffffffffffffffffffffffffff161461215a5761211e612724565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161215191906133ed565b60405180910390fd5b565b5f6121656127d7565b9050805f015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055612195826128c3565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff1603612201576040517f1a6cb34500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816080015114158015612219575042816080015111155b15612250576040517f0bd8a3eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b61225b612f0e565b5f5f5f5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c01bd0e96001546040518263ffffffff1660e01b81526004016122ba9190612ff5565b608060405180830381865afa1580156122d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122f99190613a25565b93509350935093505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361236f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236690613af9565b60405180910390fd5b60405180608001604052808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182151581525094505050505090565b5f5f5f8360200151845f0151866123c89190613b17565b6123d29190613b17565b90506123df868286612994565b9250925050935093915050565b5f5f5f5f8460200151855f0151886124049190613b17565b61240e9190613b17565b9050612710600254826124219190613b17565b61242b9190613b85565b93506127106003548261243e9190613b17565b6124489190613b85565b92508284826124579190613bb5565b6124619190613bb5565b91505f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036124a85782846124a29190613605565b93505f92505b5093509350939050565b5f811115612575578573ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86836040518363ffffffff1660e01b81526004016124f5929190613c08565b6020604051808303815f875af1158015612511573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061253591906137ee565b612574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256b90613c79565b60405180910390fd5b5b5f821115612638578573ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85846040518363ffffffff1660e01b81526004016125b8929190613c08565b6020604051808303815f875af11580156125d4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125f891906137ee565b612637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262e90613ce1565b60405180910390fd5b5b5f83111561271c578573ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b815260040161269c929190613c08565b6020604051808303815f875af11580156126b8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126dc91906137ee565b61271b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271290613d49565b60405180910390fd5b5b505050505050565b5f33905090565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b612781612b3d565b61278a81612b7d565b50565b815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806001819055505050565b5f7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00905090565b5f61282a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b612c01565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61285a82612c0a565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25f815111156128b6576128b08282612cd3565b506128bf565b6128be612d53565b5b5050565b5f6128cc61272b565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b5f5f5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662fdd58e876001546040518363ffffffff1660e01b81526004016129f3929190613d67565b602060405180830381865afa158015612a0e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a3291906136d3565b90505f846020015186612a459190613b85565b9050612a518282612d8f565b9350846020015184612a639190613b17565b86612a6e9190613bb5565b92505f831115612b33575f856040015173ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401612ab691906133ed565b602060405180830381865afa158015612ad1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612af591906136d3565b905083811015612b31576040517f0f31956100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b5050935093915050565b612b45612da5565b612b7b576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b612b85612b3d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612bf5575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612bec91906133ed565b60405180910390fd5b612bfe8161215c565b50565b5f819050919050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b03612c6557806040517f4c9c8ce3000000000000000000000000000000000000000000000000000000008152600401612c5c91906133ed565b60405180910390fd5b80612c917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b612c01565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f5f8473ffffffffffffffffffffffffffffffffffffffff1684604051612cfc9190613dd2565b5f60405180830381855af49150503d805f8114612d34576040519150601f19603f3d011682016040523d82523d5f602084013e612d39565b606091505b5091509150612d49858383612dc3565b9250505092915050565b5f341115612d8d576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f612d9d8284108484612e50565b905092915050565b5f612dae612752565b5f0160089054906101000a900460ff16905090565b606082612dd857612dd382612e69565b612e48565b5f8251148015612dfe57505f8473ffffffffffffffffffffffffffffffffffffffff163b145b15612e4057836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401612e3791906133ed565b60405180910390fd5b819050612e49565b5b9392505050565b5f612e5a84612ead565b82841802821890509392505050565b5f81511115612e7b5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8115159050919050565b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b60405180608001604052805f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581525090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f612f8c612f87612f8284612f4a565b612f69565b612f4a565b9050919050565b5f612f9d82612f72565b9050919050565b5f612fae82612f93565b9050919050565b612fbe81612fa4565b82525050565b5f602082019050612fd75f830184612fb5565b92915050565b5f819050919050565b612fef81612fdd565b82525050565b5f6020820190506130085f830184612fe6565b92915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f61302982612f4a565b9050919050565b6130398161301f565b8114613043575f5ffd5b50565b5f8135905061305481613030565b92915050565b61306381612fdd565b811461306d575f5ffd5b50565b5f8135905061307e8161305a565b92915050565b5f61308e82612f4a565b9050919050565b61309e81613084565b81146130a8575f5ffd5b50565b5f813590506130b981613095565b92915050565b5f5f5f606084860312156130d6576130d5613017565b5b5f6130e386828701613046565b93505060206130f486828701613070565b9250506040613105868287016130ab565b9150509250925092565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61315d82613117565b810181811067ffffffffffffffff8211171561317c5761317b613127565b5b80604052505050565b5f61318e61300e565b905061319a8282613154565b919050565b5f67ffffffffffffffff8211156131b9576131b8613127565b5b6131c282613117565b9050602081019050919050565b828183375f83830152505050565b5f6131ef6131ea8461319f565b613185565b90508281526020810184848401111561320b5761320a613113565b5b6132168482856131cf565b509392505050565b5f82601f8301126132325761323161310f565b5b81356132428482602086016131dd565b91505092915050565b5f5f6040838503121561326157613260613017565b5b5f61326e85828601613046565b925050602083013567ffffffffffffffff81111561328f5761328e61301b565b5b61329b8582860161321e565b9150509250929050565b5f819050919050565b6132b7816132a5565b82525050565b5f6020820190506132d05f8301846132ae565b92915050565b5f602082840312156132eb576132ea613017565b5b5f6132f884828501613070565b91505092915050565b61330a81613084565b82525050565b5f6020820190506133235f830184613301565b92915050565b5f5f6040838503121561333f5761333e613017565b5b5f61334c85828601613046565b925050602061335d85828601613070565b9150509250929050565b5f5f5f5f5f60a086880312156133805761337f613017565b5b5f61338d88828901613046565b955050602061339e88828901613070565b94505060406133af88828901613070565b93505060606133c088828901613046565b92505060806133d188828901613046565b9150509295509295909350565b6133e78161301f565b82525050565b5f6020820190506134005f8301846133de565b92915050565b5f6020828403121561341b5761341a613017565b5b5f613428848285016130ab565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61346382613431565b61346d818561343b565b935061347d81856020860161344b565b61348681613117565b840191505092915050565b5f6020820190508181035f8301526134a98184613459565b905092915050565b5f5f5f606084860312156134c8576134c7613017565b5b5f6134d586828701613046565b93505060206134e686828701613046565b92505060406134f786828701613046565b9150509250925092565b5f6020828403121561351657613515613017565b5b5f61352384828501613046565b91505092915050565b6135358161301f565b82525050565b61354481612fdd565b82525050565b61355381613084565b82525050565b60a082015f82015161356d5f85018261352c565b506020820151613580602085018261353b565b506040820151613593604085018261354a565b5060608201516135a6606085018261353b565b5060808201516135b9608085018261353b565b50505050565b5f60a0820190506135d25f830184613559565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61360f82612fdd565b915061361a83612fdd565b9250828201905080821115613632576136316135d8565b5b92915050565b5f819050919050565b5f61365b61365661365184613638565b612f69565b612fdd565b9050919050565b61366b81613641565b82525050565b5f6040820190506136845f830185613662565b6136916020830184613662565b9392505050565b5f6040820190506136ab5f830185612fe6565b6136b86020830184612fe6565b9392505050565b5f815190506136cd8161305a565b92915050565b5f602082840312156136e8576136e7613017565b5b5f6136f5848285016136bf565b91505092915050565b5f60a0820190506137115f8301886133de565b61371e6020830187612fe6565b61372b6040830186612fe6565b6137386060830185612fe6565b6137456080830184612fe6565b9695505050505050565b5f6060820190506137625f8301866133de565b61376f6020830185612fe6565b61377c6040830184612fe6565b949350505050565b5f6060820190506137975f8301866133de565b6137a460208301856133de565b6137b16040830184612fe6565b949350505050565b5f8115159050919050565b6137cd816137b9565b81146137d7575f5ffd5b50565b5f815190506137e8816137c4565b92915050565b5f6020828403121561380357613802613017565b5b5f613810848285016137da565b91505092915050565b7f4d756c7469546f6b656e44726f704d61726b65743a2055534443207472616e735f8201527f666572206661696c656400000000000000000000000000000000000000000000602082015250565b5f613873602a8361343b565b915061387e82613819565b604082019050919050565b5f6020820190508181035f8301526138a081613867565b9050919050565b5f82825260208201905092915050565b50565b5f6138c55f836138a7565b91506138d0826138b7565b5f82019050919050565b5f60a0820190506138ed5f8301876133de565b6138fa60208301866133de565b6139076040830185612fe6565b6139146060830184612fe6565b8181036080830152613925816138ba565b905095945050505050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f61396661396161395c84613930565b612f69565b613939565b9050919050565b6139768161394c565b82525050565b5f60208201905061398f5f83018461396d565b92915050565b5f6040820190506139a85f8301856132ae565b6139b560208301846133de565b9392505050565b6139c5816132a5565b81146139cf575f5ffd5b50565b5f815190506139e0816139bc565b92915050565b5f602082840312156139fb576139fa613017565b5b5f613a08848285016139d2565b91505092915050565b5f81519050613a1f81613030565b92915050565b5f5f5f5f60808587031215613a3d57613a3c613017565b5b5f613a4a878288016136bf565b9450506020613a5b878288016136bf565b9350506040613a6c87828801613a11565b9250506060613a7d878288016137da565b91505092959194509250565b7f4d756c7469546f6b656e44726f704d61726b65743a204d7573742075736520555f8201527f5344432d6261636b656420537075727300000000000000000000000000000000602082015250565b5f613ae360308361343b565b9150613aee82613a89565b604082019050919050565b5f6020820190508181035f830152613b1081613ad7565b9050919050565b5f613b2182612fdd565b9150613b2c83612fdd565b9250828202613b3a81612fdd565b91508282048414831517613b5157613b506135d8565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b8f82612fdd565b9150613b9a83612fdd565b925082613baa57613ba9613b58565b5b828204905092915050565b5f613bbf82612fdd565b9150613bca83612fdd565b9250828203905081811115613be257613be16135d8565b5b92915050565b5f613bf282612f93565b9050919050565b613c0281613be8565b82525050565b5f604082019050613c1b5f830185613bf9565b613c286020830184612fe6565b9392505050565b7f43726561746f722055534443207472616e73666572206661696c6564000000005f82015250565b5f613c63601c8361343b565b9150613c6e82613c2f565b602082019050919050565b5f6020820190508181035f830152613c9081613c57565b9050919050565b7f52656665727265722055534443207472616e73666572206661696c65640000005f82015250565b5f613ccb601d8361343b565b9150613cd682613c97565b602082019050919050565b5f6020820190508181035f830152613cf881613cbf565b9050919050565b7f50726f746f636f6c2055534443207472616e73666572206661696c65640000005f82015250565b5f613d33601d8361343b565b9150613d3e82613cff565b602082019050919050565b5f6020820190508181035f830152613d6081613d27565b9050919050565b5f604082019050613d7a5f8301856133de565b613d876020830184612fe6565b9392505050565b5f81519050919050565b5f81905092915050565b5f613dac82613d8e565b613db68185613d98565b9350613dc681856020860161344b565b80840191505092915050565b5f613ddd8284613da2565b91508190509291505056fea2646970667358221220cc960d1752f3a823f67a34bb4bbe16c42a9e5df04a17698d0d709d6080e61d7c64736f6c634300081d0033