0 txs
11.6k calls
constructor
constructor()
functions
accountVersion
viewfunction accountVersion() view returns (uint64)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
getImplementation
viewfunction getImplementation() view returns (address)
isTrustedForwarder
viewfunction isTrustedForwarder(address _forwarder) view returns (bool)
isValidNonce
viewfunction isValidNonce(bytes32 _nonce) view returns (bool)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
trustedForwarders
viewfunction trustedForwarders() view returns (address[])
addTrustedForwarder
nonpayablefunction addTrustedForwarder(tuple _request, bytes _signature)
initialize
nonpayablefunction initialize(address _sudoKey)
onERC1155BatchReceived
nonpayablefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)
onERC1155Received
nonpayablefunction onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)
onERC721Received
nonpayablefunction onERC721Received(address, address, uint256, bytes) returns (bytes4)
reinitialize
nonpayablefunction reinitialize(uint64 _previousVersion)
reinitializeLegacyAccount
nonpayablefunction reinitializeLegacyAccount()
removeTrustedForwarder
nonpayablefunction removeTrustedForwarder(tuple _request, bytes _signature)
setOperationKeyStatus
nonpayablefunction setOperationKeyStatus(address _operationKey, bool _isValid)
setRecoveryKeyStatus
nonpayablefunction setRecoveryKeyStatus(address _recoveryKey, bool _isValid)
setSudoKeyStatus
nonpayablefunction setSudoKeyStatus(address _sudoKey, bool _isValid)
simulateUpgradeTo
nonpayablefunction simulateUpgradeTo(address newImplementation)
upgradeTo
nonpayablefunction upgradeTo(address _newImplementation)
events
AccountImplementationUpgraded
event AccountImplementationUpgraded(address accountImplementation)
AccountMigratedFrom
event AccountMigratedFrom(uint64 previousVersion, uint64 currentVersion)
EIP712DomainChanged
event EIP712DomainChanged()
Initialized
event Initialized(uint64 version)
Initialized
event Initialized(uint64 version)
NonceConsumed
event NonceConsumed(bytes32 nonce)
OperationKeyStatusSet
event OperationKeyStatusSet(address operationKey, bool isValid)
PayloadProcessed
event PayloadProcessed((address _address, address _address2, uint256 _uint256, bytes32 _nonce, uint32 _uint32, bool _bool, bytes4 _selector) request, bytes signature)
RecoveryKeyStatusSet
event RecoveryKeyStatusSet(address recoveryKey, bool isValid)
SudoKeyStatusSet
event SudoKeyStatusSet(address sudoKey, bool isValid)
TrustedForwarderAdded
event TrustedForwarderAdded(address forwarder)
TrustedForwarderRemoved
event TrustedForwarderRemoved(address forwarder)
Upgraded
event Upgraded(address indexed self, address implementation)
errors
AlreadyExists
error AlreadyExists()
AlreadyInitialized
error AlreadyInitialized()
CannotRemoveLastKey
error CannotRemoveLastKey()
DoesNotExist
error DoesNotExist()
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
ImplementationIsSterile
error ImplementationIsSterile(address implementation)
ImplementationMismatch
error ImplementationMismatch(address implementation, address latestImplementation)
InvalidCallerContext
error InvalidCallerContext()
InvalidInitialization
error InvalidInitialization()
InvalidKeySignature
error InvalidKeySignature(address from)
InvalidNonce
error InvalidNonce(bytes32 nonce)
InvalidRequest
error InvalidRequest()
KeyAlreadyInvalid
error KeyAlreadyInvalid()
KeyAlreadyValid
error KeyAlreadyValid()
NoChange
error NoChange()
NotAContract
error NotAContract(address contr)
NotInitializing
error NotInitializing()
NullAddress
error NullAddress()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
UpgradeSimulationFailed
error UpgradeSimulationFailed()
ZeroAddress
error ZeroAddress()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b612dec80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063926fee8d116100ad578063bc8ea8fd11610071578063bc8ea8fd146102ae578063c4d66de8146102c1578063c7f62cda146102d4578063f23a6e61146102e7578063feabd0941461030657600080fd5b8063926fee8d146102345780639a1b97df14610249578063aaf10f421461025c578063ba0f26371461027c578063bc197c811461028f57600080fd5b8063453fbd6e116100f4578063453fbd6e146101cb578063535e1547146101d3578063572b6c05146101f35780635f406ec21461020657806384b0196e1461021957600080fd5b806301ffc9a71461013157806304e9f64c146101595780630b9e332a1461016e578063150b7a02146101815780633659cfe6146101b8575b600080fd5b61014461013f36600461240b565b610319565b60405190151581526020015b60405180910390f35b61016c610167366004612426565b610350565b005b61016c61017c3660046124d6565b6104ef565b61019f61018f3660046125c0565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610150565b61016c6101c636600461262b565b61055d565b61016c61058a565b6101db610596565b6040516001600160401b039091168152602001610150565b61014461020136600461262b565b6105bc565b61016c610214366004612426565b6105c7565b610221610724565b6040516101509796959493929190612698565b61023c61074e565b604051610150919061272e565b61016c61025736600461277b565b610758565b610264610786565b6040516001600160a01b039091168152602001610150565b61014461028a3660046127a4565b61079f565b61019f61029d36600461283c565b63bc197c8160e01b95945050505050565b61016c6102bc3660046124d6565b6107aa565b61016c6102cf36600461262b565b6107d3565b61016c6102e236600461262b565b610a83565b61019f6102f53660046128e9565b63f23a6e6160e01b95945050505050565b61016c6103143660046124d6565b610b98565b60006001600160e01b03198216630271189760e51b148061034a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b8282826001600160e01b03196000351661037060e0850160c0860161240b565b6001600160e01b03191614610398576040516341abc80160e01b815260040160405180910390fd5b60006103eb7f2ff5fe439ea08e3ec7509c9eb85fb0de8fad71976fdf66f475f364208f4b96e7856040516020016103d09291906129ef565b60405160208183030381529060405280519060200120610bc1565b9050600061042f8285858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610bee92505050565b905061043a81610c18565b610467576040516357a92af760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b6104748560600135610c48565b507f14ea8b2dcd1dad93e7f7974cdb2fcd29ab67c45ca7f0879aaeabb932a0c52b888585856040516104a893929190612a04565b60405180910390a16104b8610cda565b6104cd6104c860208a018a61262b565b610d12565b506104e56001600080516020612d7783398151915255565b5050505050505050565b6104ff6104fa610da1565b610c18565b6105305761050b610da1565b6040516357a92af760e01b81526001600160a01b03909116600482015260240161045e565b610538610cda565b6105428282610df3565b6105596001600080516020612d7783398151915255565b5050565b610565610efd565b54600160a01b900460ff16156105815761057e81610f69565b50565b61057e8161108f565b6105946001611227565b565b60006105b7600080516020612d97833981519152546001600160401b031690565b905090565b600061034a826113ab565b8282826001600160e01b0319600035166105e760e0850160c0860161240b565b6001600160e01b0319161461060f576040516341abc80160e01b815260040160405180910390fd5b60006106477f2ff5fe439ea08e3ec7509c9eb85fb0de8fad71976fdf66f475f364208f4b96e7856040516020016103d09291906129ef565b9050600061068b8285858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610bee92505050565b905061069681610c18565b6106be576040516357a92af760e01b81526001600160a01b038216600482015260240161045e565b6106cb8560600135610c48565b507f14ea8b2dcd1dad93e7f7974cdb2fcd29ab67c45ca7f0879aaeabb932a0c52b888585856040516106ff93929190612a04565b60405180910390a161070f610cda565b6104cd61071f60208a018a61262b565b6113be565b600060608060008060006060610738611428565b959d949c50929a50909850965094509092509050565b60606105b76114d1565b6107606114e3565b61077d57604051636ff1d18f60e11b815260040160405180910390fd5b61057e81611227565b6000610790610efd565b546001600160a01b0316919050565b600061034a826114fb565b6107b56104fa610da1565b6107c15761050b610da1565b6107c9610cda565b610542828261151c565b600080516020612d978339815191528054600160401b810460ff1615906001600160401b03166000811580156108065750825b90506000826001600160401b031660011480156108225750303b155b905081158015610830575080155b1561084e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561087857845460ff60401b1916600160401b1785555b610880610cda565b6001600160a01b0386166108a75760405163e99d5ac560e01b815260040160405180910390fd5b6108f76040518060400160405280601581526020017420b1b1b7bab73a24b6b83632b6b2b73a30ba34b7b760591b815250604051806040016040528060018152602001603160f81b815250611626565b6108ff611630565b610907611640565b6000336001600160a01b031663d4acccfb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096b9190612a46565b90506109d7816001600160a01b031663af8351196040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d29190612a46565b61167d565b6109e2876001611696565b6109eb8161182a565b60006109f5611a16565b80546001600160a01b0319166001600160a01b0384161781559050610a1c62015180611a5a565b5050610a356001600080516020612d7783398151915255565b8315610a7b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6000610a8d610efd565b80546001600160a01b038481166001600160a81b031983168117600160a01b1784556040805192909316602480840182905284518085039091018152604490930184526020830180516001600160e01b0316631b2ce7f360e11b1790529251939450919260009291610afe91612a63565b600060405180830381855af49150503d8060008114610b39576040519150601f19603f3d011682016040523d82523d6000602084013e610b3e565b606091505b50509050801580610b695750816001600160a01b0316610b5c610efd565b546001600160a01b031614155b15610b8757604051631439f4b560e31b815260040160405180910390fd5b825460ff60a01b1916835560008080fd5b610ba36104fa610da1565b610baf5761050b610da1565b610bb7610cda565b6105428282611696565b600061034a610bce611a7b565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610bfe8686611a85565b925092509250610c0e8282611ad2565b5090949350505050565b600080610c23611b8b565b6001600160a01b03909316600090815260039093016020525050604090205460ff1690565b600080610c53611b8b565b60008481526020829052604090205490915060ff1615610c8957604051631cdba4a560e21b81526004810184905260240161045e565b6040518381527f70cd0c14252edef0440009634a4e86036a1747c9fbe7e4c2c05b8b62f9c410e29060200160405180910390a160009283526020525060409020805460ff1916600190811790915590565b600080516020612d77833981519152805460011901610d0c57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6000610d25610d1f611bcf565b83611c13565b15610d6f576040516001600160a01b03831681527fd2d636efcad0cea42e170256f4c5d8b1cd81e47b855557edaf44014e6cc4cee6906020015b60405180910390a1506001919050565b60405163b0ce759160e01b815260040160405180910390fd5b919050565b6001600080516020612d7783398151915255565b6000366014610daf336113ab565b8015610dbb5750808210155b15610deb57600036610dcd8385612a95565b610dd8928290612aa8565b610de191612ad2565b60601c9250505090565b339250505090565b6000610dfd611b8b565b90506001600160a01b038316610e265760405163e99d5ac560e01b815260040160405180910390fd5b6001600160a01b038316600090815260028201602052604090205460ff1615610e6d578115610e68576040516330a6f0ff60e21b815260040160405180910390fd5b610e8b565b81610e8b5760405163df7d372960e01b815260040160405180910390fd5b604080516001600160a01b038516815283151560208201527f3853b2cabd38db656eec73cfa8da872697c2b82a1a131b0af1a5a177c895a688910160405180910390a16001600160a01b0392909216600090815260029092016020526040909120805460ff1916911515919091179055565b600080604051602001610f4b9060208082526021908201527f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f786040820152607960f81b606082015260800190565b60408051601f19818403018152919052805160209091012092915050565b6001600160a01b038116610f905760405163d92e233d60e01b815260040160405180910390fd5b803b610fba576040516322a2d07b60e21b81526001600160a01b038216600482015260240161045e565b6000610fc4610efd565b80549091506001600160a01b0390811690831603610ff55760405163a88ee57760e01b815260040160405180910390fd5b8054600160a01b900460ff16158015611012575061101282611c2f565b1561103b57604051631550430160e01b81526001600160a01b038316600482015260240161045e565b80546001600160a01b0319166001600160a01b038316908117825560405190815230907f5d611f318680d00598bb735d61bacf0c514c6b50e1e5ad30040a4df2b12791c79060200160405180910390a25050565b61109a6104fa610da1565b6110a65761050b610da1565b6110ae610cda565b60006110b8611d2e565b6001600160a01b031663e28b60ab6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111199190612a46565b905060026001600160a01b038381169083161461115c57604051631e53f1bb60e31b81526001600160a01b0380851660048301528316602482015260440161045e565b6111666001611d49565b6040516001600160a01b03831681527fdaa2b90d4f4e53aac69bc06e8ce6fc4a0d69c6582f74cd6e4547abcb972f7c6e9060200160405180910390a16111ab82610f69565b604051639a1b97df60e01b81526001600160401b03821660048201523090639a1b97df90602401600060405180830381600087803b1580156111ec57600080fd5b505af1158015611200573d6000803e3d6000fd5b5050505061120e6000611d49565b505061057e6001600080516020612d7783398151915255565b600080516020612d97833981519152805460029190600160401b900460ff168061125e575080546001600160401b03808416911610155b1561127c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556000356001600160e01b031916639a1b97df60e01b148015906112d357506000356001600160e01b03191663229fdeb760e11b14155b156112f157604051636ff1d18f60e11b815260040160405180910390fd5b826001600160401b03811660010361131b5761130f62015180611a5a565b61131881612b07565b90505b604080516001600160401b0386168152600260208201527fd6de59c795035589d7fab91ad03773f31e87abecb9e6edfda8b88870e6e7ca56910160405180910390a150805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a1505050565b600061034a6113b8611bcf565b83611d69565b60006113d16113cb611bcf565b83611d8b565b1561140f576040516001600160a01b03831681527f3ef8564460ada92419608d823c014975d98f8104d7d1e68c222967ac6814cd9790602001610d5f565b60405163119b4fd360e11b815260040160405180910390fd5b600060608060008060006060600061143e611da0565b805490915015801561145257506001810154155b6114965760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161045e565b61149e611dd8565b6114a6611e79565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b60606105b76114de611bcf565b611e96565b6000806114ee611a16565b6002015460ff1692915050565b600080611506611b8b565b60009384526020525050604090205460ff161590565b6000611526611b8b565b90506001600160a01b03831661154f5760405163e99d5ac560e01b815260040160405180910390fd5b6001600160a01b038316600090815260018201602052604090205460ff1615611596578115611591576040516330a6f0ff60e21b815260040160405180910390fd5b6115b4565b816115b45760405163df7d372960e01b815260040160405180910390fd5b604080516001600160a01b038516815283151560208201527ff236e35fa66b9259cf42760562be24ef7b5a827125803d8e3ad3fb6136d074af910160405180910390a16001600160a01b0392909216600090815260019092016020526040909120805460ff1916911515919091179055565b6105598282611ea3565b611638611edc565b610594611f13565b6000356001600160e01b03191663189acdbd60e31b1461167357604051636ff1d18f60e11b815260040160405180910390fd5b6105946002611f1b565b611685611f78565b610559611690611bcf565b82611d8b565b60006116a0611b8b565b90506001600160a01b0383166116c95760405163e99d5ac560e01b815260040160405180910390fd5b6001600160a01b038316600090815260038201602052604090205460ff161561176957811561170b576040516330a6f0ff60e21b815260040160405180910390fd5b600481015461ffff16600103611734576040516348c299a960e11b815260040160405180910390fd5b60048101805460009061174a9061ffff16612b2d565b91906101000a81548161ffff021916908361ffff1602179055506117b8565b816117875760405163df7d372960e01b815260040160405180910390fd5b60048101805460009061179d9061ffff16612b4b565b91906101000a81548161ffff021916908361ffff1602179055505b604080516001600160a01b038516815283151560208201527f3673f408e6ec017e835b025745b339fa7bed8eaf1a1916941dd9a60ffccfc71e910160405180910390a16001600160a01b0392909216600090815260039092016020526040909120805460ff1916911515919091179055565b6000611834611fb4565b9050816001600160a01b0316637a640eb56040518163ffffffff1660e01b8152600401606060405180830381865afa158015611874573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118989190612b62565b60038401805463ffffffff909216600160a01b0263ffffffff60a01b199092169190911790556001830180546001600160a01b039283166001600160a01b031991821617909155835492821692169190911782556040805163381c251f60e11b81528151928516926370384a3e926004808401939192918290030181865afa158015611928573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194c9190612baf565b600383018054600165ffff0000000160a01b031916600160c01b61ffff93909316929092026001600160a01b031916919091176001600160a01b03928316179055604080516389a3027160e01b81529051918416916389a30271916004808201926020929091908290030181865afa1580156119cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f09190612a46565b60029190910180546001600160a01b0319166001600160a01b0390921691909117905550565b600080604051602001610f4b9060208082526019908201527f696f2e696e66696e65782e4163636f756e7453746f7261676500000000000000604082015260600190565b6000611a64611fec565b6001600160401b0390921660019092019190915550565b60006105b7612026565b60008060008351604103611abf5760208401516040850151606086015160001a611ab18882858561209a565b955095509550505050611acb565b50508151600091506002905b9250925092565b6000826003811115611ae657611ae6612bf0565b03611aef575050565b6001826003811115611b0357611b03612bf0565b03611b215760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115611b3557611b35612bf0565b03611b565760405163fce698f760e01b81526004810182905260240161045e565b6003826003811115611b6a57611b6a612bf0565b03610559576040516335e2f38360e21b81526004810182905260240161045e565b600080604051602001610f4b9060208082526017908201527f696f2e696e66696e65782e53656375726974794b657973000000000000000000604082015260600190565b600080604051602001610f4b9060208082526019908201527f696f2e696e66696e65782e45524332373731436f6e7465787400000000000000604082015260600190565b6000611c28836001600160a01b038416612169565b9392505050565b604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166363fb166d60e11b1790529051600091829182913091611c869190612a63565b600060405180830381855af49150503d8060008114611cc1576040519150601f19603f3d011682016040523d82523d6000602084013e611cc6565b606091505b509150915081158015611d265750604051631439f4b560e31b60208201526024016040516020818303038152906040528051906020012081604051602001611d0e9190612a63565b60405160208183030381529060405280519060200120145b949350505050565b600080611d39611a16565b546001600160a01b031692915050565b6000611d53611a16565b600201805460ff19169215159290921790915550565b6001600160a01b03811660009081526001830160205260408120541515611c28565b6000611c28836001600160a01b03841661225c565b600080604051602001610f4b9060208082526011908201527034b79734b73334b732bc1722a4a81b989960791b604082015260600190565b60606000611de4611da0565b9050806002018054611df590612c06565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2190612c06565b8015611e6e5780601f10611e4357610100808354040283529160200191611e6e565b820191906000526020600020905b815481529060010190602001808311611e5157829003601f168201915b505050505091505090565b60606000611e85611da0565b9050806003018054611df590612c06565b60606000611c28836122ab565b6000611ead611da0565b905060028101611ebd8482612c8b565b5060038101611ecc8382612c8b565b5060008082556001909101555050565b600080516020612d9783398151915254600160401b900460ff1661059457604051631afcd79f60e31b815260040160405180910390fd5b610d8d611edc565b600080516020612d97833981519152805467ffffffffffffffff19166001600160401b038316908117825560405190815281907fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200161139e565b6000611f82612307565b805490915060ff1615611fa75760405162dc149f60e41b815260040160405180910390fd5b805460ff19166001179055565b600080604051602001610f4b90602080825260119082015270696f2e696e66696e65782e42726964676560781b604082015260600190565b600080604051602001610f4b90602080825260139082015272696f2e696e66696e65782e576974686472617760681b604082015260600190565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61205161234b565b6120596123b2565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156120d5575060009150600390508261215f565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612129573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166121555750600092506001915082905061215f565b9250600091508190505b9450945094915050565b6000818152600183016020526040812054801561225257600061218d600183612a95565b85549091506000906121a190600190612a95565b90508082146122065760008660000182815481106121c1576121c1612d4a565b90600052602060002001549050808760000184815481106121e4576121e4612d4a565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061221757612217612d60565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061034a565b600091505061034a565b60008181526001830160205260408120546122a35750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561034a565b50600061034a565b6060816000018054806020026020016040519081016040528092919081815260200182805480156122fb57602002820191906000526020600020905b8154815260200190600101908083116122e7575b50505050509050919050565b600080604051602001610f4b906020808252601f908201527f696f2e696e66696e65782e496e697469616c697a61626c6553746f7261676500604082015260600190565b600080612356611da0565b90506000612362611dd8565b80519091501561237a57805160209091012092915050565b81548015612389579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b6000806123bd611da0565b905060006123c9611e79565b8051909150156123e157805160209091012092915050565b60018201548015612389579392505050565b80356001600160e01b031981168114610d8857600080fd5b60006020828403121561241d57600080fd5b611c28826123f3565b600080600083850361010081121561243d57600080fd5b60e081121561244b57600080fd5b5083925060e08401356001600160401b038082111561246957600080fd5b818601915086601f83011261247d57600080fd5b81358181111561248c57600080fd5b87602082850101111561249e57600080fd5b6020830194508093505050509250925092565b6001600160a01b038116811461057e57600080fd5b80358015158114610d8857600080fd5b600080604083850312156124e957600080fd5b82356124f4816124b1565b9150612502602084016124c6565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156125495761254961250b565b604052919050565b600082601f83011261256257600080fd5b81356001600160401b0381111561257b5761257b61250b565b61258e601f8201601f1916602001612521565b8181528460208386010111156125a357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156125d657600080fd5b84356125e1816124b1565b935060208501356125f1816124b1565b92506040850135915060608501356001600160401b0381111561261357600080fd5b61261f87828801612551565b91505092959194509250565b60006020828403121561263d57600080fd5b8135611c28816124b1565b60005b8381101561266357818101518382015260200161264b565b50506000910152565b60008151808452612684816020860160208601612648565b601f01601f19169290920160200192915050565b60ff60f81b881681526000602060e0818401526126b860e084018a61266c565b83810360408501526126ca818a61266c565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561271c57835183529284019291840191600101612700565b50909c9b505050505050505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561276f5783516001600160a01b03168352928401929184019160010161274a565b50909695505050505050565b60006020828403121561278d57600080fd5b81356001600160401b0381168114611c2857600080fd5b6000602082840312156127b657600080fd5b5035919050565b600082601f8301126127ce57600080fd5b813560206001600160401b038211156127e9576127e961250b565b8160051b6127f8828201612521565b928352848101820192828101908785111561281257600080fd5b83870192505b8483101561283157823582529183019190830190612818565b979650505050505050565b600080600080600060a0868803121561285457600080fd5b853561285f816124b1565b9450602086013561286f816124b1565b935060408601356001600160401b038082111561288b57600080fd5b61289789838a016127bd565b945060608801359150808211156128ad57600080fd5b6128b989838a016127bd565b935060808801359150808211156128cf57600080fd5b506128dc88828901612551565b9150509295509295909350565b600080600080600060a0868803121561290157600080fd5b853561290c816124b1565b9450602086013561291c816124b1565b9350604086013592506060860135915060808601356001600160401b0381111561294557600080fd5b6128dc88828901612551565b63ffffffff8116811461057e57600080fd5b803561296e816124b1565b6001600160a01b03908116835260208201359061298a826124b1565b166020830152604081810135908301526060808201359083015260808101356129b281612951565b63ffffffff1660808301526129c960a082016124c6565b151560a08301526001600160e01b03196129e560c083016123f3565b1660c08301525050565b8281526101008101611c286020830184612963565b6000610100612a138387612963565b8060e08401528381840152506101208385828501376000838501820152601f909301601f19169091019091019392505050565b600060208284031215612a5857600080fd5b8151611c28816124b1565b60008251612a75818460208701612648565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561034a5761034a612a7f565b60008085851115612ab857600080fd5b83861115612ac557600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015612aff5780818660140360031b1b83161692505b505092915050565b60006001600160401b03808316818103612b2357612b23612a7f565b6001019392505050565b600061ffff821680612b4157612b41612a7f565b6000190192915050565b600061ffff808316818103612b2357612b23612a7f565b600080600060608486031215612b7757600080fd5b8351612b82816124b1565b6020850151909350612b93816124b1565b6040850151909250612ba481612951565b809150509250925092565b60008060408385031215612bc257600080fd5b8251612bcd816124b1565b602084015190925061ffff81168114612be557600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b600181811c90821680612c1a57607f821691505b602082108103612c3a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115612c8657600081815260208120601f850160051c81016020861015612c675750805b601f850160051c820191505b81811015610a7b57828155600101612c73565b505050565b81516001600160401b03811115612ca457612ca461250b565b612cb881612cb28454612c06565b84612c40565b602080601f831160018114612ced5760008415612cd55750858301515b600019600386901b1c1916600185901b178555610a7b565b600085815260208120601f198616915b82811015612d1c57888601518255948401946001909101908401612cfd565b5085821015612d3a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fdfe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220adb34858e3b30753f0c5c9060f243c29a00d6f695338572742cb1d787e2f90c964736f6c63430008150033