0 txs
0 calls
constructor
constructor()
functions
cardNFTAddress
viewfunction cardNFTAddress() view returns (address)
failedTransferCards
viewfunction failedTransferCards(address, uint256) view returns (uint256)
getPacketTypeToCardBundles
viewfunction getPacketTypeToCardBundles(uint256 packetType) view returns (tuple[])
getQuantityOfAvailableCardBundles
viewfunction getQuantityOfAvailableCardBundles(uint256 packetType) view returns (uint256)
hasPendingRandomdness
viewfunction hasPendingRandomdness() view returns (bool)
onERC721Received
purefunction onERC721Received(address, address, uint256, bytes) pure returns (bytes4)
packetNFTAddress
viewfunction packetNFTAddress() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
rbac
viewfunction rbac() view returns (address)
redeemManagerRoleId
viewfunction redeemManagerRoleId() view returns (uint256)
requestFulfilled
viewfunction requestFulfilled(uint256) view returns (bool)
requestIdToPacketOpen
viewfunction requestIdToPacketOpen(uint256) view returns (uint256 packetId, uint256 packetType, address owner, bool fulfilled)
requestTimestamps
viewfunction requestTimestamps(uint256) view returns (uint256)
s_vrfCoordinator
viewfunction s_vrfCoordinator() view returns (address)
SUPER_ADMIN_ROLE
viewfunction SUPER_ADMIN_ROLE() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
addCardBundlesToPacketPool
nonpayablefunction addCardBundlesToPacketPool(uint256 packetType, uint256[] cardBundles, uint256[] packetIds, bytes32 bundleProvenance)
authorizedOpenPacket
nonpayablefunction authorizedOpenPacket(uint256 packetId, uint256 packetType, uint256[] cards, string openMetadata)
cancelStuckRequest
nonpayablefunction cancelStuckRequest(uint256 requestId)
claimEscrowedCards
nonpayablefunction claimEscrowedCards()
initialize
nonpayablefunction initialize(address packetAddress, address cardAddress, address _rbac, uint256 _redeemManagerRoleId, address vrfCoordinator, uint256 subscriptionId, uint256 _maxBundleSize, bytes32 _keyHash)
instantOpenPacket
nonpayablefunction instantOpenPacket(uint256 packetId, uint256 packetType, address owner)
onERC1155BatchReceived
nonpayablefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)
onERC1155Received
nonpayablefunction onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)
rawFulfillRandomWords
nonpayablefunction rawFulfillRandomWords(uint256 requestId, uint256[] randomWords)
removeCardBundlesFromPacketPool
nonpayablefunction removeCardBundlesFromPacketPool(uint256 packetType, uint256[] cardBundleIndexes)
sendNFTS
nonpayablefunction sendNFTS(uint256[] selectedCards, address owner)
setCoordinator
nonpayablefunction setCoordinator(address _vrfCoordinator)
updateCardAddress
nonpayablefunction updateCardAddress(address newCardAddress)
updatePacketAddress
nonpayablefunction updatePacketAddress(address newPacketAddress)
updateVRFConfig
nonpayablefunction updateVRFConfig(uint256 subscriptionId, bytes32 _keyHash, uint32 _callbackGasLimit, uint16 _requestConfirmations, uint32 _numWords)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
CardAddressUpdated
event CardAddressUpdated(address indexed oldAddress, address indexed newAddress)
CardBundlesRemovedFromPool
event CardBundlesRemovedFromPool(uint256 indexed packetType, uint256[] cardBundleIndexes)
CardsAddedToPool
event CardsAddedToPool(uint256 indexed packetType, uint256[] cards, bytes32 bundleProvenance)
CardsEscrowed
event CardsEscrowed(address indexed owner, uint256[] cards)
CoordinatorSet
event CoordinatorSet(address vrfCoordinator)
Initialized
event Initialized(uint64 version)
PacketAddressUpdated
event PacketAddressUpdated(address indexed oldAddress, address indexed newAddress)
PacketOpenFulfilled
event PacketOpenFulfilled(uint256 indexed requestId, uint256 indexed packetId, address indexed owner, uint256[] cards)
PacketOpenRequested
event PacketOpenRequested(uint256 indexed requestId, uint256 indexed packetId, uint256 packetType, address owner)
PacketTypeCardQuantityUpdated
event PacketTypeCardQuantityUpdated(uint256 indexed packetType, uint256 quantity)
PhysicalPacketOpened
event PhysicalPacketOpened(uint256 indexed packetId, uint256 packetType, address owner, uint256[] cards)
RequestCancelled
event RequestCancelled(uint256 indexed requestId, uint256 indexed packetId, address owner)
Upgraded
event Upgraded(address indexed implementation)
VRFConfigUpdated
event VRFConfigUpdated(uint256 subscriptionId, bytes32 keyHash, uint32 callbackGasLimit, uint16 requestConfirmations, uint32 numWords)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AlreadyFulfilled
error AlreadyFulfilled()
CannotChangeDuringRandomness
error CannotChangeDuringRandomness()
CannotExceedMaxBundleSize
error CannotExceedMaxBundleSize()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
IncorrectLength
error IncorrectLength()
IncorrectPacketType
error IncorrectPacketType()
InsufficientCardBundles
error InsufficientCardBundles()
InvalidCardContract
error InvalidCardContract()
InvalidCardCount
error InvalidCardCount()
InvalidCardQuantity
error InvalidCardQuantity()
InvalidInitialization
error InvalidInitialization()
InvalidPacketContract
error InvalidPacketContract()
InvalidRequest
error InvalidRequest()
InvalidVRFConfig
error InvalidVRFConfig()
NoAvailableCardBundles
error NoAvailableCardBundles()
NoEscrowedCards
error NoEscrowedCards()
NotAuthorizedRole
error NotAuthorizedRole(uint256 roleId)
NotInitializing
error NotInitializing()
OnlyCoordinatorCanFulfill
error OnlyCoordinatorCanFulfill(address have, address want)
OnlyRedeemManagerOrCoordinator
error OnlyRedeemManagerOrCoordinator(address have, uint256 roleId, address coordinator)
RBACAddressZero
error RBACAddressZero()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
TooEarly
error TooEarly()
UnauthorizedCaller
error UnauthorizedCaller()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
ZeroAddress
error ZeroAddress()
creation bytecode
0x60a080604052346100e857306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c166100d9576002600160401b03196001600160401b03821601610073575b604051612bb390816100ed8239608051818181611cb80152611d490152f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610054565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a71461229457508063022294b61461216b57806303cddbd11461214357806304b8904914612119578063150b7a02146120aa57806318e89cc214612080578063194679ec146120295780631fe543e314611f975780634460bdd614611f7c5780634d08d65514611f5d5780634f1ef28614611d0c57806352d1902d14611ca657806352e0640414611b315780635444493414611a745780635751fea2146119705780635ecb17971461169957806368064c641461166a5780636e05c5ef1461123b5780637d5cb98d1461121e57806387378b4214610ff35780638ea9811714610ecd578063958d3dbf14610ad257806397fea2c4146109e85780639eccacf6146109c0578063a8ecc7f114610999578063ad3cb1cc1461094e578063b33135f114610855578063b43ef7dc14610523578063bc197c811461048e578063d2ac464614610260578063ee7fd67914610238578063f13fb7a0146101e05763f23a6e6114610187575f80fd5b346101dc5760a03660031901126101dc576101a06122e7565b506101a96122fd565b506084356001600160401b0381116101dc576101c99036906004016123b6565b5060405163f23a6e6160e01b8152602090f35b5f80fd5b346101dc5760403660031901126101dc576101f96122e7565b6001600160a01b03165f908152606960205260409020805460243591908210156101dc5760209161022991612476565b90549060031b1c604051908152f35b346101dc575f3660031901126101dc576033546040516001600160a01b039091168152602090f35b346101dc5760203660031901126101dc576004356044602060018060a01b035f5416604051928380926303b0981b60e61b8252600160048301523360248301525afa9081156103ff575f9161045f575b501561044b57805f52603e60205260405f20541561043c57805f52603f60205260ff60405f20541661042d57805f52603e60205260405f205462015180810180911161041957421061040a57805f52603760205260405f2090805f52603f60205260405f20600160ff198254161790556002820191600160a01b60ff60a01b1984541617835560018101545f52603b60205260405f20610350815461272a565b905561035d603c5461272a565b603c55603254835482546001600160a01b03928316939290911690833b156101dc576103a3935f9283604051809781958294632142170760e11b8452306004850161250e565b03925af19081156103ff577fba2b6ea31cde66cc656e3ca1fc810dab9f7773aa1c0e7aeede77a6c3c978f9a4926020926103ef575b505493546040516001600160a01b039091168152a3005b5f6103f991612344565b856103d8565b6040513d5f823e3d90fd5b63085de62560e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b634a4117f960e01b5f5260045ffd5b6341abc80160e01b5f5260045ffd5b633db159f160e21b5f52600160045260245ffd5b610481915060203d602011610487575b6104798183612344565b8101906124d5565b826102b0565b503d61046f565b346101dc5760a03660031901126101dc576104a76122e7565b506104b06122fd565b506044356001600160401b0381116101dc576104d0903690600401612437565b506064356001600160401b0381116101dc576104f0903690600401612437565b506084356001600160401b0381116101dc576105109036906004016123b6565b5060405163bc197c8160e01b8152602090f35b346101dc5760803660031901126101dc576004356044356001600160401b0381116101dc57610556903690600401612437565b906064356001600160401b0381116101dc57366023820112156101dc57610587903690602481600401359101612380565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146108465760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556034545f546040516303b0981b60e61b81526004810183905233602482015290602090829060449082906001600160a01b03165afa9081156103ff575f91610827575b50156108155750825115610806576032546040516331a9108f60e11b81526004810184905291906001600160a01b0316602083602481845afa9283156103ff575f936107c2575b50803b156101dc576106ad5f9291839260405194858094819363ed12841d60e01b83528a60048401526060602484015261069b606484018d6125a0565b83810360031901604485015290612452565b03925af180156103ff576107b2575b505f5b8351811015610739576033546001600160a01b0316906106df81866124fa565b5191803b156101dc57604051632142170760e11b8152925f91849182908490829061070f908a336004850161250e565b03925af19182156103ff57600192610729575b50016106bf565b5f61073391612344565b85610722565b50827f8c364ae52a0fa4b0e477472c6097f0b670c902680c296ec63ede31924adfda8a91610789604051928392602435845260018060a01b031660208401526060604084015260608301906125a0565b0390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055005b5f6107bc91612344565b836106bc565b9092506020813d6020116107fe575b816107de60209383612344565b810103126101dc57516001600160a01b03811681036101dc57918561065e565b3d91506107d1565b63cd9f8be160e01b5f5260045ffd5b633db159f160e21b5f5260045260245ffd5b610840915060203d602011610487576104798183612344565b85610617565b633ee5aeb560e01b5f5260045ffd5b346101dc5760203660031901126101dc5761086e6122e7565b6034545f546040516303b0981b60e61b81526004810183905233602482015290602090829060449082906001600160a01b03165afa9081156103ff575f9161092f575b50156108155750603c54610920576001600160a01b0316801561091157603280546001600160a01b0319811683179091556001600160a01b03167f95e0d53cacacf6113890fb0ef86b8f198a69baeceefcf8e06843945a140f09285f80a3005b635abe360560e01b5f5260045ffd5b6345e1d12960e01b5f5260045ffd5b610948915060203d602011610487576104798183612344565b836108b1565b346101dc575f3660031901126101dc5761099560405161096f604082612344565b60058152640352e302e360dc1b6020820152604051918291602083526020830190612452565b0390f35b346101dc575f3660031901126101dc575f546040516001600160a01b039091168152602090f35b346101dc575f3660031901126101dc576035546040516001600160a01b039091168152602090f35b346101dc5760203660031901126101dc57610a016122e7565b6034545f546040516303b0981b60e61b81526004810183905233602482015290602090829060449082906001600160a01b03165afa9081156103ff575f91610ab3575b50156108155750603c54610920576001600160a01b03168015610aa457603380546001600160a01b0319811683179091556001600160a01b03167fe16d6fab825e090e171c02ef4d93a19d8d3e28e760aa484315da94b7f10945145f80a3005b6363ec9a3960e11b5f5260045ffd5b610acc915060203d602011610487576104798183612344565b83610a44565b346101dc5760803660031901126101dc576004356024356001600160401b0381116101dc57610b05903690600401612437565b906044356001600160401b0381116101dc57610b25903690600401612437565b9160643592603c54610920576034545f546040516303b0981b60e61b81526004810183905233602482015290602090829060449082906001600160a01b03165afa9081156103ff575f91610eae575b501561081557508151603d5410610e9f576001815103610e90576032546040516308e5e6db60e41b8152600481018590526001600160a01b0390911692905f81602481875afa80156103ff57610e34575b505f5b8251811015610c5857610bdb81846124fa565b5160405190637fb0610d60e11b82526004820152602081602481885afa80156103ff5786915f91610c24575b5003610c1557600101610bc8565b633a4015fb60e11b5f5260045ffd5b9150506020813d8211610c50575b81610c3f60209383612344565b810103126101dc5785905188610c07565b3d9150610c32565b50848483815f52603660205260405f20604051610c7481612329565b84815260208101918683528054600160401b811015610e0d57610c9c916001820181556125d3565b610e2157600191518155019051908151916001600160401b038311610e0d57602090610cc88484612560565b01905f5260205f205f5b838110610df95750506032546001600160a01b031692610cf4925090506124ed565b51813b156101dc575f916024839260405194859384926326c06ba960e21b845260048401525af180156103ff57610de9575b505f5b8351811015610da3576033546001600160a01b031690610d4981866124fa565b5191803b156101dc57604051632142170760e11b8152925f918491829084908290610d799030336004850161250e565b03925af19182156103ff57600192610d93575b5001610d29565b5f610d9d91612344565b85610d8c565b507f37cf25a6384d24bb2f4e220292e757512e91fe237676ee35f01cf77f9cf4ad62610dde84846040519283926040845260408401906125a0565b9060208301520390a2005b5f610df391612344565b83610d26565b600190602084519401938184015501610cd2565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f525f60045260245ffd5b3d805f833e610e438183612344565b81016040828203126101dc5781516001600160401b0381116101dc5781610e6b9184016126e4565b5060208201516001600160401b0381116101dc57610e8992016126e4565b5085610bc5565b631a5dd14760e11b5f5260045ffd5b633b025bf560e01b5f5260045ffd5b610ec7915060203d602011610487576104798183612344565b86610b74565b346101dc5760203660031901126101dc57610ee66122e7565b6034545f546040516303b0981b60e61b81526004810183905233602482015290602090829060449082906001600160a01b03165afa9081156103ff575f91610fd4575b501580610fbf575b610f9557506001600160a01b03168015610f86576020817fd1a6a14209a385a964d036e404cb5cfb71f4000cdb03c9366292430787261be6926001600160601b0360a01b6035541617603555604051908152a1005b63d92e233d60e01b5f5260045ffd5b603554634ac12ca960e11b5f908152336004526024929092526001600160a01b0316604452606490fd5b506035546001600160a01b0316331415610f31565b610fed915060203d602011610487576104798183612344565b83610f29565b346101dc576101003660031901126101dc5761100d6122e7565b6110156122fd565b61101d612313565b6084356001600160a01b03811692908390036101dc575f80516020612b5e833981519152549360ff8560401c1615946001600160401b03811680159081611216575b600114908161120c575b159081611203575b506111f45767ffffffffffffffff1981166001175f80516020612b5e83398151915255856111c8575b506001600160a01b03168015610911576001600160601b0360a01b603254161760325560018060a01b03166001600160601b0360a01b60335416176033556064356034556110e6612ab4565b6001600160a01b031680156111b9576001600160601b0360a01b5f5416175f5561110e612ab4565b8015610f86576001600160601b0360a01b603554161760355560c435603d5560a43560385560e4356039556601000000000000640500030d4069ffffffffffffffffffff19603a54161717603a5561116257005b68ff0000000000000000195f80516020612b5e83398151915254165f80516020612b5e833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63e676f03160e01b5f5260045ffd5b68ffffffffffffffffff191668010000000000000001175f80516020612b5e833981519152558561109a565b63f92ee8a960e01b5f5260045ffd5b90501587611071565b303b159150611069565b87915061105f565b346101dc575f3660031901126101dc576020603454604051908152f35b346101dc5760603660031901126101dc5760243560043561125a612313565b6032546001600160a01b0316330361165b57825f52603660205260405f2054835f52603b60205260405f2054101561164c57825f526036602052600160405f2054145f1461140957825f52603660205260405f208054156113f5575f526112c6600160205f200161248b565b6032549093906001600160a01b0316803b156101dc575f604051809263ed12841d60e01b82528183816112fd8b8b600484016126ba565b03925af180156103ff576113e5575b505f52603660205261132060405f2061266c565b5f5b835181101561139c576033546001600160a01b03169061134281866124fa565b5191803b156101dc57604051632142170760e11b8152925f918491829084908290611372908a306004850161250e565b03925af19182156103ff5760019261138c575b5001611322565b5f61139691612344565b85611385565b507f2358b13e048bdb9a6172d465321ff82bdb94857c4a61624551eb18a14ab1b7c96113e05f926040519182916020835260018060a01b03169660208301906125a0565b0390a4005b5f6113ef91612344565b8461130c565b634e487b7160e01b5f52603260045260245ffd5b9091805f52603b60205260405f2061142181546126ac565b905561142e603c546126ac565b603c556039549160385492603a5460405190602082018281106001600160401b03821117610e0d576040525f82526040519163125fa26760e31b6020840152511515602483015260248252611484604483612344565b6040519560c087018781106001600160401b03821117610e0d5761ffff976020955f92604052815285810192835261153d60408201958a86891c16875263ffffffff6060840196818116885281608086019160301c16815260a085019283528160018060a01b0360355416986040519e8f9b8c9a8b99634d8e1c2f60e11b8b528f60048c01525160248b01525160448a01525116606488015251166084860152511660a48401525160c060c484015260e4830190612452565b03925af19283156103ff575f93611618575b50825f52603e6020524260405f20556040519160808301928084106001600160401b03851117610e0d57604093845285815260208082018381526001600160a01b039485168387018181525f606086018181528a825260378652908990209551865592516001860155516002909401805492516001600160a81b0319909316949096169390931790151560a01b60ff60a01b16179093558351918252918101919091527fcab702c5f6d5746eb0e4d87edc190ea49312174379e28a6cdec34eb98ecc0bcd9190a3005b9092506020813d602011611644575b8161163460209383612344565b810103126101dc5751918461154f565b3d9150611627565b63094efc9560e01b5f5260045ffd5b635c427cd960e01b5f5260045ffd5b346101dc5760203660031901126101dc576004355f52603f602052602060ff60405f2054166040519015158152f35b346101dc5760403660031901126101dc576004356024356001600160401b0381116101dc576116cc903690600401612437565b90603c54610920576034545f546040516303b0981b60e61b81526004810183905233602482015290602090829060449082906001600160a01b03165afa9081156103ff575f91611951575b50156108155750805f52603660205260405f205f915b83518310156117c5575f5b8451848103908111610419575f198101908111610419578110156117ba5761176081866124fa565b5190600181018082116104195760019261177a82896124fa565b5111611788575b5001611738565b6117b361179583896124fa565b51916117a1818a6124fa565b516117ac858b6124fa565b52886124fa565b5286611781565b50916001019161172d565b5f90845b8051831015611913576117dc83826124fa565b519184548310156118d8575f5b60016117f585886125d3565b500154811015611883576033546001600160a01b03169061182381600161181c888b6125d3565b5001612476565b90549060031b1c91803b156101dc57604051632142170760e11b8152925f9184918290849082906118599033306004850161250e565b03925af19182156103ff57600192611873575b50016117e9565b5f61187d91612344565b8761186c565b509291909184545f198101908111610419578281600194106118b3575b50506118ab8561266c565b0191906117c9565b6118cb6118c36118d193896125d3565b5091886125d3565b90612649565b85806118a0565b60405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b6044820152606490fd5b61194c7f2b9306e19984fc56306ef7251db8cc7d85bc03b62b9106b8140796af619a9464916040519182916020835260208301906125a0565b0390a2005b61196a915060203d602011610487576104798183612344565b84611717565b346101dc575f3660031901126101dc57335f52606960205261199460405f2061248b565b80518015611a6557335f5260696020526119b060405f20612530565b5f5b8181106119f457825f807f2358b13e048bdb9a6172d465321ff82bdb94857c4a61624551eb18a14ab1b7c960405160208152806113e0339660208301906125a0565b6033546001600160a01b031690611a0b81856124fa565b5191803b156101dc57604051632142170760e11b8152925f918491829084908290611a3b9033306004850161250e565b03925af19182156103ff57600192611a55575b50016119b2565b5f611a5f91612344565b84611a4e565b633f34fcdb60e11b5f5260045ffd5b346101dc5760403660031901126101dc576004356001600160401b0381116101dc57611aa4903690600401612437565b611aac6122fd565b3033036101dc575f5b8251811015611b2f576033546001600160a01b031690611ad581856124fa565b5191803b156101dc57604051632142170760e11b8152925f918491829084908290611b05908a306004850161250e565b03925af19182156103ff57600192611b1f575b5001611ab5565b5f611b2991612344565b84611b18565b005b346101dc5760a03660031901126101dc576004356024356044359163ffffffff83168093036101dc576064359161ffff83168084036101dc576084359463ffffffff8616928387036101dc576034545f546040516303b0981b60e61b81526004810183905233602482015290602090829060449082906001600160a01b03165afa9081156103ff575f91611c87575b5015610815575084158015611c7f575b8015611c77575b8015611c6f575b611c60577fc6a0aca65722500f5b3b28b8c46d10463c12485a2a155c9cc0ca23c444dde3bc9660a096866038558260395565ffff000000008469ffffffff000000000000603a549460301b169369ffffffffffffffffffff1916179160201b161717603a556040519485526020850152604084015260608301526080820152a1005b63d753355560e01b5f5260045ffd5b508315611bde565b508215611bd7565b508115611bd0565b611ca0915060203d602011610487576104798183612344565b89611bc0565b346101dc575f3660031901126101dc577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003611cfd5760206040515f80516020612b3e8339815191528152f35b63703e46dd60e11b5f5260045ffd5b60403660031901126101dc57611d206122e7565b6024356001600160401b0381116101dc57611d3f9036906004016123b6565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115611f3b575b50611cfd575f546040516303b0981b60e61b81526001600482015233602482015290602090829060449082906001600160a01b03165afa9081156103ff575f91611f1c575b501561044b576040516352d1902d60e01b81526001600160a01b0383169290602081600481875afa5f9181611ee8575b50611e015783634c9c8ce360e01b5f5260045260245ffd5b805f80516020612b3e833981519152859203611ed65750813b15611ec4575f80516020612b3e83398151915280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115611eac575f80836020611b2f95519101845af43d15611ea4573d91611e8883612365565b92611e966040519485612344565b83523d5f602085013e612adf565b606091612adf565b505034611eb557005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011611f14575b81611f0460209383612344565b810103126101dc57519085611de9565b3d9150611ef7565b611f35915060203d602011610487576104798183612344565b83611db9565b5f80516020612b3e833981519152546001600160a01b03161415905083611d74565b346101dc575f3660031901126101dc576020603c541515604051908152f35b346101dc575f3660031901126101dc57602060405160018152f35b346101dc5760403660031901126101dc576024356001600160401b0381116101dc57366023820112156101dc5780600401356001600160401b0381116101dc573660248260051b840101116101dc576035546001600160a01b03163381900361201357611b2f61200b3684602487016123eb565b600435612736565b63073e64fd60e21b5f523360045260245260445ffd5b346101dc5760203660031901126101dc576004355f526037602052608060405f2060ff8154916002600182015491015490604051938452602084015260018060a01b038116604084015260a01c1615156060820152f35b346101dc5760203660031901126101dc576004355f52603e602052602060405f2054604051908152f35b346101dc5760803660031901126101dc576120c36122e7565b506120cc6122fd565b506064356001600160401b0381116101dc57366023820112156101dc5780600401356001600160401b0381116101dc57369101602401116101dc57604051630a85bd0160e11b8152602090f35b346101dc5760203660031901126101dc576004355f526036602052602060405f2054604051908152f35b346101dc575f3660031901126101dc576032546040516001600160a01b039091168152602090f35b346101dc5760203660031901126101dc576004355f52603660205260405f20805490612196826123d4565b916121a46040519384612344565b8083526020830180925f5260205f205f915b83831061226057848660405191829160208301906020845251809152604083019060408160051b85010192915f905b8282106121f457505050500390f35b919390929450603f19868203018252845160206060816040850193805186520151936040838201528451809452019201905f905b8082106122485750505060208060019296019201920185949391926121e5565b90919260208060019286518152019401920190612228565b6002602060019260405161227381612329565b8554815261228285870161248b565b838201528152019201920191906121b6565b346101dc5760203660031901126101dc576004359063ffffffff60e01b82168092036101dc57602091630271189760e51b81149081156122d6575b5015158152f35b6301ffc9a760e01b149050836122cf565b600435906001600160a01b03821682036101dc57565b602435906001600160a01b03821682036101dc57565b604435906001600160a01b03821682036101dc57565b604081019081106001600160401b03821117610e0d57604052565b90601f801991011681019081106001600160401b03821117610e0d57604052565b6001600160401b038111610e0d57601f01601f191660200190565b92919261238c82612365565b9161239a6040519384612344565b8294818452818301116101dc578281602093845f960137010152565b9080601f830112156101dc578160206123d193359101612380565b90565b6001600160401b038111610e0d5760051b60200190565b9291906123f7816123d4565b936124056040519586612344565b602085838152019160051b81019283116101dc57905b82821061242757505050565b813581526020918201910161241b565b9080601f830112156101dc578160206123d1933591016123eb565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b80548210156113f5575f5260205f2001905f90565b90604051918281549182825260208201905f5260205f20925f5b8181106124bc5750506124ba92500383612344565b565b84548352600194850194879450602090930192016124a5565b908160209103126101dc575180151581036101dc5790565b8051156113f55760200190565b80518210156113f55760209160051b010190565b6001600160a01b03918216815291166020820152604081019190915260600190565b8054905f81558161253f575050565b5f5260205f20908101905b818110612555575050565b5f815560010161254a565b90600160401b8111610e0d5781549181815582821061257e57505050565b5f5260205f2091820191015b818110612595575050565b5f815560010161258a565b90602080835192838152019201905f5b8181106125bd5750505090565b82518452602093840193909201916001016125b0565b80548210156113f5575f5260205f209060011b01905f90565b818114612645578154916001600160401b038311610e0d5761260e8383612560565b5f5260205f20905f5260205f208154915f925b84841061262f575050505050565b6001809192019384549281850155019290612621565b5050565b90610e2157818103612659575050565b600180836124ba945484550191016125ec565b80548015612698575f19019061268282826125d3565b610e21576001612695915f815501612530565b55565b634e487b7160e01b5f52603160045260245ffd5b5f1981146104195760010190565b906020926126d491835260608484015260608301906125a0565b9060408183039101525f81520190565b81601f820112156101dc578051906126fb82612365565b926127096040519485612344565b828452602083830101116101dc57815f9260208093018386015e8301015290565b8015610419575f190190565b9190915f90805f52603760205260405f2090600282019160ff835460a01c16612a7b57815f52603f60205260ff60405f205416612a7357815f52603f60205260405f20600160ff19825416179055600160a01b60ff60a01b198454161783556001810180545f52603b60205260405f206127b0815461272a565b90556127bd603c5461272a565b603c55545f5260366020526127d560405f20966124ed565b51958054968715612a64578790604051602081019182526001604082015260408152612802606082612344565b519020069061281d600161281684846125d3565b500161248b565b975f1981019081116104195761284a926118cb61283d61284593856125d3565b5091846125d3565b61266c565b82546001600160a01b0316303b156101dc575f604051808093631511124d60e21b825260406004830152612881604483018c6125a0565b906024830152038183305af19081612a4f575b5061296a575050815b84518110156129195781546001600160a01b031683526069602052604083206128c682876124fa565b5190805490600160401b82101561290557816128ea91600180969594018155612476565b819291549060031b91821b915f19901b19161790550161289d565b634e487b7160e01b86526041600452602486fd5b5054604051602080825293946001600160a01b03909216937f487b32fd9b97b30bd1f9377ba2816044bcfbe5deedf708d567879a76a42dc6a193509091829161296591908301906125a0565b0390a2565b90919260018060a09796971b03603254168254813b15612a4b57918681926129a9948360405180978195829463ed12841d60e01b8452600484016126ba565b03925af19182612a33575b5050907f2358b13e048bdb9a6172d465321ff82bdb94857c4a61624551eb18a14ab1b7c991155f14612a0c5754925460405160208082526001600160a01b039092169590918291612a07918301906125a0565b0390a4565b54925460405160208082526001600160a01b039092169590918291612a07918301906125a0565b612a3e828092612344565b612a4857806129b4565b80fd5b8280fd5b612a5c9195505f90612344565b5f935f612894565b63976a300b60e01b5f5260045ffd5b505050509050565b60405162461bcd60e51b8152602060048201526011602482015270105b1c9958591e48199d5b199a5b1b1959607a1b6044820152606490fd5b60ff5f80516020612b5e8339815191525460401c1615612ad057565b631afcd79f60e31b5f5260045ffd5b90612b035750805115612af457805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580612b34575b612b14575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15612b0c56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212201438db6b56172c832517b94cb54bd49aca23a51eeb62b050eff60a3d45179dad64736f6c634300081a0033