0 txs
4 calls
constructor
constructor(address defaultOwner)
functions
applyCollectionTransferPolicy
viewfunction applyCollectionTransferPolicy(address caller, address from, address to) view
DEFAULT_TRANSFER_SECURITY_LEVEL
viewfunction DEFAULT_TRANSFER_SECURITY_LEVEL() view returns (uint8)
getCollectionSecurityPolicy
viewfunction getCollectionSecurityPolicy(address collection) view returns (tuple)
getPermittedContractReceivers
viewfunction getPermittedContractReceivers(uint120 id) view returns (address[])
getWhitelistedOperators
viewfunction getWhitelistedOperators(uint120 id) view returns (address[])
isContractReceiverPermitted
viewfunction isContractReceiverPermitted(uint120 id, address receiver) view returns (bool)
isOperatorWhitelisted
viewfunction isOperatorWhitelisted(uint120 id, address operator) view returns (bool)
isVerifiedEOA
viewfunction isVerifiedEOA(address account) view returns (bool)
MESSAGE_TO_SIGN
viewfunction MESSAGE_TO_SIGN() view returns (string)
operatorWhitelistOwners
viewfunction operatorWhitelistOwners(uint120) view returns (address)
permittedContractReceiverAllowlistOwners
viewfunction permittedContractReceiverAllowlistOwners(uint120) view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
transferSecurityPolicies
viewfunction transferSecurityPolicies(uint8) view returns (uint8 callerConstraints, uint8 receiverConstraints)
addOperatorToWhitelist
nonpayablefunction addOperatorToWhitelist(uint120 id, address operator)
addPermittedContractReceiverToAllowlist
nonpayablefunction addPermittedContractReceiverToAllowlist(uint120 id, address receiver)
createOperatorWhitelist
nonpayablefunction createOperatorWhitelist(string name) returns (uint120)
createPermittedContractReceiverAllowlist
nonpayablefunction createPermittedContractReceiverAllowlist(string name) returns (uint120)
reassignOwnershipOfOperatorWhitelist
nonpayablefunction reassignOwnershipOfOperatorWhitelist(uint120 id, address newOwner)
reassignOwnershipOfPermittedContractReceiverAllowlist
nonpayablefunction reassignOwnershipOfPermittedContractReceiverAllowlist(uint120 id, address newOwner)
removeOperatorFromWhitelist
nonpayablefunction removeOperatorFromWhitelist(uint120 id, address operator)
removePermittedContractReceiverFromAllowlist
nonpayablefunction removePermittedContractReceiverFromAllowlist(uint120 id, address receiver)
renounceOwnershipOfOperatorWhitelist
nonpayablefunction renounceOwnershipOfOperatorWhitelist(uint120 id)
renounceOwnershipOfPermittedContractReceiverAllowlist
nonpayablefunction renounceOwnershipOfPermittedContractReceiverAllowlist(uint120 id)
setOperatorWhitelistOfCollection
nonpayablefunction setOperatorWhitelistOfCollection(address collection, uint120 id)
setPermittedContractReceiverAllowlistOfCollection
nonpayablefunction setPermittedContractReceiverAllowlistOfCollection(address collection, uint120 id)
setTransferSecurityLevelOfCollection
nonpayablefunction setTransferSecurityLevelOfCollection(address collection, uint8 level)
verifySignature
nonpayablefunction verifySignature(bytes signature)
verifySignatureVRS
nonpayablefunction verifySignatureVRS(uint8 v, bytes32 r, bytes32 s)
events
AddedToAllowlist
event AddedToAllowlist(uint8 indexed kind, uint256 indexed id, address indexed account)
CreatedAllowlist
event CreatedAllowlist(uint8 indexed kind, uint256 indexed id, string indexed name)
ReassignedAllowlistOwnership
event ReassignedAllowlistOwnership(uint8 indexed kind, uint256 indexed id, address indexed newOwner)
RemovedFromAllowlist
event RemovedFromAllowlist(uint8 indexed kind, uint256 indexed id, address indexed account)
SetAllowlist
event SetAllowlist(uint8 indexed kind, address indexed collection, uint120 indexed id)
SetTransferSecurityLevel
event SetTransferSecurityLevel(address indexed collection, uint8 level)
VerifiedEOASignature
event VerifiedEOASignature(address indexed account)
errors
CallerDidNotSignTheMessage
error CallerDidNotSignTheMessage()
CreatorTokenTransferValidator__AddressAlreadyAllowed
error CreatorTokenTransferValidator__AddressAlreadyAllowed()
CreatorTokenTransferValidator__AddressNotAllowed
error CreatorTokenTransferValidator__AddressNotAllowed()
CreatorTokenTransferValidator__AllowlistDoesNotExist
error CreatorTokenTransferValidator__AllowlistDoesNotExist()
CreatorTokenTransferValidator__AllowlistOwnershipCannotBeTransferredToZeroAddress
error CreatorTokenTransferValidator__AllowlistOwnershipCannotBeTransferredToZeroAddress()
CreatorTokenTransferValidator__CallerDoesNotOwnAllowlist
error CreatorTokenTransferValidator__CallerDoesNotOwnAllowlist()
CreatorTokenTransferValidator__CallerMustBeWhitelistedOperator
error CreatorTokenTransferValidator__CallerMustBeWhitelistedOperator()
CreatorTokenTransferValidator__CallerMustHaveElevatedPermissionsForSpecifiedNFT
error CreatorTokenTransferValidator__CallerMustHaveElevatedPermissionsForSpecifiedNFT()
CreatorTokenTransferValidator__ReceiverMustNotHaveDeployedCode
error CreatorTokenTransferValidator__ReceiverMustNotHaveDeployedCode()
CreatorTokenTransferValidator__ReceiverProofOfEOASignatureUnverified
error CreatorTokenTransferValidator__ReceiverProofOfEOASignatureUnverified()
SignatureAlreadyVerified
error SignatureAlreadyVerified()
creation bytecode
0x60a06040523480156200001157600080fd5b506040516200251b3803806200251b833981016040819052620000349162000726565b604080518082019091526003815262454f4160e81b602082015262000059906200055e565b608052604080518082019091526000808252602080830182905290805260029081905281517fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b80549092839160ff1916906001908490811115620000c157620000c162000758565b021790555060208201518154829061ff001916610100836002811115620000ec57620000ec62000758565b021790555050604080518082019091526001808252600060208301819052919250600291908152602081019190915260400160002081518154829060ff1916600183600281111562000142576200014262000758565b021790555060208201518154829061ff0019166101008360028111156200016d576200016d62000758565b021790555050604080518082019091526002808252600060208084018290529082905281905281517f679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c8054939450929091839160ff1916906001908490811115620001dc57620001dc62000758565b021790555060208201518154829061ff00191661010083600281111562000207576200020762000758565b021790555050604080518082019091526001808252602082015290506002600060038152602081019190915260400160002081518154829060ff191660018360028111156200025a576200025a62000758565b021790555060208201518154829061ff00191661010083600281111562000285576200028562000758565b02179055505060408051808201909152600180825260026020808401829052600460005281905282517fee60d0579bcffd98e668647d59fec1ff86a7fb340ce572e844f234ae73a6918f8054949550939092849260ff19909216918490811115620002f457620002f462000758565b021790555060208201518154829061ff0019166101008360028111156200031f576200031f62000758565b02179055505060408051808201909152600280825260016020830152909150600060058152602081019190915260400160002081518154829060ff1916600183600281111562000373576200037362000758565b021790555060208201518154829061ff0019166101008360028111156200039e576200039e62000758565b0217905550506040805180820190915260028082526020808301829052600660005281905281517f59dd4b18488d12f51eda69757a0ed42a2010c14b564330cc74a06895e60c077b8054939450929091839160ff19169060019084908111156200040c576200040c62000758565b021790555060208201518154829061ff00191661010083600281111562000437576200043762000758565b021790555050600180546000925082906200045b906001600160781b03166200076e565b82546001600160781b038083166101009490940a848102910219909116179092556000908152600460205260409081902080546001600160a01b0386166001600160a01b031990911617905551909150620004d9907f44454641554c54204f50455241544f522057484954454c4953540000000000008152601a0190565b6040519081900390206001600160781b03821660006040517fae6fa502f14a93bc6996eabc5c1ebc61072d478b73fb03333a34754d31aa146d90600090a46001600160a01b0382166001600160781b03821660006040517f3ba9771b33f74e565d2184fa864cb3777a52a873cca631683d3e5d696b877c5b90600090a4505062000846565b6000620005728251620005a360201b60201c565b8260405160200162000586929190620007d1565b604051602081830303815290604052805190602001209050919050565b60606000620005b2836200063c565b60010190506000816001600160401b03811115620005d457620005d462000830565b6040519080825280601f01601f191660200182016040528015620005ff576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846200060957509392505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831062000686577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310620006b3576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310620006d257662386f26fc10000830492506010015b6305f5e1008310620006eb576305f5e100830492506008015b61271083106200070057612710830492506004015b6064831062000713576064830492506002015b600a831062000720576001015b92915050565b6000602082840312156200073957600080fd5b81516001600160a01b03811681146200075157600080fd5b9392505050565b634e487b7160e01b600052602160045260246000fd5b60006001600160781b038281166002600160781b03198101620007a157634e487b7160e01b600052601160045260246000fd5b6001019392505050565b60005b83811015620007c8578181015183820152602001620007ae565b50506000910152565b7f19457468657265756d205369676e6564204d6573736167653a0a0000000000008152600083516200080b81601a850160208801620007ab565b8351908301906200082481601a840160208801620007ab565b01601a01949350505050565b634e487b7160e01b600052604160045260246000fd5b608051611cb26200086960003960008181610c170152610fa80152611cb26000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80637c58813c116100f9578063b6567f2211610097578063da0194c011610071578063da0194c01461047c578063e30cd5e11461048f578063f80af984146104a2578063fec1d643146104b557600080fd5b8063b6567f2214610436578063b955455214610449578063d72dde5e1461046957600080fd5b80639445f530116100d35780639445f530146103c357806399f9a678146103d65780639e814cae146103e9578063a9f138eb1461042357600080fd5b80637c58813c1461035b57806389a9c855146103845780638d744314146103b057600080fd5b8063285fb8c811610166578063372fb54d11610140578063372fb54d146102f75780633fe5df991461030a578063501b7d2e1461031d578063731fb9d81461034857600080fd5b8063285fb8c8146102a257806333f0901b146102b557806334778f6a146102e457600080fd5b806317e94a6c116101a257806317e94a6c1461024757806318fbf6fe146102675780631c33b3281461027a5780632304aa021461028f57600080fd5b806301ffc9a7146101c95780630fac9f76146101f15780631390a2c214610232575b600080fd5b6101dc6101d736600461180e565b6104c8565b60405190151581526020015b60405180910390f35b61021a6101ff366004611854565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101e8565b610245610240366004611884565b610521565b005b61025a610255366004611854565b6105ad565b6040516101e891906118bb565b610245610275366004611884565b6105d1565b610282600081565b6040516101e89190611932565b61024561029d366004611940565b610606565b6102456102b0366004611975565b6106b3565b6102d760405180604001604052806003815260200162454f4160e81b81525081565b6040516101e891906119c0565b6102456102f2366004611854565b610956565b610245610305366004611884565b610964565b61025a610318366004611854565b6109c7565b61033061032b366004611a50565b6109eb565b6040516001600160781b0390911681526020016101e8565b610245610356366004611884565b610af7565b61021a610369366004611854565b6005602052600090815260409020546001600160a01b031681565b6101dc610392366004611a92565b6001600160a01b031660009081526020819052604090205460ff1690565b6102456103be366004611940565b610b28565b6101dc6103d1366004611884565b610bb8565b6102456103e4366004611aaf565b610be1565b6104156103f7366004611af9565b60026020526000908152604090205460ff8082169161010090041682565b6040516101e8929190611b24565b610245610431366004611854565b610cb4565b610330610444366004611a50565b610cbf565b61045c610457366004611a92565b610da6565b6040516101e89190611b4a565b6101dc610477366004611884565b610e3c565b61024561048a366004611b86565b610e5e565b61024561049d366004611884565b610ee6565b6102456104b0366004611a50565b610f72565b6102456104c3366004611884565b611078565b60006001600160e01b0319821663050bf71960e31b14806104f957506001600160e01b03198216638f1d689960e01b145b8061050c57506001600160e01b03198216155b8061051b575061051b826110db565b92915050565b61052a82611110565b6001600160781b038216600090815260066020526040902061054c908261115b565b61056957604051633e7dfd2360e21b815260040160405180910390fd5b6001600160a01b0381166001600160781b03831660005b6040517f5d23e0e2d8347166058712ba9dceec21d6edd7b466a0d13cb759d730bd56039090600090a45050565b6001600160781b038116600090815260076020526040902060609061051b90611170565b6001600160a01b0381166105f8576040516335c410ff60e21b815260040160405180910390fd5b610602828261117d565b5050565b61060f826111eb565b6001546001600160781b03908116908216111561063f576040516311630a7b60e11b815260040160405180910390fd5b6001600160a01b038216600081815260036020526040812080546fffffffffffffffffffffffffffffff0019166101006001600160781b0386169081029190911790915591905b6040517f6e5a76d990dc6af893e20eb82ea37eac6f22cc50e7c7306275569cdc5421a54390600090a45050565b336000818152600360205260408082208151606081019092528054829060ff1660068111156106e4576106e4611908565b60068111156106f5576106f5611908565b815290546001600160781b03610100820481166020840152600160801b9091041660409091015280519091506000906002908290600681111561073a5761073a611908565b600681111561074b5761074b611908565b81526020810191909152604090810160002081518083019092528054829060ff16600281111561077d5761077d611908565b600281111561078e5761078e611908565b81528154602090910190610100900460ff1660028111156107b1576107b1611908565b60028111156107c2576107c2611908565b90525090506001816020015160028111156107df576107df611908565b03610824576001600160a01b0384163b1561081f57610802826040015185610bb8565b61081f576040516305652c5560e51b815260040160405180910390fd5b61088c565b60028160200151600281111561083c5761083c611908565b0361088c576001600160a01b03841660009081526020819052604090205460ff1661088c5761086f826040015185610bb8565b61088c57604051636719795560e11b815260040160405180910390fd5b6000815160028111156108a1576108a1611908565b1461094e576020808301516001600160781b031660009081526006909152604081206108cc9061131f565b111561094e576108e0826020015187610e3c565b61094e576001815160028111156108f9576108f9611908565b0361093557846001600160a01b0316866001600160a01b03161461093057604051635234102760e01b815260040160405180910390fd5b61094e565b604051635234102760e01b815260040160405180910390fd5b505050505050565b610961816000611329565b50565b61096d8261136d565b6001600160781b038216600090815260076020526040902061098f908261115b565b6109ac57604051633e7dfd2360e21b815260040160405180910390fd5b6001600160a01b0381166001600160781b0383166001610580565b6001600160781b038116600090815260066020526040902060609061051b90611170565b6001805460009182918290610a08906001600160781b0316611bc8565b91906101000a8154816001600160781b0302191690836001600160781b0316021790559050610a343390565b6001600160781b0382166000908152600460205260409081902080546001600160a01b0319166001600160a01b03939093169290921790915551610a7b9085908590611bee565b6040519081900390206001600160781b03821660006040517fae6fa502f14a93bc6996eabc5c1ebc61072d478b73fb03333a34754d31aa146d90600090a4336001600160781b03821660005b6040517f3ba9771b33f74e565d2184fa864cb3777a52a873cca631683d3e5d696b877c5b90600090a49392505050565b6001600160a01b038116610b1e576040516335c410ff60e21b815260040160405180910390fd5b6106028282611329565b610b31826111eb565b6001546001600160781b03600160781b90910481169082161115610b68576040516311630a7b60e11b815260040160405180910390fd5b6001600160a01b038216600081815260036020526040902080546effffffffffffffffffffffffffffff60801b1916600160801b6001600160781b03851690810291909117909155906001610686565b6001600160781b0382166000908152600760205260408120610bda9083611395565b9392505050565b3360009081526020819052604090205460ff1615610c12576040516319d18a2160e31b815260040160405180910390fd5b610c3e7f00000000000000000000000000000000000000000000000000000000000000008484846113b7565b6001600160a01b0316336001600160a01b031614610c6f57604051637640718d60e01b815260040160405180910390fd5b33600081815260208190526040808220805460ff19166001179055517fe7f8d62df5af850daa5d677e9e5c8065b7b549ec99ae61ba0ffaa9f5bf3e2d039190a2505050565b61096181600061117d565b6000806001600f81819054906101000a90046001600160781b0316610ce390611bc8565b91906101000a8154816001600160781b0302191690836001600160781b0316021790559050610d0f3390565b6001600160781b0382166000908152600560205260409081902080546001600160a01b0319166001600160a01b03939093169290921790915551610d569085908590611bee565b6040519081900390206001600160781b03821660016040517fae6fa502f14a93bc6996eabc5c1ebc61072d478b73fb03333a34754d31aa146d90600090a4336001600160781b0382166001610ac7565b60408051606081018252600080825260208201819052918101919091526001600160a01b038216600090815260036020526040908190208151606081019092528054829060ff166006811115610dfe57610dfe611908565b6006811115610e0f57610e0f611908565b815290546001600160781b03610100820481166020840152600160801b9091041660409091015292915050565b6001600160781b0382166000908152600660205260408120610bda9083611395565b610e67826111eb565b6001600160a01b0382166000908152600360205260409020805482919060ff19166001836006811115610e9c57610e9c611908565b0217905550816001600160a01b03167fb39d8f1e6f05413a407e46fc950eb92e9f5b3d65a47c3f0bdc7a2741a6ec0f7d82604051610eda9190611932565b60405180910390a25050565b610eef8261136d565b6001600160781b0382166000908152600760205260409020610f1190826113df565b610f2e57604051637e8490a560e01b815260040160405180910390fd5b6001600160a01b0381166001600160781b03831660015b6040517f611e962a89a9663f9e201204430468ed34f23cd95c1be59b66fa79cefa726b4f90600090a45050565b3360009081526020819052604090205460ff1615610fa3576040516319d18a2160e31b815260040160405180910390fd5b6110037f000000000000000000000000000000000000000000000000000000000000000083838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113f492505050565b6001600160a01b0316336001600160a01b03161461103457604051637640718d60e01b815260040160405180910390fd5b33600081815260208190526040808220805460ff19166001179055517fe7f8d62df5af850daa5d677e9e5c8065b7b549ec99ae61ba0ffaa9f5bf3e2d039190a25050565b61108182611110565b6001600160781b03821660009081526006602052604090206110a390826113df565b6110c057604051637e8490a560e01b815260040160405180910390fd5b6001600160a01b0381166001600160781b0383166000610f45565b60006001600160e01b031982166389a9c85560e01b148061051b57506301ffc9a760e01b6001600160e01b031983161461051b565b6001600160781b0381166000908152600460205260409020546001600160a01b0316335b6001600160a01b03161461096157604051633e527f3960e01b815260040160405180910390fd5b6000610bda836001600160a01b038416611418565b60606000610bda8361150b565b6111868261136d565b6001600160781b038216600081815260056020526040902080546001600160a01b0319166001600160a01b0384169081179091559060015b6040517f3ba9771b33f74e565d2184fa864cb3777a52a873cca631683d3e5d696b877c5b90600090a45050565b60006001600160a01b0382163b156113015750336001600160a01b038216148061130157816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611269575060408051601f3d908101601f1916820190925261126691810190611bfe565b60015b1561127c576001600160a01b0316331490505b80611301576001600160a01b0382166391d148546000336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa9250505080156112f9575060408051601f3d908101601f191682019092526112f691810190611c1b565b60015b156113015790505b8061060257604051637f954ba160e01b815260040160405180910390fd5b600061051b825490565b61133282611110565b6001600160781b038216600081815260046020526040812080546001600160a01b0319166001600160a01b03851690811790915591906111be565b6001600160781b0381166000908152600560205260409020546001600160a01b031633611134565b6001600160a01b03811660009081526001830160205260408120541515610bda565b60008060006113c887878787611567565b915091506113d58161162b565b5095945050505050565b6000610bda836001600160a01b03841661177a565b600080600061140385856117c9565b915091506114108161162b565b509392505050565b6000818152600183016020526040812054801561150157600061143c600183611c3d565b855490915060009061145090600190611c3d565b90508181146114b557600086600001828154811061147057611470611c50565b906000526020600020015490508087600001848154811061149357611493611c50565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806114c6576114c6611c66565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061051b565b600091505061051b565b60608160000180548060200260200160405190810160405280929190818152602001828054801561155b57602002820191906000526020600020905b815481526020019060010190808311611547575b50505050509050919050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561159e5750600090506003611622565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156115f2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661161b57600060019250925050611622565b9150600090505b94509492505050565b600081600481111561163f5761163f611908565b036116475750565b600181600481111561165b5761165b611908565b036116ad5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064015b60405180910390fd5b60028160048111156116c1576116c1611908565b0361170e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016116a4565b600381600481111561172257611722611908565b036109615760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016116a4565b60008181526001830160205260408120546117c15750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561051b565b50600061051b565b60008082516041036117ff5760208301516040840151606085015160001a6117f387828585611567565b94509450505050611807565b506000905060025b9250929050565b60006020828403121561182057600080fd5b81356001600160e01b031981168114610bda57600080fd5b80356001600160781b038116811461184f57600080fd5b919050565b60006020828403121561186657600080fd5b610bda82611838565b6001600160a01b038116811461096157600080fd5b6000806040838503121561189757600080fd5b6118a083611838565b915060208301356118b08161186f565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156118fc5783516001600160a01b0316835292840192918401916001016118d7565b50909695505050505050565b634e487b7160e01b600052602160045260246000fd5b6007811061192e5761192e611908565b9052565b6020810161051b828461191e565b6000806040838503121561195357600080fd5b823561195e8161186f565b915061196c60208401611838565b90509250929050565b60008060006060848603121561198a57600080fd5b83356119958161186f565b925060208401356119a58161186f565b915060408401356119b58161186f565b809150509250925092565b600060208083528351808285015260005b818110156119ed578581018301518582016040015282016119d1565b506000604082860101526040601f19601f8301168501019250505092915050565b60008083601f840112611a2057600080fd5b50813567ffffffffffffffff811115611a3857600080fd5b60208301915083602082850101111561180757600080fd5b60008060208385031215611a6357600080fd5b823567ffffffffffffffff811115611a7a57600080fd5b611a8685828601611a0e565b90969095509350505050565b600060208284031215611aa457600080fd5b8135610bda8161186f565b600080600060608486031215611ac457600080fd5b833560ff81168114611ad557600080fd5b95602085013595506040909401359392505050565b80356007811061184f57600080fd5b600060208284031215611b0b57600080fd5b610bda82611aea565b6003811061096157610961611908565b60408101611b3184611b14565b838252611b3d83611b14565b8260208301529392505050565b6000606082019050611b5d82845161191e565b60208301516001600160781b038082166020850152806040860151166040850152505092915050565b60008060408385031215611b9957600080fd5b8235611ba48161186f565b915061196c60208401611aea565b634e487b7160e01b600052601160045260246000fd5b60006001600160781b03808316818103611be457611be4611bb2565b6001019392505050565b8183823760009101908152919050565b600060208284031215611c1057600080fd5b8151610bda8161186f565b600060208284031215611c2d57600080fd5b81518015158114610bda57600080fd5b8181038181111561051b5761051b611bb2565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220c59f83f6c9f2ac7f45f195fa5ae581abe3842a374df0401b783e385f926509a664736f6c63430008130033000000000000000000000000830d497fcec095110fd5fb0176b1e877a489e72d