From a3fc2222cb1cb6d529a02e47856b29a4a74fb64b Mon Sep 17 00:00:00 2001 From: Kevin Halliday Date: Thu, 31 Oct 2024 13:40:58 -0400 Subject: [PATCH] chore(contracts): update avs bindings --- contracts/Makefile | 4 ++-- contracts/bindings/avsdirectory.go | 2 +- contracts/bindings/delegationmanager.go | 2 +- contracts/bindings/mockerc20.go | 2 +- contracts/bindings/omniavs.go | 2 +- contracts/bindings/strategybase.go | 2 +- contracts/bindings/strategymanager.go | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/contracts/Makefile b/contracts/Makefile index 57477e95a..a9a8023c3 100644 --- a/contracts/Makefile +++ b/contracts/Makefile @@ -37,12 +37,12 @@ CORE_CONTRACTS := OmniPortal FeeOracleV1 Create3 TransparentUpgradeableProxy \ OmniGasPump OmniGasStation AVS_CONTRACTS := OmniAVS DelegationManager StrategyManager StrategyBase AVSDirectory \ - avs/test/common/MockERC20.sol:MockERC20 + test/common/MockERC20.sol:MockERC20 .PHONY: bindings bindings: check-abigen-version build ## Generate golang contract bindings. ROOT=./core ./bindings/scripts/gen.sh $(CORE_CONTRACTS) - ROOT=./avs ./bindings/scripts/gen.sh $(CONTRACTS) + ROOT=./avs ./bindings/scripts/gen.sh $(AVS_CONTRACTS) go run ./bindings/scripts/commenttypes.go -- bindings/strategymanager.go IStrategyManagerDeprecatedStructQueuedWithdrawal IStrategyManagerDeprecatedStructWithdrawerAndNonce go run ./bindings/scripts/commenttypes.go -- bindings/avsdirectory.go ISignatureUtilsSignatureWithSaltAndExpiry diff --git a/contracts/bindings/avsdirectory.go b/contracts/bindings/avsdirectory.go index a0fb10aa8..97dbc63e0 100644 --- a/contracts/bindings/avsdirectory.go +++ b/contracts/bindings/avsdirectory.go @@ -40,7 +40,7 @@ var ( // AVSDirectoryMetaData contains all meta data concerning the AVSDirectory contract. var AVSDirectoryMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DOMAIN_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"OPERATOR_AVS_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsOperatorStatus\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIAVSDirectory.OperatorAVSRegistrationStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorAVSRegistrationDigestHash\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"cancelSalt\",\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorSaltIsSpent\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AVSMetadataURIUpdated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAVSRegistrationStatusUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIAVSDirectory.OperatorAVSRegistrationStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x60c06040523480156200001157600080fd5b5060405162001e5838038062001e58833981016040819052620000349162000117565b6001600160a01b0381166080526200004b62000056565b504660a05262000149565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000115576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012a57600080fd5b81516001600160a01b03811681146200014257600080fd5b9392505050565b60805160a051611ce2620001766000396000610ea801526000818161032401526109830152611ce26000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046117b2565b610387565b005b61015a61016a3660046117d6565b610443565b61015a61017d3660046117ef565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611830565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b61022861020836600461185c565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906118ab565b61015a6106ac565b6101ea61024b3660046118d3565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611966565b610787565b6101a96102cd366004611a4d565b610b1a565b61015a6102e03660046117b2565b610bd3565b61015a6102f3366004611a93565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046117d6565b610d83565b61015a6103673660046117b2565b610e2e565b6101a9610ea4565b61015a6103823660046117d6565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611b05565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611b22565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611b6c565b6104cb5760405162461bcd60e51b815260040161042e90611b8e565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611b6c565b6107345760405162461bcd60e51b815260040161042e90611b8e565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611c8d83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e611895565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611c8d83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611c8d8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611b6c565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611c8d83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906118ab565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c62611895565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906118ab565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611bd6565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611b05565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611b22565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611c05565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611c62565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d8161158b565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a611570878285856116d9565b94509450505050611584565b506000905060025b9250929050565b600081600481111561159f5761159f611895565b14156115a85750565b60018160048111156115bc576115bc611895565b141561160a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b600281600481111561161e5761161e611895565b141561166c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b600381600481111561168057611680611895565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117105750600090506003611794565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611764573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661178d57600060019250925050611794565b9150600090505b94509492505050565b6001600160a01b038116811461044057600080fd5b6000602082840312156117c457600080fd5b81356117cf8161179d565b9392505050565b6000602082840312156117e857600080fd5b5035919050565b60008060006060848603121561180457600080fd5b833561180f8161179d565b9250602084013561181f8161179d565b929592945050506040919091013590565b6000806040838503121561184357600080fd5b823561184e8161179d565b946020939093013593505050565b6000806040838503121561186f57600080fd5b823561187a8161179d565b9150602083013561188a8161179d565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106118cd57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156118e557600080fd5b813560ff811681146117cf57600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561192f5761192f6118f6565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561195e5761195e6118f6565b604052919050565b6000806040838503121561197957600080fd5b82356119848161179d565b915060208381013567ffffffffffffffff808211156119a257600080fd5b90850190606082880312156119b657600080fd5b6119be61190c565b8235828111156119cd57600080fd5b8301601f810189136119de57600080fd5b8035838111156119f0576119f06118f6565b611a02601f8201601f19168701611935565b93508084528986828401011115611a1857600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611a6357600080fd5b8435611a6e8161179d565b93506020850135611a7e8161179d565b93969395505050506040820135916060013590565b60008060208385031215611aa657600080fd5b823567ffffffffffffffff80821115611abe57600080fd5b818501915085601f830112611ad257600080fd5b813581811115611ae157600080fd5b866020828501011115611af357600080fd5b60209290920196919550909350505050565b600060208284031215611b1757600080fd5b81516117cf8161179d565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611b7e57600080fd5b815180151581146117cf57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611c3957858101830151858201606001528201611c1d565b81811115611c4b576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611c7457600080fd5b81516001600160e01b0319811681146117cf57600080fdfe4156534469726563746f72792e72656769737465724f70657261746f72546f41a264697066735822122040f2dbde8c28189d1f80206623bd8f4457c9c890b2d921ab929a7e0854c7312164736f6c634300080c0033", + Bin: "0x60c06040523480156200001157600080fd5b5060405162001e5838038062001e58833981016040819052620000349162000117565b6001600160a01b0381166080526200004b62000056565b504660a05262000149565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000115576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012a57600080fd5b81516001600160a01b03811681146200014257600080fd5b9392505050565b60805160a051611ce2620001766000396000610ea801526000818161032401526109830152611ce26000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046117b2565b610387565b005b61015a61016a3660046117d6565b610443565b61015a61017d3660046117ef565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611830565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b61022861020836600461185c565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906118ab565b61015a6106ac565b6101ea61024b3660046118d3565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611966565b610787565b6101a96102cd366004611a4d565b610b1a565b61015a6102e03660046117b2565b610bd3565b61015a6102f3366004611a93565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046117d6565b610d83565b61015a6103673660046117b2565b610e2e565b6101a9610ea4565b61015a6103823660046117d6565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611b05565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611b22565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611b6c565b6104cb5760405162461bcd60e51b815260040161042e90611b8e565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611b6c565b6107345760405162461bcd60e51b815260040161042e90611b8e565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611c8d83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e611895565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611c8d83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611c8d8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611b6c565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611c8d83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906118ab565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c62611895565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906118ab565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611bd6565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611b05565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611b22565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611c05565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611c62565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d8161158b565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a611570878285856116d9565b94509450505050611584565b506000905060025b9250929050565b600081600481111561159f5761159f611895565b14156115a85750565b60018160048111156115bc576115bc611895565b141561160a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b600281600481111561161e5761161e611895565b141561166c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b600381600481111561168057611680611895565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117105750600090506003611794565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611764573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661178d57600060019250925050611794565b9150600090505b94509492505050565b6001600160a01b038116811461044057600080fd5b6000602082840312156117c457600080fd5b81356117cf8161179d565b9392505050565b6000602082840312156117e857600080fd5b5035919050565b60008060006060848603121561180457600080fd5b833561180f8161179d565b9250602084013561181f8161179d565b929592945050506040919091013590565b6000806040838503121561184357600080fd5b823561184e8161179d565b946020939093013593505050565b6000806040838503121561186f57600080fd5b823561187a8161179d565b9150602083013561188a8161179d565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106118cd57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156118e557600080fd5b813560ff811681146117cf57600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561192f5761192f6118f6565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561195e5761195e6118f6565b604052919050565b6000806040838503121561197957600080fd5b82356119848161179d565b915060208381013567ffffffffffffffff808211156119a257600080fd5b90850190606082880312156119b657600080fd5b6119be61190c565b8235828111156119cd57600080fd5b8301601f810189136119de57600080fd5b8035838111156119f0576119f06118f6565b611a02601f8201601f19168701611935565b93508084528986828401011115611a1857600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611a6357600080fd5b8435611a6e8161179d565b93506020850135611a7e8161179d565b93969395505050506040820135916060013590565b60008060208385031215611aa657600080fd5b823567ffffffffffffffff80821115611abe57600080fd5b818501915085601f830112611ad257600080fd5b813581811115611ae157600080fd5b866020828501011115611af357600080fd5b60209290920196919550909350505050565b600060208284031215611b1757600080fd5b81516117cf8161179d565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611b7e57600080fd5b815180151581146117cf57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611c3957858101830151858201606001528201611c1d565b81811115611c4b576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611c7457600080fd5b81516001600160e01b0319811681146117cf57600080fdfe4156534469726563746f72792e72656769737465724f70657261746f72546f41a26469706673582212205cbe63ad0507272420e3b2008f6a4498e07305383262945c8f509a5d66625e6f64736f6c634300080c0033", } // AVSDirectoryABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/delegationmanager.go b/contracts/bindings/delegationmanager.go index 130c0187c..77b1456c5 100644 --- a/contracts/bindings/delegationmanager.go +++ b/contracts/bindings/delegationmanager.go @@ -79,7 +79,7 @@ type IStrategyManagerDeprecatedStructWithdrawerAndNonce struct { // DelegationManagerMetaData contains all meta data concerning the DelegationManager contract. var DelegationManagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_slasher\",\"type\":\"address\",\"internalType\":\"contractISlasher\"},{\"name\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DELEGATION_APPROVAL_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DOMAIN_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_STAKER_OPT_OUT_WINDOW_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_WITHDRAWAL_DELAY_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"STAKER_DELEGATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateCurrentStakerDelegationDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateDelegationApprovalDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateStakerDelegationDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_stakerNonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateWithdrawalRoot\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawal\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"middlewareTimesIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManager.Withdrawal[]\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[][]\",\"internalType\":\"contractIERC20[][]\"},{\"name\":\"middlewareTimesIndexes\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cumulativeWithdrawalsQueued\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateTo\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateToBySignature\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerSignatureAndExpiry\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegatedTo\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationApprover\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationApproverSaltIsSpent\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"earningsReceiver\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDelegatableShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWithdrawalDelay\",\"inputs\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_minWithdrawalDelayBlocks\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"_withdrawalDelayBlocks\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isDelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"migrateQueuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawalsToMigrate\",\"type\":\"tuple[]\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_QueuedWithdrawal[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"components\":[{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"minWithdrawalDelayBlocks\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyOperatorDetails\",\"inputs\":[{\"name\":\"newOperatorDetails\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorDetails\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorShares\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingWithdrawals\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"queueWithdrawals\",\"inputs\":[{\"name\":\"queuedWithdrawalParams\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManager.QueuedWithdrawalParams[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerAsOperator\",\"inputs\":[{\"name\":\"registeringOperatorDetails\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMinWithdrawalDelayBlocks\",\"inputs\":[{\"name\":\"newMinWithdrawalDelayBlocks\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStrategyWithdrawalDelayBlocks\",\"inputs\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"withdrawalDelayBlocks\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slasher\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISlasher\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerNonce\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerOptOutWindowBlocks\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyWithdrawalDelayBlocks\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"undelegate\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"withdrawalRoots\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorMetadataURI\",\"inputs\":[{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MinWithdrawalDelayBlocksSet\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDetailsModified\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOperatorDetails\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorMetadataURIUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRegistered\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDetails\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSharesDecreased\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSharesIncreased\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerDelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerForceUndelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerUndelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyWithdrawalDelayBlocksSet\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalCompleted\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalMigrated\",\"inputs\":[{\"name\":\"oldWithdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"newWithdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalQueued\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"withdrawal\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManager.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"anonymous\":false}]", - Bin: "0x6101006040523480156200001257600080fd5b50604051620060383803806200603883398101604081905262000035916200013f565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000193565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000124576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013c57600080fd5b50565b6000806000606084860312156200015557600080fd5b8351620001628162000126565b6020850151909350620001758162000126565b6040850151909250620001888162000126565b809150509250925092565b60805160a05160c05160e051615e096200022f60003960006126d80152600081816105e7015281816110ae0152818161142a01528181611d6c01528181612a31015281816140ea01526145d6015260006107d701526000818161052f0152818161107c015281816113f8015281816116ca01528181611e0001528181612afe01528181612c8101528181614210015261467c0152615e096000f3fe608060405234801561001057600080fd5b50600436106103785760003560e01c806360d7faed116101d3578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b01461097d578063f2fde38b14610990578063f698da25146109a3578063fabc1cbc146109ab57600080fd5b8063cf80873e14610936578063da8be86414610957578063eea9064b1461096a57600080fd5b8063c488375a116100de578063c488375a14610853578063c5e480db14610873578063c94b511114610919578063ca661c041461092c57600080fd5b8063b7f06ebe146107f9578063bb45fef21461081c578063c448feb81461084a57600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461078457806399be81c81461079f578063a1788484146107b2578063b1344271146107d257600080fd5b8063886f1195146107405780638da5cb5b14610753578063900413471461076457600080fd5b80636d70f7ae116101ad5780636d70f7ae146106e7578063715018a6146106fa578063778e55f3146107025780637f5480711461072d57600080fd5b806360d7faed14610698578063635bbd10146106ab57806365da1264146106be57600080fd5b806329c77d4f116102ad5780634fc40b611161024b5780635ac86ab7116102255780635ac86ab71461062e5780635c975abb146106515780635cfe8d2c146106595780635f966f141461066c57600080fd5b80634fc40b6114610609578063595c6a6714610613578063597b36da1461061b57600080fd5b80633cdeb5e0116102875780633cdeb5e0146105695780633e28391d1461059857806343377382146105bb5780634665bcda146105e257600080fd5b806329c77d4f146104f7578063334043961461051757806339b70e381461052a57600080fd5b8063136439dd1161031a5780631bbce091116102f45780631bbce0911461049757806320606b70146104aa57806322bf40e4146104d157806328a573ae146104e457600080fd5b8063136439dd146104385780631522bf021461044b578063169283651461045e57600080fd5b80630dd8dd02116103565780630dd8dd02146103dd5780630f589e59146103fd57806310d67a2f14610412578063132d49671461042557600080fd5b80630449ca391461037d57806304a4f979146103a35780630b9f487a146103ca575b600080fd5b61039061038b366004614993565b6109be565b6040519081526020015b60405180910390f35b6103907f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6103906103d83660046149f9565b610a43565b6103f06103eb366004614993565b610b05565b60405161039a9190614a54565b61041061040b366004614af1565b610e6e565b005b610410610420366004614b44565b610fbe565b610410610433366004614b68565b611071565b610410610446366004614ba9565b611128565b610410610459366004614bc2565b611267565b61039061046c366004614b44565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103906104a5366004614b68565b61127b565b6103907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6104106104df366004614c2d565b6112a9565b6104106104f2366004614b68565b6113ed565b610390610505366004614b44565b609b6020526000908152604090205481565b610410610525366004614cd4565b61149d565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161039a565b610551610577366004614b44565b6001600160a01b039081166000908152609960205260409020600101541690565b6105ab6105a6366004614b44565b611584565b604051901515815260200161039a565b6103907f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6103906213c68081565b6104106115a4565b610390610629366004614ff3565b61166b565b6105ab61063c36600461502f565b606654600160ff9092169190911b9081161490565b606654610390565b6104106106673660046150a5565b61169b565b61055161067a366004614b44565b6001600160a01b039081166000908152609960205260409020541690565b6104106106a6366004615205565b611946565b6104106106b9366004614ba9565b611996565b6105516106cc366004614b44565b609a602052600090815260409020546001600160a01b031681565b6105ab6106f5366004614b44565b6119a7565b6104106119c7565b610390610710366004615294565b609860209081526000928352604080842090915290825290205481565b61041061073b366004615375565b6119db565b606554610551906001600160a01b031681565b6033546001600160a01b0316610551565b610777610772366004615405565b611ae0565b60405161039a919061548f565b61055173beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6104106107ad3660046154a2565b611bba565b6103906107c0366004614b44565b609f6020526000908152604090205481565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6105ab610807366004614ba9565b609e6020526000908152604090205460ff1681565b6105ab61082a3660046154d7565b609c60209081526000928352604080842090915290825290205460ff1681565b610390609d5481565b610390610861366004614b44565b60a16020526000908152604090205481565b6108e3610881366004614b44565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff169082015260600161039a565b610390610927366004615503565b611c8c565b61039062034bc081565b610949610944366004614b44565b611d45565b60405161039a929190615584565b6103f0610965366004614b44565b6120fd565b6104106109783660046155a9565b6125c1565b61041061098b366004615601565b6125cd565b61041061099e366004614b44565b61265e565b6103906126d4565b6104106109b9366004614ba9565b612712565b609d54600090815b83811015610a3b57600060a160008787858181106109e6576109e661561d565b90506020020160208101906109fb9190614b44565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905082811115610a2a578092505b50610a3481615649565b90506109c6565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610ac16126d4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b3a5760405162461bcd60e51b8152600401610b3190615664565b60405180910390fd5b6000836001600160401b03811115610b5457610b54614d76565b604051908082528060200260200182016040528015610b7d578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610e6357868682818110610bb857610bb861561d565b9050602002810190610bca919061569b565b610bd89060208101906156bb565b9050878783818110610bec57610bec61561d565b9050602002810190610bfe919061569b565b610c0890806156bb565b905014610c7d5760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b31565b33878783818110610c9057610c9061561d565b9050602002810190610ca2919061569b565b610cb3906060810190604001614b44565b6001600160a01b031614610d2f5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610b31565b610e343383898985818110610d4657610d4661561d565b9050602002810190610d58919061569b565b610d69906060810190604001614b44565b8a8a86818110610d7b57610d7b61561d565b9050602002810190610d8d919061569b565b610d9790806156bb565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610ddd57610ddd61561d565b9050602002810190610def919061569b565b610dfd9060208101906156bb565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061286e92505050565b838281518110610e4657610e4661561d565b602090810291909101015280610e5b81615649565b915050610b9e565b509095945050505050565b336000908152609960205260409020546001600160a01b031615610f085760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b31565b610f123384612e2e565b604080518082019091526060815260006020820152610f3433808360006130ca565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f6d9190615704565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fb0929190615756565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611011573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110359190615785565b6001600160a01b0316336001600160a01b0316146110655760405162461bcd60e51b8152600401610b31906157a2565b61106e8161346f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110d05750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110ec5760405162461bcd60e51b8152600401610b31906157ec565b6110f583611584565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613566565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111949190615849565b6111b05760405162461bcd60e51b8152600401610b3190615866565b606654818116146112295760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b61126f6135e1565b6111218484848461363b565b6001600160a01b0383166000908152609b60205260408120546112a085828686611c8c565b95945050505050565b600054610100900460ff16158080156112c95750600054600160ff909116105b806112e35750303b1580156112e3575060005460ff166001145b6113465760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b31565b6000805460ff191660011790558015611369576000805461ff0019166101001790555b6113738888613859565b61137b61393f565b609755611387896139d6565b61139086613a28565b61139c8585858561363b565b80156113e2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061144c5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6114685760405162461bcd60e51b8152600401610b31906157ec565b61147183611584565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613b22565b606654600290600490811614156114c65760405162461bcd60e51b8152600401610b3190615664565b6114ce613b9d565b60005b88811015611579576115698a8a838181106114ee576114ee61561d565b905060200281019061150091906158ae565b8989848181106115125761151261561d565b905060200281019061152491906156bb565b8989868181106115365761153661561d565b9050602002013588888781811061154f5761154f61561d565b905060200201602081019061156491906158c4565b613bf7565b61157281615649565b90506114d1565b506113e2600160c955565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190615849565b61162c5760405162461bcd60e51b8152600401610b3190615866565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161167e9190615955565b604051602081830303815290604052805190602001209050919050565b60005b81518110156119425760008282815181106116bb576116bb61561d565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016117149190615968565b60408051808303816000875af1158015611732573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117569190615a14565b915091508115611934576040808401516001600160a01b0381166000908152609f6020529182208054919282919061178d83615649565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff1681526020018760000151815260200187602001518152509050600061180d8261166b565b6000818152609e602052604090205490915060ff16156118a35760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b31565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9906118ee9083908590615a42565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061169e565b5050565b6066546002906004908116141561196f5760405162461bcd60e51b8152600401610b3190615664565b611977613b9d565b6119848686868686613bf7565b61198e600160c955565b505050505050565b61199e6135e1565b61106e81613a28565b6001600160a01b0390811660009081526099602052604090205416151590565b6119cf6135e1565b6119d960006139d6565b565b4283602001511015611a5f5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b31565b6000609b6000876001600160a01b03166001600160a01b031681526020019081526020016000205490506000611a9b8783888860200151611c8c565b6001600160a01b0388166000908152609b602052604090206001840190558551909150611acb90889083906143e1565b611ad7878786866130ca565b50505050505050565b6060600082516001600160401b03811115611afd57611afd614d76565b604051908082528060200260200182016040528015611b26578160200160208202803683370190505b50905060005b8351811015610a3b576001600160a01b03851660009081526098602052604081208551909190869084908110611b6457611b6461561d565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611b9f57611b9f61561d565b6020908102919091010152611bb381615649565b9050611b2c565b611bc3336119a7565b611c455760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b31565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611c80929190615756565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611d026126d4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd99190615a5b565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611e49573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e719190810190615acf565b9150915060008313611e8857909590945092505050565b606080835160001415611f42576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611efd57611efd61561d565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611f3157611f3161561d565b6020026020010181815250506120f0565b8351611f4f906001615b89565b6001600160401b03811115611f6657611f66614d76565b604051908082528060200260200182016040528015611f8f578160200160208202803683370190505b50915081516001600160401b03811115611fab57611fab614d76565b604051908082528060200260200182016040528015611fd4578160200160208202803683370190505b50905060005b845181101561206e57848181518110611ff557611ff561561d565b602002602001015183828151811061200f5761200f61561d565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106120415761204161561d565b602002602001015182828151811061205b5761205b61561d565b6020908102919091010152600101611fda565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600184516120939190615ba1565b815181106120a3576120a361561d565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600184516120d39190615ba1565b815181106120e3576120e361561d565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156121295760405162461bcd60e51b8152600401610b3190615664565b61213283611584565b6121b25760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b31565b6121bb836119a7565b1561222e5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b31565b6001600160a01b0383166122aa5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b31565b6001600160a01b038084166000818152609a6020526040902054909116903314806122dd5750336001600160a01b038216145b8061230457506001600160a01b038181166000908152609960205260409020600101541633145b6123765760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b31565b60008061238286611d45565b9092509050336001600160a01b038716146123d857826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161245a5760408051600081526020810190915294506125b8565b81516001600160401b0381111561247357612473614d76565b60405190808252806020026020018201604052801561249c578160200160208202803683370190505b50945060005b82518110156125b6576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106125025761250261561d565b60200260200101518260008151811061251d5761251d61561d565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061254f5761254f61561d565b60200260200101518160008151811061256a5761256a61561d565b60200260200101818152505061258389878b858561286e565b8884815181106125955761259561561d565b602002602001018181525050505080806125ae90615649565b9150506124a2565b505b50505050919050565b611123338484846130ca565b6125d6336119a7565b6126545760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b31565b61106e3382612e2e565b6126666135e1565b6001600160a01b0381166126cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b31565b61106e816139d6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612705575060975490565b61270d61393f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612765573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127899190615785565b6001600160a01b0316336001600160a01b0316146127b95760405162461bcd60e51b8152600401610b31906157a2565b6066541981196066541916146128375760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161125c565b60006001600160a01b0386166129055760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b31565b825161298f5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b31565b60005b8351811015612d3c576001600160a01b038616156129e8576129e886888684815181106129c1576129c161561d565b60200260200101518685815181106129db576129db61561d565b6020026020010151613566565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612a1857612a1861561d565b60200260200101516001600160a01b03161415612ae1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a7157612a7161561d565b60200260200101516040518363ffffffff1660e01b8152600401612aaa9291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ac457600080fd5b505af1158015612ad8573d6000803e3d6000fd5b50505050612d34565b846001600160a01b0316876001600160a01b03161480612bb357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b3d57612b3d61561d565b60200260200101516040518263ffffffff1660e01b8152600401612b7091906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb19190615849565b155b612c7f5760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610b31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612cc157612cc161561d565b6020026020010151868581518110612cdb57612cdb61561d565b60200260200101516040518463ffffffff1660e01b8152600401612d0193929190615bb8565b600060405180830381600087803b158015612d1b57600080fd5b505af1158015612d2f573d6000803e3d6000fd5b505050505b600101612992565b506001600160a01b0386166000908152609f60205260408120805491829190612d6483615649565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612dcc8261166b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612e1a9083908590615a42565b60405180910390a198975050505050505050565b6000612e3d6020830183614b44565b6001600160a01b03161415612ed75760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b31565b6213c680612eeb6060830160408401615bdc565b63ffffffff161115612fa05760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b31565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612fdc9060608401908401615bdc565b63ffffffff1610156130725760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b31565b6001600160a01b038216600090815260996020526040902081906130968282615c19565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611c80908490615704565b606654600090600190811614156130f35760405162461bcd60e51b8152600401610b3190615664565b6130fc85611584565b156131795760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b31565b613182846119a7565b6132025760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b31565b6001600160a01b038085166000908152609960205260409020600101541680158015906132385750336001600160a01b03821614155b801561324d5750336001600160a01b03861614155b156133ba5742846020015110156132cc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156133665760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516133a7908890889085908890610a43565b90506133b8828287600001516143e1565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061341988611d45565b9150915060005b82518110156113e257613467888a8584815181106134405761344061561d565b602002602001015185858151811061345a5761345a61561d565b6020026020010151613b22565b600101613420565b6001600160a01b0381166134fd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b31565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061359d908490615ba1565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fb093929190615bb8565b6033546001600160a01b031633146119d95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b31565b8281146136c35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610b31565b8260005b8181101561198e5760008686838181106136e3576136e361561d565b90506020020160208101906136f89190614b44565b6001600160a01b038116600090815260a160205260408120549192508686858181106137265761372661561d565b90506020020135905062034bc08111156137ea5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610b31565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a15050508061385290615649565b90506136c7565b6065546001600160a01b031615801561387a57506001600160a01b03821615155b6138fc5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26119428261346f565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc0811115613ae15760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610b31565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613b59908490615b89565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fb093929190615bb8565b600260c9541415613bf05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b31565b600260c955565b6000613c0561062987615c7c565b6000818152609e602052604090205490915060ff16613c865760405162461bcd60e51b81526020600482015260436024820152600080516020615db483398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610b31565b609d544390613c9b60a0890160808a01615bdc565b63ffffffff16613cab9190615b89565b1115613d335760405162461bcd60e51b815260206004820152605f6024820152600080516020615db483398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610b31565b613d436060870160408801614b44565b6001600160a01b0316336001600160a01b031614613dd05760405162461bcd60e51b81526020600482015260506024820152600080516020615db483398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610b31565b8115613e5257613de360a08701876156bb565b85149050613e525760405162461bcd60e51b81526020600482015260426024820152600080516020615db483398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610b31565b6000818152609e60205260409020805460ff191690558115613fb75760005b613e7e60a08801886156bb565b9050811015613fb1574360a16000613e9960a08b018b6156bb565b85818110613ea957613ea961561d565b9050602002016020810190613ebe9190614b44565b6001600160a01b03168152602081019190915260400160002054613ee860a08a0160808b01615bdc565b63ffffffff16613ef89190615b89565b1115613f165760405162461bcd60e51b8152600401610b3190615c8e565b613fa9613f266020890189614b44565b33613f3460a08b018b6156bb565b85818110613f4457613f4461561d565b9050602002016020810190613f599190614b44565b613f6660c08c018c6156bb565b86818110613f7657613f7661561d565b905060200201358a8a87818110613f8f57613f8f61561d565b9050602002016020810190613fa49190614b44565b61459b565b600101613e71565b506143a6565b336000908152609a60205260408120546001600160a01b0316905b613fdf60a08901896156bb565b90508110156143a3574360a16000613ffa60a08c018c6156bb565b8581811061400a5761400a61561d565b905060200201602081019061401f9190614b44565b6001600160a01b0316815260208101919091526040016000205461404960a08b0160808c01615bdc565b63ffffffff166140599190615b89565b11156140775760405162461bcd60e51b8152600401610b3190615c8e565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac061409960a08a018a6156bb565b838181106140a9576140a961561d565b90506020020160208101906140be9190614b44565b6001600160a01b0316141561420e5760006140dc60208a018a614b44565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c8361411d60c08e018e6156bb565b8781811061412d5761412d61561d565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015614181573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141a59190615a5b565b6001600160a01b038084166000908152609a60205260409020549192501680156142065761420681846141db60a08f018f6156bb565b888181106141eb576141eb61561d565b90506020020160208101906142009190614b44565b85613b22565b50505061439b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea1338989858181106142505761425061561d565b90506020020160208101906142659190614b44565b61427260a08d018d6156bb565b868181106142825761428261561d565b90506020020160208101906142979190614b44565b6142a460c08e018e6156bb565b878181106142b4576142b461561d565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561431457600080fd5b505af1158015614328573d6000803e3d6000fd5b505050506001600160a01b0382161561439b5761439b823361434d60a08c018c6156bb565b8581811061435d5761435d61561d565b90506020020160208101906143729190614b44565b61437f60c08d018d6156bb565b8681811061438f5761438f61561d565b90506020020135613b22565b600101613fd2565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156144fb57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144219086908690600401615d16565b602060405180830381865afa15801561443e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144629190615d73565b6001600160e01b031916146111235760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b31565b826001600160a01b031661450f83836146db565b6001600160a01b0316146111235760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b31565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156146465760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061460f90889088908790600401615bb8565b600060405180830381600087803b15801561462957600080fd5b505af115801561463d573d6000803e3d6000fd5b505050506146d4565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b1580156146c057600080fd5b505af11580156113e2573d6000803e3d6000fd5b5050505050565b60008060006146ea85856146f7565b91509150610a3b8161473d565b60008082516041141561472e5760208301516040840151606085015160001a6147228782858561488b565b94509450505050614736565b506000905060025b9250929050565b600081600481111561475157614751615d9d565b141561475a5750565b600181600481111561476e5761476e615d9d565b14156147bc5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b31565b60028160048111156147d0576147d0615d9d565b141561481e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b31565b600381600481111561483257614832615d9d565b141561106e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b31565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156148c25750600090506003614946565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614916573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661493f57600060019250925050614946565b9150600090505b94509492505050565b60008083601f84011261496157600080fd5b5081356001600160401b0381111561497857600080fd5b6020830191508360208260051b850101111561473657600080fd5b600080602083850312156149a657600080fd5b82356001600160401b038111156149bc57600080fd5b6149c88582860161494f565b90969095509350505050565b6001600160a01b038116811461106e57600080fd5b80356149f4816149d4565b919050565b600080600080600060a08688031215614a1157600080fd5b8535614a1c816149d4565b94506020860135614a2c816149d4565b93506040860135614a3c816149d4565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b81811015614a8c57835183529284019291840191600101614a70565b50909695505050505050565b600060608284031215614aaa57600080fd5b50919050565b60008083601f840112614ac257600080fd5b5081356001600160401b03811115614ad957600080fd5b60208301915083602082850101111561473657600080fd5b600080600060808486031215614b0657600080fd5b614b108585614a98565b925060608401356001600160401b03811115614b2b57600080fd5b614b3786828701614ab0565b9497909650939450505050565b600060208284031215614b5657600080fd5b8135614b61816149d4565b9392505050565b600080600060608486031215614b7d57600080fd5b8335614b88816149d4565b92506020840135614b98816149d4565b929592945050506040919091013590565b600060208284031215614bbb57600080fd5b5035919050565b60008060008060408587031215614bd857600080fd5b84356001600160401b0380821115614bef57600080fd5b614bfb8883890161494f565b90965094506020870135915080821115614c1457600080fd5b50614c218782880161494f565b95989497509550505050565b60008060008060008060008060c0898b031215614c4957600080fd5b8835614c54816149d4565b97506020890135614c64816149d4565b9650604089013595506060890135945060808901356001600160401b0380821115614c8e57600080fd5b614c9a8c838d0161494f565b909650945060a08b0135915080821115614cb357600080fd5b50614cc08b828c0161494f565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614cf057600080fd5b88356001600160401b0380821115614d0757600080fd5b614d138c838d0161494f565b909a50985060208b0135915080821115614d2c57600080fd5b614d388c838d0161494f565b909850965060408b0135915080821115614d5157600080fd5b614d5d8c838d0161494f565b909650945060608b0135915080821115614cb357600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614dae57614dae614d76565b60405290565b604080519081016001600160401b0381118282101715614dae57614dae614d76565b60405160c081016001600160401b0381118282101715614dae57614dae614d76565b604051601f8201601f191681016001600160401b0381118282101715614e2057614e20614d76565b604052919050565b63ffffffff8116811461106e57600080fd5b80356149f481614e28565b60006001600160401b03821115614e5e57614e5e614d76565b5060051b60200190565b600082601f830112614e7957600080fd5b81356020614e8e614e8983614e45565b614df8565b82815260059290921b84018101918181019086841115614ead57600080fd5b8286015b84811015614ed1578035614ec4816149d4565b8352918301918301614eb1565b509695505050505050565b600082601f830112614eed57600080fd5b81356020614efd614e8983614e45565b82815260059290921b84018101918181019086841115614f1c57600080fd5b8286015b84811015614ed15780358352918301918301614f20565b600060e08284031215614f4957600080fd5b614f51614d8c565b9050614f5c826149e9565b8152614f6a602083016149e9565b6020820152614f7b604083016149e9565b604082015260608201356060820152614f9660808301614e3a565b608082015260a08201356001600160401b0380821115614fb557600080fd5b614fc185838601614e68565b60a084015260c0840135915080821115614fda57600080fd5b50614fe784828501614edc565b60c08301525092915050565b60006020828403121561500557600080fd5b81356001600160401b0381111561501b57600080fd5b61502784828501614f37565b949350505050565b60006020828403121561504157600080fd5b813560ff81168114614b6157600080fd5b60006040828403121561506457600080fd5b61506c614db4565b90508135615079816149d4565b815260208201356bffffffffffffffffffffffff8116811461509a57600080fd5b602082015292915050565b600060208083850312156150b857600080fd5b82356001600160401b03808211156150cf57600080fd5b818501915085601f8301126150e357600080fd5b81356150f1614e8982614e45565b81815260059190911b8301840190848101908883111561511057600080fd5b8585015b838110156151ea5780358581111561512c5760008081fd5b860160e0818c03601f19018113156151445760008081fd5b61514c614dd6565b898301358881111561515e5760008081fd5b61516c8e8c83870101614e68565b825250604080840135898111156151835760008081fd5b6151918f8d83880101614edc565b8c8401525060606151a38186016149e9565b82840152608091506151b78f838701615052565b908301526151c760c08501614e3a565b908201526151d68383016149e9565b60a082015285525050918601918601615114565b5098975050505050505050565b801515811461106e57600080fd5b60008060008060006080868803121561521d57600080fd5b85356001600160401b038082111561523457600080fd5b9087019060e0828a03121561524857600080fd5b9095506020870135908082111561525e57600080fd5b5061526b8882890161494f565b909550935050604086013591506060860135615286816151f7565b809150509295509295909350565b600080604083850312156152a757600080fd5b82356152b2816149d4565b915060208301356152c2816149d4565b809150509250929050565b6000604082840312156152df57600080fd5b6152e7614db4565b905081356001600160401b038082111561530057600080fd5b818401915084601f83011261531457600080fd5b813560208282111561532857615328614d76565b61533a601f8301601f19168201614df8565b9250818352868183860101111561535057600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561538d57600080fd5b8535615398816149d4565b945060208601356153a8816149d4565b935060408601356001600160401b03808211156153c457600080fd5b6153d089838a016152cd565b945060608801359150808211156153e657600080fd5b506153f3888289016152cd565b95989497509295608001359392505050565b6000806040838503121561541857600080fd5b8235615423816149d4565b915060208301356001600160401b0381111561543e57600080fd5b61544a85828601614e68565b9150509250929050565b600081518084526020808501945080840160005b8381101561548457815187529582019590820190600101615468565b509495945050505050565b602081526000614b616020830184615454565b600080602083850312156154b557600080fd5b82356001600160401b038111156154cb57600080fd5b6149c885828601614ab0565b600080604083850312156154ea57600080fd5b82356154f5816149d4565b946020939093013593505050565b6000806000806080858703121561551957600080fd5b8435615524816149d4565b935060208501359250604085013561553b816149d4565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154845781516001600160a01b03168752958201959082019060010161555f565b604081526000615597604083018561554b565b82810360208401526112a08185615454565b6000806000606084860312156155be57600080fd5b83356155c9816149d4565b925060208401356001600160401b038111156155e457600080fd5b6155f0868287016152cd565b925050604084013590509250925092565b60006060828403121561561357600080fd5b614b618383614a98565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561565d5761565d615633565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126156b157600080fd5b9190910192915050565b6000808335601e198436030181126156d257600080fd5b8301803591506001600160401b038211156156ec57600080fd5b6020019150600581901b360382131561473657600080fd5b606081018235615713816149d4565b6001600160a01b03908116835260208401359061572f826149d4565b166020830152604083013561574381614e28565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561579757600080fd5b8151614b61816149d4565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561585b57600080fd5b8151614b61816151f7565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126156b157600080fd5b6000602082840312156158d657600080fd5b8135614b61816151f7565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261593c60e085018261554b565b905060c083015184820360c08601526112a08282615454565b602081526000614b6160208301846158e1565b602081526000825160e0602084015261598561010084018261554b565b90506020840151601f198483030160408501526159a28282615454565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a08501525060808401516159fa60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152610a3b565b60008060408385031215615a2757600080fd5b8251615a32816151f7565b6020939093015192949293505050565b82815260406020820152600061502760408301846158e1565b600060208284031215615a6d57600080fd5b5051919050565b600082601f830112615a8557600080fd5b81516020615a95614e8983614e45565b82815260059290921b84018101918181019086841115615ab457600080fd5b8286015b84811015614ed15780518352918301918301615ab8565b60008060408385031215615ae257600080fd5b82516001600160401b0380821115615af957600080fd5b818501915085601f830112615b0d57600080fd5b81516020615b1d614e8983614e45565b82815260059290921b84018101918181019089841115615b3c57600080fd5b948201945b83861015615b63578551615b54816149d4565b82529482019490820190615b41565b91880151919650909350505080821115615b7c57600080fd5b5061544a85828601615a74565b60008219821115615b9c57615b9c615633565b500190565b600082821015615bb357615bb3615633565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615bee57600080fd5b8135614b6181614e28565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615c24816149d4565b615c2e8183615bf9565b50600181016020830135615c41816149d4565b615c4b8183615bf9565b506040830135615c5a81614e28565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615c883683614f37565b92915050565b6020808252606e90820152600080516020615db483398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b81811015615d4a57858101830151858201606001528201615d2e565b81811115615d5c576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615d8557600080fd5b81516001600160e01b031981168114614b6157600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a2646970667358221220c2622cc2aec7a2274b1484b1514e887829bb5e2b03621d2d099f63f1bcc6662f64736f6c634300080c0033", + Bin: "0x6101006040523480156200001257600080fd5b50604051620060383803806200603883398101604081905262000035916200013f565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000193565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000124576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013c57600080fd5b50565b6000806000606084860312156200015557600080fd5b8351620001628162000126565b6020850151909350620001758162000126565b6040850151909250620001888162000126565b809150509250925092565b60805160a05160c05160e051615e096200022f60003960006126d80152600081816105e7015281816110ae0152818161142a01528181611d6c01528181612a31015281816140ea01526145d6015260006107d701526000818161052f0152818161107c015281816113f8015281816116ca01528181611e0001528181612afe01528181612c8101528181614210015261467c0152615e096000f3fe608060405234801561001057600080fd5b50600436106103785760003560e01c806360d7faed116101d3578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b01461097d578063f2fde38b14610990578063f698da25146109a3578063fabc1cbc146109ab57600080fd5b8063cf80873e14610936578063da8be86414610957578063eea9064b1461096a57600080fd5b8063c488375a116100de578063c488375a14610853578063c5e480db14610873578063c94b511114610919578063ca661c041461092c57600080fd5b8063b7f06ebe146107f9578063bb45fef21461081c578063c448feb81461084a57600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461078457806399be81c81461079f578063a1788484146107b2578063b1344271146107d257600080fd5b8063886f1195146107405780638da5cb5b14610753578063900413471461076457600080fd5b80636d70f7ae116101ad5780636d70f7ae146106e7578063715018a6146106fa578063778e55f3146107025780637f5480711461072d57600080fd5b806360d7faed14610698578063635bbd10146106ab57806365da1264146106be57600080fd5b806329c77d4f116102ad5780634fc40b611161024b5780635ac86ab7116102255780635ac86ab71461062e5780635c975abb146106515780635cfe8d2c146106595780635f966f141461066c57600080fd5b80634fc40b6114610609578063595c6a6714610613578063597b36da1461061b57600080fd5b80633cdeb5e0116102875780633cdeb5e0146105695780633e28391d1461059857806343377382146105bb5780634665bcda146105e257600080fd5b806329c77d4f146104f7578063334043961461051757806339b70e381461052a57600080fd5b8063136439dd1161031a5780631bbce091116102f45780631bbce0911461049757806320606b70146104aa57806322bf40e4146104d157806328a573ae146104e457600080fd5b8063136439dd146104385780631522bf021461044b578063169283651461045e57600080fd5b80630dd8dd02116103565780630dd8dd02146103dd5780630f589e59146103fd57806310d67a2f14610412578063132d49671461042557600080fd5b80630449ca391461037d57806304a4f979146103a35780630b9f487a146103ca575b600080fd5b61039061038b366004614993565b6109be565b6040519081526020015b60405180910390f35b6103907f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6103906103d83660046149f9565b610a43565b6103f06103eb366004614993565b610b05565b60405161039a9190614a54565b61041061040b366004614af1565b610e6e565b005b610410610420366004614b44565b610fbe565b610410610433366004614b68565b611071565b610410610446366004614ba9565b611128565b610410610459366004614bc2565b611267565b61039061046c366004614b44565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103906104a5366004614b68565b61127b565b6103907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6104106104df366004614c2d565b6112a9565b6104106104f2366004614b68565b6113ed565b610390610505366004614b44565b609b6020526000908152604090205481565b610410610525366004614cd4565b61149d565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161039a565b610551610577366004614b44565b6001600160a01b039081166000908152609960205260409020600101541690565b6105ab6105a6366004614b44565b611584565b604051901515815260200161039a565b6103907f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6103906213c68081565b6104106115a4565b610390610629366004614ff3565b61166b565b6105ab61063c36600461502f565b606654600160ff9092169190911b9081161490565b606654610390565b6104106106673660046150a5565b61169b565b61055161067a366004614b44565b6001600160a01b039081166000908152609960205260409020541690565b6104106106a6366004615205565b611946565b6104106106b9366004614ba9565b611996565b6105516106cc366004614b44565b609a602052600090815260409020546001600160a01b031681565b6105ab6106f5366004614b44565b6119a7565b6104106119c7565b610390610710366004615294565b609860209081526000928352604080842090915290825290205481565b61041061073b366004615375565b6119db565b606554610551906001600160a01b031681565b6033546001600160a01b0316610551565b610777610772366004615405565b611ae0565b60405161039a919061548f565b61055173beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6104106107ad3660046154a2565b611bba565b6103906107c0366004614b44565b609f6020526000908152604090205481565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6105ab610807366004614ba9565b609e6020526000908152604090205460ff1681565b6105ab61082a3660046154d7565b609c60209081526000928352604080842090915290825290205460ff1681565b610390609d5481565b610390610861366004614b44565b60a16020526000908152604090205481565b6108e3610881366004614b44565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff169082015260600161039a565b610390610927366004615503565b611c8c565b61039062034bc081565b610949610944366004614b44565b611d45565b60405161039a929190615584565b6103f0610965366004614b44565b6120fd565b6104106109783660046155a9565b6125c1565b61041061098b366004615601565b6125cd565b61041061099e366004614b44565b61265e565b6103906126d4565b6104106109b9366004614ba9565b612712565b609d54600090815b83811015610a3b57600060a160008787858181106109e6576109e661561d565b90506020020160208101906109fb9190614b44565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905082811115610a2a578092505b50610a3481615649565b90506109c6565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610ac16126d4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b3a5760405162461bcd60e51b8152600401610b3190615664565b60405180910390fd5b6000836001600160401b03811115610b5457610b54614d76565b604051908082528060200260200182016040528015610b7d578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610e6357868682818110610bb857610bb861561d565b9050602002810190610bca919061569b565b610bd89060208101906156bb565b9050878783818110610bec57610bec61561d565b9050602002810190610bfe919061569b565b610c0890806156bb565b905014610c7d5760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b31565b33878783818110610c9057610c9061561d565b9050602002810190610ca2919061569b565b610cb3906060810190604001614b44565b6001600160a01b031614610d2f5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610b31565b610e343383898985818110610d4657610d4661561d565b9050602002810190610d58919061569b565b610d69906060810190604001614b44565b8a8a86818110610d7b57610d7b61561d565b9050602002810190610d8d919061569b565b610d9790806156bb565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610ddd57610ddd61561d565b9050602002810190610def919061569b565b610dfd9060208101906156bb565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061286e92505050565b838281518110610e4657610e4661561d565b602090810291909101015280610e5b81615649565b915050610b9e565b509095945050505050565b336000908152609960205260409020546001600160a01b031615610f085760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b31565b610f123384612e2e565b604080518082019091526060815260006020820152610f3433808360006130ca565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f6d9190615704565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fb0929190615756565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611011573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110359190615785565b6001600160a01b0316336001600160a01b0316146110655760405162461bcd60e51b8152600401610b31906157a2565b61106e8161346f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110d05750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110ec5760405162461bcd60e51b8152600401610b31906157ec565b6110f583611584565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613566565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111949190615849565b6111b05760405162461bcd60e51b8152600401610b3190615866565b606654818116146112295760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b61126f6135e1565b6111218484848461363b565b6001600160a01b0383166000908152609b60205260408120546112a085828686611c8c565b95945050505050565b600054610100900460ff16158080156112c95750600054600160ff909116105b806112e35750303b1580156112e3575060005460ff166001145b6113465760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b31565b6000805460ff191660011790558015611369576000805461ff0019166101001790555b6113738888613859565b61137b61393f565b609755611387896139d6565b61139086613a28565b61139c8585858561363b565b80156113e2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061144c5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6114685760405162461bcd60e51b8152600401610b31906157ec565b61147183611584565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613b22565b606654600290600490811614156114c65760405162461bcd60e51b8152600401610b3190615664565b6114ce613b9d565b60005b88811015611579576115698a8a838181106114ee576114ee61561d565b905060200281019061150091906158ae565b8989848181106115125761151261561d565b905060200281019061152491906156bb565b8989868181106115365761153661561d565b9050602002013588888781811061154f5761154f61561d565b905060200201602081019061156491906158c4565b613bf7565b61157281615649565b90506114d1565b506113e2600160c955565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190615849565b61162c5760405162461bcd60e51b8152600401610b3190615866565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161167e9190615955565b604051602081830303815290604052805190602001209050919050565b60005b81518110156119425760008282815181106116bb576116bb61561d565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016117149190615968565b60408051808303816000875af1158015611732573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117569190615a14565b915091508115611934576040808401516001600160a01b0381166000908152609f6020529182208054919282919061178d83615649565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff1681526020018760000151815260200187602001518152509050600061180d8261166b565b6000818152609e602052604090205490915060ff16156118a35760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b31565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9906118ee9083908590615a42565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061169e565b5050565b6066546002906004908116141561196f5760405162461bcd60e51b8152600401610b3190615664565b611977613b9d565b6119848686868686613bf7565b61198e600160c955565b505050505050565b61199e6135e1565b61106e81613a28565b6001600160a01b0390811660009081526099602052604090205416151590565b6119cf6135e1565b6119d960006139d6565b565b4283602001511015611a5f5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b31565b6000609b6000876001600160a01b03166001600160a01b031681526020019081526020016000205490506000611a9b8783888860200151611c8c565b6001600160a01b0388166000908152609b602052604090206001840190558551909150611acb90889083906143e1565b611ad7878786866130ca565b50505050505050565b6060600082516001600160401b03811115611afd57611afd614d76565b604051908082528060200260200182016040528015611b26578160200160208202803683370190505b50905060005b8351811015610a3b576001600160a01b03851660009081526098602052604081208551909190869084908110611b6457611b6461561d565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611b9f57611b9f61561d565b6020908102919091010152611bb381615649565b9050611b2c565b611bc3336119a7565b611c455760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b31565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611c80929190615756565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611d026126d4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd99190615a5b565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611e49573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e719190810190615acf565b9150915060008313611e8857909590945092505050565b606080835160001415611f42576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611efd57611efd61561d565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611f3157611f3161561d565b6020026020010181815250506120f0565b8351611f4f906001615b89565b6001600160401b03811115611f6657611f66614d76565b604051908082528060200260200182016040528015611f8f578160200160208202803683370190505b50915081516001600160401b03811115611fab57611fab614d76565b604051908082528060200260200182016040528015611fd4578160200160208202803683370190505b50905060005b845181101561206e57848181518110611ff557611ff561561d565b602002602001015183828151811061200f5761200f61561d565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106120415761204161561d565b602002602001015182828151811061205b5761205b61561d565b6020908102919091010152600101611fda565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600184516120939190615ba1565b815181106120a3576120a361561d565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600184516120d39190615ba1565b815181106120e3576120e361561d565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156121295760405162461bcd60e51b8152600401610b3190615664565b61213283611584565b6121b25760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b31565b6121bb836119a7565b1561222e5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b31565b6001600160a01b0383166122aa5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b31565b6001600160a01b038084166000818152609a6020526040902054909116903314806122dd5750336001600160a01b038216145b8061230457506001600160a01b038181166000908152609960205260409020600101541633145b6123765760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b31565b60008061238286611d45565b9092509050336001600160a01b038716146123d857826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161245a5760408051600081526020810190915294506125b8565b81516001600160401b0381111561247357612473614d76565b60405190808252806020026020018201604052801561249c578160200160208202803683370190505b50945060005b82518110156125b6576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106125025761250261561d565b60200260200101518260008151811061251d5761251d61561d565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061254f5761254f61561d565b60200260200101518160008151811061256a5761256a61561d565b60200260200101818152505061258389878b858561286e565b8884815181106125955761259561561d565b602002602001018181525050505080806125ae90615649565b9150506124a2565b505b50505050919050565b611123338484846130ca565b6125d6336119a7565b6126545760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b31565b61106e3382612e2e565b6126666135e1565b6001600160a01b0381166126cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b31565b61106e816139d6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612705575060975490565b61270d61393f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612765573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127899190615785565b6001600160a01b0316336001600160a01b0316146127b95760405162461bcd60e51b8152600401610b31906157a2565b6066541981196066541916146128375760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161125c565b60006001600160a01b0386166129055760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b31565b825161298f5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b31565b60005b8351811015612d3c576001600160a01b038616156129e8576129e886888684815181106129c1576129c161561d565b60200260200101518685815181106129db576129db61561d565b6020026020010151613566565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612a1857612a1861561d565b60200260200101516001600160a01b03161415612ae1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a7157612a7161561d565b60200260200101516040518363ffffffff1660e01b8152600401612aaa9291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ac457600080fd5b505af1158015612ad8573d6000803e3d6000fd5b50505050612d34565b846001600160a01b0316876001600160a01b03161480612bb357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b3d57612b3d61561d565b60200260200101516040518263ffffffff1660e01b8152600401612b7091906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb19190615849565b155b612c7f5760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610b31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612cc157612cc161561d565b6020026020010151868581518110612cdb57612cdb61561d565b60200260200101516040518463ffffffff1660e01b8152600401612d0193929190615bb8565b600060405180830381600087803b158015612d1b57600080fd5b505af1158015612d2f573d6000803e3d6000fd5b505050505b600101612992565b506001600160a01b0386166000908152609f60205260408120805491829190612d6483615649565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612dcc8261166b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612e1a9083908590615a42565b60405180910390a198975050505050505050565b6000612e3d6020830183614b44565b6001600160a01b03161415612ed75760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b31565b6213c680612eeb6060830160408401615bdc565b63ffffffff161115612fa05760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b31565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612fdc9060608401908401615bdc565b63ffffffff1610156130725760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b31565b6001600160a01b038216600090815260996020526040902081906130968282615c19565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611c80908490615704565b606654600090600190811614156130f35760405162461bcd60e51b8152600401610b3190615664565b6130fc85611584565b156131795760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b31565b613182846119a7565b6132025760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b31565b6001600160a01b038085166000908152609960205260409020600101541680158015906132385750336001600160a01b03821614155b801561324d5750336001600160a01b03861614155b156133ba5742846020015110156132cc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156133665760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516133a7908890889085908890610a43565b90506133b8828287600001516143e1565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061341988611d45565b9150915060005b82518110156113e257613467888a8584815181106134405761344061561d565b602002602001015185858151811061345a5761345a61561d565b6020026020010151613b22565b600101613420565b6001600160a01b0381166134fd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b31565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061359d908490615ba1565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fb093929190615bb8565b6033546001600160a01b031633146119d95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b31565b8281146136c35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610b31565b8260005b8181101561198e5760008686838181106136e3576136e361561d565b90506020020160208101906136f89190614b44565b6001600160a01b038116600090815260a160205260408120549192508686858181106137265761372661561d565b90506020020135905062034bc08111156137ea5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610b31565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a15050508061385290615649565b90506136c7565b6065546001600160a01b031615801561387a57506001600160a01b03821615155b6138fc5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26119428261346f565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc0811115613ae15760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610b31565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613b59908490615b89565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fb093929190615bb8565b600260c9541415613bf05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b31565b600260c955565b6000613c0561062987615c7c565b6000818152609e602052604090205490915060ff16613c865760405162461bcd60e51b81526020600482015260436024820152600080516020615db483398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610b31565b609d544390613c9b60a0890160808a01615bdc565b63ffffffff16613cab9190615b89565b1115613d335760405162461bcd60e51b815260206004820152605f6024820152600080516020615db483398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610b31565b613d436060870160408801614b44565b6001600160a01b0316336001600160a01b031614613dd05760405162461bcd60e51b81526020600482015260506024820152600080516020615db483398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610b31565b8115613e5257613de360a08701876156bb565b85149050613e525760405162461bcd60e51b81526020600482015260426024820152600080516020615db483398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610b31565b6000818152609e60205260409020805460ff191690558115613fb75760005b613e7e60a08801886156bb565b9050811015613fb1574360a16000613e9960a08b018b6156bb565b85818110613ea957613ea961561d565b9050602002016020810190613ebe9190614b44565b6001600160a01b03168152602081019190915260400160002054613ee860a08a0160808b01615bdc565b63ffffffff16613ef89190615b89565b1115613f165760405162461bcd60e51b8152600401610b3190615c8e565b613fa9613f266020890189614b44565b33613f3460a08b018b6156bb565b85818110613f4457613f4461561d565b9050602002016020810190613f599190614b44565b613f6660c08c018c6156bb565b86818110613f7657613f7661561d565b905060200201358a8a87818110613f8f57613f8f61561d565b9050602002016020810190613fa49190614b44565b61459b565b600101613e71565b506143a6565b336000908152609a60205260408120546001600160a01b0316905b613fdf60a08901896156bb565b90508110156143a3574360a16000613ffa60a08c018c6156bb565b8581811061400a5761400a61561d565b905060200201602081019061401f9190614b44565b6001600160a01b0316815260208101919091526040016000205461404960a08b0160808c01615bdc565b63ffffffff166140599190615b89565b11156140775760405162461bcd60e51b8152600401610b3190615c8e565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac061409960a08a018a6156bb565b838181106140a9576140a961561d565b90506020020160208101906140be9190614b44565b6001600160a01b0316141561420e5760006140dc60208a018a614b44565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c8361411d60c08e018e6156bb565b8781811061412d5761412d61561d565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015614181573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141a59190615a5b565b6001600160a01b038084166000908152609a60205260409020549192501680156142065761420681846141db60a08f018f6156bb565b888181106141eb576141eb61561d565b90506020020160208101906142009190614b44565b85613b22565b50505061439b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea1338989858181106142505761425061561d565b90506020020160208101906142659190614b44565b61427260a08d018d6156bb565b868181106142825761428261561d565b90506020020160208101906142979190614b44565b6142a460c08e018e6156bb565b878181106142b4576142b461561d565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561431457600080fd5b505af1158015614328573d6000803e3d6000fd5b505050506001600160a01b0382161561439b5761439b823361434d60a08c018c6156bb565b8581811061435d5761435d61561d565b90506020020160208101906143729190614b44565b61437f60c08d018d6156bb565b8681811061438f5761438f61561d565b90506020020135613b22565b600101613fd2565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156144fb57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144219086908690600401615d16565b602060405180830381865afa15801561443e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144629190615d73565b6001600160e01b031916146111235760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b31565b826001600160a01b031661450f83836146db565b6001600160a01b0316146111235760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b31565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156146465760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061460f90889088908790600401615bb8565b600060405180830381600087803b15801561462957600080fd5b505af115801561463d573d6000803e3d6000fd5b505050506146d4565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b1580156146c057600080fd5b505af11580156113e2573d6000803e3d6000fd5b5050505050565b60008060006146ea85856146f7565b91509150610a3b8161473d565b60008082516041141561472e5760208301516040840151606085015160001a6147228782858561488b565b94509450505050614736565b506000905060025b9250929050565b600081600481111561475157614751615d9d565b141561475a5750565b600181600481111561476e5761476e615d9d565b14156147bc5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b31565b60028160048111156147d0576147d0615d9d565b141561481e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b31565b600381600481111561483257614832615d9d565b141561106e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b31565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156148c25750600090506003614946565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614916573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661493f57600060019250925050614946565b9150600090505b94509492505050565b60008083601f84011261496157600080fd5b5081356001600160401b0381111561497857600080fd5b6020830191508360208260051b850101111561473657600080fd5b600080602083850312156149a657600080fd5b82356001600160401b038111156149bc57600080fd5b6149c88582860161494f565b90969095509350505050565b6001600160a01b038116811461106e57600080fd5b80356149f4816149d4565b919050565b600080600080600060a08688031215614a1157600080fd5b8535614a1c816149d4565b94506020860135614a2c816149d4565b93506040860135614a3c816149d4565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b81811015614a8c57835183529284019291840191600101614a70565b50909695505050505050565b600060608284031215614aaa57600080fd5b50919050565b60008083601f840112614ac257600080fd5b5081356001600160401b03811115614ad957600080fd5b60208301915083602082850101111561473657600080fd5b600080600060808486031215614b0657600080fd5b614b108585614a98565b925060608401356001600160401b03811115614b2b57600080fd5b614b3786828701614ab0565b9497909650939450505050565b600060208284031215614b5657600080fd5b8135614b61816149d4565b9392505050565b600080600060608486031215614b7d57600080fd5b8335614b88816149d4565b92506020840135614b98816149d4565b929592945050506040919091013590565b600060208284031215614bbb57600080fd5b5035919050565b60008060008060408587031215614bd857600080fd5b84356001600160401b0380821115614bef57600080fd5b614bfb8883890161494f565b90965094506020870135915080821115614c1457600080fd5b50614c218782880161494f565b95989497509550505050565b60008060008060008060008060c0898b031215614c4957600080fd5b8835614c54816149d4565b97506020890135614c64816149d4565b9650604089013595506060890135945060808901356001600160401b0380821115614c8e57600080fd5b614c9a8c838d0161494f565b909650945060a08b0135915080821115614cb357600080fd5b50614cc08b828c0161494f565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614cf057600080fd5b88356001600160401b0380821115614d0757600080fd5b614d138c838d0161494f565b909a50985060208b0135915080821115614d2c57600080fd5b614d388c838d0161494f565b909850965060408b0135915080821115614d5157600080fd5b614d5d8c838d0161494f565b909650945060608b0135915080821115614cb357600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614dae57614dae614d76565b60405290565b604080519081016001600160401b0381118282101715614dae57614dae614d76565b60405160c081016001600160401b0381118282101715614dae57614dae614d76565b604051601f8201601f191681016001600160401b0381118282101715614e2057614e20614d76565b604052919050565b63ffffffff8116811461106e57600080fd5b80356149f481614e28565b60006001600160401b03821115614e5e57614e5e614d76565b5060051b60200190565b600082601f830112614e7957600080fd5b81356020614e8e614e8983614e45565b614df8565b82815260059290921b84018101918181019086841115614ead57600080fd5b8286015b84811015614ed1578035614ec4816149d4565b8352918301918301614eb1565b509695505050505050565b600082601f830112614eed57600080fd5b81356020614efd614e8983614e45565b82815260059290921b84018101918181019086841115614f1c57600080fd5b8286015b84811015614ed15780358352918301918301614f20565b600060e08284031215614f4957600080fd5b614f51614d8c565b9050614f5c826149e9565b8152614f6a602083016149e9565b6020820152614f7b604083016149e9565b604082015260608201356060820152614f9660808301614e3a565b608082015260a08201356001600160401b0380821115614fb557600080fd5b614fc185838601614e68565b60a084015260c0840135915080821115614fda57600080fd5b50614fe784828501614edc565b60c08301525092915050565b60006020828403121561500557600080fd5b81356001600160401b0381111561501b57600080fd5b61502784828501614f37565b949350505050565b60006020828403121561504157600080fd5b813560ff81168114614b6157600080fd5b60006040828403121561506457600080fd5b61506c614db4565b90508135615079816149d4565b815260208201356bffffffffffffffffffffffff8116811461509a57600080fd5b602082015292915050565b600060208083850312156150b857600080fd5b82356001600160401b03808211156150cf57600080fd5b818501915085601f8301126150e357600080fd5b81356150f1614e8982614e45565b81815260059190911b8301840190848101908883111561511057600080fd5b8585015b838110156151ea5780358581111561512c5760008081fd5b860160e0818c03601f19018113156151445760008081fd5b61514c614dd6565b898301358881111561515e5760008081fd5b61516c8e8c83870101614e68565b825250604080840135898111156151835760008081fd5b6151918f8d83880101614edc565b8c8401525060606151a38186016149e9565b82840152608091506151b78f838701615052565b908301526151c760c08501614e3a565b908201526151d68383016149e9565b60a082015285525050918601918601615114565b5098975050505050505050565b801515811461106e57600080fd5b60008060008060006080868803121561521d57600080fd5b85356001600160401b038082111561523457600080fd5b9087019060e0828a03121561524857600080fd5b9095506020870135908082111561525e57600080fd5b5061526b8882890161494f565b909550935050604086013591506060860135615286816151f7565b809150509295509295909350565b600080604083850312156152a757600080fd5b82356152b2816149d4565b915060208301356152c2816149d4565b809150509250929050565b6000604082840312156152df57600080fd5b6152e7614db4565b905081356001600160401b038082111561530057600080fd5b818401915084601f83011261531457600080fd5b813560208282111561532857615328614d76565b61533a601f8301601f19168201614df8565b9250818352868183860101111561535057600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561538d57600080fd5b8535615398816149d4565b945060208601356153a8816149d4565b935060408601356001600160401b03808211156153c457600080fd5b6153d089838a016152cd565b945060608801359150808211156153e657600080fd5b506153f3888289016152cd565b95989497509295608001359392505050565b6000806040838503121561541857600080fd5b8235615423816149d4565b915060208301356001600160401b0381111561543e57600080fd5b61544a85828601614e68565b9150509250929050565b600081518084526020808501945080840160005b8381101561548457815187529582019590820190600101615468565b509495945050505050565b602081526000614b616020830184615454565b600080602083850312156154b557600080fd5b82356001600160401b038111156154cb57600080fd5b6149c885828601614ab0565b600080604083850312156154ea57600080fd5b82356154f5816149d4565b946020939093013593505050565b6000806000806080858703121561551957600080fd5b8435615524816149d4565b935060208501359250604085013561553b816149d4565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154845781516001600160a01b03168752958201959082019060010161555f565b604081526000615597604083018561554b565b82810360208401526112a08185615454565b6000806000606084860312156155be57600080fd5b83356155c9816149d4565b925060208401356001600160401b038111156155e457600080fd5b6155f0868287016152cd565b925050604084013590509250925092565b60006060828403121561561357600080fd5b614b618383614a98565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561565d5761565d615633565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126156b157600080fd5b9190910192915050565b6000808335601e198436030181126156d257600080fd5b8301803591506001600160401b038211156156ec57600080fd5b6020019150600581901b360382131561473657600080fd5b606081018235615713816149d4565b6001600160a01b03908116835260208401359061572f826149d4565b166020830152604083013561574381614e28565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561579757600080fd5b8151614b61816149d4565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561585b57600080fd5b8151614b61816151f7565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126156b157600080fd5b6000602082840312156158d657600080fd5b8135614b61816151f7565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261593c60e085018261554b565b905060c083015184820360c08601526112a08282615454565b602081526000614b6160208301846158e1565b602081526000825160e0602084015261598561010084018261554b565b90506020840151601f198483030160408501526159a28282615454565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a08501525060808401516159fa60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152610a3b565b60008060408385031215615a2757600080fd5b8251615a32816151f7565b6020939093015192949293505050565b82815260406020820152600061502760408301846158e1565b600060208284031215615a6d57600080fd5b5051919050565b600082601f830112615a8557600080fd5b81516020615a95614e8983614e45565b82815260059290921b84018101918181019086841115615ab457600080fd5b8286015b84811015614ed15780518352918301918301615ab8565b60008060408385031215615ae257600080fd5b82516001600160401b0380821115615af957600080fd5b818501915085601f830112615b0d57600080fd5b81516020615b1d614e8983614e45565b82815260059290921b84018101918181019089841115615b3c57600080fd5b948201945b83861015615b63578551615b54816149d4565b82529482019490820190615b41565b91880151919650909350505080821115615b7c57600080fd5b5061544a85828601615a74565b60008219821115615b9c57615b9c615633565b500190565b600082821015615bb357615bb3615633565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615bee57600080fd5b8135614b6181614e28565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615c24816149d4565b615c2e8183615bf9565b50600181016020830135615c41816149d4565b615c4b8183615bf9565b506040830135615c5a81614e28565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615c883683614f37565b92915050565b6020808252606e90820152600080516020615db483398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b81811015615d4a57858101830151858201606001528201615d2e565b81811115615d5c576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615d8557600080fd5b81516001600160e01b031981168114614b6157600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a26469706673582212204b8bd7a5364470098af783383d7efb94f1add15baf2465f48698a4946066a7be64736f6c634300080c0033", } // DelegationManagerABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/mockerc20.go b/contracts/bindings/mockerc20.go index 3bcfd02b2..ff0d94ab6 100644 --- a/contracts/bindings/mockerc20.go +++ b/contracts/bindings/mockerc20.go @@ -32,7 +32,7 @@ var ( // MockERC20MetaData contains all meta data concerning the MockERC20 contract. var MockERC20MetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"symbol\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x60806040523480156200001157600080fd5b5060405162000c3d38038062000c3d833981016040819052620000349162000126565b8181600362000044838262000221565b50600462000053828262000221565b5050505050620002ed565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b8160405283815260209250866020858801011115620000ec57600080fd5b600091505b83821015620001105785820183015181830184015290820190620000f1565b6000602085830101528094505050505092915050565b600080604083850312156200013a57600080fd5b82516001600160401b03808211156200015257600080fd5b620001608683870162000074565b935060208501519150808211156200017757600080fd5b50620001868582860162000074565b9150509250929050565b600181811c90821680620001a557607f821691505b602082108103620001c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021c576000816000526020600020601f850160051c81016020861015620001f75750805b601f850160051c820191505b81811015620002185782815560010162000203565b5050505b505050565b81516001600160401b038111156200023d576200023d6200005e565b62000255816200024e845462000190565b84620001cc565b602080601f8311600181146200028d5760008415620002745750858301515b600019600386901b1c1916600185901b17855562000218565b600085815260208120601f198616915b82811015620002be578886015182559484019460019091019084016200029d565b5085821015620002dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61094080620002fd6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f191461014157806370a082311461015657806395d89b411461017f578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce9190610789565b60405180910390f35b6100ea6100e53660046107f4565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a36600461081e565b61026c565b604051601281526020016100ce565b6100ea61013c3660046107f4565b610290565b61015461014f3660046107f4565b6102b2565b005b6100fe61016436600461085a565b6001600160a01b031660009081526020819052604090205490565b6100c16102c0565b6100ea6101953660046107f4565b6102cf565b6100ea6101a83660046107f4565b61034f565b6100fe6101bb36600461087c565b61035d565b6060600380546101cf906108af565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb906108af565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b600033610260818585610388565b60019150505b92915050565b60003361027a8582856104ac565b610285858585610526565b506001949350505050565b6000336102608185856102a3838361035d565b6102ad91906108e9565b610388565b6102bc82826106ca565b5050565b6060600480546101cf906108af565b600033816102dd828661035d565b9050838110156103425760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102858286868403610388565b600033610260818585610526565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610339565b6001600160a01b03821661044b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610339565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006104b8848461035d565b9050600019811461052057818110156105135760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610339565b6105208484848403610388565b50505050565b6001600160a01b03831661058a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610339565b6001600160a01b0382166105ec5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610339565b6001600160a01b038316600090815260208190526040902054818110156106645760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610339565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610520565b6001600160a01b0382166107205760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610339565b806002600082825461073291906108e9565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60006020808352835180602085015260005b818110156107b75785810183015185820160400152820161079b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107ef57600080fd5b919050565b6000806040838503121561080757600080fd5b610810836107d8565b946020939093013593505050565b60008060006060848603121561083357600080fd5b61083c846107d8565b925061084a602085016107d8565b9150604084013590509250925092565b60006020828403121561086c57600080fd5b610875826107d8565b9392505050565b6000806040838503121561088f57600080fd5b610898836107d8565b91506108a6602084016107d8565b90509250929050565b600181811c908216806108c357607f821691505b6020821081036108e357634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561026657634e487b7160e01b600052601160045260246000fdfea2646970667358221220680b6fb2491e03c2669077163912046b445851185b4050df9f5a488f7bb3b1ce64736f6c63430008180033", + Bin: "0x60806040523480156200001157600080fd5b5060405162000be238038062000be28339810160408190526200003491620001e1565b8151829082906200004d9060039060208501906200006e565b508051620000639060049060208401906200006e565b505050505062000288565b8280546200007c906200024b565b90600052602060002090601f016020900481019282620000a05760008555620000eb565b82601f10620000bb57805160ff1916838001178555620000eb565b82800160010185558215620000eb579182015b82811115620000eb578251825591602001919060010190620000ce565b50620000f9929150620000fd565b5090565b5b80821115620000f95760008155600101620000fe565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013c57600080fd5b81516001600160401b038082111562000159576200015962000114565b604051601f8301601f19908116603f0116810190828211818310171562000184576200018462000114565b81604052838152602092508683858801011115620001a157600080fd5b600091505b83821015620001c55785820183015181830184015290820190620001a6565b83821115620001d75760008385830101525b9695505050505050565b60008060408385031215620001f557600080fd5b82516001600160401b03808211156200020d57600080fd5b6200021b868387016200012a565b935060208501519150808211156200023257600080fd5b5062000241858286016200012a565b9150509250929050565b600181811c908216806200026057607f821691505b602082108114156200028257634e487b7160e01b600052602260045260246000fd5b50919050565b61094a80620002986000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f191461014157806370a082311461015657806395d89b411461017f578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce9190610787565b60405180910390f35b6100ea6100e53660046107f8565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a366004610822565b61026a565b604051601281526020016100ce565b6100ea61013c3660046107f8565b61028e565b61015461014f3660046107f8565b6102b0565b005b6100fe61016436600461085e565b6001600160a01b031660009081526020819052604090205490565b6100c16102be565b6100ea6101953660046107f8565b6102cd565b6100ea6101a83660046107f8565b61034d565b6100fe6101bb366004610880565b61035b565b6060600380546101cf906108b3565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb906108b3565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b600033610260818585610386565b5060019392505050565b6000336102788582856104aa565b610283858585610524565b506001949350505050565b6000336102608185856102a1838361035b565b6102ab91906108ee565b610386565b6102ba82826106c8565b5050565b6060600480546101cf906108b3565b600033816102db828661035b565b9050838110156103405760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102838286868403610386565b600033610260818585610524565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103e85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610337565b6001600160a01b0382166104495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610337565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006104b6848461035b565b9050600019811461051e57818110156105115760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610337565b61051e8484848403610386565b50505050565b6001600160a01b0383166105885760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610337565b6001600160a01b0382166105ea5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610337565b6001600160a01b038316600090815260208190526040902054818110156106625760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610337565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361051e565b6001600160a01b03821661071e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610337565b806002600082825461073091906108ee565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208083528351808285015260005b818110156107b457858101830151858201604001528201610798565b818111156107c6576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146107f357600080fd5b919050565b6000806040838503121561080b57600080fd5b610814836107dc565b946020939093013593505050565b60008060006060848603121561083757600080fd5b610840846107dc565b925061084e602085016107dc565b9150604084013590509250925092565b60006020828403121561087057600080fd5b610879826107dc565b9392505050565b6000806040838503121561089357600080fd5b61089c836107dc565b91506108aa602084016107dc565b90509250929050565b600181811c908216806108c757607f821691505b602082108114156108e857634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561090f57634e487b7160e01b600052601160045260246000fd5b50019056fea264697066735822122044981028e70eb67e1c27b3e027a1a9e41d4f18029a4e9828eb0e8da7208eef4d64736f6c634300080c0033", } // MockERC20ABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/omniavs.go b/contracts/bindings/omniavs.go index bb13703a9..2d1a82cfa 100644 --- a/contracts/bindings/omniavs.go +++ b/contracts/bindings/omniavs.go @@ -53,7 +53,7 @@ type ISignatureUtilsSignatureWithSaltAndExpiry struct { // OmniAVSMetaData contains all meta data concerning the OmniAVS contract. var OmniAVSMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"delegationManager_\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"avsDirectory_\",\"type\":\"address\",\"internalType\":\"contractIAVSDirectory\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addToAllowlist\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allowlistEnabled\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsDirectory\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"canRegister\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableAllowlist\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ejectOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableAllowlist\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ethStakeInbox\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"feeForSync\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorRestakedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRestakeableStrategies\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"omni_\",\"type\":\"address\",\"internalType\":\"contractIOmniPortal\"},{\"name\":\"omniChainId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"ethStakeInbox_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"minOperatorStake_\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"maxOperatorCount_\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategyParams_\",\"type\":\"tuple[]\",\"internalType\":\"structIOmniAVS.StrategyParam[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"metadataURI_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"allowlistEnabled_\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isInAllowlist\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"maxOperatorCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minOperatorStake\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"omni\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIOmniPortal\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"omniChainId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operators\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIOmniAVS.Operator[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"delegated\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"staked\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperator\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeFromAllowlist\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setEthStakeInbox\",\"inputs\":[{\"name\":\"inbox\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMaxOperatorCount\",\"inputs\":[{\"name\":\"count\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMetadataURI\",\"inputs\":[{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMinOperatorStake\",\"inputs\":[{\"name\":\"stake\",\"type\":\"uint96\",\"internalType\":\"uint96\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOmniChainId\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOmniPortal\",\"inputs\":[{\"name\":\"portal\",\"type\":\"address\",\"internalType\":\"contractIOmniPortal\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStrategyParams\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIOmniAVS.StrategyParam[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setXCallGasLimits\",\"inputs\":[{\"name\":\"base\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"perOperator\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyParams\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIOmniAVS.StrategyParam[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"syncWithOmni\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"xcallBaseGasLimit\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"xcallGasLimitPerOperator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"AllowlistDisabled\",\"inputs\":[],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllowlistEnabled\",\"inputs\":[],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EthStakeInboxSet\",\"inputs\":[{\"name\":\"inbox\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxOperatorCountSet\",\"inputs\":[{\"name\":\"maxOperatorCount\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MinOperatorStakeSet\",\"inputs\":[{\"name\":\"minOperatorStake\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OmniChainIdSet\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OmniPortalSet\",\"inputs\":[{\"name\":\"portal\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAdded\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAllowed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDisallowed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemoved\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyParamsSet\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structIOmniAVS.StrategyParam[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"XCallGasLimitsSet\",\"inputs\":[{\"name\":\"base\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"perValidator\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false}]", - Bin: "0x60c06040523480156200001157600080fd5b50604051620034ba380380620034ba833981016040819052620000349162000133565b6001600160a01b03808316608052811660a0526200005162000059565b505062000172565b600054610100900460ff1615620000c65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000118576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013057600080fd5b50565b600080604083850312156200014757600080fd5b825162000154816200011a565b602084015190925062000167816200011a565b809150509250929050565b60805160a0516132f8620001c26000396000818161043f01528181610bce01528181610e970152818161107b015261224501526000818161088b0152818161191e01526122fe01526132f86000f3fe6080604052600436106102255760003560e01c80638da5cb5b11610123578063d775cb61116100ab578063eedc8a211161006f578063eedc8a21146106ba578063f2fde38b146106da578063f36b8d36146106fa578063f57f33d01461071a578063f8e86ece1461073c57600080fd5b8063d775cb611461060b578063e481af9d14610643578063e5d98f9414610658578063e673df8a14610678578063eb3162351461069a57600080fd5b8063b98912b0116100f2578063b98912b01461056c578063c6a2aac81461058f578063c75e3aed146105a4578063cf8e629a146105d6578063d17efb36146105eb57600080fd5b80638da5cb5b146104ed5780638ef7ad5d1461050b57806394c8e4ff1461052b578063ae30f16d1461054c57600080fd5b806354c74ed3116101b1578063715018a611610175578063715018a614610463578063750521f5146104785780637719d097146104985780637815873d146104b85780638456cb59146104d857600080fd5b806354c74ed3146103b15780635c78b0e2146103d85780635c975abb146103f85780635da93d7e146104105780636b3aa72e1461043057600080fd5b806329d0fdc0116101f857806329d0fdc0146102c0578063320d46d41461030957806333cfb7b71461033757806339acf9f1146103645780633f4ba83a1461039c57600080fd5b80630c4158841461022a578063110ff5f11461024c57806313efbe9214610291578063243d51c714610299575b600080fd5b34801561023657600080fd5b5061024a610245366004612783565b61075c565b005b34801561025857600080fd5b50609b546102749064010000000090046001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b61024a610770565b3480156102a557600080fd5b50609b5461027490600160a01b90046001600160401b031681565b3480156102cc57600080fd5b506102f96102db366004612783565b6001600160a01b03166000908152609a602052604090205460ff1690565b6040519015158152602001610288565b34801561031557600080fd5b50610329610324366004612783565b610866565b6040516102889291906127ed565b34801561034357600080fd5b50610357610352366004612783565b610a8b565b6040516102889190612810565b34801561037057600080fd5b50609e54610384906001600160a01b031681565b6040516001600160a01b039091168152602001610288565b3480156103a857600080fd5b5061024a610abc565b3480156103bd57600080fd5b50609b5461027490600160601b90046001600160401b031681565b3480156103e457600080fd5b5061024a6103f3366004612874565b610ace565b34801561040457600080fd5b5060655460ff166102f9565b34801561041c57600080fd5b5061024a61042b366004612783565b610adf565b34801561043c57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610384565b34801561046f57600080fd5b5061024a610b9d565b34801561048457600080fd5b5061024a610493366004612954565b610baf565b3480156104a457600080fd5b5061024a6104b33660046129e4565b610c38565b3480156104c457600080fd5b50609d54610384906001600160a01b031681565b3480156104e457600080fd5b5061024a610f3a565b3480156104f957600080fd5b506033546001600160a01b0316610384565b34801561051757600080fd5b5061024a610526366004612b36565b610f4a565b34801561053757600080fd5b50609c546102f990600160601b900460ff1681565b34801561055857600080fd5b5061024a610567366004612c26565b611142565b34801561057857600080fd5b50610581611158565b604051908152602001610288565b34801561059b57600080fd5b5061024a61124c565b3480156105b057600080fd5b50609b546105c19063ffffffff1681565b60405163ffffffff9091168152602001610288565b3480156105e257600080fd5b5061024a61125c565b3480156105f757600080fd5b5061024a610606366004612783565b61126c565b34801561061757600080fd5b50609c5461062b906001600160601b031681565b6040516001600160601b039091168152602001610288565b34801561064f57600080fd5b5061035761127d565b34801561066457600080fd5b5061024a610673366004612783565b61128c565b34801561068457600080fd5b5061068d61129d565b6040516102889190612c67565b3480156106a657600080fd5b5061024a6106b5366004612d09565b6112a7565b3480156106c657600080fd5b5061024a6106d5366004612d26565b6112b8565b3480156106e657600080fd5b5061024a6106f5366004612783565b6112ca565b34801561070657600080fd5b5061024a610715366004612d59565b611340565b34801561072657600080fd5b5061072f611351565b6040516102889190612d74565b34801561074857600080fd5b5061024a610757366004612783565b6113cd565b6107646114d8565b61076d81611532565b50565b6107786115d2565b6000610782611618565b609e54609b54609d546040519394506001600160a01b039283169363c21dda4f93349364010000000090046001600160401b03169260049291169063ae102bc960e01b906107d4908990602401612c67565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152875161081190611821565b6040518763ffffffff1660e01b8152600401610831959493929190612dd5565b6000604051808303818588803b15801561084a57600080fd5b505af115801561085e573d6000803e3d6000fd5b505050505050565b6040516336b87bd760e11b81526001600160a01b0382811660048301526000916060917f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190612e24565b61092a57505060408051808201909152600f81526e3737ba1030b71037b832b930ba37b960891b6020820152600092909150565b609c54600160601b900460ff16801561095c57506001600160a01b0383166000908152609a602052604090205460ff16155b1561099257505060408051808201909152601081526f1b9bdd081a5b88185b1b1bdddb1a5cdd60821b6020820152600092909150565b61099b83611856565b156109d3575050604080518082019091526012815271185b1c9958591e481c9959da5cdd195c995960721b6020820152600092909150565b609b5460985463ffffffff90911611610a1c5750506040805180820190915260158152741b585e081bdc195c985d1bdc9cc81c995858da1959605a1b6020820152600092909150565b609c546001600160601b0316610a3184611886565b6001600160601b03161015610a725750506040805180820190915260118152701b5a5b881cdd185ad9481b9bdd081b595d607a1b6020820152600092909150565b5050604080516020810190915260008152600192909150565b6060610a9682611856565b610aae57505060408051600081526020810190915290565b610ab66119b7565b92915050565b610ac46114d8565b610acc611a6f565b565b610ad66114d8565b61076d81611ac1565b610ae76114d8565b6001600160a01b0381166000908152609a602052604090205460ff16610b545760405162461bcd60e51b815260206004820152601960248201527f4f6d6e694156533a206e6f7420696e20616c6c6f776c6973740000000000000060448201526064015b60405180910390fd5b6001600160a01b0381166000818152609a6020526040808220805460ff19169055517f8560daa191dd8e6fba276b053006b3990c46c94b842f85490f52c49b15cfe5cb9190a250565b610ba56114d8565b610acc6000611b1a565b610bb76114d8565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590610c03908490600401612e41565b600060405180830381600087803b158015610c1d57600080fd5b505af1158015610c31573d6000803e3d6000fd5b5050505050565b610c406115d2565b6000339050610c8484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b6c92505050565b6001600160a01b0316816001600160a01b031614610ce45760405162461bcd60e51b815260206004820152601960248201527f4f6d6e694156533a207075626b657920213d2073656e646572000000000000006044820152606401610b4b565b609c54600160601b900460ff161580610d1557506001600160a01b0381166000908152609a602052604090205460ff165b610d585760405162461bcd60e51b815260206004820152601460248201527313db5b9a505594ce881b9bdd08185b1b1bddd95960621b6044820152606401610b4b565b610d6181611856565b15610dae5760405162461bcd60e51b815260206004820152601c60248201527f4f6d6e694156533a20616c726561647920616e206f70657261746f72000000006044820152606401610b4b565b609b5460985463ffffffff90911611610e095760405162461bcd60e51b815260206004820152601e60248201527f4f6d6e694156533a206d6178206f70657261746f7273207265616368656400006044820152606401610b4b565b609c546001600160601b0316610e1e82611886565b6001600160601b03161015610e755760405162461bcd60e51b815260206004820152601a60248201527f4f6d6e694156533a206d696e207374616b65206e6f74206d65740000000000006044820152606401610b4b565b610e80818585611bcb565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90610ece9084908690600401612e54565b600060405180830381600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b50506040516001600160a01b03841692507fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d9150600090a250505050565b610f426114d8565b610acc611c33565b600054610100900460ff1615808015610f6a5750600054600160ff909116105b80610f845750303b158015610f84575060005460ff166001145b610fe75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b4b565b6000805460ff19166001179055801561100a576000805461ff0019166101001790555b6110138b611532565b61101c8a611ac1565b61102b620124f861c350611c70565b61103489611cfd565b61103d88611d96565b61104687611df0565b6110508686611e38565b811561105e5761105e61209f565b82156110e55760405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906110b29087908790600401612e9f565b600060405180830381600087803b1580156110cc57600080fd5b505af11580156110e0573d6000803e3d6000fd5b505050505b6110ee8c611b1a565b8015611134576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b61114a6114d8565b6111548282611e38565b5050565b600080611163611618565b609e54609b546040519293506001600160a01b0390911691638dd9523c9164010000000090046001600160401b03169063ae102bc960e01b906111aa908690602401612c67565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915284516111e790611821565b6040518463ffffffff1660e01b815260040161120593929190612ece565b602060405180830381865afa158015611222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112469190612f04565b91505090565b6112546114d8565b610acc61209f565b6112646114d8565b610acc612137565b6112746114d8565b61076d81611cfd565b60606112876119b7565b905090565b6112946114d8565b61076d816121c8565b6060611287611618565b6112af6114d8565b61076d81611d96565b6112c06114d8565b6111548282611c70565b6112d26114d8565b6001600160a01b0381166113375760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b4b565b61076d81611b1a565b6113486114d8565b61076d81611df0565b60606097805480602002602001604051908101604052809291908181526020016000905b828210156113c457600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101611375565b50505050905090565b6113d56114d8565b6001600160a01b0381166114235760405162461bcd60e51b81526020600482015260156024820152744f6d6e694156533a207a65726f206164647265737360581b6044820152606401610b4b565b6001600160a01b0381166000908152609a602052604090205460ff161561148c5760405162461bcd60e51b815260206004820152601d60248201527f4f6d6e694156533a20616c726561647920696e20616c6c6f776c6973740000006044820152606401610b4b565b6001600160a01b0381166000818152609a6020526040808220805460ff19166001179055517fdde65206cdee4ea27ef1b170724ba50b41ad09a3bf2dda12935fc40c4dbf6e759190a250565b6033546001600160a01b03163314610acc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b4b565b6001600160a01b0381166115885760405162461bcd60e51b815260206004820152601760248201527f4f6d6e694156533a206e6f207a65726f20706f7274616c0000000000000000006044820152606401610b4b565b609e80546001600160a01b0319166001600160a01b0383169081179091556040517f79162c8d053a07e70cdc1ccc536f0440b571f8508377d2bef51094fadab98f4790600090a250565b60655460ff1615610acc5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610b4b565b6098546060906000906001600160401b038111156116385761163861288f565b60405190808252806020026020018201604052801561168a57816020015b6040805160808101825260008082526060602080840182905293830182905282015282526000199092019101816116565790505b50905060005b815181101561181b576000609882815481106116ae576116ae612f1d565b60009182526020822001546001600160a01b031691506116cd82611886565b905060006116da836122d8565b90506000816001600160601b0316836001600160601b0316116116fe576000611708565b6117088284612f49565b6001600160a01b03851660009081526099602052604081208054929350909161173090612f71565b80601f016020809104026020016040519081016040528092919081815260200182805461175c90612f71565b80156117a95780601f1061177e576101008083540402835291602001916117a9565b820191906000526020600020905b81548152906001019060200180831161178c57829003601f168201915b505050505090506040518060800160405280866001600160a01b03168152602001828152602001836001600160601b03168152602001846001600160601b03168152508787815181106117fe576117fe612f1d565b602002602001018190525085806001019650505050505050611690565b50919050565b609b546000906001600160401b03600160a01b820481169161184c91600160601b9091041684612fa6565b610ab69190612fd5565b6001600160a01b0381166000908152609960205260408120805482919061187c90612f71565b9050119050919050565b6040805180820190915260008082526020820181905290819060005b6097548110156119ae57609781815481106118bf576118bf612f1d565b6000918252602080832060408051808201825293909101546001600160a01b03808216808652600160a01b9092046001600160601b031693850193909352905163778e55f360e01b8152898316600482015260248101919091529194507f0000000000000000000000000000000000000000000000000000000000000000169063778e55f390604401602060405180830381865afa158015611965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119899190612f04565b90506119998184602001516124d8565b6119a39085613000565b9350506001016118a2565b50909392505050565b6097546060906000906001600160401b038111156119d7576119d761288f565b604051908082528060200260200182016040528015611a00578160200160208202803683370190505b50905060005b60975481101561181b5760978181548110611a2357611a23612f1d565b60009182526020909120015482516001600160a01b0390911690839083908110611a4f57611a4f612f1d565b6001600160a01b0390921660209283029190910190910152600101611a06565b611a77612507565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b609b80546bffffffffffffffff0000000019166401000000006001600160401b038416908102919091179091556040517f86c6800e7c164327530b6a334cd4599a5389a8b31d5e262d82034b1121dd8b8690600090a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008151604014611bbf5760405162461bcd60e51b815260206004820181905260248201527f536563703235366b313a20696e76616c6964207075626b6579206c656e6774686044820152606401610b4b565b50805160209091012090565b60988054600181019091557f2237a976fa961f5921fd19f2b03c925c725d77b20ce8f790c19709c03de4d8140180546001600160a01b0319166001600160a01b0385169081179091556000908152609960205260409020611c2d908383612671565b50505050565b611c3b6115d2565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611aa43390565b609b80546fffffffffffffffffffffffffffffffff60601b1916600160a01b6001600160401b0385811691820267ffffffffffffffff60601b191692909217600160601b928516928302179092556040805192835260208301919091527fe8bd84272b361621aa78d2bf3b1232f4ec8bf4d53ea7e262b568952fd89dba3091015b60405180910390a15050565b6001600160a01b038116611d4c5760405162461bcd60e51b815260206004820152601660248201527509edadcd282aca67440dcde40f4cae4de40d2dcc4def60531b6044820152606401610b4b565b609d80546001600160a01b0319166001600160a01b0383169081179091556040517f51939cde6a90c107a83ed16cd83879c0fa830cbddb121deea9050042fae5ce6790600090a250565b609c80546bffffffffffffffffffffffff19166001600160601b0383169081179091556040519081527f9b13fd38c94948514c63f3132d22b60ecb8ed37521ba05fdfad046cfbc3a772a906020015b60405180910390a150565b609b805463ffffffff191663ffffffff83169081179091556040519081527f4867705ef2f7341363cb4d4bb0e1501ad37f84ae371b9f31e73a1c25c39840e490602001611de5565b611e44609760006126f5565b60005b8181101561206d576000838383818110611e6357611e63612f1d565b611e799260206040909202019081019150612783565b6001600160a01b03161415611ed05760405162461bcd60e51b815260206004820152601960248201527f4f6d6e694156533a206e6f207a65726f207374726174656779000000000000006044820152606401610b4b565b6000838383818110611ee457611ee4612f1d565b9050604002016020016020810190611efc9190612d09565b6001600160601b031611611f525760405162461bcd60e51b815260206004820152601b60248201527f4f6d6e694156533a206e6f207a65726f206d756c7469706c69657200000000006044820152606401610b4b565b6000611f5f826001613022565b90505b8281101561202257838382818110611f7c57611f7c612f1d565b611f929260206040909202019081019150612783565b6001600160a01b0316848484818110611fad57611fad612f1d565b611fc39260206040909202019081019150612783565b6001600160a01b0316141561201a5760405162461bcd60e51b815260206004820152601e60248201527f4f6d6e694156533a206e6f206475706c696361746520737472617465677900006044820152606401610b4b565b600101611f62565b50609783838381811061203757612037612f1d565b83546001810185556000948552602090942060409091029290920192919091019050612063828261303a565b5050600101611e47565b507f236150b37b22bc9557672069e2dfb3f05be1dafd1f9ead78df2f8b855ee696408282604051611cf192919061307c565b609c54600160601b900460ff16156120f95760405162461bcd60e51b815260206004820152601860248201527f4f6d6e694156533a20616c726561647920656e61626c656400000000000000006044820152606401610b4b565b609c805460ff60601b1916600160601b1790556040517f8a943acd5f4e6d3df7565a4a08a93f6b04cc31bb6c01ca4aef7abd6baf455ec390600090a1565b609c54600160601b900460ff166121905760405162461bcd60e51b815260206004820152601960248201527f4f6d6e694156533a20616c72656164792064697361626c6564000000000000006044820152606401610b4b565b609c805460ff60601b191690556040517f2d35c8d348a345fd7b3b03b7cfcf7ad0b60c2d46742d5ca536342e4185becb0790600090a1565b6121d181611856565b61221d5760405162461bcd60e51b815260206004820152601860248201527f4f6d6e694156533a206e6f7420616e206f70657261746f7200000000000000006044820152606401610b4b565b61222681612550565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b15801561228957600080fd5b505af115801561229d573d6000803e3d6000fd5b50506040516001600160a01b03841692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a250565b6040516367c0439f60e11b81526001600160a01b038281166004830152600091829182917f00000000000000000000000000000000000000000000000000000000000000009091169063cf80873e90602401600060405180830381865afa158015612347573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261236f9190810190613175565b90925090506000805b83518110156124cf57600084828151811061239557612395612f1d565b602002602001015190506123ce604051806040016040528060006001600160a01b0316815260200160006001600160601b031681525090565b60005b60975481101561247057826001600160a01b0316609782815481106123f8576123f8612f1d565b6000918252602090912001546001600160a01b03161415612468576097818154811061242657612426612f1d565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529150612470565b6001016123d1565b5080516001600160a01b03166124875750506124bd565b6124ae85848151811061249c5761249c612f1d565b602002602001015182602001516124d8565b6124b89085613000565b935050505b806124c781613239565b915050612378565b50949350505050565b6000670de0b6b3a76400006124f66001600160601b03841685613254565b6125009190613273565b9392505050565b60655460ff16610acc5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610b4b565b60005b60985481101561264f57816001600160a01b03166098828154811061257a5761257a612f1d565b6000918252602090912001546001600160a01b0316141561264757609880546125a590600190613295565b815481106125b5576125b5612f1d565b600091825260209091200154609880546001600160a01b0390921691839081106125e1576125e1612f1d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506098805480612620576126206132ac565b600082815260209020810160001990810180546001600160a01b031916905501905561264f565b600101612553565b506001600160a01b038116600090815260996020526040812061076d91612713565b82805461267d90612f71565b90600052602060002090601f01602090048101928261269f57600085556126e5565b82601f106126b85782800160ff198235161785556126e5565b828001600101855582156126e5579182015b828111156126e55782358255916020019190600101906126ca565b506126f1929150612749565b5090565b508054600082559060005260206000209081019061076d9190612749565b50805461271f90612f71565b6000825580601f1061272f575050565b601f01602090049060005260206000209081019061076d91905b5b808211156126f1576000815560010161274a565b6001600160a01b038116811461076d57600080fd5b803561277e8161275e565b919050565b60006020828403121561279557600080fd5b81356125008161275e565b6000815180845260005b818110156127c6576020818501810151868301820152016127aa565b818111156127d8576000602083870101525b50601f01601f19169290920160200192915050565b821515815260406020820152600061280860408301846127a0565b949350505050565b6020808252825182820181905260009190848201906040850190845b818110156128515783516001600160a01b03168352928401929184019160010161282c565b50909695505050505050565b80356001600160401b038116811461277e57600080fd5b60006020828403121561288657600080fd5b6125008261285d565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156128c7576128c761288f565b60405290565b604051601f8201601f191681016001600160401b03811182821017156128f5576128f561288f565b604052919050565b60006001600160401b038311156129165761291661288f565b612929601f8401601f19166020016128cd565b905082815283838301111561293d57600080fd5b828260208301376000602084830101529392505050565b60006020828403121561296657600080fd5b81356001600160401b0381111561297c57600080fd5b8201601f8101841361298d57600080fd5b612808848235602084016128fd565b60008083601f8401126129ae57600080fd5b5081356001600160401b038111156129c557600080fd5b6020830191508360208285010111156129dd57600080fd5b9250929050565b6000806000604084860312156129f957600080fd5b83356001600160401b0380821115612a1057600080fd5b612a1c8783880161299c565b90955093506020860135915080821115612a3557600080fd5b9085019060608288031215612a4957600080fd5b612a516128a5565b823582811115612a6057600080fd5b83019150601f82018813612a7357600080fd5b612a82888335602085016128fd565b815260208301356020820152604083013560408201528093505050509250925092565b6001600160601b038116811461076d57600080fd5b803561277e81612aa5565b803563ffffffff8116811461277e57600080fd5b60008083601f840112612aeb57600080fd5b5081356001600160401b03811115612b0257600080fd5b6020830191508360208260061b85010111156129dd57600080fd5b801515811461076d57600080fd5b803561277e81612b1d565b60008060008060008060008060008060006101208c8e031215612b5857600080fd5b612b628c3561275e565b8b359a50612b7360208d013561275e565b60208c01359950612b8660408d0161285d565b9850612b9460608d01612773565b9750612ba260808d01612aba565b9650612bb060a08d01612ac5565b95506001600160401b038060c08e01351115612bcb57600080fd5b612bdb8e60c08f01358f01612ad9565b909650945060e08d0135811015612bf157600080fd5b50612c028d60e08e01358e0161299c565b9093509150612c146101008d01612b2b565b90509295989b509295989b9093969950565b60008060208385031215612c3957600080fd5b82356001600160401b03811115612c4f57600080fd5b612c5b85828601612ad9565b90969095509350505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015612cfb57888303603f19018552815180516001600160a01b0316845287810151608089860181905290612cc7828701826127a0565b838a01516001600160601b03908116888c015260609485015116939096019290925250509386019390860190600101612c8e565b509098975050505050505050565b600060208284031215612d1b57600080fd5b813561250081612aa5565b60008060408385031215612d3957600080fd5b612d428361285d565b9150612d506020840161285d565b90509250929050565b600060208284031215612d6b57600080fd5b61250082612ac5565b602080825282518282018190526000919060409081850190868401855b82811015612dc857815180516001600160a01b031685528601516001600160601b0316868501529284019290850190600101612d91565b5091979650505050505050565b60006001600160401b03808816835260ff8716602084015260018060a01b038616604084015260a06060840152612e0f60a08401866127a0565b91508084166080840152509695505050505050565b600060208284031215612e3657600080fd5b815161250081612b1d565b60208152600061250060208301846127a0565b60018060a01b0383168152604060208201526000825160606040840152612e7e60a08401826127a0565b90506020840151606084015260408401516080840152809150509392505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006001600160401b03808616835260606020840152612ef160608401866127a0565b9150808416604084015250949350505050565b600060208284031215612f1657600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160601b0383811690831681811015612f6957612f69612f33565b039392505050565b600181811c90821680612f8557607f821691505b6020821081141561181b57634e487b7160e01b600052602260045260246000fd5b60006001600160401b0380831681851681830481118215151615612fcc57612fcc612f33565b02949350505050565b60006001600160401b03808316818516808303821115612ff757612ff7612f33565b01949350505050565b60006001600160601b03808316818516808303821115612ff757612ff7612f33565b6000821982111561303557613035612f33565b500190565b81356130458161275e565b81546001600160a01b03199081166001600160a01b03929092169182178355602084013561307281612aa5565b60a01b1617905550565b6020808252818101839052600090604080840186845b878110156130da5781356130a58161275e565b6001600160a01b03168352818501356130bd81612aa5565b6001600160601b0316838601529183019190830190600101613092565b5090979650505050505050565b60006001600160401b038211156131005761310061288f565b5060051b60200190565b600082601f83011261311b57600080fd5b8151602061313061312b836130e7565b6128cd565b82815260059290921b8401810191818101908684111561314f57600080fd5b8286015b8481101561316a5780518352918301918301613153565b509695505050505050565b6000806040838503121561318857600080fd5b82516001600160401b038082111561319f57600080fd5b818501915085601f8301126131b357600080fd5b815160206131c361312b836130e7565b82815260059290921b840181019181810190898411156131e257600080fd5b948201945b838610156132095785516131fa8161275e565b825294820194908201906131e7565b9188015191965090935050508082111561322257600080fd5b5061322f8582860161310a565b9150509250929050565b600060001982141561324d5761324d612f33565b5060010190565b600081600019048311821515161561326e5761326e612f33565b500290565b60008261329057634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156132a7576132a7612f33565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220d0a565ee85691922c0d3380b95d8143b2b9c69fe49c79a7498d1b2cb1b8c09ad64736f6c634300080c0033", + Bin: "0x60c06040523480156200001157600080fd5b50604051620034ba380380620034ba833981016040819052620000349162000133565b6001600160a01b03808316608052811660a0526200005162000059565b505062000172565b600054610100900460ff1615620000c65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000118576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013057600080fd5b50565b600080604083850312156200014757600080fd5b825162000154816200011a565b602084015190925062000167816200011a565b809150509250929050565b60805160a0516132f8620001c26000396000818161043f01528181610bce01528181610e970152818161107b015261224501526000818161088b0152818161191e01526122fe01526132f86000f3fe6080604052600436106102255760003560e01c80638da5cb5b11610123578063d775cb61116100ab578063eedc8a211161006f578063eedc8a21146106ba578063f2fde38b146106da578063f36b8d36146106fa578063f57f33d01461071a578063f8e86ece1461073c57600080fd5b8063d775cb611461060b578063e481af9d14610643578063e5d98f9414610658578063e673df8a14610678578063eb3162351461069a57600080fd5b8063b98912b0116100f2578063b98912b01461056c578063c6a2aac81461058f578063c75e3aed146105a4578063cf8e629a146105d6578063d17efb36146105eb57600080fd5b80638da5cb5b146104ed5780638ef7ad5d1461050b57806394c8e4ff1461052b578063ae30f16d1461054c57600080fd5b806354c74ed3116101b1578063715018a611610175578063715018a614610463578063750521f5146104785780637719d097146104985780637815873d146104b85780638456cb59146104d857600080fd5b806354c74ed3146103b15780635c78b0e2146103d85780635c975abb146103f85780635da93d7e146104105780636b3aa72e1461043057600080fd5b806329d0fdc0116101f857806329d0fdc0146102c0578063320d46d41461030957806333cfb7b71461033757806339acf9f1146103645780633f4ba83a1461039c57600080fd5b80630c4158841461022a578063110ff5f11461024c57806313efbe9214610291578063243d51c714610299575b600080fd5b34801561023657600080fd5b5061024a610245366004612783565b61075c565b005b34801561025857600080fd5b50609b546102749064010000000090046001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b61024a610770565b3480156102a557600080fd5b50609b5461027490600160a01b90046001600160401b031681565b3480156102cc57600080fd5b506102f96102db366004612783565b6001600160a01b03166000908152609a602052604090205460ff1690565b6040519015158152602001610288565b34801561031557600080fd5b50610329610324366004612783565b610866565b6040516102889291906127ed565b34801561034357600080fd5b50610357610352366004612783565b610a8b565b6040516102889190612810565b34801561037057600080fd5b50609e54610384906001600160a01b031681565b6040516001600160a01b039091168152602001610288565b3480156103a857600080fd5b5061024a610abc565b3480156103bd57600080fd5b50609b5461027490600160601b90046001600160401b031681565b3480156103e457600080fd5b5061024a6103f3366004612874565b610ace565b34801561040457600080fd5b5060655460ff166102f9565b34801561041c57600080fd5b5061024a61042b366004612783565b610adf565b34801561043c57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610384565b34801561046f57600080fd5b5061024a610b9d565b34801561048457600080fd5b5061024a610493366004612954565b610baf565b3480156104a457600080fd5b5061024a6104b33660046129e4565b610c38565b3480156104c457600080fd5b50609d54610384906001600160a01b031681565b3480156104e457600080fd5b5061024a610f3a565b3480156104f957600080fd5b506033546001600160a01b0316610384565b34801561051757600080fd5b5061024a610526366004612b36565b610f4a565b34801561053757600080fd5b50609c546102f990600160601b900460ff1681565b34801561055857600080fd5b5061024a610567366004612c26565b611142565b34801561057857600080fd5b50610581611158565b604051908152602001610288565b34801561059b57600080fd5b5061024a61124c565b3480156105b057600080fd5b50609b546105c19063ffffffff1681565b60405163ffffffff9091168152602001610288565b3480156105e257600080fd5b5061024a61125c565b3480156105f757600080fd5b5061024a610606366004612783565b61126c565b34801561061757600080fd5b50609c5461062b906001600160601b031681565b6040516001600160601b039091168152602001610288565b34801561064f57600080fd5b5061035761127d565b34801561066457600080fd5b5061024a610673366004612783565b61128c565b34801561068457600080fd5b5061068d61129d565b6040516102889190612c67565b3480156106a657600080fd5b5061024a6106b5366004612d09565b6112a7565b3480156106c657600080fd5b5061024a6106d5366004612d26565b6112b8565b3480156106e657600080fd5b5061024a6106f5366004612783565b6112ca565b34801561070657600080fd5b5061024a610715366004612d59565b611340565b34801561072657600080fd5b5061072f611351565b6040516102889190612d74565b34801561074857600080fd5b5061024a610757366004612783565b6113cd565b6107646114d8565b61076d81611532565b50565b6107786115d2565b6000610782611618565b609e54609b54609d546040519394506001600160a01b039283169363c21dda4f93349364010000000090046001600160401b03169260049291169063ae102bc960e01b906107d4908990602401612c67565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152875161081190611821565b6040518763ffffffff1660e01b8152600401610831959493929190612dd5565b6000604051808303818588803b15801561084a57600080fd5b505af115801561085e573d6000803e3d6000fd5b505050505050565b6040516336b87bd760e11b81526001600160a01b0382811660048301526000916060917f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190612e24565b61092a57505060408051808201909152600f81526e3737ba1030b71037b832b930ba37b960891b6020820152600092909150565b609c54600160601b900460ff16801561095c57506001600160a01b0383166000908152609a602052604090205460ff16155b1561099257505060408051808201909152601081526f1b9bdd081a5b88185b1b1bdddb1a5cdd60821b6020820152600092909150565b61099b83611856565b156109d3575050604080518082019091526012815271185b1c9958591e481c9959da5cdd195c995960721b6020820152600092909150565b609b5460985463ffffffff90911611610a1c5750506040805180820190915260158152741b585e081bdc195c985d1bdc9cc81c995858da1959605a1b6020820152600092909150565b609c546001600160601b0316610a3184611886565b6001600160601b03161015610a725750506040805180820190915260118152701b5a5b881cdd185ad9481b9bdd081b595d607a1b6020820152600092909150565b5050604080516020810190915260008152600192909150565b6060610a9682611856565b610aae57505060408051600081526020810190915290565b610ab66119b7565b92915050565b610ac46114d8565b610acc611a6f565b565b610ad66114d8565b61076d81611ac1565b610ae76114d8565b6001600160a01b0381166000908152609a602052604090205460ff16610b545760405162461bcd60e51b815260206004820152601960248201527f4f6d6e694156533a206e6f7420696e20616c6c6f776c6973740000000000000060448201526064015b60405180910390fd5b6001600160a01b0381166000818152609a6020526040808220805460ff19169055517f8560daa191dd8e6fba276b053006b3990c46c94b842f85490f52c49b15cfe5cb9190a250565b610ba56114d8565b610acc6000611b1a565b610bb76114d8565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590610c03908490600401612e41565b600060405180830381600087803b158015610c1d57600080fd5b505af1158015610c31573d6000803e3d6000fd5b5050505050565b610c406115d2565b6000339050610c8484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b6c92505050565b6001600160a01b0316816001600160a01b031614610ce45760405162461bcd60e51b815260206004820152601960248201527f4f6d6e694156533a207075626b657920213d2073656e646572000000000000006044820152606401610b4b565b609c54600160601b900460ff161580610d1557506001600160a01b0381166000908152609a602052604090205460ff165b610d585760405162461bcd60e51b815260206004820152601460248201527313db5b9a505594ce881b9bdd08185b1b1bddd95960621b6044820152606401610b4b565b610d6181611856565b15610dae5760405162461bcd60e51b815260206004820152601c60248201527f4f6d6e694156533a20616c726561647920616e206f70657261746f72000000006044820152606401610b4b565b609b5460985463ffffffff90911611610e095760405162461bcd60e51b815260206004820152601e60248201527f4f6d6e694156533a206d6178206f70657261746f7273207265616368656400006044820152606401610b4b565b609c546001600160601b0316610e1e82611886565b6001600160601b03161015610e755760405162461bcd60e51b815260206004820152601a60248201527f4f6d6e694156533a206d696e207374616b65206e6f74206d65740000000000006044820152606401610b4b565b610e80818585611bcb565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90610ece9084908690600401612e54565b600060405180830381600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b50506040516001600160a01b03841692507fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d9150600090a250505050565b610f426114d8565b610acc611c33565b600054610100900460ff1615808015610f6a5750600054600160ff909116105b80610f845750303b158015610f84575060005460ff166001145b610fe75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b4b565b6000805460ff19166001179055801561100a576000805461ff0019166101001790555b6110138b611532565b61101c8a611ac1565b61102b620124f861c350611c70565b61103489611cfd565b61103d88611d96565b61104687611df0565b6110508686611e38565b811561105e5761105e61209f565b82156110e55760405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906110b29087908790600401612e9f565b600060405180830381600087803b1580156110cc57600080fd5b505af11580156110e0573d6000803e3d6000fd5b505050505b6110ee8c611b1a565b8015611134576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b61114a6114d8565b6111548282611e38565b5050565b600080611163611618565b609e54609b546040519293506001600160a01b0390911691638dd9523c9164010000000090046001600160401b03169063ae102bc960e01b906111aa908690602401612c67565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915284516111e790611821565b6040518463ffffffff1660e01b815260040161120593929190612ece565b602060405180830381865afa158015611222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112469190612f04565b91505090565b6112546114d8565b610acc61209f565b6112646114d8565b610acc612137565b6112746114d8565b61076d81611cfd565b60606112876119b7565b905090565b6112946114d8565b61076d816121c8565b6060611287611618565b6112af6114d8565b61076d81611d96565b6112c06114d8565b6111548282611c70565b6112d26114d8565b6001600160a01b0381166113375760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b4b565b61076d81611b1a565b6113486114d8565b61076d81611df0565b60606097805480602002602001604051908101604052809291908181526020016000905b828210156113c457600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101611375565b50505050905090565b6113d56114d8565b6001600160a01b0381166114235760405162461bcd60e51b81526020600482015260156024820152744f6d6e694156533a207a65726f206164647265737360581b6044820152606401610b4b565b6001600160a01b0381166000908152609a602052604090205460ff161561148c5760405162461bcd60e51b815260206004820152601d60248201527f4f6d6e694156533a20616c726561647920696e20616c6c6f776c6973740000006044820152606401610b4b565b6001600160a01b0381166000818152609a6020526040808220805460ff19166001179055517fdde65206cdee4ea27ef1b170724ba50b41ad09a3bf2dda12935fc40c4dbf6e759190a250565b6033546001600160a01b03163314610acc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b4b565b6001600160a01b0381166115885760405162461bcd60e51b815260206004820152601760248201527f4f6d6e694156533a206e6f207a65726f20706f7274616c0000000000000000006044820152606401610b4b565b609e80546001600160a01b0319166001600160a01b0383169081179091556040517f79162c8d053a07e70cdc1ccc536f0440b571f8508377d2bef51094fadab98f4790600090a250565b60655460ff1615610acc5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610b4b565b6098546060906000906001600160401b038111156116385761163861288f565b60405190808252806020026020018201604052801561168a57816020015b6040805160808101825260008082526060602080840182905293830182905282015282526000199092019101816116565790505b50905060005b815181101561181b576000609882815481106116ae576116ae612f1d565b60009182526020822001546001600160a01b031691506116cd82611886565b905060006116da836122d8565b90506000816001600160601b0316836001600160601b0316116116fe576000611708565b6117088284612f49565b6001600160a01b03851660009081526099602052604081208054929350909161173090612f71565b80601f016020809104026020016040519081016040528092919081815260200182805461175c90612f71565b80156117a95780601f1061177e576101008083540402835291602001916117a9565b820191906000526020600020905b81548152906001019060200180831161178c57829003601f168201915b505050505090506040518060800160405280866001600160a01b03168152602001828152602001836001600160601b03168152602001846001600160601b03168152508787815181106117fe576117fe612f1d565b602002602001018190525085806001019650505050505050611690565b50919050565b609b546000906001600160401b03600160a01b820481169161184c91600160601b9091041684612fa6565b610ab69190612fd5565b6001600160a01b0381166000908152609960205260408120805482919061187c90612f71565b9050119050919050565b6040805180820190915260008082526020820181905290819060005b6097548110156119ae57609781815481106118bf576118bf612f1d565b6000918252602080832060408051808201825293909101546001600160a01b03808216808652600160a01b9092046001600160601b031693850193909352905163778e55f360e01b8152898316600482015260248101919091529194507f0000000000000000000000000000000000000000000000000000000000000000169063778e55f390604401602060405180830381865afa158015611965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119899190612f04565b90506119998184602001516124d8565b6119a39085613000565b9350506001016118a2565b50909392505050565b6097546060906000906001600160401b038111156119d7576119d761288f565b604051908082528060200260200182016040528015611a00578160200160208202803683370190505b50905060005b60975481101561181b5760978181548110611a2357611a23612f1d565b60009182526020909120015482516001600160a01b0390911690839083908110611a4f57611a4f612f1d565b6001600160a01b0390921660209283029190910190910152600101611a06565b611a77612507565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b609b80546bffffffffffffffff0000000019166401000000006001600160401b038416908102919091179091556040517f86c6800e7c164327530b6a334cd4599a5389a8b31d5e262d82034b1121dd8b8690600090a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008151604014611bbf5760405162461bcd60e51b815260206004820181905260248201527f536563703235366b313a20696e76616c6964207075626b6579206c656e6774686044820152606401610b4b565b50805160209091012090565b60988054600181019091557f2237a976fa961f5921fd19f2b03c925c725d77b20ce8f790c19709c03de4d8140180546001600160a01b0319166001600160a01b0385169081179091556000908152609960205260409020611c2d908383612671565b50505050565b611c3b6115d2565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611aa43390565b609b80546fffffffffffffffffffffffffffffffff60601b1916600160a01b6001600160401b0385811691820267ffffffffffffffff60601b191692909217600160601b928516928302179092556040805192835260208301919091527fe8bd84272b361621aa78d2bf3b1232f4ec8bf4d53ea7e262b568952fd89dba3091015b60405180910390a15050565b6001600160a01b038116611d4c5760405162461bcd60e51b815260206004820152601660248201527509edadcd282aca67440dcde40f4cae4de40d2dcc4def60531b6044820152606401610b4b565b609d80546001600160a01b0319166001600160a01b0383169081179091556040517f51939cde6a90c107a83ed16cd83879c0fa830cbddb121deea9050042fae5ce6790600090a250565b609c80546bffffffffffffffffffffffff19166001600160601b0383169081179091556040519081527f9b13fd38c94948514c63f3132d22b60ecb8ed37521ba05fdfad046cfbc3a772a906020015b60405180910390a150565b609b805463ffffffff191663ffffffff83169081179091556040519081527f4867705ef2f7341363cb4d4bb0e1501ad37f84ae371b9f31e73a1c25c39840e490602001611de5565b611e44609760006126f5565b60005b8181101561206d576000838383818110611e6357611e63612f1d565b611e799260206040909202019081019150612783565b6001600160a01b03161415611ed05760405162461bcd60e51b815260206004820152601960248201527f4f6d6e694156533a206e6f207a65726f207374726174656779000000000000006044820152606401610b4b565b6000838383818110611ee457611ee4612f1d565b9050604002016020016020810190611efc9190612d09565b6001600160601b031611611f525760405162461bcd60e51b815260206004820152601b60248201527f4f6d6e694156533a206e6f207a65726f206d756c7469706c69657200000000006044820152606401610b4b565b6000611f5f826001613022565b90505b8281101561202257838382818110611f7c57611f7c612f1d565b611f929260206040909202019081019150612783565b6001600160a01b0316848484818110611fad57611fad612f1d565b611fc39260206040909202019081019150612783565b6001600160a01b0316141561201a5760405162461bcd60e51b815260206004820152601e60248201527f4f6d6e694156533a206e6f206475706c696361746520737472617465677900006044820152606401610b4b565b600101611f62565b50609783838381811061203757612037612f1d565b83546001810185556000948552602090942060409091029290920192919091019050612063828261303a565b5050600101611e47565b507f236150b37b22bc9557672069e2dfb3f05be1dafd1f9ead78df2f8b855ee696408282604051611cf192919061307c565b609c54600160601b900460ff16156120f95760405162461bcd60e51b815260206004820152601860248201527f4f6d6e694156533a20616c726561647920656e61626c656400000000000000006044820152606401610b4b565b609c805460ff60601b1916600160601b1790556040517f8a943acd5f4e6d3df7565a4a08a93f6b04cc31bb6c01ca4aef7abd6baf455ec390600090a1565b609c54600160601b900460ff166121905760405162461bcd60e51b815260206004820152601960248201527f4f6d6e694156533a20616c72656164792064697361626c6564000000000000006044820152606401610b4b565b609c805460ff60601b191690556040517f2d35c8d348a345fd7b3b03b7cfcf7ad0b60c2d46742d5ca536342e4185becb0790600090a1565b6121d181611856565b61221d5760405162461bcd60e51b815260206004820152601860248201527f4f6d6e694156533a206e6f7420616e206f70657261746f7200000000000000006044820152606401610b4b565b61222681612550565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b15801561228957600080fd5b505af115801561229d573d6000803e3d6000fd5b50506040516001600160a01b03841692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a250565b6040516367c0439f60e11b81526001600160a01b038281166004830152600091829182917f00000000000000000000000000000000000000000000000000000000000000009091169063cf80873e90602401600060405180830381865afa158015612347573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261236f9190810190613175565b90925090506000805b83518110156124cf57600084828151811061239557612395612f1d565b602002602001015190506123ce604051806040016040528060006001600160a01b0316815260200160006001600160601b031681525090565b60005b60975481101561247057826001600160a01b0316609782815481106123f8576123f8612f1d565b6000918252602090912001546001600160a01b03161415612468576097818154811061242657612426612f1d565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529150612470565b6001016123d1565b5080516001600160a01b03166124875750506124bd565b6124ae85848151811061249c5761249c612f1d565b602002602001015182602001516124d8565b6124b89085613000565b935050505b806124c781613239565b915050612378565b50949350505050565b6000670de0b6b3a76400006124f66001600160601b03841685613254565b6125009190613273565b9392505050565b60655460ff16610acc5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610b4b565b60005b60985481101561264f57816001600160a01b03166098828154811061257a5761257a612f1d565b6000918252602090912001546001600160a01b0316141561264757609880546125a590600190613295565b815481106125b5576125b5612f1d565b600091825260209091200154609880546001600160a01b0390921691839081106125e1576125e1612f1d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506098805480612620576126206132ac565b600082815260209020810160001990810180546001600160a01b031916905501905561264f565b600101612553565b506001600160a01b038116600090815260996020526040812061076d91612713565b82805461267d90612f71565b90600052602060002090601f01602090048101928261269f57600085556126e5565b82601f106126b85782800160ff198235161785556126e5565b828001600101855582156126e5579182015b828111156126e55782358255916020019190600101906126ca565b506126f1929150612749565b5090565b508054600082559060005260206000209081019061076d9190612749565b50805461271f90612f71565b6000825580601f1061272f575050565b601f01602090049060005260206000209081019061076d91905b5b808211156126f1576000815560010161274a565b6001600160a01b038116811461076d57600080fd5b803561277e8161275e565b919050565b60006020828403121561279557600080fd5b81356125008161275e565b6000815180845260005b818110156127c6576020818501810151868301820152016127aa565b818111156127d8576000602083870101525b50601f01601f19169290920160200192915050565b821515815260406020820152600061280860408301846127a0565b949350505050565b6020808252825182820181905260009190848201906040850190845b818110156128515783516001600160a01b03168352928401929184019160010161282c565b50909695505050505050565b80356001600160401b038116811461277e57600080fd5b60006020828403121561288657600080fd5b6125008261285d565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156128c7576128c761288f565b60405290565b604051601f8201601f191681016001600160401b03811182821017156128f5576128f561288f565b604052919050565b60006001600160401b038311156129165761291661288f565b612929601f8401601f19166020016128cd565b905082815283838301111561293d57600080fd5b828260208301376000602084830101529392505050565b60006020828403121561296657600080fd5b81356001600160401b0381111561297c57600080fd5b8201601f8101841361298d57600080fd5b612808848235602084016128fd565b60008083601f8401126129ae57600080fd5b5081356001600160401b038111156129c557600080fd5b6020830191508360208285010111156129dd57600080fd5b9250929050565b6000806000604084860312156129f957600080fd5b83356001600160401b0380821115612a1057600080fd5b612a1c8783880161299c565b90955093506020860135915080821115612a3557600080fd5b9085019060608288031215612a4957600080fd5b612a516128a5565b823582811115612a6057600080fd5b83019150601f82018813612a7357600080fd5b612a82888335602085016128fd565b815260208301356020820152604083013560408201528093505050509250925092565b6001600160601b038116811461076d57600080fd5b803561277e81612aa5565b803563ffffffff8116811461277e57600080fd5b60008083601f840112612aeb57600080fd5b5081356001600160401b03811115612b0257600080fd5b6020830191508360208260061b85010111156129dd57600080fd5b801515811461076d57600080fd5b803561277e81612b1d565b60008060008060008060008060008060006101208c8e031215612b5857600080fd5b612b628c3561275e565b8b359a50612b7360208d013561275e565b60208c01359950612b8660408d0161285d565b9850612b9460608d01612773565b9750612ba260808d01612aba565b9650612bb060a08d01612ac5565b95506001600160401b038060c08e01351115612bcb57600080fd5b612bdb8e60c08f01358f01612ad9565b909650945060e08d0135811015612bf157600080fd5b50612c028d60e08e01358e0161299c565b9093509150612c146101008d01612b2b565b90509295989b509295989b9093969950565b60008060208385031215612c3957600080fd5b82356001600160401b03811115612c4f57600080fd5b612c5b85828601612ad9565b90969095509350505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015612cfb57888303603f19018552815180516001600160a01b0316845287810151608089860181905290612cc7828701826127a0565b838a01516001600160601b03908116888c015260609485015116939096019290925250509386019390860190600101612c8e565b509098975050505050505050565b600060208284031215612d1b57600080fd5b813561250081612aa5565b60008060408385031215612d3957600080fd5b612d428361285d565b9150612d506020840161285d565b90509250929050565b600060208284031215612d6b57600080fd5b61250082612ac5565b602080825282518282018190526000919060409081850190868401855b82811015612dc857815180516001600160a01b031685528601516001600160601b0316868501529284019290850190600101612d91565b5091979650505050505050565b60006001600160401b03808816835260ff8716602084015260018060a01b038616604084015260a06060840152612e0f60a08401866127a0565b91508084166080840152509695505050505050565b600060208284031215612e3657600080fd5b815161250081612b1d565b60208152600061250060208301846127a0565b60018060a01b0383168152604060208201526000825160606040840152612e7e60a08401826127a0565b90506020840151606084015260408401516080840152809150509392505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006001600160401b03808616835260606020840152612ef160608401866127a0565b9150808416604084015250949350505050565b600060208284031215612f1657600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160601b0383811690831681811015612f6957612f69612f33565b039392505050565b600181811c90821680612f8557607f821691505b6020821081141561181b57634e487b7160e01b600052602260045260246000fd5b60006001600160401b0380831681851681830481118215151615612fcc57612fcc612f33565b02949350505050565b60006001600160401b03808316818516808303821115612ff757612ff7612f33565b01949350505050565b60006001600160601b03808316818516808303821115612ff757612ff7612f33565b6000821982111561303557613035612f33565b500190565b81356130458161275e565b81546001600160a01b03199081166001600160a01b03929092169182178355602084013561307281612aa5565b60a01b1617905550565b6020808252818101839052600090604080840186845b878110156130da5781356130a58161275e565b6001600160a01b03168352818501356130bd81612aa5565b6001600160601b0316838601529183019190830190600101613092565b5090979650505050505050565b60006001600160401b038211156131005761310061288f565b5060051b60200190565b600082601f83011261311b57600080fd5b8151602061313061312b836130e7565b6128cd565b82815260059290921b8401810191818101908684111561314f57600080fd5b8286015b8481101561316a5780518352918301918301613153565b509695505050505050565b6000806040838503121561318857600080fd5b82516001600160401b038082111561319f57600080fd5b818501915085601f8301126131b357600080fd5b815160206131c361312b836130e7565b82815260059290921b840181019181810190898411156131e257600080fd5b948201945b838610156132095785516131fa8161275e565b825294820194908201906131e7565b9188015191965090935050508082111561322257600080fd5b5061322f8582860161310a565b9150509250929050565b600060001982141561324d5761324d612f33565b5060010190565b600081600019048311821515161561326e5761326e612f33565b500290565b60008261329057634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156132a7576132a7612f33565b500390565b634e487b7160e01b600052603160045260246000fdfea264697066735822122038a2dfc779e5e43765680bec59cec6572c938c821c847224632c137a16dc461464736f6c634300080c0033", } // OmniAVSABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/strategybase.go b/contracts/bindings/strategybase.go index e82e885f3..50b9e84e9 100644 --- a/contracts/bindings/strategybase.go +++ b/contracts/bindings/strategybase.go @@ -32,7 +32,7 @@ var ( // StrategyBaseMetaData contains all meta data concerning the StrategyBase contract. var StrategyBaseMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"newShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"explanation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_underlyingToken\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"shares\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sharesToUnderlying\",\"inputs\":[{\"name\":\"amountShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sharesToUnderlyingView\",\"inputs\":[{\"name\":\"amountShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalShares\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"underlyingToShares\",\"inputs\":[{\"name\":\"amountUnderlying\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"underlyingToSharesView\",\"inputs\":[{\"name\":\"amountUnderlying\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"underlyingToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"userUnderlying\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"userUnderlyingView\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amountShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x60a060405234801561001057600080fd5b506040516200185f3803806200185f8339810160408190526100319161010b565b6001600160a01b03811660805261004661004c565b5061013b565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614610109576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011d57600080fd5b81516001600160a01b038116811461013457600080fd5b9392505050565b6080516116f36200016c6000396000818161019901528181610570015281816109550152610a2001526116f36000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a36600461137b565b610310565b005b61014f61015f36600461139f565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046113b8565b610510565b61014f6101f33660046113e4565b6106b4565b6101c461020636600461137b565b6107c9565b61014f6107dd565b61023261022136600461141d565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c461025836600461139f565b6108a9565b600054610177906201000090046001600160a01b031681565b6101c461028436600461139f565b6108f4565b6101c461029736600461137b565b6108ff565b6102a461090d565b60405161018b9190611470565b6101c46102bf36600461137b565b61092d565b61014f6102d23660046114a3565b6109c2565b6101c46102e536600461139f565b610b8b565b6101c46102f836600461139f565b610bc4565b61014f61030b36600461139f565b610bcf565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038791906114e4565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b790611501565b60405180910390fd5b6103c981610d2b565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d919061154b565b6104595760405162461bcd60e51b81526004016103b79061156d565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610e30565b60335460006105f86103e8836115cb565b905060006103e8610607610eb0565b61061191906115cb565b9050600061061f87836115e3565b90508061062c84896115fa565b6106369190611619565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856115cb565b603355505050505092915050565b600054610100900460ff16158080156106d45750600054600160ff909116105b806106ee5750303b1580156106ee575060005460ff166001145b6107515760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610774576000805461ff0019166101001790555b61077e8383610f22565b80156107c4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006107d76102588361092d565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561082a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084e919061154b565b61086a5760405162461bcd60e51b81526004016103b79061156d565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e86033546108bc91906115cb565b905060006103e86108cb610eb0565b6108d591906115cb565b9050816108e285836115fa565b6108ec9190611619565b949350505050565b60006107d782610b8b565b60006107d76102f88361092d565b60606040518060800160405280604d8152602001611671604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa15801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d7919061163b565b6001805460029081161415610a155760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a8d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610a98848484610fb3565b60335480831115610b275760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610b356103e8836115cb565b905060006103e8610b44610eb0565b610b4e91906115cb565b9050600082610b5d87846115fa565b610b679190611619565b9050610b7386856115e3565b603355610b81888883611036565b5050505050505050565b6000806103e8603354610b9e91906115cb565b905060006103e8610bad610eb0565b610bb791906115cb565b9050806108e283866115fa565b60006107d7826108a9565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4691906114e4565b6001600160a01b0316336001600160a01b031614610c765760405162461bcd60e51b81526004016103b790611501565b600154198119600154191614610cf45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610db95760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610eac5760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d919061163b565b905090565b600054610100900460ff16610f8d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b038416179055610eac81600061104a565b6032546001600160a01b038381169116146107c45760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6107c46001600160a01b0383168483611136565b6000546201000090046001600160a01b031615801561107157506001600160a01b03821615155b6110f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610eac82610d2b565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526107c4928692916000916111c6918516908490611246565b90508051600014806111e75750808060200190518101906111e7919061154b565b6107c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b60606108ec848460008585600080866001600160a01b0316858760405161126d9190611654565b60006040518083038185875af1925050503d80600081146112aa576040519150601f19603f3d011682016040523d82523d6000602084013e6112af565b606091505b50915091506112c0878383876112cb565b979650505050505050565b60608315611337578251611330576001600160a01b0385163b6113305760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b50816108ec565b6108ec838381511561134c5781518083602001fd5b8060405162461bcd60e51b81526004016103b79190611470565b6001600160a01b03811681146103c957600080fd5b60006020828403121561138d57600080fd5b813561139881611366565b9392505050565b6000602082840312156113b157600080fd5b5035919050565b600080604083850312156113cb57600080fd5b82356113d681611366565b946020939093013593505050565b600080604083850312156113f757600080fd5b823561140281611366565b9150602083013561141281611366565b809150509250929050565b60006020828403121561142f57600080fd5b813560ff8116811461139857600080fd5b60005b8381101561145b578181015183820152602001611443565b8381111561146a576000848401525b50505050565b602081526000825180602084015261148f816040850160208701611440565b601f01601f19169190910160400192915050565b6000806000606084860312156114b857600080fd5b83356114c381611366565b925060208401356114d381611366565b929592945050506040919091013590565b6000602082840312156114f657600080fd5b815161139881611366565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561155d57600080fd5b8151801515811461139857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156115de576115de6115b5565b500190565b6000828210156115f5576115f56115b5565b500390565b6000816000190483118215151615611614576116146115b5565b500290565b60008261163657634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561164d57600080fd5b5051919050565b60008251611666818460208701611440565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220f94d3d6a99d7dc23dd412d0bb3b00d998b08b30b6e4ea8e14ea1dd47474c662964736f6c634300080c0033", + Bin: "0x60a060405234801561001057600080fd5b506040516200185f3803806200185f8339810160408190526100319161010b565b6001600160a01b03811660805261004661004c565b5061013b565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614610109576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011d57600080fd5b81516001600160a01b038116811461013457600080fd5b9392505050565b6080516116f36200016c6000396000818161019901528181610570015281816109550152610a2001526116f36000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a36600461137b565b610310565b005b61014f61015f36600461139f565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046113b8565b610510565b61014f6101f33660046113e4565b6106b4565b6101c461020636600461137b565b6107c9565b61014f6107dd565b61023261022136600461141d565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c461025836600461139f565b6108a9565b600054610177906201000090046001600160a01b031681565b6101c461028436600461139f565b6108f4565b6101c461029736600461137b565b6108ff565b6102a461090d565b60405161018b9190611470565b6101c46102bf36600461137b565b61092d565b61014f6102d23660046114a3565b6109c2565b6101c46102e536600461139f565b610b8b565b6101c46102f836600461139f565b610bc4565b61014f61030b36600461139f565b610bcf565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038791906114e4565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b790611501565b60405180910390fd5b6103c981610d2b565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d919061154b565b6104595760405162461bcd60e51b81526004016103b79061156d565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610e30565b60335460006105f86103e8836115cb565b905060006103e8610607610eb0565b61061191906115cb565b9050600061061f87836115e3565b90508061062c84896115fa565b6106369190611619565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856115cb565b603355505050505092915050565b600054610100900460ff16158080156106d45750600054600160ff909116105b806106ee5750303b1580156106ee575060005460ff166001145b6107515760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610774576000805461ff0019166101001790555b61077e8383610f22565b80156107c4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006107d76102588361092d565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561082a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084e919061154b565b61086a5760405162461bcd60e51b81526004016103b79061156d565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e86033546108bc91906115cb565b905060006103e86108cb610eb0565b6108d591906115cb565b9050816108e285836115fa565b6108ec9190611619565b949350505050565b60006107d782610b8b565b60006107d76102f88361092d565b60606040518060800160405280604d8152602001611671604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa15801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d7919061163b565b6001805460029081161415610a155760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a8d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610a98848484610fb3565b60335480831115610b275760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610b356103e8836115cb565b905060006103e8610b44610eb0565b610b4e91906115cb565b9050600082610b5d87846115fa565b610b679190611619565b9050610b7386856115e3565b603355610b81888883611036565b5050505050505050565b6000806103e8603354610b9e91906115cb565b905060006103e8610bad610eb0565b610bb791906115cb565b9050806108e283866115fa565b60006107d7826108a9565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4691906114e4565b6001600160a01b0316336001600160a01b031614610c765760405162461bcd60e51b81526004016103b790611501565b600154198119600154191614610cf45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610db95760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610eac5760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d919061163b565b905090565b600054610100900460ff16610f8d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b038416179055610eac81600061104a565b6032546001600160a01b038381169116146107c45760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6107c46001600160a01b0383168483611136565b6000546201000090046001600160a01b031615801561107157506001600160a01b03821615155b6110f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610eac82610d2b565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526107c4928692916000916111c6918516908490611246565b90508051600014806111e75750808060200190518101906111e7919061154b565b6107c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b60606108ec848460008585600080866001600160a01b0316858760405161126d9190611654565b60006040518083038185875af1925050503d80600081146112aa576040519150601f19603f3d011682016040523d82523d6000602084013e6112af565b606091505b50915091506112c0878383876112cb565b979650505050505050565b60608315611337578251611330576001600160a01b0385163b6113305760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b50816108ec565b6108ec838381511561134c5781518083602001fd5b8060405162461bcd60e51b81526004016103b79190611470565b6001600160a01b03811681146103c957600080fd5b60006020828403121561138d57600080fd5b813561139881611366565b9392505050565b6000602082840312156113b157600080fd5b5035919050565b600080604083850312156113cb57600080fd5b82356113d681611366565b946020939093013593505050565b600080604083850312156113f757600080fd5b823561140281611366565b9150602083013561141281611366565b809150509250929050565b60006020828403121561142f57600080fd5b813560ff8116811461139857600080fd5b60005b8381101561145b578181015183820152602001611443565b8381111561146a576000848401525b50505050565b602081526000825180602084015261148f816040850160208701611440565b601f01601f19169190910160400192915050565b6000806000606084860312156114b857600080fd5b83356114c381611366565b925060208401356114d381611366565b929592945050506040919091013590565b6000602082840312156114f657600080fd5b815161139881611366565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561155d57600080fd5b8151801515811461139857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156115de576115de6115b5565b500190565b6000828210156115f5576115f56115b5565b500390565b6000816000190483118215151615611614576116146115b5565b500290565b60008261163657634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561164d57600080fd5b5051919050565b60008251611666818460208701611440565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220a4a5ef748dba6a5402e075290d42ee043c32196beaa9f91b5ddd721b6b97656e64736f6c634300080c0033", } // StrategyBaseABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/strategymanager.go b/contracts/bindings/strategymanager.go index 8f5150401..364224651 100644 --- a/contracts/bindings/strategymanager.go +++ b/contracts/bindings/strategymanager.go @@ -50,7 +50,7 @@ var ( // StrategyManagerMetaData contains all meta data concerning the StrategyManager contract. var StrategyManagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"},{\"name\":\"_slasher\",\"type\":\"address\",\"internalType\":\"contractISlasher\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEPOSIT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DOMAIN_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addStrategiesToDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"thirdPartyTransfersForbiddenValues\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"calculateWithdrawalRoot\",\"inputs\":[{\"name\":\"queuedWithdrawal\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_QueuedWithdrawal\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"components\":[{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositIntoStrategy\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositIntoStrategyWithSignature\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDeposits\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"migrateQueuedWithdrawal\",\"inputs\":[{\"name\":\"queuedWithdrawal\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_QueuedWithdrawal\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"components\":[{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToRemoveFromWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStrategyWhitelister\",\"inputs\":[{\"name\":\"newStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setThirdPartyTransfersForbidden\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slasher\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISlasher\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyList\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyListLength\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyShares\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyIsWhitelistedForDeposit\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyWhitelister\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"thirdPartyTransfersForbidden\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawSharesAsTokens\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawalRootPending\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyAddedToDepositWhitelist\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromDepositWhitelist\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyWhitelisterChanged\",\"inputs\":[{\"name\":\"previousAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedThirdPartyTransfersForbidden\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"value\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false}]", - Bin: "0x6101006040523480156200001257600080fd5b50604051620036f1380380620036f183398101604081905262000035916200013f565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000193565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000124576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013c57600080fd5b50565b6000806000606084860312156200015557600080fd5b8351620001628162000126565b6020850151909350620001758162000126565b6040850151909250620001888162000126565b809150509250925092565b60805160a05160c05160e051613501620001f060003960006115890152600061048f015260006102a601526000818161059b01528181610bbb01528181610f5501528181610fa9015281816110ad0152611b9901526135016000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c806394f649dd11610130578063c6656702116100b8578063df5cf7231161007c578063df5cf72314610596578063e7a050aa146105bd578063f2fde38b146105d0578063f698da25146105e3578063fabc1cbc146105eb57600080fd5b8063c665670214610520578063cbc2bd6214610533578063cd293f6f14610546578063cf756fdf14610570578063df5b35471461058357600080fd5b8063b43b514b116100ff578063b43b514b146104b1578063b5d8b5b8146104c4578063c3c6b3a9146104d7578063c4623ea1146104fa578063c608c7f31461050d57600080fd5b806394f649dd14610433578063967fc0d2146104545780639b4da03d14610467578063b13442711461048a57600080fd5b80635c975abb116101b35780637ecebe00116101825780637ecebe00146103b3578063886f1195146103d35780638b8aac3c146103e65780638c80d4e51461040f5780638da5cb5b1461042257600080fd5b80635c975abb14610355578063663c1de41461035d578063715018a6146103805780637a7e0d921461038857600080fd5b80634665bcda116101fa5780634665bcda146102a157806348825e94146102e05780634e5a426314610307578063595c6a671461031a5780635ac86ab71461032257600080fd5b806310d67a2f1461022c578063136439dd1461024157806320606b701461025457806332e89ace1461028e575b600080fd5b61023f61023a366004612a1e565b6105fe565b005b61023f61024f366004612a3b565b6106ba565b61027b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61027b61029c366004612ad4565b6107f9565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610285565b61027b7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61023f610315366004612bc1565b610a9d565b61023f610ad5565b610345610330366004612bfa565b609854600160ff9092169190911b9081161490565b6040519015158152602001610285565b60985461027b565b61034561036b366004612a1e565b60d16020526000908152604090205460ff1681565b61023f610b9c565b61027b610396366004612c1d565b60cd60209081526000928352604080842090915290825290205481565b61027b6103c1366004612a1e565b60ca6020526000908152604090205481565b6097546102c8906001600160a01b031681565b61027b6103f4366004612a1e565b6001600160a01b0316600090815260ce602052604090205490565b61023f61041d366004612c4b565b610bb0565b6033546001600160a01b03166102c8565b610446610441366004612a1e565b610c09565b604051610285929190612d00565b60cb546102c8906001600160a01b031681565b610345610475366004612a1e565b60d36020526000908152604090205460ff1681565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b61027b6104bf366004612e9e565b610d89565b61023f6104d2366004612fb9565b610dd6565b6103456104e5366004612a3b565b60cf6020526000908152604090205460ff1681565b61023f610508366004612ffb565b610f4a565b61023f61051b36600461304c565b610f9e565b61023f61052e366004612a1e565b611056565b6102c861054136600461309f565b611067565b610559610554366004612e9e565b61109f565b604080519215158352602083019190915201610285565b61023f61057e366004612ffb565b611133565b61023f6105913660046130cb565b611267565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b61027b6105cb366004612c4b565b611490565b61023f6105de366004612a1e565b61150f565b61027b611585565b61023f6105f9366004612a3b565b6115c3565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610651573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106759190613137565b6001600160a01b0316336001600160a01b0316146106ae5760405162461bcd60e51b81526004016106a590613154565b60405180910390fd5b6106b78161171f565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610702573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610726919061319e565b6107425760405162461bcd60e51b81526004016106a5906131bb565b609854818116146107bb5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156108505760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b610858611816565b6001600160a01b038816600090815260d3602052604090205460ff16156108fa5760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a4016106a5565b4284101561097c5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a4016106a5565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a34611585565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a77888288611870565b610a83888c8c8c611a2f565b9450505050610a926001606555565b509695505050505050565b60cb546001600160a01b03163314610ac75760405162461bcd60e51b81526004016106a590613203565b610ad18282611bfe565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610b1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b41919061319e565b610b5d5760405162461bcd60e51b81526004016106a5906131bb565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610ba4611c6c565b610bae6000611cc6565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bf85760405162461bcd60e51b81526004016106a59061326d565b610c03838383611d18565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c4157610c41612a64565b604051908082528060200260200182016040528015610c6a578160200160208202803683370190505b50905060005b82811015610cfb576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610caf57610caf6132cb565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610ce857610ce86132cb565b6020908102919091010152600101610c70565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d7757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d59575b50505050509150935093505050915091565b80516020808301516040808501516060860151608087015160a08801519351600097610db99790969591016132e1565b604051602081830303815290604052805190602001209050919050565b60cb546001600160a01b03163314610e005760405162461bcd60e51b81526004016106a590613203565b8060005b81811015610c035760d16000858584818110610e2257610e226132cb565b9050602002016020810190610e379190612a1e565b6001600160a01b0316815260208101919091526040016000205460ff1615610f4257600060d16000868685818110610e7157610e716132cb565b9050602002016020810190610e869190612a1e565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610ee157610ee16132cb565b9050602002016020810190610ef69190612a1e565b6040516001600160a01b03909116815260200160405180910390a1610f42848483818110610f2657610f266132cb565b9050602002016020810190610f3b9190612a1e565b6000611bfe565b600101610e04565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f925760405162461bcd60e51b81526004016106a59061326d565b610c0384848484611e74565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fe65760405162461bcd60e51b81526004016106a59061326d565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b15801561103857600080fd5b505af115801561104c573d6000803e3d6000fd5b5050505050505050565b61105e611c6c565b6106b781612101565b60ce602052816000526040600020818154811061108357600080fd5b6000918252602090912001546001600160a01b03169150829050565b600080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110ea5760405162461bcd60e51b81526004016106a59061326d565b60006110f584610d89565b600081815260cf60205260408120549192509060ff161561112a5750600081815260cf60205260409020805460ff1916905560015b92509050915091565b600054610100900460ff16158080156111535750600054600160ff909116105b8061116d5750303b15801561116d575060005460ff166001145b6111d05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a5565b6000805460ff1916600117905580156111f3576000805461ff0019166101001790555b6111fb61216a565b60c9556112088383612201565b61121185611cc6565b61121a84612101565b8015611260576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146112915760405162461bcd60e51b81526004016106a590613203565b82811461131a5760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a4016106a5565b8260005b818110156114885760d1600087878481811061133c5761133c6132cb565b90506020020160208101906113519190612a1e565b6001600160a01b0316815260208101919091526040016000205460ff1661148057600160d1600088888581811061138a5761138a6132cb565b905060200201602081019061139f9190612a1e565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106113fa576113fa6132cb565b905060200201602081019061140f9190612a1e565b6040516001600160a01b03909116815260200160405180910390a161148086868381811061143f5761143f6132cb565b90506020020160208101906114549190612a1e565b858584818110611466576114666132cb565b905060200201602081019061147b919061335a565b611bfe565b60010161131e565b505050505050565b6098546000908190600190811614156114e75760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b6114ef611816565b6114fb33868686611a2f565b91506115076001606555565b509392505050565b611517611c6c565b6001600160a01b03811661157c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a5565b6106b781611cc6565b60007f00000000000000000000000000000000000000000000000000000000000000004614156115b6575060c95490565b6115be61216a565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163a9190613137565b6001600160a01b0316336001600160a01b03161461166a5760405162461bcd60e51b81526004016106a590613154565b6098541981196098541916146116e85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016107ee565b6001600160a01b0381166117ad5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016106a5565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b600260655414156118695760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a5565b6002606555565b6001600160a01b0383163b1561198f57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906118b090869086906004016133cf565b602060405180830381865afa1580156118cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f191906133e8565b6001600160e01b0319161461198a5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016106a5565b505050565b826001600160a01b03166119a383836122e7565b6001600160a01b03161461198a5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016106a5565b6001600160a01b038316600090815260d16020526040812054849060ff16611ad55760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a4016106a5565b611aea6001600160a01b038516338786612303565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d9190613412565b9150611b6b86858785611e74565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611bdd57600080fd5b505af1158015611bf1573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610bae5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a5565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611d8d5760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f21000060648201526084016106a5565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611e1f5760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b60648201526084016106a5565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611e6757611e5d858561235d565b6001915050611e6d565b60009150505b9392505050565b6001600160a01b038416611ef05760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f20616464726573730000000000000060648201526084016106a5565b80611f5c5760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b60648201526084016106a5565b6001600160a01b03808516600090815260cd602090815260408083209386168352929052205461206d576001600160a01b038416600090815260ce60209081526040909120541061202e5760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a4016106a5565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd60209081526040808320938616835292905290812080548392906120a4908490613441565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561222257506001600160a01b03821615155b6122a45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610ad18261171f565b60008060006122f6858561254f565b9150915061150781612595565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610c039085906126e3565b6001600160a01b038216600090815260ce6020526040812054905b81811015612478576001600160a01b03848116600090815260ce60205260409020805491851691839081106123af576123af6132cb565b6000918252602090912001546001600160a01b03161415612470576001600160a01b038416600090815260ce6020526040902080546123f090600190613459565b81548110612400576124006132cb565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061243d5761243d6132cb565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612478565b600101612378565b818114156125005760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a4016106a5565b6001600160a01b038416600090815260ce6020526040902080548061252757612527613470565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156125865760208301516040840151606085015160001a61257a878285856127b8565b9450945050505061258e565b506000905060025b9250929050565b60008160048111156125a9576125a9613486565b14156125b25750565b60018160048111156125c6576125c6613486565b14156126145760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106a5565b600281600481111561262857612628613486565b14156126765760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106a5565b600381600481111561268a5761268a613486565b14156106b75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106a5565b6000612738826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661287c9092919063ffffffff16565b9050805160001480612759575080806020019051810190612759919061319e565b61198a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127ef5750600090506003612873565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612843573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661286c57600060019250925050612873565b9150600090505b94509492505050565b606061288b8484600085612893565b949350505050565b6060824710156128f45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a5565b600080866001600160a01b03168587604051612910919061349c565b60006040518083038185875af1925050503d806000811461294d576040519150601f19603f3d011682016040523d82523d6000602084013e612952565b606091505b50915091506129638783838761296e565b979650505050505050565b606083156129da5782516129d3576001600160a01b0385163b6129d35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a5565b508161288b565b61288b83838151156129ef5781518083602001fd5b8060405162461bcd60e51b81526004016106a591906134b8565b6001600160a01b03811681146106b757600080fd5b600060208284031215612a3057600080fd5b8135611e6d81612a09565b600060208284031215612a4d57600080fd5b5035919050565b8035612a5f81612a09565b919050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715612a9d57612a9d612a64565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612acc57612acc612a64565b604052919050565b60008060008060008060c08789031215612aed57600080fd5b8635612af881612a09565b9550602087810135612b0981612a09565b9550604088013594506060880135612b2081612a09565b93506080880135925060a088013567ffffffffffffffff80821115612b4457600080fd5b818a0191508a601f830112612b5857600080fd5b813581811115612b6a57612b6a612a64565b612b7c601f8201601f19168501612aa3565b91508082528b84828501011115612b9257600080fd5b80848401858401376000848284010152508093505050509295509295509295565b80151581146106b757600080fd5b60008060408385031215612bd457600080fd5b8235612bdf81612a09565b91506020830135612bef81612bb3565b809150509250929050565b600060208284031215612c0c57600080fd5b813560ff81168114611e6d57600080fd5b60008060408385031215612c3057600080fd5b8235612c3b81612a09565b91506020830135612bef81612a09565b600080600060608486031215612c6057600080fd5b8335612c6b81612a09565b92506020840135612c7b81612a09565b929592945050506040919091013590565b600081518084526020808501945080840160005b83811015612cc55781516001600160a01b031687529582019590820190600101612ca0565b509495945050505050565b600081518084526020808501945080840160005b83811015612cc557815187529582019590820190600101612ce4565b604081526000612d136040830185612c8c565b8281036020840152612d258185612cd0565b95945050505050565b600067ffffffffffffffff821115612d4857612d48612a64565b5060051b60200190565b600082601f830112612d6357600080fd5b81356020612d78612d7383612d2e565b612aa3565b82815260059290921b84018101918181019086841115612d9757600080fd5b8286015b84811015610a92578035612dae81612a09565b8352918301918301612d9b565b600082601f830112612dcc57600080fd5b81356020612ddc612d7383612d2e565b82815260059290921b84018101918181019086841115612dfb57600080fd5b8286015b84811015610a925780358352918301918301612dff565b600060408284031215612e2857600080fd5b6040516040810181811067ffffffffffffffff82111715612e4b57612e4b612a64565b6040529050808235612e5c81612a09565b815260208301356bffffffffffffffffffffffff81168114612e7d57600080fd5b6020919091015292915050565b803563ffffffff81168114612a5f57600080fd5b600060208284031215612eb057600080fd5b813567ffffffffffffffff80821115612ec857600080fd5b9083019060e08286031215612edc57600080fd5b612ee4612a7a565b823582811115612ef357600080fd5b612eff87828601612d52565b825250602083013582811115612f1457600080fd5b612f2087828601612dbb565b602083015250612f3260408401612a54565b6040820152612f448660608501612e16565b6060820152612f5560a08401612e8a565b6080820152612f6660c08401612a54565b60a082015295945050505050565b60008083601f840112612f8657600080fd5b50813567ffffffffffffffff811115612f9e57600080fd5b6020830191508360208260051b850101111561258e57600080fd5b60008060208385031215612fcc57600080fd5b823567ffffffffffffffff811115612fe357600080fd5b612fef85828601612f74565b90969095509350505050565b6000806000806080858703121561301157600080fd5b843561301c81612a09565b9350602085013561302c81612a09565b9250604085013561303c81612a09565b9396929550929360600135925050565b6000806000806080858703121561306257600080fd5b843561306d81612a09565b9350602085013561307d81612a09565b925060408501359150606085013561309481612a09565b939692955090935050565b600080604083850312156130b257600080fd5b82356130bd81612a09565b946020939093013593505050565b600080600080604085870312156130e157600080fd5b843567ffffffffffffffff808211156130f957600080fd5b61310588838901612f74565b9096509450602087013591508082111561311e57600080fd5b5061312b87828801612f74565b95989497509550505050565b60006020828403121561314957600080fd5b8151611e6d81612a09565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156131b057600080fd5b8151611e6d81612bb3565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60e0815260006132f460e0830189612c8c565b82810360208401526133068189612cd0565b6001600160a01b0397881660408501528651881660608501526020909601516bffffffffffffffffffffffff166080840152505063ffffffff9290921660a083015290921660c09092019190915292915050565b60006020828403121561336c57600080fd5b8135611e6d81612bb3565b60005b8381101561339257818101518382015260200161337a565b83811115610c035750506000910152565b600081518084526133bb816020860160208601613377565b601f01601f19169290920160200192915050565b82815260406020820152600061288b60408301846133a3565b6000602082840312156133fa57600080fd5b81516001600160e01b031981168114611e6d57600080fd5b60006020828403121561342457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156134545761345461342b565b500190565b60008282101561346b5761346b61342b565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600082516134ae818460208701613377565b9190910192915050565b602081526000611e6d60208301846133a356fea264697066735822122080d9b90301e399711dff27b67d3e4d73565b977156bc3a0413eb7dd9c083d73e64736f6c634300080c0033", + Bin: "0x6101006040523480156200001257600080fd5b50604051620036f1380380620036f183398101604081905262000035916200013f565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000193565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000124576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013c57600080fd5b50565b6000806000606084860312156200015557600080fd5b8351620001628162000126565b6020850151909350620001758162000126565b6040850151909250620001888162000126565b809150509250925092565b60805160a05160c05160e051613501620001f060003960006115890152600061048f015260006102a601526000818161059b01528181610bbb01528181610f5501528181610fa9015281816110ad0152611b9901526135016000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c806394f649dd11610130578063c6656702116100b8578063df5cf7231161007c578063df5cf72314610596578063e7a050aa146105bd578063f2fde38b146105d0578063f698da25146105e3578063fabc1cbc146105eb57600080fd5b8063c665670214610520578063cbc2bd6214610533578063cd293f6f14610546578063cf756fdf14610570578063df5b35471461058357600080fd5b8063b43b514b116100ff578063b43b514b146104b1578063b5d8b5b8146104c4578063c3c6b3a9146104d7578063c4623ea1146104fa578063c608c7f31461050d57600080fd5b806394f649dd14610433578063967fc0d2146104545780639b4da03d14610467578063b13442711461048a57600080fd5b80635c975abb116101b35780637ecebe00116101825780637ecebe00146103b3578063886f1195146103d35780638b8aac3c146103e65780638c80d4e51461040f5780638da5cb5b1461042257600080fd5b80635c975abb14610355578063663c1de41461035d578063715018a6146103805780637a7e0d921461038857600080fd5b80634665bcda116101fa5780634665bcda146102a157806348825e94146102e05780634e5a426314610307578063595c6a671461031a5780635ac86ab71461032257600080fd5b806310d67a2f1461022c578063136439dd1461024157806320606b701461025457806332e89ace1461028e575b600080fd5b61023f61023a366004612a1e565b6105fe565b005b61023f61024f366004612a3b565b6106ba565b61027b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61027b61029c366004612ad4565b6107f9565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610285565b61027b7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61023f610315366004612bc1565b610a9d565b61023f610ad5565b610345610330366004612bfa565b609854600160ff9092169190911b9081161490565b6040519015158152602001610285565b60985461027b565b61034561036b366004612a1e565b60d16020526000908152604090205460ff1681565b61023f610b9c565b61027b610396366004612c1d565b60cd60209081526000928352604080842090915290825290205481565b61027b6103c1366004612a1e565b60ca6020526000908152604090205481565b6097546102c8906001600160a01b031681565b61027b6103f4366004612a1e565b6001600160a01b0316600090815260ce602052604090205490565b61023f61041d366004612c4b565b610bb0565b6033546001600160a01b03166102c8565b610446610441366004612a1e565b610c09565b604051610285929190612d00565b60cb546102c8906001600160a01b031681565b610345610475366004612a1e565b60d36020526000908152604090205460ff1681565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b61027b6104bf366004612e9e565b610d89565b61023f6104d2366004612fb9565b610dd6565b6103456104e5366004612a3b565b60cf6020526000908152604090205460ff1681565b61023f610508366004612ffb565b610f4a565b61023f61051b36600461304c565b610f9e565b61023f61052e366004612a1e565b611056565b6102c861054136600461309f565b611067565b610559610554366004612e9e565b61109f565b604080519215158352602083019190915201610285565b61023f61057e366004612ffb565b611133565b61023f6105913660046130cb565b611267565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b61027b6105cb366004612c4b565b611490565b61023f6105de366004612a1e565b61150f565b61027b611585565b61023f6105f9366004612a3b565b6115c3565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610651573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106759190613137565b6001600160a01b0316336001600160a01b0316146106ae5760405162461bcd60e51b81526004016106a590613154565b60405180910390fd5b6106b78161171f565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610702573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610726919061319e565b6107425760405162461bcd60e51b81526004016106a5906131bb565b609854818116146107bb5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156108505760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b610858611816565b6001600160a01b038816600090815260d3602052604090205460ff16156108fa5760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a4016106a5565b4284101561097c5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a4016106a5565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a34611585565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a77888288611870565b610a83888c8c8c611a2f565b9450505050610a926001606555565b509695505050505050565b60cb546001600160a01b03163314610ac75760405162461bcd60e51b81526004016106a590613203565b610ad18282611bfe565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610b1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b41919061319e565b610b5d5760405162461bcd60e51b81526004016106a5906131bb565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610ba4611c6c565b610bae6000611cc6565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bf85760405162461bcd60e51b81526004016106a59061326d565b610c03838383611d18565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c4157610c41612a64565b604051908082528060200260200182016040528015610c6a578160200160208202803683370190505b50905060005b82811015610cfb576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610caf57610caf6132cb565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610ce857610ce86132cb565b6020908102919091010152600101610c70565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d7757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d59575b50505050509150935093505050915091565b80516020808301516040808501516060860151608087015160a08801519351600097610db99790969591016132e1565b604051602081830303815290604052805190602001209050919050565b60cb546001600160a01b03163314610e005760405162461bcd60e51b81526004016106a590613203565b8060005b81811015610c035760d16000858584818110610e2257610e226132cb565b9050602002016020810190610e379190612a1e565b6001600160a01b0316815260208101919091526040016000205460ff1615610f4257600060d16000868685818110610e7157610e716132cb565b9050602002016020810190610e869190612a1e565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610ee157610ee16132cb565b9050602002016020810190610ef69190612a1e565b6040516001600160a01b03909116815260200160405180910390a1610f42848483818110610f2657610f266132cb565b9050602002016020810190610f3b9190612a1e565b6000611bfe565b600101610e04565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f925760405162461bcd60e51b81526004016106a59061326d565b610c0384848484611e74565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fe65760405162461bcd60e51b81526004016106a59061326d565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b15801561103857600080fd5b505af115801561104c573d6000803e3d6000fd5b5050505050505050565b61105e611c6c565b6106b781612101565b60ce602052816000526040600020818154811061108357600080fd5b6000918252602090912001546001600160a01b03169150829050565b600080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110ea5760405162461bcd60e51b81526004016106a59061326d565b60006110f584610d89565b600081815260cf60205260408120549192509060ff161561112a5750600081815260cf60205260409020805460ff1916905560015b92509050915091565b600054610100900460ff16158080156111535750600054600160ff909116105b8061116d5750303b15801561116d575060005460ff166001145b6111d05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a5565b6000805460ff1916600117905580156111f3576000805461ff0019166101001790555b6111fb61216a565b60c9556112088383612201565b61121185611cc6565b61121a84612101565b8015611260576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146112915760405162461bcd60e51b81526004016106a590613203565b82811461131a5760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a4016106a5565b8260005b818110156114885760d1600087878481811061133c5761133c6132cb565b90506020020160208101906113519190612a1e565b6001600160a01b0316815260208101919091526040016000205460ff1661148057600160d1600088888581811061138a5761138a6132cb565b905060200201602081019061139f9190612a1e565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106113fa576113fa6132cb565b905060200201602081019061140f9190612a1e565b6040516001600160a01b03909116815260200160405180910390a161148086868381811061143f5761143f6132cb565b90506020020160208101906114549190612a1e565b858584818110611466576114666132cb565b905060200201602081019061147b919061335a565b611bfe565b60010161131e565b505050505050565b6098546000908190600190811614156114e75760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b6114ef611816565b6114fb33868686611a2f565b91506115076001606555565b509392505050565b611517611c6c565b6001600160a01b03811661157c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a5565b6106b781611cc6565b60007f00000000000000000000000000000000000000000000000000000000000000004614156115b6575060c95490565b6115be61216a565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163a9190613137565b6001600160a01b0316336001600160a01b03161461166a5760405162461bcd60e51b81526004016106a590613154565b6098541981196098541916146116e85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016107ee565b6001600160a01b0381166117ad5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016106a5565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b600260655414156118695760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a5565b6002606555565b6001600160a01b0383163b1561198f57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906118b090869086906004016133cf565b602060405180830381865afa1580156118cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f191906133e8565b6001600160e01b0319161461198a5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016106a5565b505050565b826001600160a01b03166119a383836122e7565b6001600160a01b03161461198a5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016106a5565b6001600160a01b038316600090815260d16020526040812054849060ff16611ad55760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a4016106a5565b611aea6001600160a01b038516338786612303565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d9190613412565b9150611b6b86858785611e74565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611bdd57600080fd5b505af1158015611bf1573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610bae5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a5565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611d8d5760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f21000060648201526084016106a5565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611e1f5760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b60648201526084016106a5565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611e6757611e5d858561235d565b6001915050611e6d565b60009150505b9392505050565b6001600160a01b038416611ef05760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f20616464726573730000000000000060648201526084016106a5565b80611f5c5760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b60648201526084016106a5565b6001600160a01b03808516600090815260cd602090815260408083209386168352929052205461206d576001600160a01b038416600090815260ce60209081526040909120541061202e5760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a4016106a5565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd60209081526040808320938616835292905290812080548392906120a4908490613441565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561222257506001600160a01b03821615155b6122a45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610ad18261171f565b60008060006122f6858561254f565b9150915061150781612595565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610c039085906126e3565b6001600160a01b038216600090815260ce6020526040812054905b81811015612478576001600160a01b03848116600090815260ce60205260409020805491851691839081106123af576123af6132cb565b6000918252602090912001546001600160a01b03161415612470576001600160a01b038416600090815260ce6020526040902080546123f090600190613459565b81548110612400576124006132cb565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061243d5761243d6132cb565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612478565b600101612378565b818114156125005760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a4016106a5565b6001600160a01b038416600090815260ce6020526040902080548061252757612527613470565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156125865760208301516040840151606085015160001a61257a878285856127b8565b9450945050505061258e565b506000905060025b9250929050565b60008160048111156125a9576125a9613486565b14156125b25750565b60018160048111156125c6576125c6613486565b14156126145760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106a5565b600281600481111561262857612628613486565b14156126765760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106a5565b600381600481111561268a5761268a613486565b14156106b75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106a5565b6000612738826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661287c9092919063ffffffff16565b9050805160001480612759575080806020019051810190612759919061319e565b61198a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127ef5750600090506003612873565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612843573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661286c57600060019250925050612873565b9150600090505b94509492505050565b606061288b8484600085612893565b949350505050565b6060824710156128f45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a5565b600080866001600160a01b03168587604051612910919061349c565b60006040518083038185875af1925050503d806000811461294d576040519150601f19603f3d011682016040523d82523d6000602084013e612952565b606091505b50915091506129638783838761296e565b979650505050505050565b606083156129da5782516129d3576001600160a01b0385163b6129d35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a5565b508161288b565b61288b83838151156129ef5781518083602001fd5b8060405162461bcd60e51b81526004016106a591906134b8565b6001600160a01b03811681146106b757600080fd5b600060208284031215612a3057600080fd5b8135611e6d81612a09565b600060208284031215612a4d57600080fd5b5035919050565b8035612a5f81612a09565b919050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715612a9d57612a9d612a64565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612acc57612acc612a64565b604052919050565b60008060008060008060c08789031215612aed57600080fd5b8635612af881612a09565b9550602087810135612b0981612a09565b9550604088013594506060880135612b2081612a09565b93506080880135925060a088013567ffffffffffffffff80821115612b4457600080fd5b818a0191508a601f830112612b5857600080fd5b813581811115612b6a57612b6a612a64565b612b7c601f8201601f19168501612aa3565b91508082528b84828501011115612b9257600080fd5b80848401858401376000848284010152508093505050509295509295509295565b80151581146106b757600080fd5b60008060408385031215612bd457600080fd5b8235612bdf81612a09565b91506020830135612bef81612bb3565b809150509250929050565b600060208284031215612c0c57600080fd5b813560ff81168114611e6d57600080fd5b60008060408385031215612c3057600080fd5b8235612c3b81612a09565b91506020830135612bef81612a09565b600080600060608486031215612c6057600080fd5b8335612c6b81612a09565b92506020840135612c7b81612a09565b929592945050506040919091013590565b600081518084526020808501945080840160005b83811015612cc55781516001600160a01b031687529582019590820190600101612ca0565b509495945050505050565b600081518084526020808501945080840160005b83811015612cc557815187529582019590820190600101612ce4565b604081526000612d136040830185612c8c565b8281036020840152612d258185612cd0565b95945050505050565b600067ffffffffffffffff821115612d4857612d48612a64565b5060051b60200190565b600082601f830112612d6357600080fd5b81356020612d78612d7383612d2e565b612aa3565b82815260059290921b84018101918181019086841115612d9757600080fd5b8286015b84811015610a92578035612dae81612a09565b8352918301918301612d9b565b600082601f830112612dcc57600080fd5b81356020612ddc612d7383612d2e565b82815260059290921b84018101918181019086841115612dfb57600080fd5b8286015b84811015610a925780358352918301918301612dff565b600060408284031215612e2857600080fd5b6040516040810181811067ffffffffffffffff82111715612e4b57612e4b612a64565b6040529050808235612e5c81612a09565b815260208301356bffffffffffffffffffffffff81168114612e7d57600080fd5b6020919091015292915050565b803563ffffffff81168114612a5f57600080fd5b600060208284031215612eb057600080fd5b813567ffffffffffffffff80821115612ec857600080fd5b9083019060e08286031215612edc57600080fd5b612ee4612a7a565b823582811115612ef357600080fd5b612eff87828601612d52565b825250602083013582811115612f1457600080fd5b612f2087828601612dbb565b602083015250612f3260408401612a54565b6040820152612f448660608501612e16565b6060820152612f5560a08401612e8a565b6080820152612f6660c08401612a54565b60a082015295945050505050565b60008083601f840112612f8657600080fd5b50813567ffffffffffffffff811115612f9e57600080fd5b6020830191508360208260051b850101111561258e57600080fd5b60008060208385031215612fcc57600080fd5b823567ffffffffffffffff811115612fe357600080fd5b612fef85828601612f74565b90969095509350505050565b6000806000806080858703121561301157600080fd5b843561301c81612a09565b9350602085013561302c81612a09565b9250604085013561303c81612a09565b9396929550929360600135925050565b6000806000806080858703121561306257600080fd5b843561306d81612a09565b9350602085013561307d81612a09565b925060408501359150606085013561309481612a09565b939692955090935050565b600080604083850312156130b257600080fd5b82356130bd81612a09565b946020939093013593505050565b600080600080604085870312156130e157600080fd5b843567ffffffffffffffff808211156130f957600080fd5b61310588838901612f74565b9096509450602087013591508082111561311e57600080fd5b5061312b87828801612f74565b95989497509550505050565b60006020828403121561314957600080fd5b8151611e6d81612a09565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156131b057600080fd5b8151611e6d81612bb3565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60e0815260006132f460e0830189612c8c565b82810360208401526133068189612cd0565b6001600160a01b0397881660408501528651881660608501526020909601516bffffffffffffffffffffffff166080840152505063ffffffff9290921660a083015290921660c09092019190915292915050565b60006020828403121561336c57600080fd5b8135611e6d81612bb3565b60005b8381101561339257818101518382015260200161337a565b83811115610c035750506000910152565b600081518084526133bb816020860160208601613377565b601f01601f19169290920160200192915050565b82815260406020820152600061288b60408301846133a3565b6000602082840312156133fa57600080fd5b81516001600160e01b031981168114611e6d57600080fd5b60006020828403121561342457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156134545761345461342b565b500190565b60008282101561346b5761346b61342b565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600082516134ae818460208701613377565b9190910192915050565b602081526000611e6d60208301846133a356fea2646970667358221220a92b317dba0063d8e610036c35b9f7e12f4f6655ef505a5ff549900ccf9cd58e64736f6c634300080c0033", } // StrategyManagerABI is the input ABI used to generate the binding from.