0 txs
0 calls
constructor
constructor()
functions
_nextPacketTypeId
viewfunction _nextPacketTypeId() view returns (uint256)
_nextTokenId
viewfunction _nextTokenId() view returns (uint256)
_packetBurnType
viewfunction _packetBurnType(uint256) view returns (uint8)
_packetTypeIds
viewfunction _packetTypeIds(uint256) view returns (uint256)
_packetTypes
viewfunction _packetTypes(uint256) view returns (string packetTypeName, string packetTypeMetadata, bool isRegistered)
_packetUris
viewfunction _packetUris(uint256) view returns (string)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getPacketTypeId
viewfunction getPacketTypeId(uint256 tokenId) view returns (uint256)
getPacketTypeInfo
viewfunction getPacketTypeInfo(uint256 packetTypeId) view returns (string, string)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
name
viewfunction name() view returns (string)
onERC1155BatchReceived
purefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) pure returns (bytes4)
onERC1155Received
purefunction onERC1155Received(address, address, uint256, uint256, bytes) pure returns (bytes4)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
packetStore
viewfunction packetStore() view returns (address)
packetToBundle
viewfunction packetToBundle(uint256, uint256) view returns (uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
randomAllocationPool
viewfunction randomAllocationPool() view returns (address)
rbac
viewfunction rbac() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
approve
nonpayablefunction approve(address to, uint256 tokenId)
batchCancelBurn
nonpayablefunction batchCancelBurn(uint256[] packetIds)
burnFromInventory
nonpayablefunction burnFromInventory(uint256 packetId)
cancelBurn
nonpayablefunction cancelBurn(uint256 packetId)
finalizeOpen
nonpayablefunction finalizeOpen(uint256 packetId, uint256[] selectedBundle, string openMetadata)
finalizeRedeem
nonpayablefunction finalizeRedeem(uint256 packetId, string redeemMetadata)
initialize
nonpayablefunction initialize(string name, string symbol, address rbacAddress, address _packetStore, address randomAllocationPoolAddress)
initiateBurn
nonpayablefunction initiateBurn(tuple params)
initiateBurnBatch
nonpayablefunction initiateBurnBatch(tuple[] params)
mint
nonpayablefunction mint(tuple params)
mintBatch
nonpayablefunction mintBatch(tuple[] params)
mintBatchTo
nonpayablefunction mintBatchTo(tuple[] params, address[] receivers)
mintTo
nonpayablefunction mintTo(tuple params, address receiver)
registerPacketType
nonpayablefunction registerPacketType(tuple params)
revertBurnRequest
nonpayablefunction revertBurnRequest(uint256 packetId, string revertBurnRequestMetadata)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setCardAllocationPool
nonpayablefunction setCardAllocationPool(address newCardAllocationPool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BurnInitiated
event BurnInitiated(uint256 indexed packetId, uint8 burnType, address sender)
BurnRequestReverted
event BurnRequestReverted(uint256 indexed packetId, string revertBurnRequestMetadata, uint8 burnType, address redeemManager)
Initialized
event Initialized(uint64 version)
OpenFinalized
event OpenFinalized(uint256 indexed packetId, uint8 burnType, address allocationManager, string openMetadata, uint256[] cards)
PacketBurnedFromInventory
event PacketBurnedFromInventory(uint256 id)
PacketMinted
event PacketMinted(uint256 indexed packetId, address indexed receiver, uint256 indexed packetTypeId, string packetMetadata, string packetSerialNumber)
PacketTypeRegistered
event PacketTypeRegistered(string packetTypeName, uint256 indexed packetTypeId, string packetTypeMetadata)
RedeemFinalized
event RedeemFinalized(uint256 indexed packetId, uint8 burnType, address redeemManager, string redeemMetadata)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ArrayLengthMismatch
error ArrayLengthMismatch()
CannotChangeDuringRandomness
error CannotChangeDuringRandomness()
CannotRevertInstantOpenPacket
error CannotRevertInstantOpenPacket()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ERC721IncorrectOwner
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner)
ERC721InsufficientApproval
error ERC721InsufficientApproval(address operator, uint256 tokenId)
ERC721InvalidApprover
error ERC721InvalidApprover(address approver)
ERC721InvalidOperator
error ERC721InvalidOperator(address operator)
ERC721InvalidOwner
error ERC721InvalidOwner(address owner)
ERC721InvalidReceiver
error ERC721InvalidReceiver(address receiver)
ERC721InvalidSender
error ERC721InvalidSender(address sender)
ERC721NonexistentToken
error ERC721NonexistentToken(uint256 tokenId)
FailedCall
error FailedCall()
InvalidBurnStateForOpen
error InvalidBurnStateForOpen()
InvalidBurnStateForRedeem
error InvalidBurnStateForRedeem()
InvalidBurnType
error InvalidBurnType()
InvalidInitialization
error InvalidInitialization()
InvalidPacketTypeId
error InvalidPacketTypeId()
NotAllocationManager
error NotAllocationManager()
NotAuthorizedRole
error NotAuthorizedRole(uint256 roleId)
NotInitializing
error NotInitializing()
NotPacketOwner
error NotPacketOwner()
NotRedeemManager
error NotRedeemManager()
PacketAlreadyInBurnState
error PacketAlreadyInBurnState()
PacketFrozen
error PacketFrozen()
PacketNotInBurnState
error PacketNotInBurnState()
PacketTypeNotRegistered
error PacketTypeNotRegistered()
RBACAddressZero
error RBACAddressZero()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a080604052346100e857306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c166100d9576002600160401b03196001600160401b03821601610073575b60405161377490816100ed8239608051818181611ddb0152611e6e0152f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610054565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816301ffc9a71461286f5750806302c0c7af146126f657806306fdde0314612637578063081812fc146125ed578063095ea7b31461250157806318922b0f146124d85780632048f496146124ad578063223b23631461232257806323b872dd1461230a578063386c0c80146120c457806342842e0e146120945780634a60f620146120765780634f1ef28614611e2f57806352d1902d14611dc857806359dea8b914611d555780636352211e14611d2457806365addd0a14611bc4578063684f70cf14611b9b57806370a0823114611b495780637d6ccb9514611aee5780638776a459146117cb5780638e5e6db01461173057806395d89b41146116495780639b01aea4146114cc5780639d4de2f11461139a578063a087f403146112eb578063a22cb46514611247578063a43386ef14611213578063a8ecc7f1146111ea578063ad3cb1cc146111a1578063b0ed14f914611184578063b286302e14611058578063b88d4fde14610ffd578063b9e0f3b814610fd3578063bc197c8114610f3a578063bfa27f2e14610e57578063c744112b14610e19578063c87b56dd14610dcc578063db0ed6a0146108ba578063df52cfb4146107f6578063e3f4ce55146107d6578063e985e9c514610788578063ed12841d14610294578063f23a6e61146102395763ff60c21a1461020d575f80fd5b346102365760203660031901126102365760406020916004358152600483522054604051908152f35b80fd5b50346102365760a0366003190112610236576102536128fe565b5061025c612914565b506084356001600160401b0381116102905761027c903690600401612a52565b505060405163f23a6e6160e01b8152602090f35b5080fd5b5034610236576060366003190112610236576004356024356001600160401b03811161078457366023820112156107845780600401356001600160401b038111610770578060051b9160208301916102ef6040519384612991565b825260208201602481948301019136831161076c57602401905b82821061075c575050506044356001600160401b0381116105a257610332903690600401612b0a565b6036546040516303b0981b60e61b81526005600482015233602482015290602090829060449082906001600160a01b03165afa908115610751578691610722575b501561070e57838552600260205260ff60408620541692600484101590816106fa576002851415806106ec575b6106dd578587526008602052604087208451916001600160401b0383116106c9576801000000000000000083116106c95781548383558084106106ae575b5090885260208820885b83811061069a5750505050610686576001830361061557838552600260205260408520805460ff1916905561041c84613041565b3015610601576001600160a01b036104348630613544565b16908161044f57637e27328960e01b87526004869052602487fd5b6001600160a01b03168082036105e757505060075485906001600160a01b0316303b15610290576040519063095ea7b360e01b82526004820152856024820152818160448183305af180156105dc576105c7575b505060408051906104b48183612991565b6001825260208201601f1982013682378251156105b357869052600754879291906001600160a01b0316803b156105af578151630146111360e61b815260206004820152928491849182908490829061051190602483019061300e565b03925af19081156105a65750610589575b50509161058361055e926105757f74d230186317bce1bc84396fd00879432249c943910dc2de4b22dfe2159ef8f1955b60405195868096612b58565b3360208601526080604086015260808501906128da565b90838203606085015261300e565b0390a280f35b8161059691959395612991565b6105a25791845f610522565b8480fd5b513d84823e3d90fd5b8380fd5b634e487b7160e01b88526032600452602488fd5b816105d191612991565b6105a257845f6104a3565b6040513d84823e3d90fd5b6364283d7b60e01b87526004526024859052604452606485fd5b633250574960e11b86526004869052602486fd5b9161058361055e926105757f74d230186317bce1bc84396fd00879432249c943910dc2de4b22dfe2159ef8f19561064b88613070565b87895260026020526040892060ff198154169055878952600660205261067360408a20612de6565b8789526004602052886040812055610552565b634e487b7160e01b85526021600452602485fd5b6001906020845194019381840155016103e8565b828a5260208a206106c3918101908501612dd0565b5f6103de565b634e487b7160e01b89526041600452602489fd5b63cefb061360e01b8752600487fd5b5086915060018514156103a0565b634e487b7160e01b87526021600452602487fd5b633db159f160e21b85526005600452602485fd5b610744915060203d60201161074a575b61073c8183612991565b810190612b9f565b5f610373565b503d610732565b6040513d88823e3d90fd5b8135815260209182019101610309565b8680fd5b634e487b7160e01b84526041600452602484fd5b8280fd5b5034610236576040366003190112610236576107b46107a56128fe565b6107ad612914565b9250612e6c565b9060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b5034610236576020366003190112610236576107f3600435612f89565b80f35b5034610236576020366003190112610236576004356001600160401b0381116102905760606003198236030112610290576036546040516303b0981b60e61b81526003600482015233602482015290602090829060449082906001600160a01b03165afa9081156108af578391610890575b501561087c576107f3903390600401613128565b633db159f160e21b82526003600452602482fd5b6108a9915060203d60201161074a5761073c8183612991565b5f610868565b6040513d85823e3d90fd5b50346102365760a0366003190112610236576004356001600160401b038111610290576108eb903690600401612b0a565b6024356001600160401b0381116107845761090a903690600401612b0a565b6044356001600160a01b03811691908290036105af576064356001600160a01b03811692908390036105a2576084356001600160a01b0381169290839003610dc8575f805160206136ff833981519152549460ff8660401c1615956001600160401b03811680159081610dc0575b6001149081610db6575b159081610dad575b50610d9e5767ffffffffffffffff1981166001175f805160206136ff8339815191525586610d72575b506109bc6135f5565b6109c46135f5565b8051906001600160401b038211610d5e576109ec5f8051602061367f8339815191525461292a565b601f8111610d04575b50602090601f8311600114610c6a57610a259291899183610b6a575b50508160011b915f199060031b1c19161790565b5f8051602061367f833981519152555b8051906001600160401b038211610c5657610a5d5f8051602061371f8339815191525461292a565b601f8111610bf1575b50602090601f8311600114610b7557610a959291889183610b6a5750508160011b915f199060031b1c19161790565b5f8051602061371f833981519152555b610aad6135f5565b610ab56135f5565b8015610b5b576001600160601b0360a01b60365416176036556001600160601b0360a01b600554161760055560018355600180556001600160601b0360a01b6007541617600755610b035780f35b68ff0000000000000000195f805160206136ff83398151915254165f805160206136ff833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b63e676f03160e01b8552600485fd5b015190505f80610a11565b5f8051602061371f83398151915288528188209190601f198416895b818110610bd95750908460019594939210610bc1575b505050811b015f8051602061371f83398151915255610aa5565b01515f1960f88460031b161c191690555f8080610ba7565b92936020600181928786015181550195019301610b91565b5f8051602061371f8339815191528852610c46907ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e601f850160051c81019160208610610c4c575b601f0160051c0190612dd0565b5f610a66565b9091508190610c39565b634e487b7160e01b87526041600452602487fd5b5f8051602061367f83398151915289527f37c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf819190601f1984168a5b818110610cec5750908460019594939210610cd4575b505050811b015f8051602061367f83398151915255610a35565b01515f1960f88460031b161c191690555f8080610cba565b92936020600181928786015181550195019301610ca4565b5f8051602061367f8339815191528952610d58907f37c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf81601f850160051c81019160208610610c4c57601f0160051c0190612dd0565b5f6109f5565b634e487b7160e01b88526041600452602488fd5b68ffffffffffffffffff191668010000000000000001175f805160206136ff833981519152555f6109b3565b63f92ee8a960e01b8852600488fd5b9050155f61098a565b303b159150610982565b889150610978565b8580fd5b503461023657602036600319011261023657610e016040610e1592600435610df381613041565b5081526006602052206129b2565b6040519182916020835260208301906128da565b0390f35b503461023657604036600319011261023657602435600435825260086020526040822080548210156107845782526020918290200154604051908152f35b5034610236576020366003190112610236576004356001600160401b03811161029057610e88903690600401612b28565b6036546040516303b0981b60e61b81526003600482015233602482015291929190602090829060449082906001600160a01b03165afa908115610f2f578491610f10575b5015610efc57825b828110610edf578380f35b600190610ef633610ef1838787612f67565b613128565b01610ed4565b633db159f160e21b83526003600452602483fd5b610f29915060203d60201161074a5761073c8183612991565b5f610ecc565b6040513d86823e3d90fd5b50346102365760a036600319011261023657610f546128fe565b50610f5d612914565b506044356001600160401b03811161029057610f7d903690600401612b28565b50506064356001600160401b03811161029057610f9e903690600401612b28565b50506084356001600160401b03811161029057610fbf903690600401612a52565b505060405163bc197c8160e01b8152602090f35b50346102365760203660031901126102365760406020916004358152600483522054604051908152f35b5034610236576080366003190112610236576110176128fe565b61101f612914565b90604435606435926001600160401b0384116105a2576110466107f3943690600401612b0a565b92611052838383612bd7565b3361340c565b5034610236576020366003190112610236576110726128fe565b6036546040516303b0981b60e61b81526001600482015233602482015290602090829060449082906001600160a01b03165afa9081156108af578391611165575b501561115157600554906001600160a01b0382168015159081611102575b506110f3576001600160a01b03166001600160a01b0319919091161760055580f35b6345e1d12960e01b8352600483fd5b604051634d08d65560e01b81529150602090829060049082905afa908115610f2f578491611132575b505f6110d1565b61114b915060203d60201161074a5761073c8183612991565b5f61112b565b633db159f160e21b82526001600452602482fd5b61117e915060203d60201161074a5761073c8183612991565b5f6110b3565b503461023657806003193601126102365760209054604051908152f35b503461023657806003193601126102365750610e156040516111c4604082612991565b60058152640352e302e360dc1b60208201526040519182916020835260208301906128da565b50346102365780600319360112610236576036546040516001600160a01b039091168152602090f35b50346102365760203660031901126102365760ff60406020926004358152600284522054166112456040518092612b58565bf35b5034610236576040366003190112610236576112616128fe565b60243590811515908183036105af576001600160a01b03169182156112d7576112a89061128d33612e6c565b845f5260205260405f209060ff801983541691151516179055565b6040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b630b61174360e31b84526004839052602484fd5b5034610236576040366003190112610236576004356001600160401b038111610290576060600319823603011261029057611324612914565b6036546040516303b0981b60e61b81526003600482015233602482015291929190602090829060449082906001600160a01b03165afa908115610f2f57849161137b575b5015610efc57906107f391600401613128565b611394915060203d60201161074a5761073c8183612991565b5f611368565b5034610236576040366003190112610236576004356001600160401b038111610290576113cb903690600401612b28565b906024356001600160401b0381116105af576113eb903690600401612b28565b6036546040516303b0981b60e61b815260036004820152336024820152919492939190602090829060449082906001600160a01b03165afa9081156107515786916114ad575b50156114995783820361148a57845b82811061144b578580f35b611456818484612f67565b90611462818787612ea4565b35916001600160a01b03831683036114865760019261148091613128565b01611440565b8780fd5b63512509d360e11b8552600485fd5b633db159f160e21b85526003600452602485fd5b6114c6915060203d60201161074a5761073c8183612991565b5f611431565b5034610236576020366003190112610236576004356044602060018060a01b0360365416604051928380926303b0981b60e61b8252600560048301523360248301525afa9081156108af57839161162a575b5015611616578161152e82613102565b6007546001600160a01b0390811691168114611548575080f35b803b1561029057818091602460405180948193630f31981f60e01b83528860048401525af180156105dc57611601575b50507f38d0b0a2e0725c65cb57b872c669589618803bc7a0c840ffd08440285feb8bde6020604051838152a16115ad81613070565b80825260066020526115c160408320612de6565b808252600460205281604081205581526008602052604081208054828255806115e957508180f35b6115fc9183526020832090810190612dd0565b5f8180f35b8161160b91612991565b61029057815f611578565b633db159f160e21b82526005600452602482fd5b611643915060203d60201161074a5761073c8183612991565b5f61151e565b503461023657806003193601126102365760405190805f8051602061371f83398151915254906116788261292a565b808552916001811690811561170957506001146116a0575b610e1584610e0181860382612991565b5f8051602061371f83398151915281527ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e939250905b8082106116ef57509091508101602001610e0182611690565b9192600181602092548385880101520191019092916116d6565b60ff191660208087019190915292151560051b85019092019250610e019150839050611690565b50346102365760203660031901126102365760043581526003602052604081206040519161175d83612962565b611766826129b2565b835260ff6002611778600185016129b2565b936020860194855201541615801560408501526117bc5750610e156117ae925191516040519384936040855260408501906128da565b9083820360208501526128da565b63f9de22c360e01b8152600490fd5b503461023657602036600319011261023657600435906001600160401b038211610236578160040160406003198436030112610290576036546040516303b0981b60e61b8152600360048201523360248201529390602090859060449082906001600160a01b03165afa80156108af576024948491611acf575b5015611abc5782549161185783612eb4565b84556118986118668280612ed6565b969093019261188f6118788585612ed6565b919092604051996118888b612962565b3691612ad4565b88523691612ad4565b9460208101958652604081016001815284865260036020526040862091518051906001600160401b038211610d5e576118db826118d5865461292a565b86612f08565b602090601f8311600114611a5a576119099291899183610b6a5750508160011b915f199060031b1c19161790565b82555b6001820196519687516001600160401b038111610d5e5761193781611931845461292a565b84612f08565b6020601f82116001146119ce5791611990826119a99695936002958c9d7f47c4b595b7f3e9e3b531152eb4401846f9a836674532f6538945f151962e2c749c9d92610b6a5750508160011b915f199060031b1c19161790565b90555b51151591019060ff801983541691151516179055565b6105836119c16119b98380612ed6565b949093612ed6565b9060405194859485612f40565b82895280892099601f1983168a5b818110611a425750927f47c4b595b7f3e9e3b531152eb4401846f9a836674532f6538945f151962e2c74999a9b60029593600193836119a99a999710611a2a575b505050811b019055611993565b01515f1960f88460031b161c191690555f8080611a1d565b838301518d556001909c019b602093840193016119dc565b8489528189209190601f1984168a5b818110611aa45750908460019594939210611a8c575b505050811b01825561190c565b01515f1960f88460031b161c191690555f8080611a7f565b92936020600181928786015181550195019301611a69565b5050633db159f160e21b81526003600452fd5b611ae8915060203d60201161074a5761073c8183612991565b5f611845565b5034610236576020366003190112610236576004356001600160401b03811161029057611b1f903690600401612b28565b825b818110611b2c578380f35b80611b43611b3d6001938587612ea4565b35612f89565b01611b21565b503461023657602036600319011261023657611b636128fe565b906001600160a01b03821615611b87576020611b7e83612e34565b54604051908152f35b6322718ad960e21b81526004819052602490fd5b50346102365780600319360112610236576005546040516001600160a01b039091168152602090f35b5034610236576040366003190112610236576004356024356001600160401b03811161078457611bf8903690600401612b0a565b6036546040516303b0981b60e61b815260048082015233602482015290602090829060449082906001600160a01b03165afa908115610f2f578491611d05575b5015611cf257818352600260205260ff6040842054166004811015611cde57600303611ccf576105837f3925bed3a3b592e1a6409518572ac45fc88acdea17242edb1d33de159f72c01c91611c8c84613070565b8385526006602052611ca060408620612de6565b8385526004602052846040812055604051918291600383523360208401526060604084015260608301906128da565b63e239ac6d60e01b8352600483fd5b634e487b7160e01b84526021600452602484fd5b633db159f160e21b835260048052602483fd5b611d1e915060203d60201161074a5761073c8183612991565b5f611c38565b5034610236576020366003190112610236576020611d43600435613041565b6040516001600160a01b039091168152f35b5034610236576020366003190112610236576040611dae916004358152600360205220611d81816129b2565b90611dbc60ff6002611d95600185016129b2565b93015416916040519485946060865260608601906128da565b9084820360208601526128da565b90151560408301520390f35b50346102365780600319360112610236577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003611e205760206040515f8051602061369f8339815191528152f35b63703e46dd60e11b8152600490fd5b50604036600319011261023657611e446128fe565b906024356001600160401b03811161029057611e64903690600401612b0a565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115612054575b50612045576036546040516303b0981b60e61b81526001600482015233602482015290602090829060449082906001600160a01b03165afa9081156108af578391612026575b5015611151576040516352d1902d60e01b8152926001600160a01b0381169190602085600481865afa80958596611ff2575b50611f2a57634c9c8ce360e01b84526004839052602484fd5b9091845f8051602061369f8339815191528103611fe05750813b15611fce575f8051602061369f83398151915280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a28151839015611fb45780836020611fb095519101845af4611faa6133dd565b91613620565b5080f35b50505034611fbf5780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8452600452602483fd5b632a87526960e21b8552600452602484fd5b9095506020813d60201161201e575b8161200e60209383612991565b810103126105a25751945f611f11565b3d9150612001565b61203f915060203d60201161074a5761073c8183612991565b5f611edf565b63703e46dd60e11b8252600482fd5b5f8051602061369f833981519152546001600160a01b0316141590505f611e99565b50346102365780600319360112610236576020600154604051908152f35b5034610236576107f36120a636612a7f565b90604051926120b6602085612991565b858452611052838383612bd7565b5034610236576020366003190112610236576004356001600160401b0381116102905736602382011215610290578060040135906001600160401b038211610784576024810190602436918460061b01011161078457825b828110612127578380f35b6020612134828585612dac565b013560048110156105a257156122fb57336001600160a01b0361216161215b848787612dac565b35613041565b16036122ec57612172818484612dac565b358452600260205260ff6040852054166004811015610686576122dd57602061219c828585612dac565b013560048110156105a2576121c7906121b6838686612dac565b358652600260205260408620612b65565b60206121d4828585612dac565b013560048110156105a25760011461224b575b6121f2818484612dac565b35906020612201828686612dac565b0135916004831015610dc8577f309129078e08d2819db9fb1757a39c9bf7eaa591f6d9dcda15a157975cefb2b8612242600194604051918291339083612b7d565b0390a20161211c565b60055484906001600160a01b0316612264838686612dac565b35612270848787612dac565b3583526004602052604083205490823b156105af57604051636e05c5ef60e01b8152600481019190915260248101919091523360448201529082908290606490829084905af180156105dc576122c8575b50506121e7565b816122d291612991565b6105af57835f6122c1565b632b0c211d60e21b8452600484fd5b638bfe463360e01b8452600484fd5b634492470b60e11b8452600484fd5b5034610236576107f361231c36612a7f565b91612bd7565b5034610236576040366003190112610236576004356024356001600160401b03811161078457612356903690600401612a52565b6036546040516303b0981b60e61b815260048082015233602482015290602090829060449082906001600160a01b03165afa9081156124a2578591612483575b501561247057828452600260205260ff6040852054166004811015610686571561246157828452600260205260ff60408520541660048110156106865760011461245257907f3bfe45833a1968152f1a88551b96ef14fd1cd7094fd448ff8ffce3b2992c11be91838552600260205260ff60408620541684865260026020526040862060ff19815416905561244661243b604051948594606086526060860191612bb7565b916020840190612b58565b3360408301520390a280f35b633029793360e11b8452600484fd5b63274a7f6f60e01b8452600484fd5b633db159f160e21b845260048052602484fd5b61249c915060203d60201161074a5761073c8183612991565b5f612396565b6040513d87823e3d90fd5b503461023657602036600319011261023657610e016040610e159260043581526006602052206129b2565b50346102365780600319360112610236576007546040516001600160a01b039091168152602090f35b50346102365760403660031901126102365761251b6128fe565b60243561252781613041565b331515806125da575b806125b7575b6125a45781906001600160a01b0384811691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258680a482525f805160206136df8339815191526020526040822080546001600160a01b0319166001600160a01b0390921691909117905580f35b63a9fbf51f60e01b845233600452602484fd5b506125c181612e6c565b335f908152602091909152604090205460ff1615612536565b506001600160a01b038116331415612530565b5034610236576020366003190112610236576020611d4360043561261081613041565b505f9081525f805160206136df83398151915260205260409020546001600160a01b031690565b503461023657806003193601126102365760405190805f8051602061367f83398151915254906126668261292a565b8085529160018116908115611709575060011461268d57610e1584610e0181860382612991565b5f8051602061367f83398151915281527f37c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf81939250905b8082106126dc57509091508101602001610e0182611690565b9192600181602092548385880101520191019092916126c3565b503461282a57604036600319011261282a57602435600481101561282a578015612860576004359061272782613041565b336001600160a01b039091160361285157815f52600260205260ff60405f205416600481101561283d5761282e57815f52600260205261276a8160405f20612b65565b600181146127a6575b6105837f309129078e08d2819db9fb1757a39c9bf7eaa591f6d9dcda15a157975cefb2b891604051918291339083612b7d565b6005545f83815260046020526040902054906001600160a01b0316803b1561282a57604051636e05c5ef60e01b81526004810185905260248101929092523360448301525f908290606490829084905af1801561281f57612808575b50612773565b6128159193505f90612991565b5f91610583612802565b6040513d5f823e3d90fd5b5f80fd5b632b0c211d60e21b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b638bfe463360e01b5f5260045ffd5b634492470b60e11b5f5260045ffd5b3461282a57602036600319011261282a576004359063ffffffff60e01b821680920361282a576020916380ac58cd60e01b81149081156128c9575b81156128b8575b5015158152f35b6301ffc9a760e01b149050836128b1565b635b5e139f60e01b811491506128aa565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361282a57565b602435906001600160a01b038216820361282a57565b90600182811c92168015612958575b602083101461294457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691612939565b606081019081106001600160401b0382111761297d57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b0382111761297d57604052565b9060405191825f8254926129c58461292a565b8084529360018116908115612a3057506001146129ec575b506129ea92500383612991565b565b90505f9291925260205f20905f915b818310612a145750509060206129ea928201015f6129dd565b60209193508060019154838589010152019101909184926129fb565b9050602092506129ea94915060ff191682840152151560051b8201015f6129dd565b9181601f8401121561282a578235916001600160401b03831161282a576020838186019501011161282a57565b606090600319011261282a576004356001600160a01b038116810361282a57906024356001600160a01b038116810361282a579060443590565b6001600160401b03811161297d57601f01601f191660200190565b929192612ae082612ab9565b91612aee6040519384612991565b82948184528183011161282a578281602093845f960137010152565b9080601f8301121561282a57816020612b2593359101612ad4565b90565b9181601f8401121561282a578235916001600160401b03831161282a576020808501948460051b01011161282a57565b90600482101561283d5752565b90600481101561283d5760ff80198354169116179055565b909291602090612b91836040810196612b58565b6001600160a01b0316910152565b9081602091031261282a5751801515810361282a5790565b908060209392818452848401375f828201840152601f01601f1916010190565b919091815f52600260205260ff60405f205416600481101561283d57612d9d576001600160a01b0383168015612d8a5782612c1181613102565b9133151580612cd7575b506001600160a01b03831695612c359087612cb957612e34565b60018154019055815f525f805160206136bf83398151915260205260405f20816001600160601b0360a01b825416179055857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4506001600160a01b0316808303612ca157505050565b6364283d7b60e01b5f5260045260245260445260645ffd5b612cc28461351b565b612ccb85612e34565b80545f19019055612e34565b90915080612d24575b15612ced5783905f612c1b565b836001600160a01b038316612d0e57637e27328960e01b5f5260045260245ffd5b63177e802f60e01b5f523360045260245260445ffd5b506001600160a01b03821633148015612d68575b80612ce057505f8481525f805160206136df83398151915260205260409020546001600160a01b03163314612ce0565b50612d7282612e6c565b335f908152602091909152604090205460ff16612d38565b633250574960e11b5f525f60045260245ffd5b639391374360e01b5f5260045ffd5b9190811015612dbc5760061b0190565b634e487b7160e01b5f52603260045260245ffd5b818110612ddb575050565b5f8155600101612dd0565b612df0815461292a565b9081612dfa575050565b81601f5f9311600114612e0b575055565b81835260208320612e2791601f0160051c810190600101612dd0565b8082528160208120915555565b6001600160a01b03165f9081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793036020526040902090565b6001600160a01b03165f9081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020526040902090565b9190811015612dbc5760051b0190565b5f198114612ec25760010190565b634e487b7160e01b5f52601160045260245ffd5b903590601e198136030182121561282a57018035906001600160401b03821161282a5760200191813603831361282a57565b9190601f8111612f1757505050565b6129ea925f5260205f20906020601f840160051c83019310610c4c57601f0160051c0190612dd0565b9290612f5990612b259593604086526040860191612bb7565b926020818503910152612bb7565b9190811015612dbc5760051b81013590605e198136030182121561282a570190565b805f52600260205260ff60405f205416600481101561283d57158015612fec575b612fdd57612fb781613041565b336001600160a01b0390911603612851575f52600260205260405f2060ff198154169055565b63274a7f6f60e01b5f5260045ffd5b50805f52600260205260ff60405f205416600481101561283d57600114612faa565b90602080835192838152019201905f5b81811061302b5750505090565b825184526020938401939092019160010161301e565b61304a81613102565b906001600160a01b0382161561305e575090565b637e27328960e01b5f5260045260245ffd5b61307981613102565b6001600160a01b0381168015919083905f9084156130e4575b8282525f805160206136bf8339815191526020526040822080546001600160a01b03191690557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a45061305e5750565b6130ed8361351b565b6130f684612e34565b82198154019055613092565b5f9081525f805160206136bf83398151915260205260409020546001600160a01b031690565b90813591825f52600360205260ff600260405f20015416156133ce576001549061315182612eb4565b600155604081016131628183612ed6565b845f52600660205260405f20916001600160401b03821161297d576131918261318b855461292a565b85612f08565b5f90601f831160011461336a576131be92915f918361335f5750508160011b915f199060031b1c19161790565b90555b825f5260046020528460405f20556020906040516131df8382612991565b5f81526001600160a01b038616958615612d8a576001600160a01b036132058783613544565b1661334c573b613254575b509061324f6119c161324485947f47d0031c7e1f2c9ddfb6c25566e8c84fbf9b0b7c1c14ae80dd715691b08399a796612ed6565b949093810190612ed6565b0390a4565b8261329591604099979998969594985180938192630a85bd0160e11b83523360048401525f60248401528860448401526080606484015260848301906128da565b03815f8c5af15f918161330c575b506132d05787876132b26133dd565b805191826132cd5783633250574960e11b5f5260045260245ffd5b01fd5b949693959394929391926001600160e01b03191663757a42ff60e11b016132f95761324f613210565b84633250574960e11b5f5260045260245ffd5b9091508781813d8311613345575b6133248183612991565b8101031261282a57516001600160e01b03198116810361282a57905f6132a3565b503d61331a565b6339e3563760e11b5f525f60045260245ffd5b013590505f80610a11565b601f19831691845f5260205f20925f5b8181106133b6575090846001959493921061339d575b505050811b0190556131c1565b01355f19600384901b60f8161c191690555f8080613390565b9193602060018192878701358155019501920161337a565b63f9de22c360e01b5f5260045ffd5b3d15613407573d906133ee82612ab9565b916133fc6040519384612991565b82523d5f602084013e565b606090565b823b61341a575b5050505050565b604051630a85bd0160e11b81526001600160a01b0391821660048201529181166024830152604482019390935260806064820152911691602090829081906134669060848301906128da565b03815f865af15f91816134d6575b506134a257506134826133dd565b8051908161349d5782633250574960e11b5f5260045260245ffd5b602001fd5b6001600160e01b03191663757a42ff60e11b016134c457505f80808080613413565b633250574960e11b5f5260045260245ffd5b9091506020813d602011613513575b816134f260209383612991565b8101031261282a57516001600160e01b03198116810361282a57905f613474565b3d91506134e5565b5f525f805160206136df83398151915260205260405f206001600160601b0360a01b8154169055565b9061354e81613102565b916001600160a01b038316806135d7575b6001600160a01b03821691826135c1575b505f8381525f805160206136bf8339815191526020526040812080546001600160a01b031916841790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9080a490565b6135ca90612e34565b600181540190555f613570565b6135e08361351b565b6135e984612e34565b80545f1901905561355f565b60ff5f805160206136ff8339815191525460401c161561361157565b631afcd79f60e31b5f5260045ffd5b90613644575080511561363557805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580613675575b613655575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561364d56fe80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930280bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079301a2646970667358221220dabb150dbc008cd34af5a1f7fb99c1c7763b0c35339d78ec07a6de17915d70c564736f6c634300081a0033