46 txs
123 calls
constructor
constructor(address _owner, address[] _modules, bytes[] _moduleInstallData)
functions
getInstalledModules
viewfunction getInstalledModules() view returns (tuple[] _installedModules)
getSupportedCallbackFunctions
purefunction getSupportedCallbackFunctions() pure returns (tuple[] supportedCallbackFunctions)
hasAllRoles
viewfunction hasAllRoles(address user, uint256 roles) view returns (bool)
hasAnyRole
viewfunction hasAnyRole(address user, uint256 roles) view returns (bool)
owner
viewfunction owner() view returns (address result)
ownershipHandoverExpiresAt
viewfunction ownershipHandoverExpiresAt(address pendingOwner) view returns (uint256 result)
rolesOf
viewfunction rolesOf(address user) view returns (uint256 roles)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
cancelOwnershipHandover
payablefunction cancelOwnershipHandover() payable
completeOwnershipHandover
payablefunction completeOwnershipHandover(address pendingOwner) payable
grantRoles
payablefunction grantRoles(address user, uint256 roles) payable
installModule
payablefunction installModule(address _module, bytes _data) payable
renounceOwnership
payablefunction renounceOwnership() payable
renounceRoles
payablefunction renounceRoles(uint256 roles) payable
requestOwnershipHandover
payablefunction requestOwnershipHandover() payable
revokeRoles
payablefunction revokeRoles(address user, uint256 roles) payable
transferOwnership
payablefunction transferOwnership(address newOwner) payable
uninstallModule
payablefunction uninstallModule(address _module, bytes _data) payable
events
ModuleInstalled
event ModuleInstalled(address caller, address implementation, address installedModule)
ModuleUninstalled
event ModuleUninstalled(address caller, address implementation, address installedModule)
OwnershipHandoverCanceled
event OwnershipHandoverCanceled(address indexed pendingOwner)
OwnershipHandoverRequested
event OwnershipHandoverRequested(address indexed pendingOwner)
OwnershipTransferred
event OwnershipTransferred(address indexed oldOwner, address indexed newOwner)
RolesUpdated
event RolesUpdated(address indexed user, uint256 indexed roles)
errors
AlreadyInitialized
error AlreadyInitialized()
CallbackExecutionReverted
error CallbackExecutionReverted()
CallbackFunctionAlreadyInstalled
error CallbackFunctionAlreadyInstalled()
CallbackFunctionNotSupported
error CallbackFunctionNotSupported()
CallbackFunctionRequired
error CallbackFunctionRequired()
CallbackFunctionUnauthorizedCall
error CallbackFunctionUnauthorizedCall()
FallbackFunctionAlreadyInstalled
error FallbackFunctionAlreadyInstalled()
FallbackFunctionNotInstalled
error FallbackFunctionNotInstalled()
IndexOutOfBounds
error IndexOutOfBounds()
ModuleAlreadyInstalled
error ModuleAlreadyInstalled()
ModuleInterfaceNotCompatible
error ModuleInterfaceNotCompatible(bytes4 requiredInterfaceId)
ModuleNotInstalled
error ModuleNotInstalled()
ModuleOutOfSync
error ModuleOutOfSync()
NewOwnerIsZeroAddress
error NewOwnerIsZeroAddress()
NoHandoverRequest
error NoHandoverRequest()
Reentrancy
error Reentrancy()
Unauthorized
error Unauthorized()
creation bytecode
0x60806040523480156200001157600080fd5b5060405162002baa38038062002baa833981016040819052620000349162000a7e565b6200003f83620000b8565b80518251146200004e57600080fd5b60005b8251811015620000ae57620000a583828151811062000074576200007462000b62565b602002602001015183838151811062000091576200009162000b62565b6020026020010151620000f460201b60201c565b60010162000051565b5050505062000ee1565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b62000101600083620006b9565b6200011f57604051631261bbf160e11b815260040160405180910390fd5b6000826001600160a01b03166389e04e0e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000160573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200018a919081019062000d54565b9050806020015151600014620002415760005b8160200151518110156200023f57620001dc82602001518281518110620001c857620001c862000b62565b60200260200101516200081a60201b60201c565b620002365781602001518181518110620001fa57620001fa62000b62565b60200260200101516040516356ba3a7f60e01b81526004016200022d91906001600160e01b031991909116815260200190565b60405180910390fd5b6001016200019d565b505b60408101515160005b81811015620002ba5760018060008560400151848151811062000271576200027162000b62565b60200260200101516001600160e01b0319166001600160e01b03191681526020019081526020016000206000828254620002ac919062000e50565b90915550506001016200024a565b5060608051838201515160005b818110156200047a57600086606001518281518110620002eb57620002eb62000b62565b60209081029190910181015180516001600160e01b031916600090815260029092526040909120549091506001600160a01b0316156200033e57604051634cc04b1760e01b815260040160405180910390fd5b6000805b858110156200039e5782600001516001600160e01b0319168782815181106200036f576200036f62000b62565b6020026020010151600001516001600160e01b031916036200039557600191506200039e565b60010162000342565b5080620003be5760405163573ffc1f60e11b815260040160405180910390fd5b60405180606001604052808b6001600160a01b031681526020016000815260200160006001811115620003f557620003f562000e78565b905282516001600160e01b031916600090815260026020818152604092839020845181546001600160a01b0319166001600160a01b03909116178155908401516001808301919091559284015191810180549193909160ff191690838181111562000464576200046462000e78565b02179055505060019093019250620002c7915050565b5060808501515160005b81811015620005a457600087608001518281518110620004a857620004a862000b62565b60209081029190910181015180516001600160e01b031916600090815260029092526040909120549091506001600160a01b031615620004fb576040516392bffc6560e01b815260040160405180910390fd5b604080516060810182526001600160a01b038c168152602083810151908201529081016001905281516001600160e01b031916600090815260026020818152604092839020845181546001600160a01b0319166001600160a01b03909116178155908401516001808301919091559284015191810180549193909160ff19169083818111156200058f576200058f62000e78565b02179055505060019092019150620004849050565b508551156200066757600080896001600160a01b031689604051602401620005cd919062000e8e565b60408051601f198184030181529181526020820180516001600160e01b03166306d61fe760e41b1790525162000604919062000ec3565b600060405180830381855af49150503d806000811462000641576040519150601f19603f3d011682016040523d82523d6000602084013e62000646565b606091505b50915091508162000664576200066481633fcb904560e01b62000867565b50505b604080513381526001600160a01b038a16602082018190528183015290517fbcd03fe408dcc45614e803cbab9f500dddff61b17380b993e76d30398da472299181900360600190a15050505050505050565b63978aab926004526000828152602481206001600160a01b03929092169168fbb67fda52d4bfb8be198301620006f75763f5a267f16000526004601cfd5b826200070a5768fbb67fda52d4bfb8bf92505b80546001600160601b0381168260205280620007da578160601c806200073b578560601b8455600194505062000811565b8581036200074a575062000811565b600184015460601c806200076d578660601b600186015560019550505062000811565b8681036200077d57505062000811565b600285015460601c80620007a1578760601b60028701556001965050505062000811565b878103620007b25750505062000811565b6000928352604080842060019055918352818320600290558252902060039055506007908117905b84600052604060002080546200080f578160011c91508560601b82850155816001018155826002018455600194505062000811565b505b50505092915050565b60006001600160e01b031980831690036200083757506000919050565b6001600160e01b03198216600090815260016020526040902054156200085f57506001919050565b506000919050565b8151156200087757815182602001fd5b806000526004601cfd5b80516001600160a01b03811681146200089957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620008d957620008d96200089e565b60405290565b60405160a081016001600160401b0381118282101715620008d957620008d96200089e565b604051601f8201601f191681016001600160401b03811182821017156200092f576200092f6200089e565b604052919050565b60006001600160401b038211156200095357620009536200089e565b5060051b60200190565b60005b838110156200097a57818101518382015260200162000960565b50506000910152565b6000601f83601f8401126200099757600080fd5b82516020620009b0620009aa8362000937565b62000904565b82815260059290921b85018101918181019087841115620009d057600080fd5b8287015b8481101562000a725780516001600160401b0380821115620009f65760008081fd5b818a0191508a603f83011262000a0c5760008081fd5b8582015160408282111562000a255762000a256200089e565b62000a38828b01601f1916890162000904565b92508183528c8183860101111562000a505760008081fd5b62000a61828985018387016200095d565b5050845250918301918301620009d4565b50979650505050505050565b60008060006060848603121562000a9457600080fd5b62000a9f8462000881565b602085810151919450906001600160401b038082111562000abf57600080fd5b818701915087601f83011262000ad457600080fd5b815162000ae5620009aa8262000937565b81815260059190911b8301840190848101908a83111562000b0557600080fd5b938501935b8285101562000b2e5762000b1e8562000881565b8252938501939085019062000b0a565b60408a0151909750945050508083111562000b4857600080fd5b505062000b588682870162000983565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b805180151581146200089957600080fd5b80516001600160e01b0319811681146200089957600080fd5b600082601f83011262000bb457600080fd5b8151602062000bc7620009aa8362000937565b8083825260208201915060208460051b87010193508684111562000bea57600080fd5b602086015b8481101562000c115762000c038162000b89565b835291830191830162000bef565b509695505050505050565b600082601f83011262000c2e57600080fd5b8151602062000c41620009aa8362000937565b82815260059290921b8401810191818101908684111562000c6157600080fd5b8286015b8481101562000c115783818903121562000c7f5760008081fd5b604080518581016001600160401b038111828210171562000ca45762000ca46200089e565b825262000cb18362000b89565b815284525091830191830162000c65565b600082601f83011262000cd457600080fd5b8151602062000ce7620009aa8362000937565b82815260069290921b8401810191818101908684111562000d0757600080fd5b8286015b8481101562000c11576040818903121562000d265760008081fd5b62000d30620008b4565b62000d3b8262000b89565b8152818501518582015283529183019160400162000d0b565b60006020828403121562000d6757600080fd5b81516001600160401b038082111562000d7f57600080fd5b9083019060a0828603121562000d9457600080fd5b62000d9e620008df565b62000da98362000b78565b815260208301518281111562000dbe57600080fd5b62000dcc8782860162000ba2565b60208301525060408301518281111562000de557600080fd5b62000df38782860162000ba2565b60408301525060608301518281111562000e0c57600080fd5b62000e1a8782860162000c1c565b60608301525060808301518281111562000e3357600080fd5b62000e418782860162000cc2565b60808301525095945050505050565b8082018082111562000e7257634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052602160045260246000fd5b602081526000825180602084015262000eaf8160408501602087016200095d565b601f01601f19169190910160400192915050565b6000825162000ed78184602087016200095d565b9190910192915050565b611cb98062000ef16000396000f3fe6080604052600436106101095760003560e01c806354d1f13d116100955780638da798da116100645780638da798da146103ae578063f04e283e146103c1578063f147db8a146103d4578063f2fde38b146103f0578063fee81cf41461040357610109565b806354d1f13d1461035f57806370c109cd14610367578063715018a61461037a5780638da5cb5b1461038257610109565b806325692962116100dc57806325692962146102aa5780632de94807146102b25780633e429396146102f35780634a4ee7b114610315578063514e62fc1461032857610109565b806301ffc9a71461022f578063183a4f6e146102645780631c10893f146102775780631cd64df41461028a575b600080356001600160e01b0319168152600260208181526040808420815160608101835281546001600160a01b03168152600180830154948201949094529381015490929184019160ff90911690811115610166576101666114fc565b6001811115610177576101776114fc565b90525080519091506001600160a01b03166101a55760405163b6b8317760e01b815260040160405180910390fd5b6000816040015160018111156101bd576101bd6114fc565b036101e7573330146101e25760405163052bb9ef60e31b815260040160405180910390fd5b610222565b6001816040015160018111156101ff576101ff6114fc565b148015610210575060008160200151115b15610222576102228160200151610436565b805161022d9061046c565b005b34801561023b57600080fd5b5061024f61024a366004611528565b6104a7565b60405190151581526020015b60405180910390f35b61022d61027236600461154c565b6104f2565b61022d610285366004611581565b6104fc565b34801561029657600080fd5b5061024f6102a5366004611581565b610512565b61022d610531565b3480156102be57600080fd5b506102e56102cd3660046115ab565b638b78c6d8600c908152600091909152602090205490565b60405190815260200161025b565b3480156102ff57600080fd5b50610308610581565b60405161025b9190611652565b61022d610323366004611581565b6106ad565b34801561033457600080fd5b5061024f610343366004611581565b638b78c6d8600c90815260009290925260209091205416151590565b61022d6106bf565b61022d610375366004611775565b6106fb565b61022d61074f565b34801561038e57600080fd5b50638b78c6d819546040516001600160a01b03909116815260200161025b565b61022d6103bc366004611775565b610763565b61022d6103cf3660046115ab565b6107b1565b3480156103e057600080fd5b50606060405161025b91906117f8565b61022d6103fe3660046115ab565b6107ee565b34801561040f57600080fd5b506102e561041e3660046115ab565b63389a75e1600c908152600091909152602090205490565b638b78c6d81954331461046957638b78c6d8600c5233600052806020600c205416610469576382b429006000526004601cfd5b50565b6040805136810190915236600082376000803683855af490506104953d60408051918201905290565b3d6000823e816104a3573d81fd5b3d81f35b60006001600160e01b031980831690036104c357506000919050565b6001600160e01b03198216600090815260016020526040902054156104ea57506001919050565b506000919050565b6104693382610815565b610504610821565b61050e828261083c565b5050565b638b78c6d8600c90815260008390526020902054811681145b92915050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b6060600061058f6000610848565b90508067ffffffffffffffff8111156105aa576105aa61186f565b6040519080825280602002602001820160405280156105e357816020015b6105d06114a8565b8152602001906001900390816105c85790505b50915060005b818110156106a85760006105fd818361089a565b90506040518060400160405280826001600160a01b03168152602001826001600160a01b03166389e04e0e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610657573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261067f9190810190611ad4565b81525084838151811061069457610694611bbe565b6020908102919091010152506001016105e9565b505090565b6106b5610821565b61050e8282610815565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b600160ff1b61070981610436565b6107498484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506108f492505050565b50505050565b610757610821565b6107616000610bdb565b565b600160ff1b61077181610436565b6107498484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c1992505050565b6107b9610821565b63389a75e1600c52806000526020600c2080544211156107e157636f5e88186000526004601cfd5b6000905561046981610bdb565b6107f6610821565b8060601b61080c57637448fbae6000526004601cfd5b61046981610bdb565b61050e82826000611197565b638b78c6d819543314610761576382b429006000526004601cfd5b61050e82826001611197565b63978aab9260045260008181526024812080548060a01b60a01c8060011c9350808260601c1517610892576001935083830154156108925760029350838301541561089257600393505b505050919050565b63978aab926004526000828152602481208281015460601c915068fbb67fda52d4bfb8bf821415820291506108ce84610848565b83106108ed57604051634e23d03560e01b815260040160405180910390fd5b5092915050565b6108ff6000836111f0565b61091c57604051632a6f792960e01b815260040160405180910390fd5b6000826001600160a01b03166389e04e0e6040518163ffffffff1660e01b8152600401600060405180830381865afa15801561095c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109849190810190611ad4565b60408101515190915060005b818110156109f9576001806000856040015184815181106109b3576109b3611bbe565b60200260200101516001600160e01b0319166001600160e01b031916815260200190815260200160002060008282546109ec9190611bea565b9091555050600101610990565b5060808201515160005b81811015610a74576002600085608001518381518110610a2557610a25611bbe565b602090810291909101810151516001600160e01b0319168252810191909152604001600090812080546001600160a01b0319168155600180820192909255600201805460ff1916905501610a03565b5060608301515160005b81811015610aef576002600086606001518381518110610aa057610aa0611bbe565b602090810291909101810151516001600160e01b0319168252810191909152604001600090812080546001600160a01b0319168155600180820192909255600201805460ff1916905501610a7e565b50835115610b8b57856001600160a01b031685604051602401610b129190611c21565b60408051601f198184030181529181526020820180516001600160e01b0316638a91b0e360e01b17905251610b479190611c54565b600060405180830381855af49150503d8060008114610b82576040519150601f19603f3d011682016040523d82523d6000602084013e610b87565b606091505b5050505b604080513381526001600160a01b038816602082018190528183015290517fef3b2e20acbb62d61d782c5449bd73d3970cb9be1050a6ad6f846b2cbe21c03a9181900360600190a1505050505050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b610c2460008361133b565b610c4157604051631261bbf160e11b815260040160405180910390fd5b6000826001600160a01b03166389e04e0e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610c81573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ca99190810190611ad4565b9050806020015151600014610d4d5760005b816020015151811015610d4b57610cee82602001518281518110610ce157610ce1611bbe565b60200260200101516104a7565b610d435781602001518181518110610d0857610d08611bbe565b60200260200101516040516356ba3a7f60e01b8152600401610d3a91906001600160e01b031991909116815260200190565b60405180910390fd5b600101610cbb565b505b60408101515160005b81811015610dbf57600180600085604001518481518110610d7957610d79611bbe565b60200260200101516001600160e01b0319166001600160e01b03191681526020019081526020016000206000828254610db29190611c70565b9091555050600101610d56565b5060608051838201515160005b81811015610f6b57600086606001518281518110610dec57610dec611bbe565b60209081029190910181015180516001600160e01b031916600090815260029092526040909120549091506001600160a01b031615610e3e57604051634cc04b1760e01b815260040160405180910390fd5b6000805b85811015610e975782600001516001600160e01b031916878281518110610e6b57610e6b611bbe565b6020026020010151600001516001600160e01b03191603610e8f5760019150610e97565b600101610e42565b5080610eb65760405163573ffc1f60e11b815260040160405180910390fd5b60405180606001604052808b6001600160a01b031681526020016000815260200160006001811115610eea57610eea6114fc565b905282516001600160e01b031916600090815260026020818152604092839020845181546001600160a01b0319166001600160a01b03909116178155908401516001808301919091559284015191810180549193909160ff1916908381811115610f5657610f566114fc565b02179055505060019093019250610dcc915050565b5060808501515160005b8181101561108c57600087608001518281518110610f9557610f95611bbe565b60209081029190910181015180516001600160e01b031916600090815260029092526040909120549091506001600160a01b031615610fe7576040516392bffc6560e01b815260040160405180910390fd5b604080516060810182526001600160a01b038c168152602083810151908201529081016001905281516001600160e01b031916600090815260026020818152604092839020845181546001600160a01b0319166001600160a01b03909116178155908401516001808301919091559284015191810180549193909160ff1916908381811115611078576110786114fc565b02179055505060019092019150610f759050565b5085511561114557600080896001600160a01b0316896040516024016110b29190611c21565b60408051601f198184030181529181526020820180516001600160e01b03166306d61fe760e41b179052516110e79190611c54565b600060405180830381855af49150503d8060008114611122576040519150601f19603f3d011682016040523d82523d6000602084013e611127565b606091505b5091509150816111425761114281633fcb904560e01b61148f565b50505b604080513381526001600160a01b038a16602082018190528183015290517fbcd03fe408dcc45614e803cbab9f500dddff61b17380b993e76d30398da472299181900360600190a15050505050505050565b638b78c6d8600c52826000526020600c208054838117836111b9575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a3505050505050565b63978aab926004526000828152602481206001600160a01b03929092169168fbb67fda52d4bfb8be19830161122d5763f5a267f16000526004601cfd5b8261123f5768fbb67fda52d4bfb8bf92505b80546bffffffffffffffffffffffff8116806112c25760019350848260601c0361127d57600183018054845560028401805490915560009055611332565b84600184015460601c0361129f57600283018054600185015560009055611332565b84600284015460601c036112b95760006002840155611332565b60009350611332565b826020528460005260406000208054806112dd575050611332565b60018360011c039250826001820314611315578285015460601c8060601b600183038701556000848701558060005250806040600020555b5060018260011b17845460601c60601b1784556000815550600193505b50505092915050565b63978aab926004526000828152602481206001600160a01b03929092169168fbb67fda52d4bfb8be1983016113785763f5a267f16000526004601cfd5b8261138a5768fbb67fda52d4bfb8bf92505b80546bffffffffffffffffffffffff81168260205280611452578160601c806113bd578560601b84556001945050611332565b8581036113ca5750611332565b600184015460601c806113eb578660601b6001860155600195505050611332565b8681036113f9575050611332565b600285015460601c8061141b578760601b600287015560019650505050611332565b87810361142a57505050611332565b6000928352604080842060019055918352818320600290558252902060039055506007908117905b8460005260406000208054611485578160011c91508560601b828501558160010181558260020184556001945050611332565b5050505092915050565b81511561149e57815182602001fd5b806000526004601cfd5b604051806040016040528060006001600160a01b031681526020016114f76040518060a00160405280600015158152602001606081526020016060815260200160608152602001606081525090565b905290565b634e487b7160e01b600052602160045260246000fd5b6001600160e01b03198116811461046957600080fd5b60006020828403121561153a57600080fd5b813561154581611512565b9392505050565b60006020828403121561155e57600080fd5b5035919050565b80356001600160a01b038116811461157c57600080fd5b919050565b6000806040838503121561159457600080fd5b61159d83611565565b946020939093013593505050565b6000602082840312156115bd57600080fd5b61154582611565565b60008151808452602080850194506020840160005b838110156116015781516001600160e01b031916875295820195908201906001016115db565b509495945050505050565b60008151808452602080850194506020840160005b8381101561160157815180516001600160e01b03191688528301518388015260409096019590820190600101611621565b600060208083018184528085518083526040925060408601915060408160051b8701018488016000805b8481101561176657603f198a850381018752835180516001600160a01b031686528901518986018990528051151589870152808a015160a060608089018290526116c960e08a01846115c6565b92508b8401516080868b860301818c01526116e485836115c6565b928601518b84038801948c01949094528351808452938f019450918e019288929091505b81831015611733578451516001600160e01b0319168452938e0193928e019260019290920191611708565b808601519550505050838882030160c0890152611750818461160c565b998c01999750505093890193505060010161167c565b50919998505050505050505050565b60008060006040848603121561178a57600080fd5b61179384611565565b9250602084013567ffffffffffffffff808211156117b057600080fd5b818601915086601f8301126117c457600080fd5b8135818111156117d357600080fd5b8760208285010111156117e557600080fd5b6020830194508093505050509250925092565b60208082528251828201819052600091906040908185019086840185805b8381101561186157825180516001600160e01b03191686528701516002811061184d57634e487b7160e01b83526021600452602483fd5b858801529385019391860191600101611816565b509298975050505050505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156118a8576118a861186f565b60405290565b60405160a0810167ffffffffffffffff811182821017156118a8576118a861186f565b604051601f8201601f1916810167ffffffffffffffff811182821017156118fa576118fa61186f565b604052919050565b8051801515811461157c57600080fd5b600067ffffffffffffffff82111561192c5761192c61186f565b5060051b60200190565b600082601f83011261194757600080fd5b8151602061195c61195783611912565b6118d1565b8083825260208201915060208460051b87010193508684111561197e57600080fd5b602086015b848110156119a357805161199681611512565b8352918301918301611983565b509695505050505050565b600082601f8301126119bf57600080fd5b815160206119cf61195783611912565b82815260059290921b840181019181810190868411156119ee57600080fd5b8286015b848110156119a357838189031215611a0a5760008081fd5b6040805185810181811067ffffffffffffffff82111715611a2d57611a2d61186f565b909152815190611a3c82611512565b90815283529183019183016119f2565b600082601f830112611a5d57600080fd5b81516020611a6d61195783611912565b82815260069290921b84018101918181019086841115611a8c57600080fd5b8286015b848110156119a35760408189031215611aa95760008081fd5b611ab1611885565b8151611abc81611512565b81528185015185820152835291830191604001611a90565b600060208284031215611ae657600080fd5b815167ffffffffffffffff80821115611afe57600080fd5b9083019060a08286031215611b1257600080fd5b611b1a6118ae565b611b2383611902565b8152602083015182811115611b3757600080fd5b611b4387828601611936565b602083015250604083015182811115611b5b57600080fd5b611b6787828601611936565b604083015250606083015182811115611b7f57600080fd5b611b8b878286016119ae565b606083015250608083015182811115611ba357600080fd5b611baf87828601611a4c565b60808301525095945050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561052b5761052b611bd4565b60005b83811015611c18578181015183820152602001611c00565b50506000910152565b6020815260008251806020840152611c40816040850160208701611bfd565b601f01601f19169190910160400192915050565b60008251611c66818460208701611bfd565b9190910192915050565b8082018082111561052b5761052b611bd456fea2646970667358221220615bef00ea45c79b431c0cc175760e81c290a4c6a699332e9fb855c8a41f3d0e64736f6c6343000817003300000000000000000000000032dc86f866e9f5ed59a60b18c3b0f9b972a928f0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000010000000000000000000000006c0aa5c1ea02a81a60f77f7117ceb987b39f3c1f000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000