0 txs
24 calls
constructor
No constructor.
functions
_requests
viewfunction _requests(bytes8) view returns (bytes8 uniqueId, uint256 clawbackAmount, uint256 signerCount, address targetAccount, address clawbackTo, bool executed, bool isActive, uint8 actionType)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
checkEoaSignatureStatus
viewfunction checkEoaSignatureStatus(bytes8 _requestId, address _signer) view returns (bool status)
decimals
purefunction decimals() pure returns (uint8)
getEoaSignatureCount
viewfunction getEoaSignatureCount(bytes8 _requestId) view returns (uint256 count)
getNextSignerIndex
viewfunction getNextSignerIndex() view returns (uint8)
getRequestCount
viewfunction getRequestCount() view returns (uint256 requestCount)
getRequestDetails
viewfunction getRequestDetails(bytes8 _requestId) view returns (bytes8 uniqueId, address targetAccount, address clawbackTo, uint256 clawbackAmount, uint8 actionType, uint256 signerCount, bool executed, bool isActive)
getRequestDetailsV2
viewfunction getRequestDetailsV2(bytes8 _requestId) view returns (bytes8 uniqueId, address targetAccount, address clawbackTo, uint256 clawbackAmount, uint8 actionType, uint256 signerCount, bool executed, bool isActive)
getRequiredSignatures
viewfunction getRequiredSignatures() view returns (uint8 _requiredSignatures)
getSignerBitmap
viewfunction getSignerBitmap(bytes8 _requestId) view returns (uint256 bitmap)
getSignerIndex
viewfunction getSignerIndex(address _signer) view returns (uint8 index)
isAccountFrozen
viewfunction isAccountFrozen(address _account) view returns (bool isFrozen)
isAccountFrozenV2
viewfunction isAccountFrozenV2(address _account) view returns (bool isFrozen)
name
viewfunction name() view returns (string)
nftRegistryAddress
viewfunction nftRegistryAddress() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
requiredSignatures
viewfunction requiredSignatures() view returns (uint8)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
batchApproveSigners
nonpayablefunction batchApproveSigners(address[] _signers)
batchApproveSignersV2
nonpayablefunction batchApproveSignersV2(address[] _signers)
batchDisapproveSigners
nonpayablefunction batchDisapproveSigners(address[] _signers)
batchDisapproveSignersV2
nonpayablefunction batchDisapproveSignersV2(address[] _signers)
burn
nonpayablefunction burn(address _account, uint256 _amount, string _note)
createRequest
nonpayablefunction createRequest(uint8 _actionType, address _targetAccount, address _clawbackTo, uint256 _clawbackAmount, bytes8 _uniqueId) returns (bytes8 _requestId)
createRequestV2
nonpayablefunction createRequestV2(uint8 _actionType, address _targetAccount, address _clawbackTo, uint256 _clawbackAmount, bytes8 _uniqueId) returns (bytes8 _requestId)
executeRequest
nonpayablefunction executeRequest(bytes8 _requestId)
executeRequestV2
nonpayablefunction executeRequestV2(bytes8 _requestId)
freeze
nonpayablefunction freeze(address _account, string _note)
freezeV2
nonpayablefunction freezeV2(address _account, string _note)
initialize
nonpayablefunction initialize(address _owner, address _nftRegistryAddress)
mint
nonpayablefunction mint(address _to, uint256 _amount, string _note)
pause
nonpayablefunction pause(string _note)
renounceOwnership
nonpayablefunction renounceOwnership()
setRequestInactive
nonpayablefunction setRequestInactive(bytes8 _requestId)
setRequiredSignatures
nonpayablefunction setRequiredSignatures(uint8 _requiredSignatures)
submitSignature
nonpayablefunction submitSignature(bytes8 _requestId, uint8 _signerIdx)
submitSignatureV2
nonpayablefunction submitSignatureV2(bytes8 _requestId, uint8 _signerIdx)
transfer
nonpayablefunction transfer(address _recipient, uint256 _amount, string _note) returns (bool status)
transfer
nonpayablefunction transfer(address to, uint256 value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address _sender, address _recipient, uint256 _amount, string _note) returns (bool status)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 value) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unfreeze
nonpayablefunction unfreeze(address _account, string _note)
unfreezeV2
nonpayablefunction unfreezeV2(address _account, string _note)
unpause
nonpayablefunction unpause(string _note)
events
AccountFrozen
event AccountFrozen(address indexed account, string note, address indexed _initiator)
AccountPaused
event AccountPaused(string note)
AccountUnfrozen
event AccountUnfrozen(address indexed account, string note, address indexed _initiator)
AccountUnpaused
event AccountUnpaused(string note)
ActionExecuted
event ActionExecuted(bytes8 requestId, uint8 actionType)
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
RequestInactiveSet
event RequestInactiveSet(bytes8 indexed requestId, address indexed initiator)
SignatureSubmitted
event SignatureSubmitted(bytes8 indexed requestId, address indexed signer)
SignerDisapproved
event SignerDisapproved(address indexed signer)
SpecialRequestCreated
event SpecialRequestCreated(bytes8 indexed requestId, uint8 action, address indexed _initiator)
TokensBurned
event TokensBurned(address indexed from, uint256 amount, string note, address indexed _initiator)
TokensClawedBack
event TokensClawedBack(address indexed from, address indexed to, uint256 amount, string note, address indexed _initiator, bytes8 _requestId)
TokensMinted
event TokensMinted(address indexed to, uint256 amount, string note, address indexed _initiator)
TokensTransferred
event TokensTransferred(address indexed from, address indexed to, uint256 amount, string note, address indexed _initiator)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
errors
EnforcedPause
error EnforcedPause()
ERC20InsufficientAllowance
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed)
ERC20InsufficientBalance
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed)
ERC20InvalidApprover
error ERC20InvalidApprover(address approver)
ERC20InvalidReceiver
error ERC20InvalidReceiver(address receiver)
ERC20InvalidSender
error ERC20InvalidSender(address sender)
ERC20InvalidSpender
error ERC20InvalidSpender(address spender)
ExpectedPause
error ExpectedPause()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
creation bytecode
0x6080806040523461001657612f02908161001c8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c806304b15af914610b9b57806306fdde03146122f3578063095ea7b31461227257806311681b671461024257806315f570dc146120b457806317fc9e9e1461208757806318160ddd1461204a5780631af716ba14611f1257806323b872dd14611e2d578063313ce56714611e115780633f4f906714611d775780633fad183414611d595780634401704f14611cc3578063485cc9551461179d5780634975b8b1146117115780634c5856151461161457806356b8c724146114f85780635819b1e01461142a5780635c975abb146113fa578063602d9253146113bb578063624fc9901461137d578063663164f7146111825780636da66355146110c65780636e1437201461108957806370a0823114611042578063715018a614610fd857806375bf8fe714610f4257806377f0522614610e455780638d068043146108d35780638da5cb5b14610e0f5780638f62fef114610d75578063922029c514610ca657806395d89b4114610bc45780639b87f77e14610ba05780639c50095914610b9b578063a86675e814610af2578063a9059cbb14610ac1578063a9436bf8146109e4578063b114f4f11461092f578063bc92eb43146108f4578063ccd93998146108d3578063d3fc986414610721578063dd62ed3e146106d8578063e79faa5814610603578063e816d97f146105c4578063eb94891a14610471578063ebe5f7d1146103a3578063f2fde38b14610378578063fb7269111461028d5763fe5fcea91461024257600080fd5b346102885760403660031901126102885761027461025e612397565b6102666124ec565b9061026f612c25565b61274c565b6001600080516020612e8d83398151915255005b600080fd5b346102885761029b366125ae565b906102a4612c25565b6102ac612c55565b6102b96019831115612a91565b60005b63ffffffff8116908382101561027457610318916001600160a01b03906102ed906102e8908787612afd565b612b23565b1660005260206002815260406000209081549160ff92838160081c161561031d575b50505050612ae8565b6102bc565b61ff0019166101001790556001805460059092526040600020805460ff191660a893841c851617905580549092909160ff60a81b9161035f9084831c16612ba0565b60ff60a81b1990931692901b161790558480808061030f565b34610288576020366003190112610288576103a16103946124c0565b61039c612c55565b612bb1565b005b34610288576103b1366125ae565b906103ba612c25565b6103c2612c55565b6103cf6019831115612a91565b60005b63ffffffff8116908382101561027457610426916001600160a01b03906103fe906102e8908787612afd565b168060005260206002815260406000209081549160ff8360081c1661042b5750505050612ae8565b6103d2565b60059261ff001916905552604060002060ff1981541690557f6badc7dfba62ba779a1ae4b6c19026293f77cd4d6c47a1df27cf9a181bdab2fd600080a28480808061030f565b34610288576001610481366125fa565b61048f959192939495612c25565b3360005260026020526104ac60ff60406000205460081c16612700565b6001600160401b0360c01b8116948560005260036020526104db60ff60046040600020015460a81c1615612b37565b85600052600360205260406000209160c01c6001600160401b031983541617825560038201838060a01b0390816bffffffffffffffffffffffff60a01b93168382541617905560048301951690855416178455015561053a8382612b7c565b805461ffff60a01b1916600160a81b17905560005460018101929083106105ae5760209260005561056e60405180926123ae565b817f135051cf1974201ea905f44a982248b2d1b937a631c555be8347067c13ad44cd843393a36001600080516020612e8d83398151915255604051908152f35b634e487b7160e01b600052601160045260246000fd5b34610288576020366003190112610288576001600160a01b036105e56124c0565b166000526002602052602060ff604060002054166040519015158152f35b34610288576020366003190112610288576004356001600160401b038111610288576106339036906004016124fc565b9061063c612c55565b600080516020612e4d8339815191529182549260ff8416156106c6577f44608ec45f82c38c66209d1b7ba30bc220e9030c750600c6f324eb52b81f90c89360ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a16106c16040519283926020845260208401916128f4565b0390a1005b604051638dfc202b60e01b8152600490fd5b34610288576040366003190112610288576106f16124c0565b6107026106fc6124d6565b916126c7565b9060018060a01b03166000526020526020604060002054604051908152f35b346102885761072f36612529565b92610738612c25565b610740612c55565b60018060a01b0380911692836000526024602080936002825261076b60ff6040600020541615612842565b60015460081c166040519283809263013ab75560e01b82528960048301525afa80156108c7576107a39160009161089a575b5061289a565b8315610881576107b1612d81565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace028054938285018095116105ae577f9fefa34dab07e51d075774a576a8f4777035e8ad819d9fe29a4d0d85c896b8b99461086a925585600052600080516020612ded833981519152845260406000208381540190558560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051878152a3604080519485948552840152339660408401916128f4565b0390a36001600080516020612e8d83398151915255005b60405163ec442f0560e01b815260006004820152602490fd5b6108ba9150843d86116108c0575b6108b281836126a6565b810190612882565b8761079d565b503d6108a8565b6040513d6000823e3d90fd5b3461028857600036600319011261028857602060ff60015416604051908152f35b34610288576020366003190112610288576001600160c01b0319610916612397565b1660005260046020526020604060002054604051908152f35b3461028857604036600319011261028857610948612397565b6001600160a01b036109586124d6565b16600052600560205260ff604060002054169081156109a95760209161099f916001600160401b0360c01b166000526004602052600160ff60406000205492161b16151590565b6040519015158152f35b60405162461bcd60e51b815260206004820152601360248201527214da59db995c881b9bdd08185c1c1c9bdd9959606a1b6044820152606490fd5b34610288576020366003190112610288576109fd612397565b610a05612c25565b610a0d612c55565b6001600160401b0360c01b168060005260036020526004604060002001805460ff8160a81c1615610a7c5760ff60a81b1916905533907f877b4c13c0c366d6ddb8759efee4066f47388619e7b9a86e5a0c012505d7123c600080a36001600080516020612e8d83398151915255005b60405162461bcd60e51b815260206004820152601b60248201527f5265717565737420697320616c726561647920696e61637469766500000000006044820152606490fd5b3461028857604036600319011261028857610ae7610add6124c0565b6024359033612c8e565b602060405160018152f35b34610288576020366003190112610288576101006001600160c01b031980610b18612397565b166000526003602052610b99604060002091825492600181015490600281015460018060a01b0392600484600385015416930154946040519760c01b1687526020870152604086015260608501528116608084015260ff8160a01c16151560a084015260ff8160a81c16151560c084015260ff60e084019160b01c166123ae565bf35b6123d1565b3461028857600036600319011261028857602060ff60015460a81c16604051908152f35b34610288576000366003190112610288576040516000600080516020612e0d833981519152805490610bf582612651565b80855291602091600191828116908115610c795750600114610c32575b610c2e86610c22818803826126a6565b60405191829182612477565b0390f35b60009081529350600080516020612e6d8339815191525b838510610c6657505050508101602001610c2282610c2e85610c12565b8054868601840152938201938101610c49565b9050869550610c2e96935060209250610c2294915060ff191682840152151560051b820101929385610c12565b3461028857610cb4366125ae565b90610cbd612c25565b610cc5612c55565b610cd26019831115612a91565b60005b63ffffffff8116908382101561027457610d2e916001600160a01b0390610d01906102e8908787612afd565b16600052602060068152604060002080549160ff916008938381861c1615610d33575b5050505050612ae8565b610cd5565b6101009061ff0019161790556007828454169152604060002060ff199182825416179055825491610d65818416612ba0565b1691161790558480808080610d24565b34610288577f740b7d79536875237ad3a252eb20e51d5ae58f9e2cfef3b7f3c0505856c5c50961086a610da73661256f565b9391610db4939193612c25565b610dbc612c55565b60018060a01b031692836000526006602052610de060ff6040600020541615612842565b8360005260066020526040600020600160ff1982541617905560405191829160208352339660208401916128f4565b3461028857600036600319011261028857600080516020612e2d833981519152546040516001600160a01b039091168152602090f35b34610288576001610e55366125fa565b610e63959192939495612c25565b336000526006602052610e8060ff60406000205460081c16612700565b6001600160401b0360c01b811694856000526003602052610eaf60ff60046040600020015460a81c1615612b37565b85600052600360205260406000209160c01c6001600160401b031983541617825560038201838060a01b0390816bffffffffffffffffffffffff60a01b931683825416179055600483019516908554161784550155610f0e8382612b7c565b805461ffff60a01b1916600160a81b17905560095460018101929083106105ae5760209260095561056e60405180926123ae565b34610288577fad6658d428eb9421a3d09cdca69dfd342ac5d113ac3b365b32ede3e0319a4a4f61086a610f743661256f565b9391610f81939193612c25565b610f89612c55565b60018060a01b031692836000526002602052610fac60ff60406000205416612915565b836000526002602052604060002060ff19815416905560405191829160208352339660208401916128f4565b3461028857600036600319011261028857610ff1612c55565b600080516020612e2d83398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610288576020366003190112610288576001600160a01b036110636124c0565b16600052600080516020612ded8339815191526020526020604060002054604051908152f35b34610288576020366003190112610288576001600160a01b036110aa6124c0565b166000526005602052602060ff60406000205416604051908152f35b34610288576020366003190112610288576004356001600160401b038111610288576111177fd5189f49255ed414f63eb5b202e9b7487a083bf7ea065d273cbb2953a8b77c839136906004016124fc565b61111f612c55565b611127612d81565b600080516020612e4d833981519152600160ff198254161790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a16106c16040519283926020845260208401916128f4565b3461028857602080600319360112610288577f621431ac4f74906bd253fabb547463e800785deabc4b65c53d98ac3908f0bd05906111be612397565b906111c7612c25565b336000526002815261136660ff926111e88460406000205460081c16612700565b6001600160401b0360c01b811680600052600384526112138560046040600020015460a81c16612959565b6000526003835260406000209260018060a01b039384600382015416916004820192611299845497881692611256600260018701549601548b600154161461299b565b6112658a8a60a01c16156129df565b826000526006815260406000206040519061127f8261268b565b54918b80841615938415845260081c161515910152612842565b6001600160a01b0381166000908152600080516020612ded833981519152602052604090206112cc908490541015612a2b565b6112d7838383612c8e565b60408051938452606060208501819052601690850152754175746f2d657865637574656420636c61776261636b60501b60808501526001600160c01b031986169084015233927f1a0b46cbbf0749bb33229944269dba4e91e52d465b90c6b7603b82a8676efc719060a090a4805461ffff60a01b1916600160a01b17905560405193849360b01c169083612a6e565b0390a16001600080516020612e8d83398151915255005b34610288576020366003190112610288576001600160c01b031961139f612397565b1660005260036020526020600260406000200154604051908152f35b34610288576020366003190112610288576001600160a01b036113dc6124c0565b166000526006602052602060ff604060002054166040519015158152f35b3461028857600036600319011261028857602060ff600080516020612e4d83398151915254166040519015158152f35b3461028857611438366125ae565b90611441612c25565b611449612c55565b6114566019831115612a91565b60005b63ffffffff81169083821015610274576114ad916001600160a01b0390611485906102e8908787612afd565b168060005260206006815260406000209081549160ff8360081c166114b25750505050612ae8565b611459565b60079261ff001916905552604060002060ff1981541690557f6badc7dfba62ba779a1ae4b6c19026293f77cd4d6c47a1df27cf9a181bdab2fd600080a28480808061030f565b346102885761150636612529565b611511929192612c25565b336000526020936002855261152e60ff6040600020541615612842565b60018060a01b039260248685841695866000526002825261155760ff6040600020541615612842565b60015460081c166040519283809263013ab75560e01b82528960048301525afa80156108c7577f9b31d904806821fd837f51796f668ae2cc6e660d6a8fa78d41a2cedcad14d3c7936115b584926115bb946000916115f7575061289a565b33612c8e565b604051908152604086820152806115d93396339560408401916128f4565b0390a46001600080516020612e8d8339815191525560405160018152f35b61160e91508b3d8d116108c0576108b281836126a6565b8b61079d565b3461028857602080600319360112610288577f621431ac4f74906bd253fabb547463e800785deabc4b65c53d98ac3908f0bd0590611650612397565b90611659612c25565b336000526002815261136660ff9261167a8460406000205460081c16612700565b6001600160401b0360c01b811680600052600384526116a58560046040600020015460a81c16612959565b6000526003835260406000209260018060a01b0393846003820154169160048201926112998454978816926116e8600260018701549601548b600154161461299b565b6116f78a8a60a01c16156129df565b826000526002815260406000206040519061127f8261268b565b346102885760203660031901126102885760043560ff811680910361028857611738612c55565b801561174e5760ff196001541617600155600080f35b60405162461bcd60e51b815260206004820152602160248201527f5369676e617475726573206d7573742062652067726561746572207468616e206044820152600360fc1b6064820152608490fd5b34610288576040366003190112610288576117b66124c0565b6117be6124d6565b600080516020612ead83398151915254906001600160401b03821680159081611cb3575b6001149081611ca9575b159081611ca0575b50611c8e5760016001600160401b0319831617600080516020612ead8339815191525560ff8260401c1615611c61575b604051926118318461268b565b601284527145564944454e54205553442028555344452960701b60208501526040519361185d8561268b565b60048552635553444560e01b6020860152611876612d52565b61187e612d52565b8051906001600160401b038211611b2d5781906118a9600080516020612dcd83398151915254612651565b601f8111611be0575b50602090601f8311600114611b4e57600092611b43575b50508160011b916000199060031b1c191617600080516020612dcd833981519152555b83516001600160401b038111611b2d57611914600080516020612e0d83398151915254612651565b601f8111611ab3575b506020601f8211600114611a20579080611979939260ff97600092611a15575b50508160011b916000199060031b1c191617600080516020612e0d833981519152555b611968612d52565b611970612d52565b61039433612bb1565b60018054600080556001600160a81b03191660089290921b610100600160a81b03169190911760041760a884901b1916600160a81b17905560401c16156119bc57005b68ff000000000000000019600080516020612ead8339815191525416600080516020612ead833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b01519050878061193d565b601f19821695600080516020612e0d833981519152600052600080516020612e6d8339815191529660005b818110611a9b5750966001928492611979969560ff9a10611a82575b505050811b01600080516020612e0d83398151915255611960565b015160001960f88460031b161c19169055878080611a67565b83830151895560019098019760209384019301611a4b565b600080516020612e0d833981519152600052601f820160051c600080516020612e6d833981519152019060208310611b17575b601f0160051c600080516020612e6d83398151915201905b818110611b0b575061191d565b60008155600101611afe565b600080516020612e6d8339815191529150611ae6565b634e487b7160e01b600052604160045260246000fd5b0151905086806118c9565b9250600080516020612dcd833981519152600052600080516020612dad833981519152906000935b601f1984168510611bc5576001945083601f19811610611bac575b505050811b01600080516020612dcd833981519152556118ec565b015160001960f88460031b161c19169055868080611b91565b81810151835560209485019460019093019290910190611b76565b909150600080516020612dcd833981519152600052601f830160051c600080516020612dad8339815191520160208410611c4c575b908392915b601f820160051c600080516020612dad833981519152018110611c3d57506118b2565b60008155849350600101611c1a565b50600080516020612dad833981519152611c15565b68ffffffffffffffffff1982166801000000000000000117600080516020612ead83398151915255611824565b60405163f92ee8a960e01b8152600490fd5b905015846117f4565b303b1591506117ec565b604084901c60ff161591506117e2565b34610288577fad6658d428eb9421a3d09cdca69dfd342ac5d113ac3b365b32ede3e0319a4a4f61086a611cf53661256f565b9391611d02939193612c25565b611d0a612c55565b60018060a01b031692836000526006602052611d2d60ff60406000205416612915565b836000526006602052604060002060ff19815416905560405191829160208352339660208401916128f4565b34610288576000366003190112610288576020600054604051908152f35b34610288577f740b7d79536875237ad3a252eb20e51d5ae58f9e2cfef3b7f3c0505856c5c50961086a611da93661256f565b9391611db6939193612c25565b611dbe612c55565b60018060a01b031692836000526002602052611de260ff6040600020541615612842565b8360005260026020526040600020600160ff1982541617905560405191829160208352339660208401916128f4565b3461028857600036600319011261028857602060405160028152f35b3461028857606036600319011261028857611e466124c0565b611e4e6124d6565b60443590611e5b836126c7565b33600052602052604060002054926000198403611e7d575b610ae79350612c8e565b828410611eec576001600160a01b03811615611ed3573315611eba5782610ae794611ea7836126c7565b3360005260205203604060002055611e73565b604051634a1406b160e11b815260006004820152602490fd5b60405163e602df0560e01b815260006004820152602490fd5b604051637dc7a0d960e11b81523360048201526024810185905260448101849052606490fd5b3461028857608036600319011261028857611f2b6124c0565b611f336124d6565b90604435906064356001600160401b03811161028857611f579036906004016124fc565b929091611f62612c25565b60018060a01b03928382169283600052602460209760028952611f8d60ff6040600020541615612842565b88878216978860005260028252611fac60ff6040600020541615612842565b60015460081c166040519384809263013ab75560e01b82528b60048301525afa9081156108c7577f9b31d904806821fd837f51796f668ae2cc6e660d6a8fa78d41a2cedcad14d3c79561200b85936120109560009161202d575061289a565b612c8e565b6115d96040519283928352604089840152339760408401916128f4565b61204491508d803d106108c0576108b281836126a6565b8d61079d565b346102885760003660031901126102885760207f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254604051908152f35b346102885760003660031901126102885760015460405160089190911c6001600160a01b03168152602090f35b34610288576120c236612529565b9190926120cd612c25565b6120d5612c55565b60018060a01b039081811690816000526024602080946002825261210160ff6040600020541615612842565b60015460081c166040519283809263013ab75560e01b82528760048301525afa80156108c75761213891600091612255575061289a565b811561223c57612146612d81565b81600052600080516020612ded83398151915280845260406000205491858310612209575082857f3dc4a3d05c508f980d33ab2ae14f99cef134d267aa7da13dba7ef141cae7cc7f9695936000936040968552855203848320557f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace028581540390557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838551878152a381519283528201528061086a3395339560408401916128f4565b60405163391434e360e21b81526001600160a01b0391909116600482015260248101929092525060448101849052606490fd5b604051634b637e8f60e11b815260006004820152602490fd5b61226c9150853d87116108c0576108b281836126a6565b8861079d565b346102885760403660031901126102885761228b6124c0565b602435903315611ed3576001600160a01b0316908115611eba576122ae336126c7565b82600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b34610288576000366003190112610288576040516000600080516020612dcd83398151915280549061232482612651565b80855291602091600191828116908115610c79575060011461235057610c2e86610c22818803826126a6565b60009081529350600080516020612dad8339815191525b83851061238457505050508101602001610c2282610c2e85610c12565b8054868601840152938201938101612367565b600435906001600160c01b03198216820361028857565b9060018210156123bb5752565b634e487b7160e01b600052602160045260246000fd5b34610288576020366003190112610288576101006001600160c01b0319806123f7612397565b16600052600360205260ff604060002080549260018060a01b0391826003820154169260048201549360026001840154930154936040519760c01b168752602087015283166040860152606085015261245860808501848460b01c166123ae565b60a0840152818160a01c16151560c084015260a81c16151560e0820152f35b6020808252825181830181905290939260005b8281106124ac57505060409293506000838284010152601f8019910116010190565b81810186015184820160400152850161248a565b600435906001600160a01b038216820361028857565b602435906001600160a01b038216820361028857565b6024359060ff8216820361028857565b9181601f84011215610288578235916001600160401b038311610288576020838186019501011161028857565b6060600319820112610288576004356001600160a01b0381168103610288579160243591604435906001600160401b0382116102885761256b916004016124fc565b9091565b906040600319830112610288576004356001600160a01b03811681036102885791602435906001600160401b0382116102885761256b916004016124fc565b906020600319830112610288576004356001600160401b039283821161028857806023830112156102885781600401359384116102885760248460051b83010111610288576024019190565b60a090600319011261028857600435600181101561028857906001600160a01b03906024358281168103610288579160443590811681036102885790606435906084356001600160c01b0319811681036102885790565b90600182811c92168015612681575b602083101461266b57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612660565b604081019081106001600160401b03821117611b2d57604052565b90601f801991011681019081106001600160401b03821117611b2d57604052565b6001600160a01b031660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b1561270757565b60405162461bcd60e51b815260206004820152601e60248201527f4163636f756e74206973206e6f7420617070726f766564207369676e657200006044820152606490fd5b90600091338352600260205261276b60ff604085205460081c16612700565b6001600160c01b03198116600090815260046020526040902054600160ff84161b1661280c576001600160401b0360c01b16908183526004602052600160ff6040852092161b8154179055600360205260026040832001805490600182018092116127f857557f78ce829b2a780468c9259ed04978cf319278d80f0ed5ed1e0adea5bfea64b4b8339280a3565b634e487b7160e01b84526011600452602484fd5b60405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481cda59db995960921b6044820152606490fd5b1561284957565b60405162461bcd60e51b815260206004820152601160248201527020b1b1b7bab73a1034b990333937bd32b760791b6044820152606490fd5b90816020910312610288575180151581036102885790565b156128a157565b60405162461bcd60e51b815260206004820152602560248201527f526563697069656e7420646f206e6f7420636f6e7461696e2076657269666965604482015264190811125160da1b6064820152608490fd5b908060209392818452848401376000828201840152601f01601f1916010190565b1561291c57565b60405162461bcd60e51b815260206004820152601560248201527420b1b1b7bab73a1034b9903737ba10333937bd32b760591b6044820152606490fd5b1561296057565b60405162461bcd60e51b81526020600482015260136024820152725265717565737420697320696e61637469766560681b6044820152606490fd5b156129a257565b60405162461bcd60e51b81526020600482015260156024820152744e6f7420656e6f756768207369676e61747572657360581b6044820152606490fd5b156129e657565b60405162461bcd60e51b815260206004820152601860248201527f5265717565737420616c726561647920657865637574656400000000000000006044820152606490fd5b15612a3257565b60405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606490fd5b6001600160c01b03199091168152604081019291612a8f91602001906123ae565b565b15612a9857565b60405162461bcd60e51b815260206004820152602260248201527f42617463682065786365656473206d6178696d756d20616c6c6f7765642073696044820152617a6560f01b6064820152608490fd5b63ffffffff8091169081146105ae5760010190565b9190811015612b0d5760051b0190565b634e487b7160e01b600052603260045260246000fd5b356001600160a01b03811681036102885790565b15612b3e57565b60405162461bcd60e51b81526020600482015260166024820152755265717565737420616c72656164792065786973747360501b6044820152606490fd5b9060018110156123bb57815460ff60b01b191660b09190911b60ff60b01b16179055565b60ff1660ff81146105ae5760010190565b6001600160a01b03908116908115612c0c57600080516020612e2d83398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b600080516020612e8d8339815191526002815414612c435760029055565b604051633ee5aeb560e01b8152600490fd5b600080516020612e2d833981519152546001600160a01b03163303612c7657565b60405163118cdaa760e01b8152336004820152602490fd5b916001600160a01b0380841692831561223c571692831561088157612cb1612d81565b600090838252600080516020612ded83398151915280602052604083205491848310612d1f575082847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef959360409388602097528652038282205586815220818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b0391909116600482015260248101929092525060448101839052606490fd5b60ff600080516020612ead8339815191525460401c1615612d6f57565b604051631afcd79f60e31b8152600490fd5b60ff600080516020612e4d8339815191525416612d9a57565b60405163d93c066560e01b8152600490fdfe2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330046a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220068126bb108770f176496dd1f953fe50f2b9e71a3bd6c8e1dd2825391381ae8964736f6c63430008160033