diff --git a/pkg/bindings/AllocationManager/binding.go b/pkg/bindings/AllocationManager/binding.go index 43197b9688..c8f6118530 100644 --- a/pkg/bindings/AllocationManager/binding.go +++ b/pkg/bindings/AllocationManager/binding.go @@ -81,7 +81,7 @@ type OperatorSet struct { // AllocationManagerMetaData contains all meta data concerning the AllocationManager contract. var AllocationManagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_permissionController\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"},{\"name\":\"_DEALLOCATION_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_ALLOCATION_CONFIGURATION_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ALLOCATION_CONFIGURATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEALLOCATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addStrategiesToOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"clearDeallocationQueue\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"numToClear\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.CreateSetParams[]\",\"components\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRedistributingOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.CreateSetParams[]\",\"components\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}]},{\"name\":\"redistributionRecipients\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterFromOperatorSets\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.DeregisterParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatableMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedStake\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocation\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.Allocation\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocations\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getEncumberedMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudesAtBlock\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMemberCount\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMembers\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinimumSlashableStake\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"futureBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"slashableStake\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetCount\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRedistributionRecipient\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRegisteredSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSlashCount\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategiesInOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategyAllocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isMemberOfOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorRedistributable\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSlashable\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRedistributingOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyAllocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.AllocateParams[]\",\"components\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"newMagnitudes\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}]}],\"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\":\"permissionController\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerForOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.RegisterParams\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slashOperator\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.SlashingParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadsToSlash\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"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\":\"AVSRegistrarSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIAVSRegistrar\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationDelaySet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"magnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EncumberedMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"encumberedMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"maxMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAddedToOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSlashed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadSlashed\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"description\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"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\":\"RedistributionAddressSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"redistributionRecipient\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyAddedToOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"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\":\"error\",\"name\":\"AlreadyMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Empty\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAVSRegistrar\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPermissions\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSnapshotOrdering\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStrategy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWadToSlash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ModificationAlreadyPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NonexistentAVSMetadata\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotSlashable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OutOfBounds\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SameMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategiesMustBeInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyAlreadyInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"UninitializedAllocationDelay\",\"inputs\":[]}]", - Bin: "0x610140604052348015610010575f5ffd5b5060405161611f38038061611f83398101604081905261002f916101e6565b8084878585896001600160a01b03811661005c576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05263ffffffff91821660c0521660e052166101005261008d816100a5565b610120525061009a6100eb565b50505050505061034a565b5f5f829050601f815111156100d8578260405163305a27a960e01b81526004016100cf91906102ef565b60405180910390fd5b80516100e382610324565b179392505050565b5f54610100900460ff16156101525760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100cf565b5f5460ff908116146101a1575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101b7575f5ffd5b50565b805163ffffffff811681146101cd575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156101fb575f5ffd5b8651610206816101a3565b6020880151909650610217816101a3565b6040880151909550610228816101a3565b9350610236606088016101ba565b9250610244608088016101ba565b60a08801519092506001600160401b0381111561025f575f5ffd5b8701601f8101891361026f575f5ffd5b80516001600160401b03811115610288576102886101d2565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102b6576102b66101d2565b6040528181528282016020018b10156102cd575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295509295565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610344575f198160200360031b1b821691505b50919050565b60805160a05160c05160e0516101005161012051615d416103de5f395f61132201525f81816104b30152612c4601525f81816106260152613b5701525f81816103bc0152818161171b0152611dee01525f818161079401528181611356015281816113c0015281816120ce01528181612eba015261375701525f818161064d01528181612b12015261416f0152615d415ff3fe608060405234801561000f575f5ffd5b50600436106102e5575f3560e01c80635c975abb11610195578063adc2e3d9116100e4578063d3d96ff41161009e578063f231bd0811610079578063f231bd08146107b6578063f605ce08146107c9578063fabc1cbc146107dc578063fe4b84df146107ef575f5ffd5b8063d3d96ff414610769578063dc2af6921461077c578063df5cf7231461078f575f5ffd5b8063adc2e3d9146106db578063b2447af7146106ee578063b66bd98914610701578063b9fbaed114610714578063ba1a84e514610743578063c221d8ae14610756575f5ffd5b80637bc1ef611161014f57806394d7d00c1161012a57806394d7d00c1461068f578063952899ee146106a2578063a9333ec8146106b5578063a9821821146106c8575f5ffd5b80637bc1ef6114610621578063886f1195146106485780638ce648541461066f575f5ffd5b80635c975abb146105a2578063670d3ba2146105aa5780636cfb4481146105bd5780636e3492b5146105e85780636e875dba146105fb57806379ae50cd1461060e575f5ffd5b806336352057116102515780634cfd29391161020b57806354fd4d50116101e657806354fd4d501461054f57806356c483e614610564578063595c6a67146105775780635ac86ab71461057f575f5ffd5b80634cfd29391461050857806350feea2014610529578063547afb871461053c575f5ffd5b8063363520571461044c57806340120dab1461046d5780634177a87c1461048e5780634657e26a146104ae5780634a10ffe5146104d55780634b5046ef146104f5575f5ffd5b8063261f84e0116102a2578063261f84e0146103a45780632981eb77146103b75780632b453a9a146103f35780632bab2c4a14610413578063304c10cd1461042657806332a879e414610439575f5ffd5b80630f3df50e146102e957806310e1b9b8146103195780631352c3e614610339578063136439dd1461035c57806315fe502814610371578063260dc75814610391575b5f5ffd5b6102fc6102f7366004614b67565b610802565b6040516001600160a01b0390911681526020015b60405180910390f35b61032c610327366004614b81565b610843565b6040516103109190614bc8565b61034c610347366004614bfb565b61087c565b6040519015158152602001610310565b61036f61036a366004614c2f565b6108f7565b005b61038461037f366004614c46565b610931565b6040516103109190614cc4565b61034c61039f366004614b67565b610a48565b61036f6103b2366004614d16565b610a79565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610310565b610406610401366004614dfb565b610b22565b6040516103109190614e9e565b610406610421366004614f01565b610b38565b6102fc610434366004614c46565b610bd7565b61036f610447366004614f85565b610c06565b61045f61045a366004615005565b610d43565b604051610310929190615057565b61048061047b36600461506f565b610e86565b6040516103109291906150fc565b6104a161049c366004614b67565b611001565b6040516103109190615159565b6102fc7f000000000000000000000000000000000000000000000000000000000000000081565b6104e86104e336600461516b565b611025565b60405161031091906151ae565b61036f610503366004614f85565b6110cd565b61051b610516366004614b67565b611160565b604051908152602001610310565b61036f6105373660046151f9565b611182565b6104e861054a366004615257565b611273565b61055761131b565b6040516103109190615299565b61036f6105723660046152ce565b61134b565b61036f611450565b61034c61058d3660046152f8565b606654600160ff9092169190911b9081161490565b60665461051b565b61034c6105b8366004614bfb565b611464565b6105d06105cb36600461506f565b611490565b6040516001600160401b039091168152602001610310565b61036f6105f636600461532e565b6114a5565b6104a1610609366004614b67565b611868565b61038461061c366004614c46565b611879565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b6102fc7f000000000000000000000000000000000000000000000000000000000000000081565b61068261067d36600461535f565b611953565b60405161031091906153a2565b6104e861069d3660046153b4565b611a0f565b61036f6106b036600461540f565b611afb565b6105d06106c336600461506f565b611f9c565b61036f6106d63660046155b8565b611fcb565b61036f6106e9366004615636565b61207d565b61051b6106fc366004614b67565b6123c6565b61036f61070f3660046151f9565b6123e8565b610727610722366004614c46565b612542565b60408051921515835263ffffffff909116602083015201610310565b61051b610751366004614c46565b6125dc565b6104a1610764366004614bfb565b6125fc565b61036f61077736600461506f565b612625565b61034c61078a366004614c46565b612752565b6102fc7f000000000000000000000000000000000000000000000000000000000000000081565b61034c6107c4366004614b67565b612785565b6105d06107d736600461506f565b6127a4565b61036f6107ea366004614c2f565b6127b0565b61036f6107fd366004614c2f565b61281d565b5f5f60a65f6108108561292e565b815260208101919091526040015f20546001600160a01b031690508015610837578061083c565b620e16e45b9392505050565b604080516060810182525f80825260208201819052918101829052906108728561086c8661292e565b85612991565b9695505050505050565b6001600160a01b0382165f908152609e6020526040812081908161089f8561292e565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108ed5750806020015163ffffffff164311155b9150505b92915050565b6108ff612afd565b60665481811681146109245760405163c61dca5d60e01b815260040160405180910390fd5b61092d82612ba0565b5050565b6001600160a01b0381165f908152609d602052604081206060919061095590612bdd565b90505f816001600160401b0381111561097057610970614a77565b6040519080825280602002602001820160405280156109b457816020015b604080518082019091525f808252602082015281526020019060019003908161098e5790505b5090505f5b82811015610a40576001600160a01b0385165f908152609d60205260409020610a1b906109e69083612be6565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a2d57610a2d615678565b60209081029190910101526001016109b9565b509392505050565b60208082015182516001600160a01b03165f9081526098909252604082206108f19163ffffffff90811690612bf116565b82610a8381612c08565b610aa05760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610ad8576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610b1b57610b1385858584818110610af857610af8615678565b9050602002810190610b0a919061568c565b620e16e4612cb2565b600101610ada565b5050505050565b6060610b3084848443612e66565b949350505050565b6060610b4685858585612e66565b90505f5b8451811015610bce57610b76858281518110610b6857610b68615678565b60200260200101518761087c565b610bc6575f5b8451811015610bc4575f838381518110610b9857610b98615678565b60200260200101518281518110610bb157610bb1615678565b6020908102919091010152600101610b7c565b505b600101610b4a565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610bff578061083c565b5090919050565b84610c1081612c08565b610c2d5760405163932d94f760e01b815260040160405180910390fd5b838214610c4d576040516343714afd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260a4602052604090205460ff16610c85576040516348f7dbb960e01b815260040160405180910390fd5b5f5b84811015610d3a575f848483818110610ca257610ca2615678565b9050602002016020810190610cb79190614c46565b6001600160a01b031603610cde576040516339b190bb60e11b815260040160405180910390fd5b610d3287878784818110610cf457610cf4615678565b9050602002810190610d06919061568c565b868685818110610d1857610d18615678565b9050602002016020810190610d2d9190614c46565b612cb2565b600101610c87565b50505050505050565b5f60606001610d5181613153565b84610d5b81612c08565b610d785760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280886001600160a01b03168152602001876020016020810190610da691906156aa565b63ffffffff1690529050610dbd60608701876156c3565b9050610dcc60408801886156c3565b905014610dec576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610e1e9163ffffffff90811690612bf116565b610e3b57604051631fb1705560e21b815260040160405180910390fd5b610e51610e4b6020880188614c46565b8261087c565b610e6e5760405163ebbff49760e01b815260040160405180910390fd5b610e788682613181565b945094505050509250929050565b6001600160a01b0382165f908152609d602052604081206060918291610eab90612bdd565b90505f816001600160401b03811115610ec657610ec6614a77565b604051908082528060200260200182016040528015610f0a57816020015b604080518082019091525f8082526020820152815260200190600190039081610ee45790505b5090505f826001600160401b03811115610f2657610f26614a77565b604051908082528060200260200182016040528015610f6f57816020015b604080516060810182525f80825260208083018290529282015282525f19909201910181610f445790505b5090505f5b83811015610ff2576001600160a01b0388165f908152609d60205260408120610fa1906109e69084612be6565b905080848381518110610fb657610fb6615678565b6020026020010181905250610fcc89828a610843565b838381518110610fde57610fde615678565b602090810291909101015250600101610f74565b509093509150505b9250929050565b60605f61083c60995f6110138661292e565b81526020019081526020015f206138c1565b60605f83516001600160401b0381111561104157611041614a77565b60405190808252806020026020018201604052801561106a578160200160208202803683370190505b5090505f5b8451811015610a405761109b85828151811061108d5761108d615678565b602002602001015185611f9c565b8282815181106110ad576110ad615678565b6001600160401b039092166020928302919091019091015260010161106f565b5f6110d781613153565b8382146110f7576040516343714afd60e01b815260040160405180910390fd5b5f5b84811015610d3a576111588787878481811061111757611117615678565b905060200201602081019061112c9190614c46565b86868581811061113e5761113e615678565b90506020020160208101906111539190615708565b6138cd565b6001016110f9565b5f60a55f61116d8461292e565b81526020019081526020015f20549050919050565b8361118c81612c08565b6111a95760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f938452609890529390912091926111e89291612bf116565b61120557604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d3a5761126b8286868481811061122557611225615678565b905060200201602081019061123a9190614c46565b61126660405180604001604052808c6001600160a01b031681526020018b63ffffffff16815250612785565b6139d1565b600101611207565b60605f82516001600160401b0381111561128f5761128f614a77565b6040519080825280602002602001820160405280156112b8578160200160208202803683370190505b5090505f5b8351811015610a40576112e9858583815181106112dc576112dc615678565b6020026020010151611f9c565b8282815181106112fb576112fb615678565b6001600160401b03909216602092830291909101909101526001016112bd565b60606113467f0000000000000000000000000000000000000000000000000000000000000000613a73565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114465761138482612c08565b6113a1576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611405573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114299190615729565b6114465760405163ccea9e6f60e01b815260040160405180910390fd5b61092d8282613ab0565b611458612afd565b6114625f19612ba0565b565b5f61083c83609a5f6114758661292e565b81526020019081526020015f20613c5c90919063ffffffff16565b5f5f61149c8484613c7d565b95945050505050565b60026114b081613153565b6114c56114c06020840184614c46565b612c08565b806114de57506114de6114c06040840160208501614c46565b6114fb576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b61150a60408401846156c3565b90508110156117cc575f60405180604001604052808560200160208101906115329190614c46565b6001600160a01b0316815260200161154d60408701876156c3565b8581811061155d5761155d615678565b905060200201602081019061157291906156aa565b63ffffffff1681525090506115bf816020015163ffffffff1660985f8760200160208101906115a19190614c46565b6001600160a01b0316815260208101919091526040015f2090612bf1565b6115dc57604051631fb1705560e21b815260040160405180910390fd5b609e5f6115ec6020870187614c46565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6116158361292e565b815260208101919091526040015f205460ff16611645576040516325131d4f60e01b815260040160405180910390fd5b61167f6116518261292e565b609c5f6116616020890189614c46565b6001600160a01b0316815260208101919091526040015f2090613dec565b506116b76116906020860186614c46565b609a5f61169c8561292e565b81526020019081526020015f20613df790919063ffffffff16565b506116c56020850185614c46565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe826040516116fd9190615748565b60405180910390a2604080518082019091525f8152602081016117407f00000000000000000000000000000000000000000000000000000000000000004361576a565b63ffffffff169052609e5f6117586020880188614c46565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6117818461292e565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff1990931692909217179055506001016114fd565b506117e06104346040840160208501614c46565b6001600160a01b031663303ca9566117fb6020850185614c46565b61180b6040860160208701614c46565b61181860408701876156c3565b6040518563ffffffff1660e01b815260040161183794939291906157bf565b5f604051808303815f87803b15801561184e575f5ffd5b505af1158015611860573d5f5f3e3d5ffd5b505050505050565b60606108f1609a5f6110138561292e565b6001600160a01b0381165f908152609c602052604081206060919061189d90612bdd565b90505f816001600160401b038111156118b8576118b8614a77565b6040519080825280602002602001820160405280156118fc57816020015b604080518082019091525f80825260208201528152602001906001900390816118d65790505b5090505f5b82811015610a40576001600160a01b0385165f908152609c6020526040902061192e906109e69083612be6565b82828151811061194057611940615678565b6020908102919091010152600101611901565b60605f84516001600160401b0381111561196f5761196f614a77565b6040519080825280602002602001820160405280156119b857816020015b604080516060810182525f80825260208083018290529282015282525f1990920191018161198d5790505b5090505f5b8551811015610bce576119ea8682815181106119db576119db615678565b60200260200101518686610843565b8282815181106119fc576119fc615678565b60209081029190910101526001016119bd565b60605f83516001600160401b03811115611a2b57611a2b614a77565b604051908082528060200260200182016040528015611a54578160200160208202803683370190505b5090505f5b8451811015610bce576001600160a01b0386165f90815260a1602052604081208651611ac992879291899086908110611a9457611a94615678565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f20613e0b90919063ffffffff16565b828281518110611adb57611adb615678565b6001600160401b0390921660209283029190910190910152600101611a59565b5f611b0581613153565b611b0e83612c08565b611b2b576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f611b3786612542565b9150915081611b595760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610b1b57838181518110611b7a57611b7a615678565b60200260200101516040015151848281518110611b9957611b99615678565b6020026020010151602001515114611bc4576040516343714afd60e01b815260040160405180910390fd5b5f848281518110611bd757611bd7615678565b602090810291909101810151518082015181516001600160a01b03165f90815260989093526040909220909250611c179163ffffffff90811690612bf116565b611c3457604051631fb1705560e21b815260040160405180910390fd5b5f611c3f878361087c565b90505f5b868481518110611c5557611c55615678565b60200260200101516020015151811015611f91575f878581518110611c7c57611c7c615678565b6020026020010151602001518281518110611c9957611c99615678565b60200260200101519050611cb0898261ffff6138cd565b5f5f611cbf8b61086c8861292e565b91509150806040015163ffffffff165f14611ced57604051630d8fcbe360e41b815260040160405180910390fd5b5f611cfa87858489613e1f565b9050611d3f825f01518c8a81518110611d1557611d15615678565b6020026020010151604001518781518110611d3257611d32615678565b6020026020010151613e55565b600f0b602083018190525f03611d6857604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b1215611eac578015611e2e57611de9611d898861292e565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b611e137f00000000000000000000000000000000000000000000000000000000000000004361576a565b611e1e90600161576a565b63ffffffff166040830152611f19565b611e4083602001518360200151613e6c565b6001600160401b031660208401528a518b9089908110611e6257611e62615678565b6020026020010151604001518581518110611e7f57611e7f615678565b6020908102919091018101516001600160401b031683525f9083015263ffffffff43166040830152611f19565b5f8260200151600f0b1315611f1957611ecd83602001518360200151613e6c565b6001600160401b039081166020850181905284519091161015611f0357604051636c9be0bf60e01b815260040160405180910390fd5b611f0d894361576a565b63ffffffff1660408301525b611f2e8c611f268961292e565b868686613e8b565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886611f63865f01518760200151613e6c565b8660400151604051611f799594939291906157eb565b60405180910390a1505060019092019150611c439050565b505050600101611b5f565b6001600160a01b038083165f90815260a160209081526040808320938516835292905290812061083c906140c3565b82611fd581612c08565b611ff25760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612034576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713848460405161206f929190615864565b60405180910390a250505050565b600261208881613153565b8261209281612c08565b6120af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015612113573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121379190615729565b6121545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b61216360208501856156c3565b905081101561232b57604080518082019091525f90806121866020880188614c46565b6001600160a01b031681526020018680602001906121a491906156c3565b858181106121b4576121b4615678565b90506020020160208101906121c991906156aa565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612205929190811690612bf116565b61222257604051631fb1705560e21b815260040160405180910390fd5b61222c868261087c565b1561224a57604051636c6c6e2760e11b815260040160405180910390fd5b6122736122568261292e565b6001600160a01b0388165f908152609c60205260409020906140d6565b5061229f86609a5f6122848561292e565b81526020019081526020015f206140e190919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e826040516122d99190615748565b60405180910390a26001600160a01b0386165f908152609e602052604081206001916123048461292e565b815260208101919091526040015f20805460ff191691151591909117905550600101612156565b5061233c6104346020850185614c46565b6001600160a01b031663c63fd502856123586020870187614c46565b61236560208801886156c3565b61237260408a018a615877565b6040518763ffffffff1660e01b8152600401612393969594939291906158b9565b5f604051808303815f87803b1580156123aa575f5ffd5b505af11580156123bc573d5f5f3e3d5ffd5b5050505050505050565b5f6108f1609a5f6123d68561292e565b81526020019081526020015f20612bdd565b836123f281612c08565b61240f5760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f9384526098905293909120919261244e9291612bf116565b61246b57604051631fb1705560e21b815260040160405180910390fd5b5f6124758261292e565b90505f5b848110156123bc576124be86868381811061249657612496615678565b90506020020160208101906124ab9190614c46565b5f84815260996020526040902090613df7565b6124db576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee8387878481811061250f5761250f615678565b90506020020160208101906125249190614c46565b604051612532929190615905565b60405180910390a1600101612479565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b9091041660608201819052849391929190158015906125c35750826060015163ffffffff164310155b156125d2575050604081015160015b9590945092505050565b6001600160a01b0381165f9081526098602052604081206108f190612bdd565b6001600160a01b0382165f908152609f60205260408120606091906108ed90826110138661292e565b8161262f81612c08565b61264c5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa158015612690573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126b49190615729565b6126d157604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361272981610bd7565b604080516001600160a01b039384168152929091166020830152015b60405180910390a1505050565b5f5f61275d83611879565b90505f61276984610931565b905061277584836140f5565b80610b305750610b3084826140f5565b5f620e16e461279383610802565b6001600160a01b0316141592915050565b5f5f610bce8484613c7d565b6127b861416d565b606654801982198116146127df5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f54610100900460ff161580801561283b57505f54600160ff909116105b806128545750303b15801561285457505f5460ff166001145b6128bc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156128dd575f805461ff0019166101001790555b6128e682612ba0565b801561092d575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b5f815f0151826020015163ffffffff1660405160200161297992919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526108f19061592b565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906129f1906140c3565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff16918101829052919250431015612a93579092509050612af5565b612aa4815f01518260200151613e6c565b6001600160401b0316815260208101515f600f9190910b1215612ae257612ad382602001518260200151613e6c565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015612b5f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b839190615729565b61146257604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f6108f1825490565b5f61083c838361421e565b5f818152600183016020526040812054151561083c565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015612c8e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f19190615729565b5f6040518060400160405280856001600160a01b03168152602001845f016020810190612cdf91906156aa565b63ffffffff168152509050612d29816020015163ffffffff1660985f876001600160a01b03166001600160a01b031681526020019081526020015f206140d690919063ffffffff16565b612d4657604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c81604051612d759190615748565b60405180910390a16001600160a01b038216620e16e414801590612e0a578260a65f612da08561292e565b81526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055507f90a6fa2a9b79b910872ebca540cf3bd8be827f586e6420c30d8836e30012907e8284604051612e01929190615905565b60405180910390a15b5f5b612e1960208601866156c3565b905081101561186057612e5e83612e3360208801886156c3565b84818110612e4357612e43615678565b9050602002016020810190612e589190614c46565b846139d1565b600101612e0c565b606083516001600160401b03811115612e8157612e81614a77565b604051908082528060200260200182016040528015612eb457816020015b6060815260200190600190039081612e9f5790505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f0e0e67686866040518363ffffffff1660e01b8152600401612f0692919061594e565b5f60405180830381865afa158015612f20573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612f479190810190615972565b90505f5b8551811015613149575f868281518110612f6757612f67615678565b6020026020010151905085516001600160401b03811115612f8a57612f8a614a77565b604051908082528060200260200182016040528015612fb3578160200160208202803683370190505b50848381518110612fc657612fc6615678565b60209081029190910101525f5b865181101561313f575f878281518110612fef57612fef615678565b6020908102919091018101516001600160a01b038086165f90815260a184526040808220928416825291909352822090925061302a906140c3565b9050806001600160401b03165f03613043575050613137565b5f61304f858d85610843565b90508863ffffffff16816040015163ffffffff161115801561307757505f8160200151600f0b125b156130995761308d815f01518260200151613e6c565b6001600160401b031681525b80515f906130b4906001600160401b03908116908516614244565b90506130fb818989815181106130cc576130cc615678565b602002602001015187815181106130e5576130e5615678565b602002602001015161425890919063ffffffff16565b89888151811061310d5761310d615678565b6020026020010151868151811061312657613126615678565b602002602001018181525050505050505b600101612fd3565b5050600101612f4b565b5050949350505050565b606654600160ff83161b9081160361317e5760405163840a48d560e01b815260040160405180910390fd5b50565b5f60608161319260408601866156c3565b90506001600160401b038111156131ab576131ab614a77565b6040519080825280602002602001820160405280156131d4578160200160208202803683370190505b5090506131e460408601866156c3565b90506001600160401b038111156131fd576131fd614a77565b604051908082528060200260200182016040528015613226578160200160208202803683370190505b50915060a55f6132358661292e565b81526020019081526020015f205f815461324e90615a7e565b918290555092505f5b61326460408701876156c3565b9050811015613853578015806132f7575061328260408701876156c3565b61328d600184615a96565b81811061329c5761329c615678565b90506020020160208101906132b19190614c46565b6001600160a01b03166132c760408801886156c3565b838181106132d7576132d7615678565b90506020020160208101906132ec9190614c46565b6001600160a01b0316115b61331457604051639f1c805360e01b815260040160405180910390fd5b61332160608701876156c3565b8281811061333157613331615678565b905060200201355f1080156133715750670de0b6b3a764000061335760608801886156c3565b8381811061336757613367615678565b9050602002013511155b61338e57604051631353603160e01b815260040160405180910390fd5b6133cf61339e60408801886156c3565b838181106133ae576133ae615678565b90506020020160208101906133c39190614c46565b60995f6114758961292e565b6133ec576040516331bc342760e11b815260040160405180910390fd5b5f8061343e6133fe60208a018a614c46565b6134078961292e565b61341460408c018c6156c3565b8781811061342457613424615678565b90506020020160208101906134399190614c46565b612991565b805191935091506001600160401b03165f0361345b57505061384b565b5f61349661346c60608b018b6156c3565b8681811061347c5761347c615678565b85516001600160401b03169260209091020135905061426c565b83519091506134b16001600160401b03808416908316614244565b8686815181106134c3576134c3615678565b60200260200101818152505081835f018181516134e09190615aa9565b6001600160401b03169052508351829085906134fd908390615aa9565b6001600160401b031690525060208401805183919061351d908390615aa9565b6001600160401b031690525060208301515f600f9190910b1215613635575f61358061354c60608d018d6156c3565b8881811061355c5761355c615678565b90506020020135856020015161357190615ac8565b6001600160801b03169061426c565b9050806001600160401b03168460200181815161359d9190615aec565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd6135d160208d018d614c46565b8b6135df60408f018f6156c3565b8a8181106135ef576135ef615678565b90506020020160208101906136049190614c46565b613615885f01518960200151613e6c565b886040015160405161362b9594939291906157eb565b60405180910390a1505b61368761364560208c018c614c46565b61364e8b61292e565b61365b60408e018e6156c3565b8981811061366b5761366b615678565b90506020020160208101906136809190614c46565b8787613e8b565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd6136b560208c018c614c46565b8a6136c360408e018e6156c3565b898181106136d3576136d3615678565b90506020020160208101906136e89190614c46565b86516040516136fc949392919043906157eb565b60405180910390a161374d61371460208c018c614c46565b61372160408d018d6156c3565b8881811061373157613731615678565b90506020020160208101906137469190614c46565b8651614282565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016635ae679a761378960208d018d614c46565b8b8b8e806040019061379b91906156c3565b8b8181106137ab576137ab615678565b90506020020160208101906137c09190614c46565b89516040516001600160e01b031960e088901b1681526137e895949392918991600401615b19565b6020604051808303815f875af1158015613804573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138289190615b6c565b87868151811061383a5761383a615678565b602002602001018181525050505050505b600101613257565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56138826020870187614c46565b8561389060408901896156c3565b8561389e60808c018c615877565b6040516138b19796959493929190615b83565b60405180910390a1509250929050565b60605f61083c83614304565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f8111801561391757508261ffff1682105b15610b1b576001600160a01b038086165f90815260a360209081526040808320938816835292905290812061394b9061435d565b90505f5f61395a888489612991565b91509150806040015163ffffffff1643101561397857505050610b1b565b6139858884898585613e8b565b6001600160a01b038089165f90815260a360209081526040808320938b168352929052206139b2906143af565b506139bc85615a7e565b94506139c784615c19565b9350505050613905565b8015613a155773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b03831601613a1557604051632711b74d60e11b815260040160405180910390fd5b613a258260995f6122848761292e565b613a425760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b8383604051612745929190615905565b60605f613a7f8361442c565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613b2c5750806060015163ffffffff164310155b15613b4657604081015163ffffffff168152600160208201525b63ffffffff82166040820152613b7c7f00000000000000000000000000000000000000000000000000000000000000004361576a565b613b8790600161576a565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db9101612745565b6001600160a01b0381165f908152600183016020526040812054151561083c565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b81811015613da8576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613d109083614453565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff16918101829052919250431015613d8b575050613da8565b613d99868260200151613e6c565b95505050806001019050613cd8565b506001600160a01b038086165f90815260a1602090815260408083209388168352929052208390613dd8906140c3565b613de29190615aa9565b9150509250929050565b5f61083c83836144c2565b5f61083c836001600160a01b0384166144c2565b5f61083c8383670de0b6b3a76400006145a5565b5f613e308460995f6114758961292e565b8015613e395750815b801561149c57505090516001600160401b031615159392505050565b5f61083c6001600160401b03808516908416615c2e565b5f61083c613e83836001600160401b038616615aec565b600f0b6145fa565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613f5157602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15614033576001600160a01b0385165f908152609f60209081526040808320878452909152902061400b90846140e1565b506001600160a01b0385165f908152609d6020526040902061402d90856140d6565b50610b1b565b80516001600160401b03165f03610b1b576001600160a01b0385165f908152609f6020908152604080832087845290915290206140709084613df7565b506001600160a01b0385165f908152609f60209081526040808320878452909152902061409c90612bdd565b5f03610b1b576001600160a01b0385165f908152609d602052604090206118609085613dec565b5f6108f182670de0b6b3a7640000614665565b5f61083c838361469c565b5f61083c836001600160a01b03841661469c565b5f805b8251811015614164576141248484838151811061411757614117615678565b602002602001015161087c565b801561414d575061414d83828151811061414057614140615678565b6020026020010151612785565b1561415c5760019150506108f1565b6001016140f8565b505f9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141ed9190615c5b565b6001600160a01b0316336001600160a01b0316146114625760405163794821ff60e01b815260040160405180910390fd5b5f825f01828154811061423357614233615678565b905f5260205f200154905092915050565b5f61083c83670de0b6b3a7640000846146e8565b5f61083c8383670de0b6b3a76400006146e8565b5f61083c8383670de0b6b3a764000060016147cd565b6001600160a01b038084165f90815260a1602090815260408083209386168352929052206142b190438361481c565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c90606001612745565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561435157602002820191905f5260205f20905b81548152602001906001019080831161433d575b50505050509050919050565b5f6143778254600f81810b600160801b909204900b131590565b1561439557604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6143c98254600f81810b600160801b909204900b131590565b156143e757604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f8111156108f157604051632cd44ac360e21b815260040160405180910390fd5b5f5f61447561446184614835565b85546144709190600f0b615c76565b61489e565b8454909150600160801b9004600f90810b9082900b126144a857604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f818152600183016020526040812054801561459c575f6144e4600183615a96565b85549091505f906144f790600190615a96565b9050818114614556575f865f01828154811061451557614515615678565b905f5260205f200154905080875f01848154811061453557614535615678565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061456757614567615c9d565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506108f1565b5f9150506108f1565b82545f90816145b686868385614907565b905080156145f0576145da866145cd600184615a96565b5f91825260209091200190565b54600160201b90046001600160e01b0316610872565b5091949350505050565b5f6001600160401b038211156146615760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b60648201526084016128b3565b5090565b81545f9080156146945761467e846145cd600184615a96565b54600160201b90046001600160e01b03166108ed565b509092915050565b5f8181526001830160205260408120546146e157508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556108f1565b505f6108f1565b5f80805f19858709858702925082811083820303915050805f0361471f5783828161471557614715615cb1565b049250505061083c565b8084116147665760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016128b3565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f5f6147da8686866146e8565b905060018360028111156147f0576147f0615cc5565b14801561480c57505f848061480757614807615cb1565b868809115b1561149c57610872600182615cd9565b61483083836001600160401b03841661495a565b505050565b5f6001600160ff1b038211156146615760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016128b3565b80600f81900b81146149025760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016128b3565b919050565b5f5b81831015610a40575f61491c8484614a5d565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561494657809250614954565b614951816001615cd9565b93505b50614909565b82548015614a10575f614972856145cd600185615a96565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156149c45760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff808616911603614a0e57826149e5866145cd600186615a96565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f614a6b6002848418615cec565b61083c90848416615cd9565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614aad57614aad614a77565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614adb57614adb614a77565b604052919050565b6001600160a01b038116811461317e575f5ffd5b803563ffffffff81168114614902575f5ffd5b5f60408284031215614b1a575f5ffd5b604080519081016001600160401b0381118282101715614b3c57614b3c614a77565b6040529050808235614b4d81614ae3565b8152614b5b60208401614af7565b60208201525092915050565b5f60408284031215614b77575f5ffd5b61083c8383614b0a565b5f5f5f60808486031215614b93575f5ffd5b8335614b9e81614ae3565b9250614bad8560208601614b0a565b91506060840135614bbd81614ae3565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff1690820152606081016108f1565b5f5f60608385031215614c0c575f5ffd5b8235614c1781614ae3565b9150614c268460208501614b0a565b90509250929050565b5f60208284031215614c3f575f5ffd5b5035919050565b5f60208284031215614c56575f5ffd5b813561083c81614ae3565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614cba57614ca4868351614c61565b6040959095019460209190910190600101614c91565b5093949350505050565b602081525f61083c6020830184614c7f565b5f5f83601f840112614ce6575f5ffd5b5081356001600160401b03811115614cfc575f5ffd5b6020830191508360208260051b8501011115610ffa575f5ffd5b5f5f5f60408486031215614d28575f5ffd5b8335614d3381614ae3565b925060208401356001600160401b03811115614d4d575f5ffd5b614d5986828701614cd6565b9497909650939450505050565b5f6001600160401b03821115614d7e57614d7e614a77565b5060051b60200190565b5f82601f830112614d97575f5ffd5b8135614daa614da582614d66565b614ab3565b8082825260208201915060208360051b860101925085831115614dcb575f5ffd5b602085015b83811015614df1578035614de381614ae3565b835260209283019201614dd0565b5095945050505050565b5f5f5f60808486031215614e0d575f5ffd5b614e178585614b0a565b925060408401356001600160401b03811115614e31575f5ffd5b614e3d86828701614d88565b92505060608401356001600160401b03811115614e58575f5ffd5b614e6486828701614d88565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614cba578151865260209586019590910190600101614e80565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614ef557603f19878603018452614ee0858351614e6e565b94506020938401939190910190600101614ec4565b50929695505050505050565b5f5f5f5f60a08587031215614f14575f5ffd5b614f1e8686614b0a565b935060408501356001600160401b03811115614f38575f5ffd5b614f4487828801614d88565b93505060608501356001600160401b03811115614f5f575f5ffd5b614f6b87828801614d88565b925050614f7a60808601614af7565b905092959194509250565b5f5f5f5f5f60608688031215614f99575f5ffd5b8535614fa481614ae3565b945060208601356001600160401b03811115614fbe575f5ffd5b614fca88828901614cd6565b90955093505060408601356001600160401b03811115614fe8575f5ffd5b614ff488828901614cd6565b969995985093965092949392505050565b5f5f60408385031215615016575f5ffd5b823561502181614ae3565b915060208301356001600160401b0381111561503b575f5ffd5b830160a0818603121561504c575f5ffd5b809150509250929050565b828152604060208201525f610b306040830184614e6e565b5f5f60408385031215615080575f5ffd5b823561508b81614ae3565b9150602083013561504c81614ae3565b5f8151808452602084019350602083015f5b82811015614cba576150e686835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b60609590950194602091909101906001016150ad565b604081525f61510e6040830185614c7f565b828103602084015261149c818561509b565b5f8151808452602084019350602083015f5b82811015614cba5781516001600160a01b0316865260209586019590910190600101615132565b602081525f61083c6020830184615120565b5f5f6040838503121561517c575f5ffd5b82356001600160401b03811115615191575f5ffd5b61519d85828601614d88565b925050602083013561504c81614ae3565b602080825282518282018190525f918401906040840190835b818110156151ee5783516001600160401b03168352602093840193909201916001016151c7565b509095945050505050565b5f5f5f5f6060858703121561520c575f5ffd5b843561521781614ae3565b935061522560208601614af7565b925060408501356001600160401b0381111561523f575f5ffd5b61524b87828801614cd6565b95989497509550505050565b5f5f60408385031215615268575f5ffd5b823561527381614ae3565b915060208301356001600160401b0381111561528d575f5ffd5b613de285828601614d88565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156152df575f5ffd5b82356152ea81614ae3565b9150614c2660208401614af7565b5f60208284031215615308575f5ffd5b813560ff8116811461083c575f5ffd5b5f60608284031215615328575f5ffd5b50919050565b5f6020828403121561533e575f5ffd5b81356001600160401b03811115615353575f5ffd5b6108ed84828501615318565b5f5f5f60808486031215615371575f5ffd5b83356001600160401b03811115615386575f5ffd5b61539286828701614d88565b935050614bad8560208601614b0a565b602081525f61083c602083018461509b565b5f5f5f606084860312156153c6575f5ffd5b83356153d181614ae3565b925060208401356001600160401b038111156153eb575f5ffd5b6153f786828701614d88565b92505061540660408501614af7565b90509250925092565b5f5f60408385031215615420575f5ffd5b823561542b81614ae3565b915060208301356001600160401b03811115615445575f5ffd5b8301601f81018513615455575f5ffd5b8035615463614da582614d66565b8082825260208201915060208360051b850101925087831115615484575f5ffd5b602084015b838110156155a95780356001600160401b038111156154a6575f5ffd5b85016080818b03601f190112156154bb575f5ffd5b6154c3614a8b565b6154d08b60208401614b0a565b815260608201356001600160401b038111156154ea575f5ffd5b6154f98c602083860101614d88565b60208301525060808201356001600160401b03811115615517575f5ffd5b6020818401019250508a601f83011261552e575f5ffd5b813561553c614da582614d66565b8082825260208201915060208360051b86010192508d83111561555d575f5ffd5b6020850194505b828510156155935784356001600160401b0381168114615582575f5ffd5b825260209485019490910190615564565b6040840152505084525060209283019201615489565b50809450505050509250929050565b5f5f5f604084860312156155ca575f5ffd5b83356155d581614ae3565b925060208401356001600160401b038111156155ef575f5ffd5b8401601f810186136155ff575f5ffd5b80356001600160401b03811115615614575f5ffd5b866020828401011115615625575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615647575f5ffd5b823561565281614ae3565b915060208301356001600160401b0381111561566c575f5ffd5b613de285828601615318565b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126156a0575f5ffd5b9190910192915050565b5f602082840312156156ba575f5ffd5b61083c82614af7565b5f5f8335601e198436030181126156d8575f5ffd5b8301803591506001600160401b038211156156f1575f5ffd5b6020019150600581901b3603821315610ffa575f5ffd5b5f60208284031215615718575f5ffd5b813561ffff8116811461083c575f5ffd5b5f60208284031215615739575f5ffd5b8151801515811461083c575f5ffd5b604081016108f18284614c61565b634e487b7160e01b5f52601160045260245ffd5b63ffffffff81811683821601908111156108f1576108f1615756565b8183526020830192505f815f5b84811015614cba5763ffffffff6157a983614af7565b1686526020958601959190910190600101615793565b6001600160a01b038581168252841660208201526060604082018190525f906108729083018486615786565b6001600160a01b038616815260c081016158086020830187614c61565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f610b3060208301848661583c565b5f5f8335601e1984360301811261588c575f5ffd5b8301803591506001600160401b038211156158a5575f5ffd5b602001915036819003821315610ffa575f5ffd5b6001600160a01b038781168252861660208201526080604082018190525f906158e59083018688615786565b82810360608401526158f881858761583c565b9998505050505050505050565b606081016159138285614c61565b6001600160a01b039290921660409190910152919050565b80516020808301519190811015615328575f1960209190910360031b1b16919050565b604081525f6159606040830185615120565b828103602084015261149c8185615120565b5f60208284031215615982575f5ffd5b81516001600160401b03811115615997575f5ffd5b8201601f810184136159a7575f5ffd5b80516159b5614da582614d66565b8082825260208201915060208360051b8501019250868311156159d6575f5ffd5b602084015b83811015615a735780516001600160401b038111156159f8575f5ffd5b8501603f81018913615a08575f5ffd5b6020810151615a19614da582614d66565b808282526020820191506020808460051b8601010192508b831115615a3c575f5ffd5b6040840193505b82841015615a5e578351825260209384019390910190615a43565b865250506020938401939190910190506159db565b509695505050505050565b5f60018201615a8f57615a8f615756565b5060010190565b818103818111156108f1576108f1615756565b6001600160401b0382811682821603908111156108f1576108f1615756565b5f81600f0b60016001607f1b03198103615ae457615ae4615756565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b0319821217156108f1576108f1615756565b6001600160a01b038716815260e08101615b366020830188614c61565b60608201959095526001600160a01b039390931660808401526001600160401b0391821660a08401521660c09091015292915050565b5f60208284031215615b7c575f5ffd5b5051919050565b6001600160a01b03881681525f60c08201615ba1602084018a614c61565b60c060608401528690528660e083015f5b88811015615be2578235615bc581614ae3565b6001600160a01b0316825260209283019290910190600101615bb2565b508381036080850152615bf58188614e6e565b91505082810360a0840152615c0b81858761583c565b9a9950505050505050505050565b5f81615c2757615c27615756565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b03821317156108f1576108f1615756565b5f60208284031215615c6b575f5ffd5b815161083c81614ae3565b8082018281125f831280158216821582161715615c9557615c95615756565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b808201808211156108f1576108f1615756565b5f82615d0657634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212207ffcd99f9165c1567b83e60ff543a1e3202c0fabec9debb5f8adec22b57d410364736f6c634300081b0033", + Bin: "0x610140604052348015610010575f5ffd5b5060405161611f38038061611f83398101604081905261002f916101e6565b8084878585896001600160a01b03811661005c576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05263ffffffff91821660c0521660e052166101005261008d816100a5565b610120525061009a6100eb565b50505050505061034a565b5f5f829050601f815111156100d8578260405163305a27a960e01b81526004016100cf91906102ef565b60405180910390fd5b80516100e382610324565b179392505050565b5f54610100900460ff16156101525760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100cf565b5f5460ff908116146101a1575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101b7575f5ffd5b50565b805163ffffffff811681146101cd575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156101fb575f5ffd5b8651610206816101a3565b6020880151909650610217816101a3565b6040880151909550610228816101a3565b9350610236606088016101ba565b9250610244608088016101ba565b60a08801519092506001600160401b0381111561025f575f5ffd5b8701601f8101891361026f575f5ffd5b80516001600160401b03811115610288576102886101d2565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102b6576102b66101d2565b6040528181528282016020018b10156102cd575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295509295565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610344575f198160200360031b1b821691505b50919050565b60805160a05160c05160e0516101005161012051615d416103de5f395f61132201525f81816104b30152612c4601525f81816106260152613b5701525f81816103bc0152818161171b0152611dee01525f818161079401528181611356015281816113c0015281816120ce01528181612eba015261375701525f818161064d01528181612b12015261416f0152615d415ff3fe608060405234801561000f575f5ffd5b50600436106102e5575f3560e01c80635c975abb11610195578063adc2e3d9116100e4578063d3d96ff41161009e578063f231bd0811610079578063f231bd08146107b6578063f605ce08146107c9578063fabc1cbc146107dc578063fe4b84df146107ef575f5ffd5b8063d3d96ff414610769578063dc2af6921461077c578063df5cf7231461078f575f5ffd5b8063adc2e3d9146106db578063b2447af7146106ee578063b66bd98914610701578063b9fbaed114610714578063ba1a84e514610743578063c221d8ae14610756575f5ffd5b80637bc1ef611161014f57806394d7d00c1161012a57806394d7d00c1461068f578063952899ee146106a2578063a9333ec8146106b5578063a9821821146106c8575f5ffd5b80637bc1ef6114610621578063886f1195146106485780638ce648541461066f575f5ffd5b80635c975abb146105a2578063670d3ba2146105aa5780636cfb4481146105bd5780636e3492b5146105e85780636e875dba146105fb57806379ae50cd1461060e575f5ffd5b806336352057116102515780634cfd29391161020b57806354fd4d50116101e657806354fd4d501461054f57806356c483e614610564578063595c6a67146105775780635ac86ab71461057f575f5ffd5b80634cfd29391461050857806350feea2014610529578063547afb871461053c575f5ffd5b8063363520571461044c57806340120dab1461046d5780634177a87c1461048e5780634657e26a146104ae5780634a10ffe5146104d55780634b5046ef146104f5575f5ffd5b8063261f84e0116102a2578063261f84e0146103a45780632981eb77146103b75780632b453a9a146103f35780632bab2c4a14610413578063304c10cd1461042657806332a879e414610439575f5ffd5b80630f3df50e146102e957806310e1b9b8146103195780631352c3e614610339578063136439dd1461035c57806315fe502814610371578063260dc75814610391575b5f5ffd5b6102fc6102f7366004614b67565b610802565b6040516001600160a01b0390911681526020015b60405180910390f35b61032c610327366004614b81565b610843565b6040516103109190614bc8565b61034c610347366004614bfb565b61087c565b6040519015158152602001610310565b61036f61036a366004614c2f565b6108f7565b005b61038461037f366004614c46565b610931565b6040516103109190614cc4565b61034c61039f366004614b67565b610a48565b61036f6103b2366004614d16565b610a79565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610310565b610406610401366004614dfb565b610b22565b6040516103109190614e9e565b610406610421366004614f01565b610b38565b6102fc610434366004614c46565b610bd7565b61036f610447366004614f85565b610c06565b61045f61045a366004615005565b610d43565b604051610310929190615057565b61048061047b36600461506f565b610e86565b6040516103109291906150fc565b6104a161049c366004614b67565b611001565b6040516103109190615159565b6102fc7f000000000000000000000000000000000000000000000000000000000000000081565b6104e86104e336600461516b565b611025565b60405161031091906151ae565b61036f610503366004614f85565b6110cd565b61051b610516366004614b67565b611160565b604051908152602001610310565b61036f6105373660046151f9565b611182565b6104e861054a366004615257565b611273565b61055761131b565b6040516103109190615299565b61036f6105723660046152ce565b61134b565b61036f611450565b61034c61058d3660046152f8565b606654600160ff9092169190911b9081161490565b60665461051b565b61034c6105b8366004614bfb565b611464565b6105d06105cb36600461506f565b611490565b6040516001600160401b039091168152602001610310565b61036f6105f636600461532e565b6114a5565b6104a1610609366004614b67565b611868565b61038461061c366004614c46565b611879565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b6102fc7f000000000000000000000000000000000000000000000000000000000000000081565b61068261067d36600461535f565b611953565b60405161031091906153a2565b6104e861069d3660046153b4565b611a0f565b61036f6106b036600461540f565b611afb565b6105d06106c336600461506f565b611f9c565b61036f6106d63660046155b8565b611fcb565b61036f6106e9366004615636565b61207d565b61051b6106fc366004614b67565b6123c6565b61036f61070f3660046151f9565b6123e8565b610727610722366004614c46565b612542565b60408051921515835263ffffffff909116602083015201610310565b61051b610751366004614c46565b6125dc565b6104a1610764366004614bfb565b6125fc565b61036f61077736600461506f565b612625565b61034c61078a366004614c46565b612752565b6102fc7f000000000000000000000000000000000000000000000000000000000000000081565b61034c6107c4366004614b67565b612785565b6105d06107d736600461506f565b6127a4565b61036f6107ea366004614c2f565b6127b0565b61036f6107fd366004614c2f565b61281d565b5f5f60a65f6108108561292e565b815260208101919091526040015f20546001600160a01b031690508015610837578061083c565b620e16e45b9392505050565b604080516060810182525f80825260208201819052918101829052906108728561086c8661292e565b85612991565b9695505050505050565b6001600160a01b0382165f908152609e6020526040812081908161089f8561292e565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108ed5750806020015163ffffffff164311155b9150505b92915050565b6108ff612afd565b60665481811681146109245760405163c61dca5d60e01b815260040160405180910390fd5b61092d82612ba0565b5050565b6001600160a01b0381165f908152609d602052604081206060919061095590612bdd565b90505f816001600160401b0381111561097057610970614a77565b6040519080825280602002602001820160405280156109b457816020015b604080518082019091525f808252602082015281526020019060019003908161098e5790505b5090505f5b82811015610a40576001600160a01b0385165f908152609d60205260409020610a1b906109e69083612be6565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a2d57610a2d615678565b60209081029190910101526001016109b9565b509392505050565b60208082015182516001600160a01b03165f9081526098909252604082206108f19163ffffffff90811690612bf116565b82610a8381612c08565b610aa05760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610ad8576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610b1b57610b1385858584818110610af857610af8615678565b9050602002810190610b0a919061568c565b620e16e4612cb2565b600101610ada565b5050505050565b6060610b3084848443612e66565b949350505050565b6060610b4685858585612e66565b90505f5b8451811015610bce57610b76858281518110610b6857610b68615678565b60200260200101518761087c565b610bc6575f5b8451811015610bc4575f838381518110610b9857610b98615678565b60200260200101518281518110610bb157610bb1615678565b6020908102919091010152600101610b7c565b505b600101610b4a565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610bff578061083c565b5090919050565b84610c1081612c08565b610c2d5760405163932d94f760e01b815260040160405180910390fd5b838214610c4d576040516343714afd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260a4602052604090205460ff16610c85576040516348f7dbb960e01b815260040160405180910390fd5b5f5b84811015610d3a575f848483818110610ca257610ca2615678565b9050602002016020810190610cb79190614c46565b6001600160a01b031603610cde576040516339b190bb60e11b815260040160405180910390fd5b610d3287878784818110610cf457610cf4615678565b9050602002810190610d06919061568c565b868685818110610d1857610d18615678565b9050602002016020810190610d2d9190614c46565b612cb2565b600101610c87565b50505050505050565b5f60606001610d5181613153565b84610d5b81612c08565b610d785760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280886001600160a01b03168152602001876020016020810190610da691906156aa565b63ffffffff1690529050610dbd60608701876156c3565b9050610dcc60408801886156c3565b905014610dec576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610e1e9163ffffffff90811690612bf116565b610e3b57604051631fb1705560e21b815260040160405180910390fd5b610e51610e4b6020880188614c46565b8261087c565b610e6e5760405163ebbff49760e01b815260040160405180910390fd5b610e788682613181565b945094505050509250929050565b6001600160a01b0382165f908152609d602052604081206060918291610eab90612bdd565b90505f816001600160401b03811115610ec657610ec6614a77565b604051908082528060200260200182016040528015610f0a57816020015b604080518082019091525f8082526020820152815260200190600190039081610ee45790505b5090505f826001600160401b03811115610f2657610f26614a77565b604051908082528060200260200182016040528015610f6f57816020015b604080516060810182525f80825260208083018290529282015282525f19909201910181610f445790505b5090505f5b83811015610ff2576001600160a01b0388165f908152609d60205260408120610fa1906109e69084612be6565b905080848381518110610fb657610fb6615678565b6020026020010181905250610fcc89828a610843565b838381518110610fde57610fde615678565b602090810291909101015250600101610f74565b509093509150505b9250929050565b60605f61083c60995f6110138661292e565b81526020019081526020015f206138c1565b60605f83516001600160401b0381111561104157611041614a77565b60405190808252806020026020018201604052801561106a578160200160208202803683370190505b5090505f5b8451811015610a405761109b85828151811061108d5761108d615678565b602002602001015185611f9c565b8282815181106110ad576110ad615678565b6001600160401b039092166020928302919091019091015260010161106f565b5f6110d781613153565b8382146110f7576040516343714afd60e01b815260040160405180910390fd5b5f5b84811015610d3a576111588787878481811061111757611117615678565b905060200201602081019061112c9190614c46565b86868581811061113e5761113e615678565b90506020020160208101906111539190615708565b6138cd565b6001016110f9565b5f60a55f61116d8461292e565b81526020019081526020015f20549050919050565b8361118c81612c08565b6111a95760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f938452609890529390912091926111e89291612bf116565b61120557604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d3a5761126b8286868481811061122557611225615678565b905060200201602081019061123a9190614c46565b61126660405180604001604052808c6001600160a01b031681526020018b63ffffffff16815250612785565b6139d1565b600101611207565b60605f82516001600160401b0381111561128f5761128f614a77565b6040519080825280602002602001820160405280156112b8578160200160208202803683370190505b5090505f5b8351811015610a40576112e9858583815181106112dc576112dc615678565b6020026020010151611f9c565b8282815181106112fb576112fb615678565b6001600160401b03909216602092830291909101909101526001016112bd565b60606113467f0000000000000000000000000000000000000000000000000000000000000000613a73565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114465761138482612c08565b6113a1576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611405573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114299190615729565b6114465760405163ccea9e6f60e01b815260040160405180910390fd5b61092d8282613ab0565b611458612afd565b6114625f19612ba0565b565b5f61083c83609a5f6114758661292e565b81526020019081526020015f20613c5c90919063ffffffff16565b5f5f61149c8484613c7d565b95945050505050565b60026114b081613153565b6114c56114c06020840184614c46565b612c08565b806114de57506114de6114c06040840160208501614c46565b6114fb576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b61150a60408401846156c3565b90508110156117cc575f60405180604001604052808560200160208101906115329190614c46565b6001600160a01b0316815260200161154d60408701876156c3565b8581811061155d5761155d615678565b905060200201602081019061157291906156aa565b63ffffffff1681525090506115bf816020015163ffffffff1660985f8760200160208101906115a19190614c46565b6001600160a01b0316815260208101919091526040015f2090612bf1565b6115dc57604051631fb1705560e21b815260040160405180910390fd5b609e5f6115ec6020870187614c46565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6116158361292e565b815260208101919091526040015f205460ff16611645576040516325131d4f60e01b815260040160405180910390fd5b61167f6116518261292e565b609c5f6116616020890189614c46565b6001600160a01b0316815260208101919091526040015f2090613dec565b506116b76116906020860186614c46565b609a5f61169c8561292e565b81526020019081526020015f20613df790919063ffffffff16565b506116c56020850185614c46565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe826040516116fd9190615748565b60405180910390a2604080518082019091525f8152602081016117407f00000000000000000000000000000000000000000000000000000000000000004361576a565b63ffffffff169052609e5f6117586020880188614c46565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6117818461292e565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff1990931692909217179055506001016114fd565b506117e06104346040840160208501614c46565b6001600160a01b031663303ca9566117fb6020850185614c46565b61180b6040860160208701614c46565b61181860408701876156c3565b6040518563ffffffff1660e01b815260040161183794939291906157bf565b5f604051808303815f87803b15801561184e575f5ffd5b505af1158015611860573d5f5f3e3d5ffd5b505050505050565b60606108f1609a5f6110138561292e565b6001600160a01b0381165f908152609c602052604081206060919061189d90612bdd565b90505f816001600160401b038111156118b8576118b8614a77565b6040519080825280602002602001820160405280156118fc57816020015b604080518082019091525f80825260208201528152602001906001900390816118d65790505b5090505f5b82811015610a40576001600160a01b0385165f908152609c6020526040902061192e906109e69083612be6565b82828151811061194057611940615678565b6020908102919091010152600101611901565b60605f84516001600160401b0381111561196f5761196f614a77565b6040519080825280602002602001820160405280156119b857816020015b604080516060810182525f80825260208083018290529282015282525f1990920191018161198d5790505b5090505f5b8551811015610bce576119ea8682815181106119db576119db615678565b60200260200101518686610843565b8282815181106119fc576119fc615678565b60209081029190910101526001016119bd565b60605f83516001600160401b03811115611a2b57611a2b614a77565b604051908082528060200260200182016040528015611a54578160200160208202803683370190505b5090505f5b8451811015610bce576001600160a01b0386165f90815260a1602052604081208651611ac992879291899086908110611a9457611a94615678565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f20613e0b90919063ffffffff16565b828281518110611adb57611adb615678565b6001600160401b0390921660209283029190910190910152600101611a59565b5f611b0581613153565b611b0e83612c08565b611b2b576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f611b3786612542565b9150915081611b595760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610b1b57838181518110611b7a57611b7a615678565b60200260200101516040015151848281518110611b9957611b99615678565b6020026020010151602001515114611bc4576040516343714afd60e01b815260040160405180910390fd5b5f848281518110611bd757611bd7615678565b602090810291909101810151518082015181516001600160a01b03165f90815260989093526040909220909250611c179163ffffffff90811690612bf116565b611c3457604051631fb1705560e21b815260040160405180910390fd5b5f611c3f878361087c565b90505f5b868481518110611c5557611c55615678565b60200260200101516020015151811015611f91575f878581518110611c7c57611c7c615678565b6020026020010151602001518281518110611c9957611c99615678565b60200260200101519050611cb0898261ffff6138cd565b5f5f611cbf8b61086c8861292e565b91509150806040015163ffffffff165f14611ced57604051630d8fcbe360e41b815260040160405180910390fd5b5f611cfa87858489613e1f565b9050611d3f825f01518c8a81518110611d1557611d15615678565b6020026020010151604001518781518110611d3257611d32615678565b6020026020010151613e55565b600f0b602083018190525f03611d6857604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b1215611eac578015611e2e57611de9611d898861292e565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b611e137f00000000000000000000000000000000000000000000000000000000000000004361576a565b611e1e90600161576a565b63ffffffff166040830152611f19565b611e4083602001518360200151613e6c565b6001600160401b031660208401528a518b9089908110611e6257611e62615678565b6020026020010151604001518581518110611e7f57611e7f615678565b6020908102919091018101516001600160401b031683525f9083015263ffffffff43166040830152611f19565b5f8260200151600f0b1315611f1957611ecd83602001518360200151613e6c565b6001600160401b039081166020850181905284519091161015611f0357604051636c9be0bf60e01b815260040160405180910390fd5b611f0d894361576a565b63ffffffff1660408301525b611f2e8c611f268961292e565b868686613e8b565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886611f63865f01518760200151613e6c565b8660400151604051611f799594939291906157eb565b60405180910390a1505060019092019150611c439050565b505050600101611b5f565b6001600160a01b038083165f90815260a160209081526040808320938516835292905290812061083c906140c3565b82611fd581612c08565b611ff25760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612034576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713848460405161206f929190615864565b60405180910390a250505050565b600261208881613153565b8261209281612c08565b6120af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015612113573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121379190615729565b6121545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b61216360208501856156c3565b905081101561232b57604080518082019091525f90806121866020880188614c46565b6001600160a01b031681526020018680602001906121a491906156c3565b858181106121b4576121b4615678565b90506020020160208101906121c991906156aa565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612205929190811690612bf116565b61222257604051631fb1705560e21b815260040160405180910390fd5b61222c868261087c565b1561224a57604051636c6c6e2760e11b815260040160405180910390fd5b6122736122568261292e565b6001600160a01b0388165f908152609c60205260409020906140d6565b5061229f86609a5f6122848561292e565b81526020019081526020015f206140e190919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e826040516122d99190615748565b60405180910390a26001600160a01b0386165f908152609e602052604081206001916123048461292e565b815260208101919091526040015f20805460ff191691151591909117905550600101612156565b5061233c6104346020850185614c46565b6001600160a01b031663c63fd502856123586020870187614c46565b61236560208801886156c3565b61237260408a018a615877565b6040518763ffffffff1660e01b8152600401612393969594939291906158b9565b5f604051808303815f87803b1580156123aa575f5ffd5b505af11580156123bc573d5f5f3e3d5ffd5b5050505050505050565b5f6108f1609a5f6123d68561292e565b81526020019081526020015f20612bdd565b836123f281612c08565b61240f5760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f9384526098905293909120919261244e9291612bf116565b61246b57604051631fb1705560e21b815260040160405180910390fd5b5f6124758261292e565b90505f5b848110156123bc576124be86868381811061249657612496615678565b90506020020160208101906124ab9190614c46565b5f84815260996020526040902090613df7565b6124db576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee8387878481811061250f5761250f615678565b90506020020160208101906125249190614c46565b604051612532929190615905565b60405180910390a1600101612479565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b9091041660608201819052849391929190158015906125c35750826060015163ffffffff164310155b156125d2575050604081015160015b9590945092505050565b6001600160a01b0381165f9081526098602052604081206108f190612bdd565b6001600160a01b0382165f908152609f60205260408120606091906108ed90826110138661292e565b8161262f81612c08565b61264c5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa158015612690573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126b49190615729565b6126d157604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361272981610bd7565b604080516001600160a01b039384168152929091166020830152015b60405180910390a1505050565b5f5f61275d83611879565b90505f61276984610931565b905061277584836140f5565b80610b305750610b3084826140f5565b5f620e16e461279383610802565b6001600160a01b0316141592915050565b5f5f610bce8484613c7d565b6127b861416d565b606654801982198116146127df5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f54610100900460ff161580801561283b57505f54600160ff909116105b806128545750303b15801561285457505f5460ff166001145b6128bc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156128dd575f805461ff0019166101001790555b6128e682612ba0565b801561092d575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b5f815f0151826020015163ffffffff1660405160200161297992919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526108f19061592b565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906129f1906140c3565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff16918101829052919250431015612a93579092509050612af5565b612aa4815f01518260200151613e6c565b6001600160401b0316815260208101515f600f9190910b1215612ae257612ad382602001518260200151613e6c565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015612b5f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b839190615729565b61146257604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f6108f1825490565b5f61083c838361421e565b5f818152600183016020526040812054151561083c565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015612c8e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f19190615729565b5f6040518060400160405280856001600160a01b03168152602001845f016020810190612cdf91906156aa565b63ffffffff168152509050612d29816020015163ffffffff1660985f876001600160a01b03166001600160a01b031681526020019081526020015f206140d690919063ffffffff16565b612d4657604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c81604051612d759190615748565b60405180910390a16001600160a01b038216620e16e414801590612e0a578260a65f612da08561292e565b81526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055507f90a6fa2a9b79b910872ebca540cf3bd8be827f586e6420c30d8836e30012907e8284604051612e01929190615905565b60405180910390a15b5f5b612e1960208601866156c3565b905081101561186057612e5e83612e3360208801886156c3565b84818110612e4357612e43615678565b9050602002016020810190612e589190614c46565b846139d1565b600101612e0c565b606083516001600160401b03811115612e8157612e81614a77565b604051908082528060200260200182016040528015612eb457816020015b6060815260200190600190039081612e9f5790505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f0e0e67686866040518363ffffffff1660e01b8152600401612f0692919061594e565b5f60405180830381865afa158015612f20573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612f479190810190615972565b90505f5b8551811015613149575f868281518110612f6757612f67615678565b6020026020010151905085516001600160401b03811115612f8a57612f8a614a77565b604051908082528060200260200182016040528015612fb3578160200160208202803683370190505b50848381518110612fc657612fc6615678565b60209081029190910101525f5b865181101561313f575f878281518110612fef57612fef615678565b6020908102919091018101516001600160a01b038086165f90815260a184526040808220928416825291909352822090925061302a906140c3565b9050806001600160401b03165f03613043575050613137565b5f61304f858d85610843565b90508863ffffffff16816040015163ffffffff161115801561307757505f8160200151600f0b125b156130995761308d815f01518260200151613e6c565b6001600160401b031681525b80515f906130b4906001600160401b03908116908516614244565b90506130fb818989815181106130cc576130cc615678565b602002602001015187815181106130e5576130e5615678565b602002602001015161425890919063ffffffff16565b89888151811061310d5761310d615678565b6020026020010151868151811061312657613126615678565b602002602001018181525050505050505b600101612fd3565b5050600101612f4b565b5050949350505050565b606654600160ff83161b9081160361317e5760405163840a48d560e01b815260040160405180910390fd5b50565b5f60608161319260408601866156c3565b90506001600160401b038111156131ab576131ab614a77565b6040519080825280602002602001820160405280156131d4578160200160208202803683370190505b5090506131e460408601866156c3565b90506001600160401b038111156131fd576131fd614a77565b604051908082528060200260200182016040528015613226578160200160208202803683370190505b50915060a55f6132358661292e565b81526020019081526020015f205f815461324e90615a7e565b918290555092505f5b61326460408701876156c3565b9050811015613853578015806132f7575061328260408701876156c3565b61328d600184615a96565b81811061329c5761329c615678565b90506020020160208101906132b19190614c46565b6001600160a01b03166132c760408801886156c3565b838181106132d7576132d7615678565b90506020020160208101906132ec9190614c46565b6001600160a01b0316115b61331457604051639f1c805360e01b815260040160405180910390fd5b61332160608701876156c3565b8281811061333157613331615678565b905060200201355f1080156133715750670de0b6b3a764000061335760608801886156c3565b8381811061336757613367615678565b9050602002013511155b61338e57604051631353603160e01b815260040160405180910390fd5b6133cf61339e60408801886156c3565b838181106133ae576133ae615678565b90506020020160208101906133c39190614c46565b60995f6114758961292e565b6133ec576040516331bc342760e11b815260040160405180910390fd5b5f8061343e6133fe60208a018a614c46565b6134078961292e565b61341460408c018c6156c3565b8781811061342457613424615678565b90506020020160208101906134399190614c46565b612991565b805191935091506001600160401b03165f0361345b57505061384b565b5f61349661346c60608b018b6156c3565b8681811061347c5761347c615678565b85516001600160401b03169260209091020135905061426c565b83519091506134b16001600160401b03808416908316614244565b8686815181106134c3576134c3615678565b60200260200101818152505081835f018181516134e09190615aa9565b6001600160401b03169052508351829085906134fd908390615aa9565b6001600160401b031690525060208401805183919061351d908390615aa9565b6001600160401b031690525060208301515f600f9190910b1215613635575f61358061354c60608d018d6156c3565b8881811061355c5761355c615678565b90506020020135856020015161357190615ac8565b6001600160801b03169061426c565b9050806001600160401b03168460200181815161359d9190615aec565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd6135d160208d018d614c46565b8b6135df60408f018f6156c3565b8a8181106135ef576135ef615678565b90506020020160208101906136049190614c46565b613615885f01518960200151613e6c565b886040015160405161362b9594939291906157eb565b60405180910390a1505b61368761364560208c018c614c46565b61364e8b61292e565b61365b60408e018e6156c3565b8981811061366b5761366b615678565b90506020020160208101906136809190614c46565b8787613e8b565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd6136b560208c018c614c46565b8a6136c360408e018e6156c3565b898181106136d3576136d3615678565b90506020020160208101906136e89190614c46565b86516040516136fc949392919043906157eb565b60405180910390a161374d61371460208c018c614c46565b61372160408d018d6156c3565b8881811061373157613731615678565b90506020020160208101906137469190614c46565b8651614282565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016635ae679a761378960208d018d614c46565b8b8b8e806040019061379b91906156c3565b8b8181106137ab576137ab615678565b90506020020160208101906137c09190614c46565b89516040516001600160e01b031960e088901b1681526137e895949392918991600401615b19565b6020604051808303815f875af1158015613804573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138289190615b6c565b87868151811061383a5761383a615678565b602002602001018181525050505050505b600101613257565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56138826020870187614c46565b8561389060408901896156c3565b8561389e60808c018c615877565b6040516138b19796959493929190615b83565b60405180910390a1509250929050565b60605f61083c83614304565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f8111801561391757508261ffff1682105b15610b1b576001600160a01b038086165f90815260a360209081526040808320938816835292905290812061394b9061435d565b90505f5f61395a888489612991565b91509150806040015163ffffffff1643101561397857505050610b1b565b6139858884898585613e8b565b6001600160a01b038089165f90815260a360209081526040808320938b168352929052206139b2906143af565b506139bc85615a7e565b94506139c784615c19565b9350505050613905565b8015613a155773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b03831601613a1557604051632711b74d60e11b815260040160405180910390fd5b613a258260995f6122848761292e565b613a425760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b8383604051612745929190615905565b60605f613a7f8361442c565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613b2c5750806060015163ffffffff164310155b15613b4657604081015163ffffffff168152600160208201525b63ffffffff82166040820152613b7c7f00000000000000000000000000000000000000000000000000000000000000004361576a565b613b8790600161576a565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db9101612745565b6001600160a01b0381165f908152600183016020526040812054151561083c565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b81811015613da8576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613d109083614453565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff16918101829052919250431015613d8b575050613da8565b613d99868260200151613e6c565b95505050806001019050613cd8565b506001600160a01b038086165f90815260a1602090815260408083209388168352929052208390613dd8906140c3565b613de29190615aa9565b9150509250929050565b5f61083c83836144c2565b5f61083c836001600160a01b0384166144c2565b5f61083c8383670de0b6b3a76400006145a5565b5f613e308460995f6114758961292e565b8015613e395750815b801561149c57505090516001600160401b031615159392505050565b5f61083c6001600160401b03808516908416615c2e565b5f61083c613e83836001600160401b038616615aec565b600f0b6145fa565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613f5157602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15614033576001600160a01b0385165f908152609f60209081526040808320878452909152902061400b90846140e1565b506001600160a01b0385165f908152609d6020526040902061402d90856140d6565b50610b1b565b80516001600160401b03165f03610b1b576001600160a01b0385165f908152609f6020908152604080832087845290915290206140709084613df7565b506001600160a01b0385165f908152609f60209081526040808320878452909152902061409c90612bdd565b5f03610b1b576001600160a01b0385165f908152609d602052604090206118609085613dec565b5f6108f182670de0b6b3a7640000614665565b5f61083c838361469c565b5f61083c836001600160a01b03841661469c565b5f805b8251811015614164576141248484838151811061411757614117615678565b602002602001015161087c565b801561414d575061414d83828151811061414057614140615678565b6020026020010151612785565b1561415c5760019150506108f1565b6001016140f8565b505f9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141ed9190615c5b565b6001600160a01b0316336001600160a01b0316146114625760405163794821ff60e01b815260040160405180910390fd5b5f825f01828154811061423357614233615678565b905f5260205f200154905092915050565b5f61083c83670de0b6b3a7640000846146e8565b5f61083c8383670de0b6b3a76400006146e8565b5f61083c8383670de0b6b3a764000060016147cd565b6001600160a01b038084165f90815260a1602090815260408083209386168352929052206142b190438361481c565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c90606001612745565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561435157602002820191905f5260205f20905b81548152602001906001019080831161433d575b50505050509050919050565b5f6143778254600f81810b600160801b909204900b131590565b1561439557604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6143c98254600f81810b600160801b909204900b131590565b156143e757604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f8111156108f157604051632cd44ac360e21b815260040160405180910390fd5b5f5f61447561446184614835565b85546144709190600f0b615c76565b61489e565b8454909150600160801b9004600f90810b9082900b126144a857604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f818152600183016020526040812054801561459c575f6144e4600183615a96565b85549091505f906144f790600190615a96565b9050818114614556575f865f01828154811061451557614515615678565b905f5260205f200154905080875f01848154811061453557614535615678565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061456757614567615c9d565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506108f1565b5f9150506108f1565b82545f90816145b686868385614907565b905080156145f0576145da866145cd600184615a96565b5f91825260209091200190565b54600160201b90046001600160e01b0316610872565b5091949350505050565b5f6001600160401b038211156146615760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b60648201526084016128b3565b5090565b81545f9080156146945761467e846145cd600184615a96565b54600160201b90046001600160e01b03166108ed565b509092915050565b5f8181526001830160205260408120546146e157508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556108f1565b505f6108f1565b5f80805f19858709858702925082811083820303915050805f0361471f5783828161471557614715615cb1565b049250505061083c565b8084116147665760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016128b3565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f5f6147da8686866146e8565b905060018360028111156147f0576147f0615cc5565b14801561480c57505f848061480757614807615cb1565b868809115b1561149c57610872600182615cd9565b61483083836001600160401b03841661495a565b505050565b5f6001600160ff1b038211156146615760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016128b3565b80600f81900b81146149025760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016128b3565b919050565b5f5b81831015610a40575f61491c8484614a5d565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561494657809250614954565b614951816001615cd9565b93505b50614909565b82548015614a10575f614972856145cd600185615a96565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156149c45760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff808616911603614a0e57826149e5866145cd600186615a96565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f614a6b6002848418615cec565b61083c90848416615cd9565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614aad57614aad614a77565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614adb57614adb614a77565b604052919050565b6001600160a01b038116811461317e575f5ffd5b803563ffffffff81168114614902575f5ffd5b5f60408284031215614b1a575f5ffd5b604080519081016001600160401b0381118282101715614b3c57614b3c614a77565b6040529050808235614b4d81614ae3565b8152614b5b60208401614af7565b60208201525092915050565b5f60408284031215614b77575f5ffd5b61083c8383614b0a565b5f5f5f60808486031215614b93575f5ffd5b8335614b9e81614ae3565b9250614bad8560208601614b0a565b91506060840135614bbd81614ae3565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff1690820152606081016108f1565b5f5f60608385031215614c0c575f5ffd5b8235614c1781614ae3565b9150614c268460208501614b0a565b90509250929050565b5f60208284031215614c3f575f5ffd5b5035919050565b5f60208284031215614c56575f5ffd5b813561083c81614ae3565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614cba57614ca4868351614c61565b6040959095019460209190910190600101614c91565b5093949350505050565b602081525f61083c6020830184614c7f565b5f5f83601f840112614ce6575f5ffd5b5081356001600160401b03811115614cfc575f5ffd5b6020830191508360208260051b8501011115610ffa575f5ffd5b5f5f5f60408486031215614d28575f5ffd5b8335614d3381614ae3565b925060208401356001600160401b03811115614d4d575f5ffd5b614d5986828701614cd6565b9497909650939450505050565b5f6001600160401b03821115614d7e57614d7e614a77565b5060051b60200190565b5f82601f830112614d97575f5ffd5b8135614daa614da582614d66565b614ab3565b8082825260208201915060208360051b860101925085831115614dcb575f5ffd5b602085015b83811015614df1578035614de381614ae3565b835260209283019201614dd0565b5095945050505050565b5f5f5f60808486031215614e0d575f5ffd5b614e178585614b0a565b925060408401356001600160401b03811115614e31575f5ffd5b614e3d86828701614d88565b92505060608401356001600160401b03811115614e58575f5ffd5b614e6486828701614d88565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614cba578151865260209586019590910190600101614e80565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614ef557603f19878603018452614ee0858351614e6e565b94506020938401939190910190600101614ec4565b50929695505050505050565b5f5f5f5f60a08587031215614f14575f5ffd5b614f1e8686614b0a565b935060408501356001600160401b03811115614f38575f5ffd5b614f4487828801614d88565b93505060608501356001600160401b03811115614f5f575f5ffd5b614f6b87828801614d88565b925050614f7a60808601614af7565b905092959194509250565b5f5f5f5f5f60608688031215614f99575f5ffd5b8535614fa481614ae3565b945060208601356001600160401b03811115614fbe575f5ffd5b614fca88828901614cd6565b90955093505060408601356001600160401b03811115614fe8575f5ffd5b614ff488828901614cd6565b969995985093965092949392505050565b5f5f60408385031215615016575f5ffd5b823561502181614ae3565b915060208301356001600160401b0381111561503b575f5ffd5b830160a0818603121561504c575f5ffd5b809150509250929050565b828152604060208201525f610b306040830184614e6e565b5f5f60408385031215615080575f5ffd5b823561508b81614ae3565b9150602083013561504c81614ae3565b5f8151808452602084019350602083015f5b82811015614cba576150e686835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b60609590950194602091909101906001016150ad565b604081525f61510e6040830185614c7f565b828103602084015261149c818561509b565b5f8151808452602084019350602083015f5b82811015614cba5781516001600160a01b0316865260209586019590910190600101615132565b602081525f61083c6020830184615120565b5f5f6040838503121561517c575f5ffd5b82356001600160401b03811115615191575f5ffd5b61519d85828601614d88565b925050602083013561504c81614ae3565b602080825282518282018190525f918401906040840190835b818110156151ee5783516001600160401b03168352602093840193909201916001016151c7565b509095945050505050565b5f5f5f5f6060858703121561520c575f5ffd5b843561521781614ae3565b935061522560208601614af7565b925060408501356001600160401b0381111561523f575f5ffd5b61524b87828801614cd6565b95989497509550505050565b5f5f60408385031215615268575f5ffd5b823561527381614ae3565b915060208301356001600160401b0381111561528d575f5ffd5b613de285828601614d88565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156152df575f5ffd5b82356152ea81614ae3565b9150614c2660208401614af7565b5f60208284031215615308575f5ffd5b813560ff8116811461083c575f5ffd5b5f60608284031215615328575f5ffd5b50919050565b5f6020828403121561533e575f5ffd5b81356001600160401b03811115615353575f5ffd5b6108ed84828501615318565b5f5f5f60808486031215615371575f5ffd5b83356001600160401b03811115615386575f5ffd5b61539286828701614d88565b935050614bad8560208601614b0a565b602081525f61083c602083018461509b565b5f5f5f606084860312156153c6575f5ffd5b83356153d181614ae3565b925060208401356001600160401b038111156153eb575f5ffd5b6153f786828701614d88565b92505061540660408501614af7565b90509250925092565b5f5f60408385031215615420575f5ffd5b823561542b81614ae3565b915060208301356001600160401b03811115615445575f5ffd5b8301601f81018513615455575f5ffd5b8035615463614da582614d66565b8082825260208201915060208360051b850101925087831115615484575f5ffd5b602084015b838110156155a95780356001600160401b038111156154a6575f5ffd5b85016080818b03601f190112156154bb575f5ffd5b6154c3614a8b565b6154d08b60208401614b0a565b815260608201356001600160401b038111156154ea575f5ffd5b6154f98c602083860101614d88565b60208301525060808201356001600160401b03811115615517575f5ffd5b6020818401019250508a601f83011261552e575f5ffd5b813561553c614da582614d66565b8082825260208201915060208360051b86010192508d83111561555d575f5ffd5b6020850194505b828510156155935784356001600160401b0381168114615582575f5ffd5b825260209485019490910190615564565b6040840152505084525060209283019201615489565b50809450505050509250929050565b5f5f5f604084860312156155ca575f5ffd5b83356155d581614ae3565b925060208401356001600160401b038111156155ef575f5ffd5b8401601f810186136155ff575f5ffd5b80356001600160401b03811115615614575f5ffd5b866020828401011115615625575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615647575f5ffd5b823561565281614ae3565b915060208301356001600160401b0381111561566c575f5ffd5b613de285828601615318565b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126156a0575f5ffd5b9190910192915050565b5f602082840312156156ba575f5ffd5b61083c82614af7565b5f5f8335601e198436030181126156d8575f5ffd5b8301803591506001600160401b038211156156f1575f5ffd5b6020019150600581901b3603821315610ffa575f5ffd5b5f60208284031215615718575f5ffd5b813561ffff8116811461083c575f5ffd5b5f60208284031215615739575f5ffd5b8151801515811461083c575f5ffd5b604081016108f18284614c61565b634e487b7160e01b5f52601160045260245ffd5b63ffffffff81811683821601908111156108f1576108f1615756565b8183526020830192505f815f5b84811015614cba5763ffffffff6157a983614af7565b1686526020958601959190910190600101615793565b6001600160a01b038581168252841660208201526060604082018190525f906108729083018486615786565b6001600160a01b038616815260c081016158086020830187614c61565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f610b3060208301848661583c565b5f5f8335601e1984360301811261588c575f5ffd5b8301803591506001600160401b038211156158a5575f5ffd5b602001915036819003821315610ffa575f5ffd5b6001600160a01b038781168252861660208201526080604082018190525f906158e59083018688615786565b82810360608401526158f881858761583c565b9998505050505050505050565b606081016159138285614c61565b6001600160a01b039290921660409190910152919050565b80516020808301519190811015615328575f1960209190910360031b1b16919050565b604081525f6159606040830185615120565b828103602084015261149c8185615120565b5f60208284031215615982575f5ffd5b81516001600160401b03811115615997575f5ffd5b8201601f810184136159a7575f5ffd5b80516159b5614da582614d66565b8082825260208201915060208360051b8501019250868311156159d6575f5ffd5b602084015b83811015615a735780516001600160401b038111156159f8575f5ffd5b8501603f81018913615a08575f5ffd5b6020810151615a19614da582614d66565b808282526020820191506020808460051b8601010192508b831115615a3c575f5ffd5b6040840193505b82841015615a5e578351825260209384019390910190615a43565b865250506020938401939190910190506159db565b509695505050505050565b5f60018201615a8f57615a8f615756565b5060010190565b818103818111156108f1576108f1615756565b6001600160401b0382811682821603908111156108f1576108f1615756565b5f81600f0b60016001607f1b03198103615ae457615ae4615756565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b0319821217156108f1576108f1615756565b6001600160a01b038716815260e08101615b366020830188614c61565b60608201959095526001600160a01b039390931660808401526001600160401b0391821660a08401521660c09091015292915050565b5f60208284031215615b7c575f5ffd5b5051919050565b6001600160a01b03881681525f60c08201615ba1602084018a614c61565b60c060608401528690528660e083015f5b88811015615be2578235615bc581614ae3565b6001600160a01b0316825260209283019290910190600101615bb2565b508381036080850152615bf58188614e6e565b91505082810360a0840152615c0b81858761583c565b9a9950505050505050505050565b5f81615c2757615c27615756565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b03821317156108f1576108f1615756565b5f60208284031215615c6b575f5ffd5b815161083c81614ae3565b8082018281125f831280158216821582161715615c9557615c95615756565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b808201808211156108f1576108f1615756565b5f82615d0657634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212206de5d5a7fb79e353eb1c437f5e9a465a14c00f8ec0f1515ea11c083116f4c5ff64736f6c634300081b0033", } // AllocationManagerABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/BN254/binding.go b/pkg/bindings/BN254/binding.go index 05d3048ffd..948e233308 100644 --- a/pkg/bindings/BN254/binding.go +++ b/pkg/bindings/BN254/binding.go @@ -32,7 +32,7 @@ var ( // BN254MetaData contains all meta data concerning the BN254 contract. var BN254MetaData = &bind.MetaData{ ABI: "[{\"type\":\"error\",\"name\":\"ECAddFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECMulFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECPairingFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpModFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ScalarTooLarge\",\"inputs\":[]}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212205cd636b76efe6e5ffd1521d07ce471dee8f0c54af7c59d5cee0f817f2ab551fd64736f6c634300081b0033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212205d5cbdf978bc8397dd867db7f831e02fd1840ae85553aaf69b449a540b2ae60a64736f6c634300081b0033", } // BN254ABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/BN254CertificateVerifier/binding.go b/pkg/bindings/BN254CertificateVerifier/binding.go new file mode 100644 index 0000000000..78761b7a01 --- /dev/null +++ b/pkg/bindings/BN254CertificateVerifier/binding.go @@ -0,0 +1,1067 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package BN254CertificateVerifier + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// BN254G1Point is an auto generated low-level Go binding around an user-defined struct. +type BN254G1Point struct { + X *big.Int + Y *big.Int +} + +// BN254G2Point is an auto generated low-level Go binding around an user-defined struct. +type BN254G2Point struct { + X [2]*big.Int + Y [2]*big.Int +} + +// IBN254CertificateVerifierTypesBN254Certificate is an auto generated low-level Go binding around an user-defined struct. +type IBN254CertificateVerifierTypesBN254Certificate struct { + ReferenceTimestamp uint32 + MessageHash [32]byte + Signature BN254G1Point + Apk BN254G2Point + NonSignerWitnesses []IBN254CertificateVerifierTypesBN254OperatorInfoWitness +} + +// IBN254CertificateVerifierTypesBN254OperatorInfoWitness is an auto generated low-level Go binding around an user-defined struct. +type IBN254CertificateVerifierTypesBN254OperatorInfoWitness struct { + OperatorIndex uint32 + OperatorInfoProof []byte + OperatorInfo IBN254TableCalculatorTypesBN254OperatorInfo +} + +// IBN254TableCalculatorTypesBN254OperatorInfo is an auto generated low-level Go binding around an user-defined struct. +type IBN254TableCalculatorTypesBN254OperatorInfo struct { + Pubkey BN254G1Point + Weights []*big.Int +} + +// IBN254TableCalculatorTypesBN254OperatorSetInfo is an auto generated low-level Go binding around an user-defined struct. +type IBN254TableCalculatorTypesBN254OperatorSetInfo struct { + OperatorInfoTreeRoot [32]byte + NumOperators *big.Int + AggregatePubkey BN254G1Point + TotalWeights []*big.Int +} + +// ICrossChainRegistryTypesOperatorSetConfig is an auto generated low-level Go binding around an user-defined struct. +type ICrossChainRegistryTypesOperatorSetConfig struct { + Owner common.Address + MaxStalenessPeriod uint32 +} + +// OperatorSet is an auto generated low-level Go binding around an user-defined struct. +type OperatorSet struct { + Avs common.Address + Id uint32 +} + +// BN254CertificateVerifierMetaData contains all meta data concerning the BN254CertificateVerifier contract. +var BN254CertificateVerifierMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_operatorTableUpdater\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableUpdater\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getOperatorInfo\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetInfo\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetOwner\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestReferenceTimestamp\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"maxOperatorTableStaleness\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorTableUpdater\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableUpdater\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorSetInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"operatorSetConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificate\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]}],\"outputs\":[{\"name\":\"signedStakes\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificateNominal\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"totalStakeNominalThresholds\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificateProportion\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"totalStakeProportionThresholds\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxStalenessPeriodUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetOwnerUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TableUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"operatorSetInfo\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CertificateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECAddFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECMulFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpModFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyTableUpdater\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReferenceTimestampDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VerificationFailed\",\"inputs\":[]}]", + Bin: "0x60a060405234801561000f575f5ffd5b5060405161232b38038061232b83398101604081905261002e91610105565b6001600160a01b038116608052610043610049565b50610132565b5f54610100900460ff16156100b45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610103575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b5f60208284031215610115575f5ffd5b81516001600160a01b038116811461012b575f5ffd5b9392505050565b6080516121da6101515f395f818161013c01526103d901526121da5ff3fe608060405234801561000f575f5ffd5b506004361061009b575f3560e01c806368d6e0811161006357806368d6e081146101375780638481892014610176578063dd2ae1b914610189578063e49613fc1461019c578063eb39e68f146101bc575f5ffd5b8063017d79741461009f578063080b7150146100c75780635ddb9b5b146100e75780636141879e1461010f5780636738c40b14610122575b5f5ffd5b6100b26100ad366004611c28565b6101dc565b60405190151581526020015b60405180910390f35b6100da6100d5366004611d03565b61036d565b6040516100be9190611d4e565b6100fa6100f5366004611d85565b610382565b60405163ffffffff90911681526020016100be565b6100fa61011d366004611d85565b6103a8565b610135610130366004611db5565b6103ce565b005b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100be565b61015e610184366004611d85565b61059b565b6100b2610197366004611e79565b6105c4565b6101af6101aa366004611eec565b610657565b6040516100be9190611f61565b6101cf6101ca366004611f96565b61070f565b6040516100be919061200d565b5f5f6101e885856107d4565b90505f6101f486610994565b5f8181526004602081815260408084208a5163ffffffff16855282528084208151608081018352815481526001820154818501528251808401845260028301548152600383015481860152818401529381018054835181860281018601909452808452969750949593949093606086019383018282801561029257602002820191905f5260205f20905b81548152602001906001019080831161027e575b50505050508152505090505f8160600151905085518451146102c75760405163512509d360e11b815260040160405180910390fd5b5f5b845181101561035c575f6127108883815181106102e8576102e861201f565b602002602001015161ffff168484815181106103065761030661201f565b60200260200101516103189190612047565b6103229190612072565b9050808683815181106103375761033761201f565b60200260200101511015610353575f9650505050505050610366565b506001016102c9565b5060019450505050505b9392505050565b606061037983836107d4565b90505b92915050565b5f5f61038d83610994565b5f9081526003602052604090205463ffffffff169392505050565b5f5f6103b383610994565b5f9081526002602052604090205463ffffffff169392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104175760405163030c1b6b60e11b815260040160405180910390fd5b5f61042f61042a36879003870187611d85565b610994565b5f8181526003602052604090205490915063ffffffff9081169085161161046957604051632f20889f60e01b815260040160405180910390fd5b5f81815260046020818152604080842063ffffffff891685528252928390208651815581870151600182015592860151805160028501558101516003840155606086015180518794936104c1939085019201906115be565b5050505f818152600360209081526040909120805463ffffffff191663ffffffff87161790556104f390830183612085565b5f8281526001602090815260409182902080546001600160a01b0319166001600160a01b0394909416939093179092556105329190840190840161209e565b5f8281526002602052604090819020805463ffffffff191663ffffffff9390931692909217909155517f93e6bea1c9b5dce4a5c07b00261e956df2a4a253d9ab6ca070ca2037d72ada9e9061058c908790879087906120b7565b60405180910390a15050505050565b5f5f6105a683610994565b5f908152600160205260409020546001600160a01b03169392505050565b5f5f6105d085856107d4565b905082518151146105f45760405163512509d360e11b815260040160405180910390fd5b5f5b815181101561064b578381815181106106115761061161201f565b602002602001015182828151811061062b5761062b61201f565b60200260200101511015610643575f92505050610366565b6001016105f6565b50600195945050505050565b61065f611607565b5f61066985610994565b5f81815260056020908152604080832063ffffffff8916845282528083208784528252918290208251608081018452815481850190815260018301546060830152815260028201805485518186028101860190965280865295965090949193858401939092908301828280156106fc57602002820191905f5260205f20905b8154815260200190600101908083116106e8575b5050505050815250509150509392505050565b610717611631565b5f61072184610994565b5f81815260046020818152604080842063ffffffff89168552825292839020835160808101855281548152600182015481840152845180860186526002830154815260038301548185015281860152928101805485518185028101850190965280865295965092949093606086019390929091908301828280156107c257602002820191905f5260205f20905b8154815260200190600101908083116107ae575b50505050508152505091505092915050565b60606107de611663565b6107e784610994565b80825283516107f691906109f7565b80515f908152600460208181526040808420875163ffffffff168552825292839020835160808101855281548152600182015481840152845180860186526002830154815260038301548185015281860152928101805485518185028101850190965280865293949193606086019383018282801561089257602002820191905f5260205f20905b81548152602001906001019080831161087e575b5050509190925250505060208201819052516108c157604051630cad17b760e31b815260040160405180910390fd5b806020015160600151516001600160401b038111156108e2576108e2611791565b60405190808252806020026020018201604052801561090b578160200160208202803683370190505b5060408201525f5b8160200151606001515181101561096f57816020015160600151818151811061093e5761093e61201f565b60200260200101518260400151828151811061095c5761095c61201f565b6020908102919091010152600101610913565b5061097a8184610a49565b60608201526109898184610b73565b604001519392505050565b5f815f0151826020015163ffffffff166040516020016109df92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261037c9061210c565b5f8281526002602052604090205463ffffffff16801580610a275750610a1d818361212f565b63ffffffff164211155b610a445760405163640fcd6b60e11b815260040160405180910390fd5b505050565b6040805180820182525f808252602091820181905282518084019093528083529082018190525b826080015151811015610b6c575f83608001518281518110610a9457610a9461201f565b60200260200101519050846020015160200151815f015163ffffffff1610610acf576040516301fa53c760e11b815260040160405180910390fd5b845184515f91610adf9184610be1565b8051909150610aef908590610d56565b93505f5b816020015151811015610b6157866040015151811015610b595781602001518181518110610b2357610b2361201f565b602002602001015187604001518281518110610b4157610b4161201f565b60200260200101818151610b55919061214b565b9052505b600101610af3565b505050600101610a70565b5092915050565b5f610b93610b848460600151610dd2565b60208501516040015190610d56565b90505f5f610baf84602001518486606001518760400151610e68565b91509150818015610bbd5750805b610bda5760405163439cc0cd60e01b815260040160405180910390fd5b5050505050565b610be9611607565b5f84815260056020908152604080832063ffffffff80881685529083528184208651909116845290915281208054909190151580610c2a5750600182015415155b905080610cd3575f610c4a8787875f015188604001518960200151610fea565b905080610c6a5760405163439cc0cd60e01b815260040160405180910390fd5b6040808601515f8981526005602090815283822063ffffffff808c1684529082528483208a5190911683528152929020815180518255830151600182015582820151805192939192610cc292600285019201906115be565b509050508460400151935050610d4d565b6040805160808101825283548183019081526001850154606083015281526002840180548351602082810282018101909552818152929386938186019390929091830182828015610d4157602002820191905f5260205f20905b815481526020019060010190808311610d2d575b50505050508152505092505b50509392505050565b604080518082019091525f8082526020820152610d716116a8565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa90508080610dab57fe5b5080610dca5760405163d4b68fd760e01b815260040160405180910390fd5b505092915050565b604080518082019091525f80825260208201528151158015610df657506020820151155b15610e13575050604080518082019091525f808252602082015290565b6040518060400160405280835f015181526020015f5160206121855f395f51905f528460200151610e44919061215e565b610e5b905f5160206121855f395f51905f5261214b565b905292915050565b919050565b5f5f5f7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187875f01518860200151885f01515f60028110610eab57610eab61201f565b60200201518951600160200201518a602001515f60028110610ecf57610ecf61201f565b60200201518b60200151600160028110610eeb57610eeb61201f565b602090810291909101518c518d830151604051610f489a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b604051602081830303815290604052805190602001205f1c610f6a919061215e565b9050610fdc610f83610f7c8884611055565b8690610d56565b610f8b6110bd565b610fd2610fc385610fbd6040805180820182525f80825260209182015281518083019092526001825260029082015290565b90611055565b610fcc8c61117d565b90610d56565b8862061a80611207565b909890975095505050505050565b5f5f83604051602001610ffd9190611f61565b60408051601f1981840301815291815281516020928301205f8a81526004845282812063ffffffff808c1683529452919091205490925090611049908590839085908a81169061141b16565b98975050505050505050565b604080518082019091525f80825260208201526110706116c6565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa9050808061109e57fe5b5080610dca57604051632319df1960e11b815260040160405180910390fd5b6110c56116e4565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091525f80825260208201525f80806111aa5f5160206121855f395f51905f528661215e565b90505b6111b681611432565b90935091505f5160206121855f395f51905f5282830983036111ee576040805180820190915290815260208101919091529392505050565b5f5160206121855f395f51905f526001820890506111ad565b6040805180820182528681526020808201869052825180840190935286835282018490525f91829190611238611704565b5f5b60028110156113ef575f61124f826006612047565b90508482600281106112635761126361201f565b60200201515183611274835f612171565b600c81106112845761128461201f565b602002015284826002811061129b5761129b61201f565b602002015160200151838260016112b29190612171565b600c81106112c2576112c261201f565b60200201528382600281106112d9576112d961201f565b60200201515151836112ec836002612171565b600c81106112fc576112fc61201f565b60200201528382600281106113135761131361201f565b602002015151600160200201518361132c836003612171565b600c811061133c5761133c61201f565b60200201528382600281106113535761135361201f565b6020020151602001515f6002811061136d5761136d61201f565b60200201518361137e836004612171565b600c811061138e5761138e61201f565b60200201528382600281106113a5576113a561201f565b6020020151602001516001600281106113c0576113c061201f565b6020020151836113d1836005612171565b600c81106113e1576113e161201f565b60200201525060010161123a565b506113f8611723565b5f6020826101808560088cfa9151919c9115159b50909950505050505050505050565b5f836114288685856114ae565b1495945050505050565b5f80805f5160206121855f395f51905f5260035f5160206121855f395f51905f52865f5160206121855f395f51905f52888909090890505f6114a2827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f525f5160206121855f395f51905f52611545565b91959194509092505050565b5f602084516114bd919061215e565b156114db576040516313717da960e21b815260040160405180910390fd5b8260205b8551811161153c576114f260028561215e565b5f0361151357815f528086015160205260405f20915060028404935061152a565b808601515f528160205260405f2091506002840493505b611535602082612171565b90506114df565b50949350505050565b5f5f61154f611723565b611557611741565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828061159457fe5b50826115b35760405163d51edae360e01b815260040160405180910390fd5b505195945050505050565b828054828255905f5260205f209081019282156115f7579160200282015b828111156115f75782518255916020019190600101906115dc565b5061160392915061175f565b5090565b604080516080810182525f91810182815260608201929092529081905b8152602001606081525090565b60405180608001604052805f81526020015f815260200161162460405180604001604052805f81526020015f81525090565b60405180608001604052805f815260200161167c611631565b8152602001606081526020016116a360405180604001604052805f81526020015f81525090565b905290565b60405180608001604052806004906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b60405180604001604052806116f7611773565b81526020016116a3611773565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b5b80821115611603575f8155600101611760565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156117c7576117c7611791565b60405290565b604051606081016001600160401b03811182821017156117c7576117c7611791565b60405160a081016001600160401b03811182821017156117c7576117c7611791565b604051608081016001600160401b03811182821017156117c7576117c7611791565b604051601f8201601f191681016001600160401b038111828210171561185b5761185b611791565b604052919050565b80356001600160a01b0381168114610e63575f5ffd5b803563ffffffff81168114610e63575f5ffd5b5f6040828403121561189c575f5ffd5b6118a46117a5565b90506118af82611863565b81526118bd60208301611879565b602082015292915050565b5f604082840312156118d8575f5ffd5b6118e06117a5565b823581526020928301359281019290925250919050565b5f82601f830112611906575f5ffd5b61190e6117a5565b80604084018581111561191f575f5ffd5b845b81811015611939578035845260209384019301611921565b509095945050505050565b5f6001600160401b0382111561195c5761195c611791565b5060051b60200190565b5f82601f830112611975575f5ffd5b813561198861198382611944565b611833565b8082825260208201915060208360051b8601019250858311156119a9575f5ffd5b602085015b838110156119c65780358352602092830192016119ae565b5095945050505050565b5f606082840312156119e0575f5ffd5b6119e86117a5565b90506119f483836118c8565b815260408201356001600160401b03811115611a0e575f5ffd5b611a1a84828501611966565b60208301525092915050565b5f82601f830112611a35575f5ffd5b8135611a4361198382611944565b8082825260208201915060208360051b860101925085831115611a64575f5ffd5b602085015b838110156119c65780356001600160401b03811115611a86575f5ffd5b86016060818903601f19011215611a9b575f5ffd5b611aa36117cd565b611aaf60208301611879565b815260408201356001600160401b03811115611ac9575f5ffd5b82016020810190603f018a13611add575f5ffd5b80356001600160401b03811115611af657611af6611791565b611b09601f8201601f1916602001611833565b8181528b6020838501011115611b1d575f5ffd5b816020840160208301375f6020838301015280602085015250505060608201356001600160401b03811115611b50575f5ffd5b611b5f8a6020838601016119d0565b60408301525084525060209283019201611a69565b5f818303610120811215611b86575f5ffd5b611b8e6117ef565b9150611b9983611879565b825260208381013590830152611bb284604085016118c8565b60408301526080607f1982011215611bc8575f5ffd5b50611bd16117a5565b611bde84608085016118f7565b8152611bed8460c085016118f7565b602082015260608201526101008201356001600160401b03811115611c10575f5ffd5b611c1c84828501611a26565b60808301525092915050565b5f5f5f60808486031215611c3a575f5ffd5b611c44858561188c565b925060408401356001600160401b03811115611c5e575f5ffd5b611c6a86828701611b74565b92505060608401356001600160401b03811115611c85575f5ffd5b8401601f81018613611c95575f5ffd5b8035611ca361198382611944565b8082825260208201915060208360051b850101925088831115611cc4575f5ffd5b6020840193505b82841015611cf557833561ffff81168114611ce4575f5ffd5b825260209384019390910190611ccb565b809450505050509250925092565b5f5f60608385031215611d14575f5ffd5b611d1e848461188c565b915060408301356001600160401b03811115611d38575f5ffd5b611d4485828601611b74565b9150509250929050565b602080825282518282018190525f918401906040840190835b81811015611939578351835260209384019390920191600101611d67565b5f60408284031215611d95575f5ffd5b610379838361188c565b5f60408284031215611daf575f5ffd5b50919050565b5f5f5f5f60c08587031215611dc8575f5ffd5b611dd28686611d9f565b9350611de060408601611879565b925060608501356001600160401b03811115611dfa575f5ffd5b850160a08188031215611e0b575f5ffd5b611e13611811565b8135815260208083013590820152611e2e88604084016118c8565b604082015260808201356001600160401b03811115611e4b575f5ffd5b611e5789828501611966565b6060830152509250611e6e90508660808701611d9f565b905092959194509250565b5f5f5f60808486031215611e8b575f5ffd5b611e95858561188c565b925060408401356001600160401b03811115611eaf575f5ffd5b611ebb86828701611b74565b92505060608401356001600160401b03811115611ed6575f5ffd5b611ee286828701611966565b9150509250925092565b5f5f5f60808486031215611efe575f5ffd5b611f08858561188c565b9250611f1660408501611879565b929592945050506060919091013590565b5f8151808452602084019350602083015f5b82811015611f57578151865260209586019590910190600101611f39565b5093949350505050565b60208082528251805183830152015160408201525f6020830151606080840152611f8e6080840182611f27565b949350505050565b5f5f60608385031215611fa7575f5ffd5b611fb1848461188c565b9150611fbf60408401611879565b90509250929050565b80518252602081015160208301525f6040820151611ff3604085018280518252602090810151910152565b50606082015160a06080850152611f8e60a0850182611f27565b602081525f6103796020830184611fc8565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761037c5761037c612033565b634e487b7160e01b5f52601260045260245ffd5b5f826120805761208061205e565b500490565b5f60208284031215612095575f5ffd5b61037982611863565b5f602082840312156120ae575f5ffd5b61037982611879565b6001600160a01b036120c885611863565b16815263ffffffff6120dc60208601611879565b16602082015263ffffffff83166040820152608060608201525f6121036080830184611fc8565b95945050505050565b80516020808301519190811015611daf575f1960209190910360031b1b16919050565b63ffffffff818116838216019081111561037c5761037c612033565b8181038181111561037c5761037c612033565b5f8261216c5761216c61205e565b500690565b8082018082111561037c5761037c61203356fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220ce0bdb23d0e647954f8b7d7335bd315ee9ff0c41c13e24612c1f881d59850fd264736f6c634300081b0033", +} + +// BN254CertificateVerifierABI is the input ABI used to generate the binding from. +// Deprecated: Use BN254CertificateVerifierMetaData.ABI instead. +var BN254CertificateVerifierABI = BN254CertificateVerifierMetaData.ABI + +// BN254CertificateVerifierBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use BN254CertificateVerifierMetaData.Bin instead. +var BN254CertificateVerifierBin = BN254CertificateVerifierMetaData.Bin + +// DeployBN254CertificateVerifier deploys a new Ethereum contract, binding an instance of BN254CertificateVerifier to it. +func DeployBN254CertificateVerifier(auth *bind.TransactOpts, backend bind.ContractBackend, _operatorTableUpdater common.Address) (common.Address, *types.Transaction, *BN254CertificateVerifier, error) { + parsed, err := BN254CertificateVerifierMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(BN254CertificateVerifierBin), backend, _operatorTableUpdater) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &BN254CertificateVerifier{BN254CertificateVerifierCaller: BN254CertificateVerifierCaller{contract: contract}, BN254CertificateVerifierTransactor: BN254CertificateVerifierTransactor{contract: contract}, BN254CertificateVerifierFilterer: BN254CertificateVerifierFilterer{contract: contract}}, nil +} + +// BN254CertificateVerifier is an auto generated Go binding around an Ethereum contract. +type BN254CertificateVerifier struct { + BN254CertificateVerifierCaller // Read-only binding to the contract + BN254CertificateVerifierTransactor // Write-only binding to the contract + BN254CertificateVerifierFilterer // Log filterer for contract events +} + +// BN254CertificateVerifierCaller is an auto generated read-only Go binding around an Ethereum contract. +type BN254CertificateVerifierCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BN254CertificateVerifierTransactor is an auto generated write-only Go binding around an Ethereum contract. +type BN254CertificateVerifierTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BN254CertificateVerifierFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type BN254CertificateVerifierFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BN254CertificateVerifierSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type BN254CertificateVerifierSession struct { + Contract *BN254CertificateVerifier // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BN254CertificateVerifierCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type BN254CertificateVerifierCallerSession struct { + Contract *BN254CertificateVerifierCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// BN254CertificateVerifierTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type BN254CertificateVerifierTransactorSession struct { + Contract *BN254CertificateVerifierTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BN254CertificateVerifierRaw is an auto generated low-level Go binding around an Ethereum contract. +type BN254CertificateVerifierRaw struct { + Contract *BN254CertificateVerifier // Generic contract binding to access the raw methods on +} + +// BN254CertificateVerifierCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type BN254CertificateVerifierCallerRaw struct { + Contract *BN254CertificateVerifierCaller // Generic read-only contract binding to access the raw methods on +} + +// BN254CertificateVerifierTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type BN254CertificateVerifierTransactorRaw struct { + Contract *BN254CertificateVerifierTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewBN254CertificateVerifier creates a new instance of BN254CertificateVerifier, bound to a specific deployed contract. +func NewBN254CertificateVerifier(address common.Address, backend bind.ContractBackend) (*BN254CertificateVerifier, error) { + contract, err := bindBN254CertificateVerifier(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &BN254CertificateVerifier{BN254CertificateVerifierCaller: BN254CertificateVerifierCaller{contract: contract}, BN254CertificateVerifierTransactor: BN254CertificateVerifierTransactor{contract: contract}, BN254CertificateVerifierFilterer: BN254CertificateVerifierFilterer{contract: contract}}, nil +} + +// NewBN254CertificateVerifierCaller creates a new read-only instance of BN254CertificateVerifier, bound to a specific deployed contract. +func NewBN254CertificateVerifierCaller(address common.Address, caller bind.ContractCaller) (*BN254CertificateVerifierCaller, error) { + contract, err := bindBN254CertificateVerifier(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &BN254CertificateVerifierCaller{contract: contract}, nil +} + +// NewBN254CertificateVerifierTransactor creates a new write-only instance of BN254CertificateVerifier, bound to a specific deployed contract. +func NewBN254CertificateVerifierTransactor(address common.Address, transactor bind.ContractTransactor) (*BN254CertificateVerifierTransactor, error) { + contract, err := bindBN254CertificateVerifier(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &BN254CertificateVerifierTransactor{contract: contract}, nil +} + +// NewBN254CertificateVerifierFilterer creates a new log filterer instance of BN254CertificateVerifier, bound to a specific deployed contract. +func NewBN254CertificateVerifierFilterer(address common.Address, filterer bind.ContractFilterer) (*BN254CertificateVerifierFilterer, error) { + contract, err := bindBN254CertificateVerifier(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &BN254CertificateVerifierFilterer{contract: contract}, nil +} + +// bindBN254CertificateVerifier binds a generic wrapper to an already deployed contract. +func bindBN254CertificateVerifier(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BN254CertificateVerifierMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BN254CertificateVerifier *BN254CertificateVerifierRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BN254CertificateVerifier.Contract.BN254CertificateVerifierCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BN254CertificateVerifier *BN254CertificateVerifierRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BN254CertificateVerifier.Contract.BN254CertificateVerifierTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BN254CertificateVerifier *BN254CertificateVerifierRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BN254CertificateVerifier.Contract.BN254CertificateVerifierTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BN254CertificateVerifier *BN254CertificateVerifierCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BN254CertificateVerifier.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BN254CertificateVerifier *BN254CertificateVerifierTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BN254CertificateVerifier.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BN254CertificateVerifier *BN254CertificateVerifierTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BN254CertificateVerifier.Contract.contract.Transact(opts, method, params...) +} + +// GetOperatorInfo is a free data retrieval call binding the contract method 0xe49613fc. +// +// Solidity: function getOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint256 operatorIndex) view returns(((uint256,uint256),uint256[])) +func (_BN254CertificateVerifier *BN254CertificateVerifierCaller) GetOperatorInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IBN254TableCalculatorTypesBN254OperatorInfo, error) { + var out []interface{} + err := _BN254CertificateVerifier.contract.Call(opts, &out, "getOperatorInfo", operatorSet, referenceTimestamp, operatorIndex) + + if err != nil { + return *new(IBN254TableCalculatorTypesBN254OperatorInfo), err + } + + out0 := *abi.ConvertType(out[0], new(IBN254TableCalculatorTypesBN254OperatorInfo)).(*IBN254TableCalculatorTypesBN254OperatorInfo) + + return out0, err + +} + +// GetOperatorInfo is a free data retrieval call binding the contract method 0xe49613fc. +// +// Solidity: function getOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint256 operatorIndex) view returns(((uint256,uint256),uint256[])) +func (_BN254CertificateVerifier *BN254CertificateVerifierSession) GetOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IBN254TableCalculatorTypesBN254OperatorInfo, error) { + return _BN254CertificateVerifier.Contract.GetOperatorInfo(&_BN254CertificateVerifier.CallOpts, operatorSet, referenceTimestamp, operatorIndex) +} + +// GetOperatorInfo is a free data retrieval call binding the contract method 0xe49613fc. +// +// Solidity: function getOperatorInfo((address,uint32) operatorSet, uint32 referenceTimestamp, uint256 operatorIndex) view returns(((uint256,uint256),uint256[])) +func (_BN254CertificateVerifier *BN254CertificateVerifierCallerSession) GetOperatorInfo(operatorSet OperatorSet, referenceTimestamp uint32, operatorIndex *big.Int) (IBN254TableCalculatorTypesBN254OperatorInfo, error) { + return _BN254CertificateVerifier.Contract.GetOperatorInfo(&_BN254CertificateVerifier.CallOpts, operatorSet, referenceTimestamp, operatorIndex) +} + +// GetOperatorSetInfo is a free data retrieval call binding the contract method 0xeb39e68f. +// +// Solidity: function getOperatorSetInfo((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((bytes32,uint256,(uint256,uint256),uint256[])) +func (_BN254CertificateVerifier *BN254CertificateVerifierCaller) GetOperatorSetInfo(opts *bind.CallOpts, operatorSet OperatorSet, referenceTimestamp uint32) (IBN254TableCalculatorTypesBN254OperatorSetInfo, error) { + var out []interface{} + err := _BN254CertificateVerifier.contract.Call(opts, &out, "getOperatorSetInfo", operatorSet, referenceTimestamp) + + if err != nil { + return *new(IBN254TableCalculatorTypesBN254OperatorSetInfo), err + } + + out0 := *abi.ConvertType(out[0], new(IBN254TableCalculatorTypesBN254OperatorSetInfo)).(*IBN254TableCalculatorTypesBN254OperatorSetInfo) + + return out0, err + +} + +// GetOperatorSetInfo is a free data retrieval call binding the contract method 0xeb39e68f. +// +// Solidity: function getOperatorSetInfo((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((bytes32,uint256,(uint256,uint256),uint256[])) +func (_BN254CertificateVerifier *BN254CertificateVerifierSession) GetOperatorSetInfo(operatorSet OperatorSet, referenceTimestamp uint32) (IBN254TableCalculatorTypesBN254OperatorSetInfo, error) { + return _BN254CertificateVerifier.Contract.GetOperatorSetInfo(&_BN254CertificateVerifier.CallOpts, operatorSet, referenceTimestamp) +} + +// GetOperatorSetInfo is a free data retrieval call binding the contract method 0xeb39e68f. +// +// Solidity: function getOperatorSetInfo((address,uint32) operatorSet, uint32 referenceTimestamp) view returns((bytes32,uint256,(uint256,uint256),uint256[])) +func (_BN254CertificateVerifier *BN254CertificateVerifierCallerSession) GetOperatorSetInfo(operatorSet OperatorSet, referenceTimestamp uint32) (IBN254TableCalculatorTypesBN254OperatorSetInfo, error) { + return _BN254CertificateVerifier.Contract.GetOperatorSetInfo(&_BN254CertificateVerifier.CallOpts, operatorSet, referenceTimestamp) +} + +// GetOperatorSetOwner is a free data retrieval call binding the contract method 0x84818920. +// +// Solidity: function getOperatorSetOwner((address,uint32) operatorSet) view returns(address) +func (_BN254CertificateVerifier *BN254CertificateVerifierCaller) GetOperatorSetOwner(opts *bind.CallOpts, operatorSet OperatorSet) (common.Address, error) { + var out []interface{} + err := _BN254CertificateVerifier.contract.Call(opts, &out, "getOperatorSetOwner", operatorSet) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetOperatorSetOwner is a free data retrieval call binding the contract method 0x84818920. +// +// Solidity: function getOperatorSetOwner((address,uint32) operatorSet) view returns(address) +func (_BN254CertificateVerifier *BN254CertificateVerifierSession) GetOperatorSetOwner(operatorSet OperatorSet) (common.Address, error) { + return _BN254CertificateVerifier.Contract.GetOperatorSetOwner(&_BN254CertificateVerifier.CallOpts, operatorSet) +} + +// GetOperatorSetOwner is a free data retrieval call binding the contract method 0x84818920. +// +// Solidity: function getOperatorSetOwner((address,uint32) operatorSet) view returns(address) +func (_BN254CertificateVerifier *BN254CertificateVerifierCallerSession) GetOperatorSetOwner(operatorSet OperatorSet) (common.Address, error) { + return _BN254CertificateVerifier.Contract.GetOperatorSetOwner(&_BN254CertificateVerifier.CallOpts, operatorSet) +} + +// LatestReferenceTimestamp is a free data retrieval call binding the contract method 0x5ddb9b5b. +// +// Solidity: function latestReferenceTimestamp((address,uint32) operatorSet) view returns(uint32) +func (_BN254CertificateVerifier *BN254CertificateVerifierCaller) LatestReferenceTimestamp(opts *bind.CallOpts, operatorSet OperatorSet) (uint32, error) { + var out []interface{} + err := _BN254CertificateVerifier.contract.Call(opts, &out, "latestReferenceTimestamp", operatorSet) + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// LatestReferenceTimestamp is a free data retrieval call binding the contract method 0x5ddb9b5b. +// +// Solidity: function latestReferenceTimestamp((address,uint32) operatorSet) view returns(uint32) +func (_BN254CertificateVerifier *BN254CertificateVerifierSession) LatestReferenceTimestamp(operatorSet OperatorSet) (uint32, error) { + return _BN254CertificateVerifier.Contract.LatestReferenceTimestamp(&_BN254CertificateVerifier.CallOpts, operatorSet) +} + +// LatestReferenceTimestamp is a free data retrieval call binding the contract method 0x5ddb9b5b. +// +// Solidity: function latestReferenceTimestamp((address,uint32) operatorSet) view returns(uint32) +func (_BN254CertificateVerifier *BN254CertificateVerifierCallerSession) LatestReferenceTimestamp(operatorSet OperatorSet) (uint32, error) { + return _BN254CertificateVerifier.Contract.LatestReferenceTimestamp(&_BN254CertificateVerifier.CallOpts, operatorSet) +} + +// MaxOperatorTableStaleness is a free data retrieval call binding the contract method 0x6141879e. +// +// Solidity: function maxOperatorTableStaleness((address,uint32) operatorSet) view returns(uint32) +func (_BN254CertificateVerifier *BN254CertificateVerifierCaller) MaxOperatorTableStaleness(opts *bind.CallOpts, operatorSet OperatorSet) (uint32, error) { + var out []interface{} + err := _BN254CertificateVerifier.contract.Call(opts, &out, "maxOperatorTableStaleness", operatorSet) + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// MaxOperatorTableStaleness is a free data retrieval call binding the contract method 0x6141879e. +// +// Solidity: function maxOperatorTableStaleness((address,uint32) operatorSet) view returns(uint32) +func (_BN254CertificateVerifier *BN254CertificateVerifierSession) MaxOperatorTableStaleness(operatorSet OperatorSet) (uint32, error) { + return _BN254CertificateVerifier.Contract.MaxOperatorTableStaleness(&_BN254CertificateVerifier.CallOpts, operatorSet) +} + +// MaxOperatorTableStaleness is a free data retrieval call binding the contract method 0x6141879e. +// +// Solidity: function maxOperatorTableStaleness((address,uint32) operatorSet) view returns(uint32) +func (_BN254CertificateVerifier *BN254CertificateVerifierCallerSession) MaxOperatorTableStaleness(operatorSet OperatorSet) (uint32, error) { + return _BN254CertificateVerifier.Contract.MaxOperatorTableStaleness(&_BN254CertificateVerifier.CallOpts, operatorSet) +} + +// OperatorTableUpdater is a free data retrieval call binding the contract method 0x68d6e081. +// +// Solidity: function operatorTableUpdater() view returns(address) +func (_BN254CertificateVerifier *BN254CertificateVerifierCaller) OperatorTableUpdater(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _BN254CertificateVerifier.contract.Call(opts, &out, "operatorTableUpdater") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OperatorTableUpdater is a free data retrieval call binding the contract method 0x68d6e081. +// +// Solidity: function operatorTableUpdater() view returns(address) +func (_BN254CertificateVerifier *BN254CertificateVerifierSession) OperatorTableUpdater() (common.Address, error) { + return _BN254CertificateVerifier.Contract.OperatorTableUpdater(&_BN254CertificateVerifier.CallOpts) +} + +// OperatorTableUpdater is a free data retrieval call binding the contract method 0x68d6e081. +// +// Solidity: function operatorTableUpdater() view returns(address) +func (_BN254CertificateVerifier *BN254CertificateVerifierCallerSession) OperatorTableUpdater() (common.Address, error) { + return _BN254CertificateVerifier.Contract.OperatorTableUpdater(&_BN254CertificateVerifier.CallOpts) +} + +// UpdateOperatorTable is a paid mutator transaction binding the contract method 0x6738c40b. +// +// Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo, (address,uint32) operatorSetConfig) returns() +func (_BN254CertificateVerifier *BN254CertificateVerifierTransactor) UpdateOperatorTable(opts *bind.TransactOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _BN254CertificateVerifier.contract.Transact(opts, "updateOperatorTable", operatorSet, referenceTimestamp, operatorSetInfo, operatorSetConfig) +} + +// UpdateOperatorTable is a paid mutator transaction binding the contract method 0x6738c40b. +// +// Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo, (address,uint32) operatorSetConfig) returns() +func (_BN254CertificateVerifier *BN254CertificateVerifierSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _BN254CertificateVerifier.Contract.UpdateOperatorTable(&_BN254CertificateVerifier.TransactOpts, operatorSet, referenceTimestamp, operatorSetInfo, operatorSetConfig) +} + +// UpdateOperatorTable is a paid mutator transaction binding the contract method 0x6738c40b. +// +// Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo, (address,uint32) operatorSetConfig) returns() +func (_BN254CertificateVerifier *BN254CertificateVerifierTransactorSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _BN254CertificateVerifier.Contract.UpdateOperatorTable(&_BN254CertificateVerifier.TransactOpts, operatorSet, referenceTimestamp, operatorSetInfo, operatorSetConfig) +} + +// VerifyCertificate is a paid mutator transaction binding the contract method 0x080b7150. +// +// Solidity: function verifyCertificate((address,uint32) operatorSet, (uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) cert) returns(uint256[] signedStakes) +func (_BN254CertificateVerifier *BN254CertificateVerifierTransactor) VerifyCertificate(opts *bind.TransactOpts, operatorSet OperatorSet, cert IBN254CertificateVerifierTypesBN254Certificate) (*types.Transaction, error) { + return _BN254CertificateVerifier.contract.Transact(opts, "verifyCertificate", operatorSet, cert) +} + +// VerifyCertificate is a paid mutator transaction binding the contract method 0x080b7150. +// +// Solidity: function verifyCertificate((address,uint32) operatorSet, (uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) cert) returns(uint256[] signedStakes) +func (_BN254CertificateVerifier *BN254CertificateVerifierSession) VerifyCertificate(operatorSet OperatorSet, cert IBN254CertificateVerifierTypesBN254Certificate) (*types.Transaction, error) { + return _BN254CertificateVerifier.Contract.VerifyCertificate(&_BN254CertificateVerifier.TransactOpts, operatorSet, cert) +} + +// VerifyCertificate is a paid mutator transaction binding the contract method 0x080b7150. +// +// Solidity: function verifyCertificate((address,uint32) operatorSet, (uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) cert) returns(uint256[] signedStakes) +func (_BN254CertificateVerifier *BN254CertificateVerifierTransactorSession) VerifyCertificate(operatorSet OperatorSet, cert IBN254CertificateVerifierTypesBN254Certificate) (*types.Transaction, error) { + return _BN254CertificateVerifier.Contract.VerifyCertificate(&_BN254CertificateVerifier.TransactOpts, operatorSet, cert) +} + +// VerifyCertificateNominal is a paid mutator transaction binding the contract method 0xdd2ae1b9. +// +// Solidity: function verifyCertificateNominal((address,uint32) operatorSet, (uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) cert, uint256[] totalStakeNominalThresholds) returns(bool) +func (_BN254CertificateVerifier *BN254CertificateVerifierTransactor) VerifyCertificateNominal(opts *bind.TransactOpts, operatorSet OperatorSet, cert IBN254CertificateVerifierTypesBN254Certificate, totalStakeNominalThresholds []*big.Int) (*types.Transaction, error) { + return _BN254CertificateVerifier.contract.Transact(opts, "verifyCertificateNominal", operatorSet, cert, totalStakeNominalThresholds) +} + +// VerifyCertificateNominal is a paid mutator transaction binding the contract method 0xdd2ae1b9. +// +// Solidity: function verifyCertificateNominal((address,uint32) operatorSet, (uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) cert, uint256[] totalStakeNominalThresholds) returns(bool) +func (_BN254CertificateVerifier *BN254CertificateVerifierSession) VerifyCertificateNominal(operatorSet OperatorSet, cert IBN254CertificateVerifierTypesBN254Certificate, totalStakeNominalThresholds []*big.Int) (*types.Transaction, error) { + return _BN254CertificateVerifier.Contract.VerifyCertificateNominal(&_BN254CertificateVerifier.TransactOpts, operatorSet, cert, totalStakeNominalThresholds) +} + +// VerifyCertificateNominal is a paid mutator transaction binding the contract method 0xdd2ae1b9. +// +// Solidity: function verifyCertificateNominal((address,uint32) operatorSet, (uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) cert, uint256[] totalStakeNominalThresholds) returns(bool) +func (_BN254CertificateVerifier *BN254CertificateVerifierTransactorSession) VerifyCertificateNominal(operatorSet OperatorSet, cert IBN254CertificateVerifierTypesBN254Certificate, totalStakeNominalThresholds []*big.Int) (*types.Transaction, error) { + return _BN254CertificateVerifier.Contract.VerifyCertificateNominal(&_BN254CertificateVerifier.TransactOpts, operatorSet, cert, totalStakeNominalThresholds) +} + +// VerifyCertificateProportion is a paid mutator transaction binding the contract method 0x017d7974. +// +// Solidity: function verifyCertificateProportion((address,uint32) operatorSet, (uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) cert, uint16[] totalStakeProportionThresholds) returns(bool) +func (_BN254CertificateVerifier *BN254CertificateVerifierTransactor) VerifyCertificateProportion(opts *bind.TransactOpts, operatorSet OperatorSet, cert IBN254CertificateVerifierTypesBN254Certificate, totalStakeProportionThresholds []uint16) (*types.Transaction, error) { + return _BN254CertificateVerifier.contract.Transact(opts, "verifyCertificateProportion", operatorSet, cert, totalStakeProportionThresholds) +} + +// VerifyCertificateProportion is a paid mutator transaction binding the contract method 0x017d7974. +// +// Solidity: function verifyCertificateProportion((address,uint32) operatorSet, (uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) cert, uint16[] totalStakeProportionThresholds) returns(bool) +func (_BN254CertificateVerifier *BN254CertificateVerifierSession) VerifyCertificateProportion(operatorSet OperatorSet, cert IBN254CertificateVerifierTypesBN254Certificate, totalStakeProportionThresholds []uint16) (*types.Transaction, error) { + return _BN254CertificateVerifier.Contract.VerifyCertificateProportion(&_BN254CertificateVerifier.TransactOpts, operatorSet, cert, totalStakeProportionThresholds) +} + +// VerifyCertificateProportion is a paid mutator transaction binding the contract method 0x017d7974. +// +// Solidity: function verifyCertificateProportion((address,uint32) operatorSet, (uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) cert, uint16[] totalStakeProportionThresholds) returns(bool) +func (_BN254CertificateVerifier *BN254CertificateVerifierTransactorSession) VerifyCertificateProportion(operatorSet OperatorSet, cert IBN254CertificateVerifierTypesBN254Certificate, totalStakeProportionThresholds []uint16) (*types.Transaction, error) { + return _BN254CertificateVerifier.Contract.VerifyCertificateProportion(&_BN254CertificateVerifier.TransactOpts, operatorSet, cert, totalStakeProportionThresholds) +} + +// BN254CertificateVerifierInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the BN254CertificateVerifier contract. +type BN254CertificateVerifierInitializedIterator struct { + Event *BN254CertificateVerifierInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BN254CertificateVerifierInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BN254CertificateVerifierInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BN254CertificateVerifierInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BN254CertificateVerifierInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BN254CertificateVerifierInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BN254CertificateVerifierInitialized represents a Initialized event raised by the BN254CertificateVerifier contract. +type BN254CertificateVerifierInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_BN254CertificateVerifier *BN254CertificateVerifierFilterer) FilterInitialized(opts *bind.FilterOpts) (*BN254CertificateVerifierInitializedIterator, error) { + + logs, sub, err := _BN254CertificateVerifier.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &BN254CertificateVerifierInitializedIterator{contract: _BN254CertificateVerifier.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_BN254CertificateVerifier *BN254CertificateVerifierFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *BN254CertificateVerifierInitialized) (event.Subscription, error) { + + logs, sub, err := _BN254CertificateVerifier.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BN254CertificateVerifierInitialized) + if err := _BN254CertificateVerifier.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_BN254CertificateVerifier *BN254CertificateVerifierFilterer) ParseInitialized(log types.Log) (*BN254CertificateVerifierInitialized, error) { + event := new(BN254CertificateVerifierInitialized) + if err := _BN254CertificateVerifier.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BN254CertificateVerifierMaxStalenessPeriodUpdatedIterator is returned from FilterMaxStalenessPeriodUpdated and is used to iterate over the raw logs and unpacked data for MaxStalenessPeriodUpdated events raised by the BN254CertificateVerifier contract. +type BN254CertificateVerifierMaxStalenessPeriodUpdatedIterator struct { + Event *BN254CertificateVerifierMaxStalenessPeriodUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BN254CertificateVerifierMaxStalenessPeriodUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BN254CertificateVerifierMaxStalenessPeriodUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BN254CertificateVerifierMaxStalenessPeriodUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BN254CertificateVerifierMaxStalenessPeriodUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BN254CertificateVerifierMaxStalenessPeriodUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BN254CertificateVerifierMaxStalenessPeriodUpdated represents a MaxStalenessPeriodUpdated event raised by the BN254CertificateVerifier contract. +type BN254CertificateVerifierMaxStalenessPeriodUpdated struct { + OperatorSet OperatorSet + MaxStalenessPeriod uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMaxStalenessPeriodUpdated is a free log retrieval operation binding the contract event 0x28539469fbbc8a5482e60966bf9376f7b9d25b2f0a65a9976f6baa3f0e3788da. +// +// Solidity: event MaxStalenessPeriodUpdated((address,uint32) operatorSet, uint32 maxStalenessPeriod) +func (_BN254CertificateVerifier *BN254CertificateVerifierFilterer) FilterMaxStalenessPeriodUpdated(opts *bind.FilterOpts) (*BN254CertificateVerifierMaxStalenessPeriodUpdatedIterator, error) { + + logs, sub, err := _BN254CertificateVerifier.contract.FilterLogs(opts, "MaxStalenessPeriodUpdated") + if err != nil { + return nil, err + } + return &BN254CertificateVerifierMaxStalenessPeriodUpdatedIterator{contract: _BN254CertificateVerifier.contract, event: "MaxStalenessPeriodUpdated", logs: logs, sub: sub}, nil +} + +// WatchMaxStalenessPeriodUpdated is a free log subscription operation binding the contract event 0x28539469fbbc8a5482e60966bf9376f7b9d25b2f0a65a9976f6baa3f0e3788da. +// +// Solidity: event MaxStalenessPeriodUpdated((address,uint32) operatorSet, uint32 maxStalenessPeriod) +func (_BN254CertificateVerifier *BN254CertificateVerifierFilterer) WatchMaxStalenessPeriodUpdated(opts *bind.WatchOpts, sink chan<- *BN254CertificateVerifierMaxStalenessPeriodUpdated) (event.Subscription, error) { + + logs, sub, err := _BN254CertificateVerifier.contract.WatchLogs(opts, "MaxStalenessPeriodUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BN254CertificateVerifierMaxStalenessPeriodUpdated) + if err := _BN254CertificateVerifier.contract.UnpackLog(event, "MaxStalenessPeriodUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMaxStalenessPeriodUpdated is a log parse operation binding the contract event 0x28539469fbbc8a5482e60966bf9376f7b9d25b2f0a65a9976f6baa3f0e3788da. +// +// Solidity: event MaxStalenessPeriodUpdated((address,uint32) operatorSet, uint32 maxStalenessPeriod) +func (_BN254CertificateVerifier *BN254CertificateVerifierFilterer) ParseMaxStalenessPeriodUpdated(log types.Log) (*BN254CertificateVerifierMaxStalenessPeriodUpdated, error) { + event := new(BN254CertificateVerifierMaxStalenessPeriodUpdated) + if err := _BN254CertificateVerifier.contract.UnpackLog(event, "MaxStalenessPeriodUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BN254CertificateVerifierOperatorSetOwnerUpdatedIterator is returned from FilterOperatorSetOwnerUpdated and is used to iterate over the raw logs and unpacked data for OperatorSetOwnerUpdated events raised by the BN254CertificateVerifier contract. +type BN254CertificateVerifierOperatorSetOwnerUpdatedIterator struct { + Event *BN254CertificateVerifierOperatorSetOwnerUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BN254CertificateVerifierOperatorSetOwnerUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BN254CertificateVerifierOperatorSetOwnerUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BN254CertificateVerifierOperatorSetOwnerUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BN254CertificateVerifierOperatorSetOwnerUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BN254CertificateVerifierOperatorSetOwnerUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BN254CertificateVerifierOperatorSetOwnerUpdated represents a OperatorSetOwnerUpdated event raised by the BN254CertificateVerifier contract. +type BN254CertificateVerifierOperatorSetOwnerUpdated struct { + OperatorSet OperatorSet + Owner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSetOwnerUpdated is a free log retrieval operation binding the contract event 0x806dc367095c0baf953d7144b7c4376261675ee0b4e0da2761e43673051c7375. +// +// Solidity: event OperatorSetOwnerUpdated((address,uint32) operatorSet, address owner) +func (_BN254CertificateVerifier *BN254CertificateVerifierFilterer) FilterOperatorSetOwnerUpdated(opts *bind.FilterOpts) (*BN254CertificateVerifierOperatorSetOwnerUpdatedIterator, error) { + + logs, sub, err := _BN254CertificateVerifier.contract.FilterLogs(opts, "OperatorSetOwnerUpdated") + if err != nil { + return nil, err + } + return &BN254CertificateVerifierOperatorSetOwnerUpdatedIterator{contract: _BN254CertificateVerifier.contract, event: "OperatorSetOwnerUpdated", logs: logs, sub: sub}, nil +} + +// WatchOperatorSetOwnerUpdated is a free log subscription operation binding the contract event 0x806dc367095c0baf953d7144b7c4376261675ee0b4e0da2761e43673051c7375. +// +// Solidity: event OperatorSetOwnerUpdated((address,uint32) operatorSet, address owner) +func (_BN254CertificateVerifier *BN254CertificateVerifierFilterer) WatchOperatorSetOwnerUpdated(opts *bind.WatchOpts, sink chan<- *BN254CertificateVerifierOperatorSetOwnerUpdated) (event.Subscription, error) { + + logs, sub, err := _BN254CertificateVerifier.contract.WatchLogs(opts, "OperatorSetOwnerUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BN254CertificateVerifierOperatorSetOwnerUpdated) + if err := _BN254CertificateVerifier.contract.UnpackLog(event, "OperatorSetOwnerUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorSetOwnerUpdated is a log parse operation binding the contract event 0x806dc367095c0baf953d7144b7c4376261675ee0b4e0da2761e43673051c7375. +// +// Solidity: event OperatorSetOwnerUpdated((address,uint32) operatorSet, address owner) +func (_BN254CertificateVerifier *BN254CertificateVerifierFilterer) ParseOperatorSetOwnerUpdated(log types.Log) (*BN254CertificateVerifierOperatorSetOwnerUpdated, error) { + event := new(BN254CertificateVerifierOperatorSetOwnerUpdated) + if err := _BN254CertificateVerifier.contract.UnpackLog(event, "OperatorSetOwnerUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BN254CertificateVerifierTableUpdatedIterator is returned from FilterTableUpdated and is used to iterate over the raw logs and unpacked data for TableUpdated events raised by the BN254CertificateVerifier contract. +type BN254CertificateVerifierTableUpdatedIterator struct { + Event *BN254CertificateVerifierTableUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BN254CertificateVerifierTableUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BN254CertificateVerifierTableUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BN254CertificateVerifierTableUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BN254CertificateVerifierTableUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BN254CertificateVerifierTableUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BN254CertificateVerifierTableUpdated represents a TableUpdated event raised by the BN254CertificateVerifier contract. +type BN254CertificateVerifierTableUpdated struct { + OperatorSet OperatorSet + ReferenceTimestamp uint32 + OperatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTableUpdated is a free log retrieval operation binding the contract event 0x93e6bea1c9b5dce4a5c07b00261e956df2a4a253d9ab6ca070ca2037d72ada9e. +// +// Solidity: event TableUpdated((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo) +func (_BN254CertificateVerifier *BN254CertificateVerifierFilterer) FilterTableUpdated(opts *bind.FilterOpts) (*BN254CertificateVerifierTableUpdatedIterator, error) { + + logs, sub, err := _BN254CertificateVerifier.contract.FilterLogs(opts, "TableUpdated") + if err != nil { + return nil, err + } + return &BN254CertificateVerifierTableUpdatedIterator{contract: _BN254CertificateVerifier.contract, event: "TableUpdated", logs: logs, sub: sub}, nil +} + +// WatchTableUpdated is a free log subscription operation binding the contract event 0x93e6bea1c9b5dce4a5c07b00261e956df2a4a253d9ab6ca070ca2037d72ada9e. +// +// Solidity: event TableUpdated((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo) +func (_BN254CertificateVerifier *BN254CertificateVerifierFilterer) WatchTableUpdated(opts *bind.WatchOpts, sink chan<- *BN254CertificateVerifierTableUpdated) (event.Subscription, error) { + + logs, sub, err := _BN254CertificateVerifier.contract.WatchLogs(opts, "TableUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BN254CertificateVerifierTableUpdated) + if err := _BN254CertificateVerifier.contract.UnpackLog(event, "TableUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTableUpdated is a log parse operation binding the contract event 0x93e6bea1c9b5dce4a5c07b00261e956df2a4a253d9ab6ca070ca2037d72ada9e. +// +// Solidity: event TableUpdated((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo) +func (_BN254CertificateVerifier *BN254CertificateVerifierFilterer) ParseTableUpdated(log types.Log) (*BN254CertificateVerifierTableUpdated, error) { + event := new(BN254CertificateVerifierTableUpdated) + if err := _BN254CertificateVerifier.contract.UnpackLog(event, "TableUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/BN254CertificateVerifierStorage/binding.go b/pkg/bindings/BN254CertificateVerifierStorage/binding.go new file mode 100644 index 0000000000..1aa47bb0cd --- /dev/null +++ b/pkg/bindings/BN254CertificateVerifierStorage/binding.go @@ -0,0 +1,819 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package BN254CertificateVerifierStorage + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// BN254G1Point is an auto generated low-level Go binding around an user-defined struct. +type BN254G1Point struct { + X *big.Int + Y *big.Int +} + +// BN254G2Point is an auto generated low-level Go binding around an user-defined struct. +type BN254G2Point struct { + X [2]*big.Int + Y [2]*big.Int +} + +// IBN254CertificateVerifierTypesBN254Certificate is an auto generated low-level Go binding around an user-defined struct. +type IBN254CertificateVerifierTypesBN254Certificate struct { + ReferenceTimestamp uint32 + MessageHash [32]byte + Signature BN254G1Point + Apk BN254G2Point + NonSignerWitnesses []IBN254CertificateVerifierTypesBN254OperatorInfoWitness +} + +// IBN254CertificateVerifierTypesBN254OperatorInfoWitness is an auto generated low-level Go binding around an user-defined struct. +type IBN254CertificateVerifierTypesBN254OperatorInfoWitness struct { + OperatorIndex uint32 + OperatorInfoProof []byte + OperatorInfo IBN254TableCalculatorTypesBN254OperatorInfo +} + +// IBN254TableCalculatorTypesBN254OperatorInfo is an auto generated low-level Go binding around an user-defined struct. +type IBN254TableCalculatorTypesBN254OperatorInfo struct { + Pubkey BN254G1Point + Weights []*big.Int +} + +// IBN254TableCalculatorTypesBN254OperatorSetInfo is an auto generated low-level Go binding around an user-defined struct. +type IBN254TableCalculatorTypesBN254OperatorSetInfo struct { + OperatorInfoTreeRoot [32]byte + NumOperators *big.Int + AggregatePubkey BN254G1Point + TotalWeights []*big.Int +} + +// ICrossChainRegistryTypesOperatorSetConfig is an auto generated low-level Go binding around an user-defined struct. +type ICrossChainRegistryTypesOperatorSetConfig struct { + Owner common.Address + MaxStalenessPeriod uint32 +} + +// OperatorSet is an auto generated low-level Go binding around an user-defined struct. +type OperatorSet struct { + Avs common.Address + Id uint32 +} + +// BN254CertificateVerifierStorageMetaData contains all meta data concerning the BN254CertificateVerifierStorage contract. +var BN254CertificateVerifierStorageMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"getOperatorSetOwner\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"latestReferenceTimestamp\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"maxOperatorTableStaleness\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorTableUpdater\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableUpdater\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorSetInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"operatorSetConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificate\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]}],\"outputs\":[{\"name\":\"signedStakes\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificateNominal\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"totalStakeNominalThresholds\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificateProportion\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"totalStakeProportionThresholds\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"MaxStalenessPeriodUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetOwnerUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TableUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"operatorSetInfo\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CertificateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyTableUpdater\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReferenceTimestampDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VerificationFailed\",\"inputs\":[]}]", +} + +// BN254CertificateVerifierStorageABI is the input ABI used to generate the binding from. +// Deprecated: Use BN254CertificateVerifierStorageMetaData.ABI instead. +var BN254CertificateVerifierStorageABI = BN254CertificateVerifierStorageMetaData.ABI + +// BN254CertificateVerifierStorage is an auto generated Go binding around an Ethereum contract. +type BN254CertificateVerifierStorage struct { + BN254CertificateVerifierStorageCaller // Read-only binding to the contract + BN254CertificateVerifierStorageTransactor // Write-only binding to the contract + BN254CertificateVerifierStorageFilterer // Log filterer for contract events +} + +// BN254CertificateVerifierStorageCaller is an auto generated read-only Go binding around an Ethereum contract. +type BN254CertificateVerifierStorageCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BN254CertificateVerifierStorageTransactor is an auto generated write-only Go binding around an Ethereum contract. +type BN254CertificateVerifierStorageTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BN254CertificateVerifierStorageFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type BN254CertificateVerifierStorageFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BN254CertificateVerifierStorageSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type BN254CertificateVerifierStorageSession struct { + Contract *BN254CertificateVerifierStorage // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BN254CertificateVerifierStorageCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type BN254CertificateVerifierStorageCallerSession struct { + Contract *BN254CertificateVerifierStorageCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// BN254CertificateVerifierStorageTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type BN254CertificateVerifierStorageTransactorSession struct { + Contract *BN254CertificateVerifierStorageTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BN254CertificateVerifierStorageRaw is an auto generated low-level Go binding around an Ethereum contract. +type BN254CertificateVerifierStorageRaw struct { + Contract *BN254CertificateVerifierStorage // Generic contract binding to access the raw methods on +} + +// BN254CertificateVerifierStorageCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type BN254CertificateVerifierStorageCallerRaw struct { + Contract *BN254CertificateVerifierStorageCaller // Generic read-only contract binding to access the raw methods on +} + +// BN254CertificateVerifierStorageTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type BN254CertificateVerifierStorageTransactorRaw struct { + Contract *BN254CertificateVerifierStorageTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewBN254CertificateVerifierStorage creates a new instance of BN254CertificateVerifierStorage, bound to a specific deployed contract. +func NewBN254CertificateVerifierStorage(address common.Address, backend bind.ContractBackend) (*BN254CertificateVerifierStorage, error) { + contract, err := bindBN254CertificateVerifierStorage(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &BN254CertificateVerifierStorage{BN254CertificateVerifierStorageCaller: BN254CertificateVerifierStorageCaller{contract: contract}, BN254CertificateVerifierStorageTransactor: BN254CertificateVerifierStorageTransactor{contract: contract}, BN254CertificateVerifierStorageFilterer: BN254CertificateVerifierStorageFilterer{contract: contract}}, nil +} + +// NewBN254CertificateVerifierStorageCaller creates a new read-only instance of BN254CertificateVerifierStorage, bound to a specific deployed contract. +func NewBN254CertificateVerifierStorageCaller(address common.Address, caller bind.ContractCaller) (*BN254CertificateVerifierStorageCaller, error) { + contract, err := bindBN254CertificateVerifierStorage(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &BN254CertificateVerifierStorageCaller{contract: contract}, nil +} + +// NewBN254CertificateVerifierStorageTransactor creates a new write-only instance of BN254CertificateVerifierStorage, bound to a specific deployed contract. +func NewBN254CertificateVerifierStorageTransactor(address common.Address, transactor bind.ContractTransactor) (*BN254CertificateVerifierStorageTransactor, error) { + contract, err := bindBN254CertificateVerifierStorage(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &BN254CertificateVerifierStorageTransactor{contract: contract}, nil +} + +// NewBN254CertificateVerifierStorageFilterer creates a new log filterer instance of BN254CertificateVerifierStorage, bound to a specific deployed contract. +func NewBN254CertificateVerifierStorageFilterer(address common.Address, filterer bind.ContractFilterer) (*BN254CertificateVerifierStorageFilterer, error) { + contract, err := bindBN254CertificateVerifierStorage(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &BN254CertificateVerifierStorageFilterer{contract: contract}, nil +} + +// bindBN254CertificateVerifierStorage binds a generic wrapper to an already deployed contract. +func bindBN254CertificateVerifierStorage(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BN254CertificateVerifierStorageMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BN254CertificateVerifierStorage.Contract.BN254CertificateVerifierStorageCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.Contract.BN254CertificateVerifierStorageTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.Contract.BN254CertificateVerifierStorageTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BN254CertificateVerifierStorage.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.Contract.contract.Transact(opts, method, params...) +} + +// OperatorTableUpdater is a free data retrieval call binding the contract method 0x68d6e081. +// +// Solidity: function operatorTableUpdater() view returns(address) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageCaller) OperatorTableUpdater(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _BN254CertificateVerifierStorage.contract.Call(opts, &out, "operatorTableUpdater") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OperatorTableUpdater is a free data retrieval call binding the contract method 0x68d6e081. +// +// Solidity: function operatorTableUpdater() view returns(address) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageSession) OperatorTableUpdater() (common.Address, error) { + return _BN254CertificateVerifierStorage.Contract.OperatorTableUpdater(&_BN254CertificateVerifierStorage.CallOpts) +} + +// OperatorTableUpdater is a free data retrieval call binding the contract method 0x68d6e081. +// +// Solidity: function operatorTableUpdater() view returns(address) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageCallerSession) OperatorTableUpdater() (common.Address, error) { + return _BN254CertificateVerifierStorage.Contract.OperatorTableUpdater(&_BN254CertificateVerifierStorage.CallOpts) +} + +// GetOperatorSetOwner is a paid mutator transaction binding the contract method 0x84818920. +// +// Solidity: function getOperatorSetOwner((address,uint32) operatorSet) returns(address) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactor) GetOperatorSetOwner(opts *bind.TransactOpts, operatorSet OperatorSet) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.contract.Transact(opts, "getOperatorSetOwner", operatorSet) +} + +// GetOperatorSetOwner is a paid mutator transaction binding the contract method 0x84818920. +// +// Solidity: function getOperatorSetOwner((address,uint32) operatorSet) returns(address) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageSession) GetOperatorSetOwner(operatorSet OperatorSet) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.Contract.GetOperatorSetOwner(&_BN254CertificateVerifierStorage.TransactOpts, operatorSet) +} + +// GetOperatorSetOwner is a paid mutator transaction binding the contract method 0x84818920. +// +// Solidity: function getOperatorSetOwner((address,uint32) operatorSet) returns(address) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactorSession) GetOperatorSetOwner(operatorSet OperatorSet) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.Contract.GetOperatorSetOwner(&_BN254CertificateVerifierStorage.TransactOpts, operatorSet) +} + +// LatestReferenceTimestamp is a paid mutator transaction binding the contract method 0x5ddb9b5b. +// +// Solidity: function latestReferenceTimestamp((address,uint32) operatorSet) returns(uint32) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactor) LatestReferenceTimestamp(opts *bind.TransactOpts, operatorSet OperatorSet) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.contract.Transact(opts, "latestReferenceTimestamp", operatorSet) +} + +// LatestReferenceTimestamp is a paid mutator transaction binding the contract method 0x5ddb9b5b. +// +// Solidity: function latestReferenceTimestamp((address,uint32) operatorSet) returns(uint32) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageSession) LatestReferenceTimestamp(operatorSet OperatorSet) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.Contract.LatestReferenceTimestamp(&_BN254CertificateVerifierStorage.TransactOpts, operatorSet) +} + +// LatestReferenceTimestamp is a paid mutator transaction binding the contract method 0x5ddb9b5b. +// +// Solidity: function latestReferenceTimestamp((address,uint32) operatorSet) returns(uint32) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactorSession) LatestReferenceTimestamp(operatorSet OperatorSet) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.Contract.LatestReferenceTimestamp(&_BN254CertificateVerifierStorage.TransactOpts, operatorSet) +} + +// MaxOperatorTableStaleness is a paid mutator transaction binding the contract method 0x6141879e. +// +// Solidity: function maxOperatorTableStaleness((address,uint32) operatorSet) returns(uint32) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactor) MaxOperatorTableStaleness(opts *bind.TransactOpts, operatorSet OperatorSet) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.contract.Transact(opts, "maxOperatorTableStaleness", operatorSet) +} + +// MaxOperatorTableStaleness is a paid mutator transaction binding the contract method 0x6141879e. +// +// Solidity: function maxOperatorTableStaleness((address,uint32) operatorSet) returns(uint32) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageSession) MaxOperatorTableStaleness(operatorSet OperatorSet) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.Contract.MaxOperatorTableStaleness(&_BN254CertificateVerifierStorage.TransactOpts, operatorSet) +} + +// MaxOperatorTableStaleness is a paid mutator transaction binding the contract method 0x6141879e. +// +// Solidity: function maxOperatorTableStaleness((address,uint32) operatorSet) returns(uint32) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactorSession) MaxOperatorTableStaleness(operatorSet OperatorSet) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.Contract.MaxOperatorTableStaleness(&_BN254CertificateVerifierStorage.TransactOpts, operatorSet) +} + +// UpdateOperatorTable is a paid mutator transaction binding the contract method 0x6738c40b. +// +// Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo, (address,uint32) operatorSetConfig) returns() +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactor) UpdateOperatorTable(opts *bind.TransactOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.contract.Transact(opts, "updateOperatorTable", operatorSet, referenceTimestamp, operatorSetInfo, operatorSetConfig) +} + +// UpdateOperatorTable is a paid mutator transaction binding the contract method 0x6738c40b. +// +// Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo, (address,uint32) operatorSetConfig) returns() +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.Contract.UpdateOperatorTable(&_BN254CertificateVerifierStorage.TransactOpts, operatorSet, referenceTimestamp, operatorSetInfo, operatorSetConfig) +} + +// UpdateOperatorTable is a paid mutator transaction binding the contract method 0x6738c40b. +// +// Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo, (address,uint32) operatorSetConfig) returns() +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactorSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.Contract.UpdateOperatorTable(&_BN254CertificateVerifierStorage.TransactOpts, operatorSet, referenceTimestamp, operatorSetInfo, operatorSetConfig) +} + +// VerifyCertificate is a paid mutator transaction binding the contract method 0x080b7150. +// +// Solidity: function verifyCertificate((address,uint32) operatorSet, (uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) cert) returns(uint256[] signedStakes) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactor) VerifyCertificate(opts *bind.TransactOpts, operatorSet OperatorSet, cert IBN254CertificateVerifierTypesBN254Certificate) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.contract.Transact(opts, "verifyCertificate", operatorSet, cert) +} + +// VerifyCertificate is a paid mutator transaction binding the contract method 0x080b7150. +// +// Solidity: function verifyCertificate((address,uint32) operatorSet, (uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) cert) returns(uint256[] signedStakes) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageSession) VerifyCertificate(operatorSet OperatorSet, cert IBN254CertificateVerifierTypesBN254Certificate) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.Contract.VerifyCertificate(&_BN254CertificateVerifierStorage.TransactOpts, operatorSet, cert) +} + +// VerifyCertificate is a paid mutator transaction binding the contract method 0x080b7150. +// +// Solidity: function verifyCertificate((address,uint32) operatorSet, (uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) cert) returns(uint256[] signedStakes) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactorSession) VerifyCertificate(operatorSet OperatorSet, cert IBN254CertificateVerifierTypesBN254Certificate) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.Contract.VerifyCertificate(&_BN254CertificateVerifierStorage.TransactOpts, operatorSet, cert) +} + +// VerifyCertificateNominal is a paid mutator transaction binding the contract method 0xdd2ae1b9. +// +// Solidity: function verifyCertificateNominal((address,uint32) operatorSet, (uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) cert, uint256[] totalStakeNominalThresholds) returns(bool) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactor) VerifyCertificateNominal(opts *bind.TransactOpts, operatorSet OperatorSet, cert IBN254CertificateVerifierTypesBN254Certificate, totalStakeNominalThresholds []*big.Int) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.contract.Transact(opts, "verifyCertificateNominal", operatorSet, cert, totalStakeNominalThresholds) +} + +// VerifyCertificateNominal is a paid mutator transaction binding the contract method 0xdd2ae1b9. +// +// Solidity: function verifyCertificateNominal((address,uint32) operatorSet, (uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) cert, uint256[] totalStakeNominalThresholds) returns(bool) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageSession) VerifyCertificateNominal(operatorSet OperatorSet, cert IBN254CertificateVerifierTypesBN254Certificate, totalStakeNominalThresholds []*big.Int) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.Contract.VerifyCertificateNominal(&_BN254CertificateVerifierStorage.TransactOpts, operatorSet, cert, totalStakeNominalThresholds) +} + +// VerifyCertificateNominal is a paid mutator transaction binding the contract method 0xdd2ae1b9. +// +// Solidity: function verifyCertificateNominal((address,uint32) operatorSet, (uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) cert, uint256[] totalStakeNominalThresholds) returns(bool) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactorSession) VerifyCertificateNominal(operatorSet OperatorSet, cert IBN254CertificateVerifierTypesBN254Certificate, totalStakeNominalThresholds []*big.Int) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.Contract.VerifyCertificateNominal(&_BN254CertificateVerifierStorage.TransactOpts, operatorSet, cert, totalStakeNominalThresholds) +} + +// VerifyCertificateProportion is a paid mutator transaction binding the contract method 0x017d7974. +// +// Solidity: function verifyCertificateProportion((address,uint32) operatorSet, (uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) cert, uint16[] totalStakeProportionThresholds) returns(bool) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactor) VerifyCertificateProportion(opts *bind.TransactOpts, operatorSet OperatorSet, cert IBN254CertificateVerifierTypesBN254Certificate, totalStakeProportionThresholds []uint16) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.contract.Transact(opts, "verifyCertificateProportion", operatorSet, cert, totalStakeProportionThresholds) +} + +// VerifyCertificateProportion is a paid mutator transaction binding the contract method 0x017d7974. +// +// Solidity: function verifyCertificateProportion((address,uint32) operatorSet, (uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) cert, uint16[] totalStakeProportionThresholds) returns(bool) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageSession) VerifyCertificateProportion(operatorSet OperatorSet, cert IBN254CertificateVerifierTypesBN254Certificate, totalStakeProportionThresholds []uint16) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.Contract.VerifyCertificateProportion(&_BN254CertificateVerifierStorage.TransactOpts, operatorSet, cert, totalStakeProportionThresholds) +} + +// VerifyCertificateProportion is a paid mutator transaction binding the contract method 0x017d7974. +// +// Solidity: function verifyCertificateProportion((address,uint32) operatorSet, (uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) cert, uint16[] totalStakeProportionThresholds) returns(bool) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageTransactorSession) VerifyCertificateProportion(operatorSet OperatorSet, cert IBN254CertificateVerifierTypesBN254Certificate, totalStakeProportionThresholds []uint16) (*types.Transaction, error) { + return _BN254CertificateVerifierStorage.Contract.VerifyCertificateProportion(&_BN254CertificateVerifierStorage.TransactOpts, operatorSet, cert, totalStakeProportionThresholds) +} + +// BN254CertificateVerifierStorageMaxStalenessPeriodUpdatedIterator is returned from FilterMaxStalenessPeriodUpdated and is used to iterate over the raw logs and unpacked data for MaxStalenessPeriodUpdated events raised by the BN254CertificateVerifierStorage contract. +type BN254CertificateVerifierStorageMaxStalenessPeriodUpdatedIterator struct { + Event *BN254CertificateVerifierStorageMaxStalenessPeriodUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BN254CertificateVerifierStorageMaxStalenessPeriodUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BN254CertificateVerifierStorageMaxStalenessPeriodUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BN254CertificateVerifierStorageMaxStalenessPeriodUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BN254CertificateVerifierStorageMaxStalenessPeriodUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BN254CertificateVerifierStorageMaxStalenessPeriodUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BN254CertificateVerifierStorageMaxStalenessPeriodUpdated represents a MaxStalenessPeriodUpdated event raised by the BN254CertificateVerifierStorage contract. +type BN254CertificateVerifierStorageMaxStalenessPeriodUpdated struct { + OperatorSet OperatorSet + MaxStalenessPeriod uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMaxStalenessPeriodUpdated is a free log retrieval operation binding the contract event 0x28539469fbbc8a5482e60966bf9376f7b9d25b2f0a65a9976f6baa3f0e3788da. +// +// Solidity: event MaxStalenessPeriodUpdated((address,uint32) operatorSet, uint32 maxStalenessPeriod) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageFilterer) FilterMaxStalenessPeriodUpdated(opts *bind.FilterOpts) (*BN254CertificateVerifierStorageMaxStalenessPeriodUpdatedIterator, error) { + + logs, sub, err := _BN254CertificateVerifierStorage.contract.FilterLogs(opts, "MaxStalenessPeriodUpdated") + if err != nil { + return nil, err + } + return &BN254CertificateVerifierStorageMaxStalenessPeriodUpdatedIterator{contract: _BN254CertificateVerifierStorage.contract, event: "MaxStalenessPeriodUpdated", logs: logs, sub: sub}, nil +} + +// WatchMaxStalenessPeriodUpdated is a free log subscription operation binding the contract event 0x28539469fbbc8a5482e60966bf9376f7b9d25b2f0a65a9976f6baa3f0e3788da. +// +// Solidity: event MaxStalenessPeriodUpdated((address,uint32) operatorSet, uint32 maxStalenessPeriod) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageFilterer) WatchMaxStalenessPeriodUpdated(opts *bind.WatchOpts, sink chan<- *BN254CertificateVerifierStorageMaxStalenessPeriodUpdated) (event.Subscription, error) { + + logs, sub, err := _BN254CertificateVerifierStorage.contract.WatchLogs(opts, "MaxStalenessPeriodUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BN254CertificateVerifierStorageMaxStalenessPeriodUpdated) + if err := _BN254CertificateVerifierStorage.contract.UnpackLog(event, "MaxStalenessPeriodUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMaxStalenessPeriodUpdated is a log parse operation binding the contract event 0x28539469fbbc8a5482e60966bf9376f7b9d25b2f0a65a9976f6baa3f0e3788da. +// +// Solidity: event MaxStalenessPeriodUpdated((address,uint32) operatorSet, uint32 maxStalenessPeriod) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageFilterer) ParseMaxStalenessPeriodUpdated(log types.Log) (*BN254CertificateVerifierStorageMaxStalenessPeriodUpdated, error) { + event := new(BN254CertificateVerifierStorageMaxStalenessPeriodUpdated) + if err := _BN254CertificateVerifierStorage.contract.UnpackLog(event, "MaxStalenessPeriodUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BN254CertificateVerifierStorageOperatorSetOwnerUpdatedIterator is returned from FilterOperatorSetOwnerUpdated and is used to iterate over the raw logs and unpacked data for OperatorSetOwnerUpdated events raised by the BN254CertificateVerifierStorage contract. +type BN254CertificateVerifierStorageOperatorSetOwnerUpdatedIterator struct { + Event *BN254CertificateVerifierStorageOperatorSetOwnerUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BN254CertificateVerifierStorageOperatorSetOwnerUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BN254CertificateVerifierStorageOperatorSetOwnerUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BN254CertificateVerifierStorageOperatorSetOwnerUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BN254CertificateVerifierStorageOperatorSetOwnerUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BN254CertificateVerifierStorageOperatorSetOwnerUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BN254CertificateVerifierStorageOperatorSetOwnerUpdated represents a OperatorSetOwnerUpdated event raised by the BN254CertificateVerifierStorage contract. +type BN254CertificateVerifierStorageOperatorSetOwnerUpdated struct { + OperatorSet OperatorSet + Owner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSetOwnerUpdated is a free log retrieval operation binding the contract event 0x806dc367095c0baf953d7144b7c4376261675ee0b4e0da2761e43673051c7375. +// +// Solidity: event OperatorSetOwnerUpdated((address,uint32) operatorSet, address owner) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageFilterer) FilterOperatorSetOwnerUpdated(opts *bind.FilterOpts) (*BN254CertificateVerifierStorageOperatorSetOwnerUpdatedIterator, error) { + + logs, sub, err := _BN254CertificateVerifierStorage.contract.FilterLogs(opts, "OperatorSetOwnerUpdated") + if err != nil { + return nil, err + } + return &BN254CertificateVerifierStorageOperatorSetOwnerUpdatedIterator{contract: _BN254CertificateVerifierStorage.contract, event: "OperatorSetOwnerUpdated", logs: logs, sub: sub}, nil +} + +// WatchOperatorSetOwnerUpdated is a free log subscription operation binding the contract event 0x806dc367095c0baf953d7144b7c4376261675ee0b4e0da2761e43673051c7375. +// +// Solidity: event OperatorSetOwnerUpdated((address,uint32) operatorSet, address owner) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageFilterer) WatchOperatorSetOwnerUpdated(opts *bind.WatchOpts, sink chan<- *BN254CertificateVerifierStorageOperatorSetOwnerUpdated) (event.Subscription, error) { + + logs, sub, err := _BN254CertificateVerifierStorage.contract.WatchLogs(opts, "OperatorSetOwnerUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BN254CertificateVerifierStorageOperatorSetOwnerUpdated) + if err := _BN254CertificateVerifierStorage.contract.UnpackLog(event, "OperatorSetOwnerUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorSetOwnerUpdated is a log parse operation binding the contract event 0x806dc367095c0baf953d7144b7c4376261675ee0b4e0da2761e43673051c7375. +// +// Solidity: event OperatorSetOwnerUpdated((address,uint32) operatorSet, address owner) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageFilterer) ParseOperatorSetOwnerUpdated(log types.Log) (*BN254CertificateVerifierStorageOperatorSetOwnerUpdated, error) { + event := new(BN254CertificateVerifierStorageOperatorSetOwnerUpdated) + if err := _BN254CertificateVerifierStorage.contract.UnpackLog(event, "OperatorSetOwnerUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BN254CertificateVerifierStorageTableUpdatedIterator is returned from FilterTableUpdated and is used to iterate over the raw logs and unpacked data for TableUpdated events raised by the BN254CertificateVerifierStorage contract. +type BN254CertificateVerifierStorageTableUpdatedIterator struct { + Event *BN254CertificateVerifierStorageTableUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BN254CertificateVerifierStorageTableUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BN254CertificateVerifierStorageTableUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BN254CertificateVerifierStorageTableUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BN254CertificateVerifierStorageTableUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BN254CertificateVerifierStorageTableUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BN254CertificateVerifierStorageTableUpdated represents a TableUpdated event raised by the BN254CertificateVerifierStorage contract. +type BN254CertificateVerifierStorageTableUpdated struct { + OperatorSet OperatorSet + ReferenceTimestamp uint32 + OperatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTableUpdated is a free log retrieval operation binding the contract event 0x93e6bea1c9b5dce4a5c07b00261e956df2a4a253d9ab6ca070ca2037d72ada9e. +// +// Solidity: event TableUpdated((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageFilterer) FilterTableUpdated(opts *bind.FilterOpts) (*BN254CertificateVerifierStorageTableUpdatedIterator, error) { + + logs, sub, err := _BN254CertificateVerifierStorage.contract.FilterLogs(opts, "TableUpdated") + if err != nil { + return nil, err + } + return &BN254CertificateVerifierStorageTableUpdatedIterator{contract: _BN254CertificateVerifierStorage.contract, event: "TableUpdated", logs: logs, sub: sub}, nil +} + +// WatchTableUpdated is a free log subscription operation binding the contract event 0x93e6bea1c9b5dce4a5c07b00261e956df2a4a253d9ab6ca070ca2037d72ada9e. +// +// Solidity: event TableUpdated((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageFilterer) WatchTableUpdated(opts *bind.WatchOpts, sink chan<- *BN254CertificateVerifierStorageTableUpdated) (event.Subscription, error) { + + logs, sub, err := _BN254CertificateVerifierStorage.contract.WatchLogs(opts, "TableUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BN254CertificateVerifierStorageTableUpdated) + if err := _BN254CertificateVerifierStorage.contract.UnpackLog(event, "TableUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTableUpdated is a log parse operation binding the contract event 0x93e6bea1c9b5dce4a5c07b00261e956df2a4a253d9ab6ca070ca2037d72ada9e. +// +// Solidity: event TableUpdated((address,uint32) operatorSet, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo) +func (_BN254CertificateVerifierStorage *BN254CertificateVerifierStorageFilterer) ParseTableUpdated(log types.Log) (*BN254CertificateVerifierStorageTableUpdated, error) { + event := new(BN254CertificateVerifierStorageTableUpdated) + if err := _BN254CertificateVerifierStorage.contract.UnpackLog(event, "TableUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/BN254TableCalculator/binding.go b/pkg/bindings/BN254TableCalculator/binding.go new file mode 100644 index 0000000000..57b1fc8139 --- /dev/null +++ b/pkg/bindings/BN254TableCalculator/binding.go @@ -0,0 +1,625 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package BN254TableCalculator + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// BN254G1Point is an auto generated low-level Go binding around an user-defined struct. +type BN254G1Point struct { + X *big.Int + Y *big.Int +} + +// IBN254TableCalculatorTypesBN254OperatorInfo is an auto generated low-level Go binding around an user-defined struct. +type IBN254TableCalculatorTypesBN254OperatorInfo struct { + Pubkey BN254G1Point + Weights []*big.Int +} + +// IBN254TableCalculatorTypesBN254OperatorSetInfo is an auto generated low-level Go binding around an user-defined struct. +type IBN254TableCalculatorTypesBN254OperatorSetInfo struct { + OperatorInfoTreeRoot [32]byte + NumOperators *big.Int + AggregatePubkey BN254G1Point + TotalWeights []*big.Int +} + +// OperatorSet is an auto generated low-level Go binding around an user-defined struct. +type OperatorSet struct { + Avs common.Address + Id uint32 +} + +// BN254TableCalculatorMetaData contains all meta data concerning the BN254TableCalculator contract. +var BN254TableCalculatorMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_keyRegistrar\",\"type\":\"address\",\"internalType\":\"contractIKeyRegistrar\"},{\"name\":\"_allocationManager\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"},{\"name\":\"_LOOKAHEAD_BLOCKS\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"LOOKAHEAD_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorTable\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operatorSetInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorTableBytes\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorInfos\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorWeight\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorWeights\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"weights\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"keyRegistrar\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIKeyRegistrar\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"LookaheadBlocksSet\",\"inputs\":[{\"name\":\"lookaheadBlocks\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ECAddFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LookaheadBlocksTooHigh\",\"inputs\":[]}]", + Bin: "0x60e060405234801561000f575f5ffd5b506040516116d03803806116d083398101604081905261002e91610060565b6001600160a01b03928316608052911660a05260c0526100a0565b6001600160a01b038116811461005d575f5ffd5b50565b5f5f5f60608486031215610072575f5ffd5b835161007d81610049565b602085015190935061008e81610049565b80925050604084015190509250925092565b60805160a05160c0516115cf6101015f395f8181610133015261063401525f818161017b015281816104df0152818161056f015261060701525f818160d401528181610329015281816103d5015281816108d401526109ef01526115cf5ff3fe608060405234801561000f575f5ffd5b5060043610610085575f3560e01c80635e120ffc116100585780635e120ffc1461012e57806371ca71d914610155578063ca8aa7c714610176578063cf2d90ef1461019d575f5ffd5b80631088794a14610089578063124c87e0146100af5780633ec45c7e146100cf57806341ee6d0e1461010e575b5f5ffd5b61009c610097366004610e20565b6101bd565b6040519081526020015b60405180910390f35b6100c26100bd366004610e56565b61025d565b6040516100a69190610eb1565b6100f67f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a6565b61012161011c366004610e56565b61026e565b6040516100a69190610f04565b61009c7f000000000000000000000000000000000000000000000000000000000000000081565b610168610163366004610e56565b61029f565b6040516100a6929190610f72565b6100f67f000000000000000000000000000000000000000000000000000000000000000081565b6101b06101ab366004610e56565b6102b4565b6040516100a69190611016565b5f5f5f6101c9856104da565b90925090505f5b825181101561025057846001600160a01b03168382815181106101f5576101f5611079565b60200260200101516001600160a01b0316036102485781818151811061021d5761021d611079565b60200260200101515f8151811061023657610236611079565b60200260200101519350505050610257565b6001016101d0565b505f925050505b92915050565b610265610d75565b610257826107ea565b6060610279826107ea565b6040516020016102899190610eb1565b6040516020818303038152906040529050919050565b6060806102ab836104da565b91509150915091565b60605f5f6102c1846104da565b915091505f825167ffffffffffffffff8111156102e0576102e061108d565b60405190808252806020026020018201604052801561031957816020015b610306610db4565b8152602001906001900390816102fe5790505b5090505f5b83518110156104d1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bd30a0b98786848151811061036957610369611079565b60200260200101516040518363ffffffff1660e01b815260040161038e9291906110da565b602060405180830381865afa1580156103a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103cd9190611100565b156104c9575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639a43e3fb8887858151811061041557610415611079565b60200260200101516040518363ffffffff1660e01b815260040161043a9291906110da565b60c060405180830381865afa158015610455573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047991906111c6565b509050604051806040016040528082815260200185848151811061049f5761049f611079565b60200260200101518152508383815181106104bc576104bc611079565b6020026020010181905250505b60010161031e565b50949350505050565b6060807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636e875dba846040518263ffffffff1660e01b81526004016105299190611243565b5f60405180830381865afa158015610543573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261056a9190810190611274565b91505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634177a87c856040518263ffffffff1660e01b81526004016105b99190611243565b5f60405180830381865afa1580156105d3573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105fa9190810190611313565b90505f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016632bab2c4a8686856106597f0000000000000000000000000000000000000000000000000000000000000000436113b7565b6040518563ffffffff1660e01b815260040161067894939291906113ca565b5f60405180830381865afa158015610692573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526106b99190810190611443565b9050835167ffffffffffffffff8111156106d5576106d561108d565b60405190808252806020026020018201604052801561070857816020015b60608152602001906001900390816106f35790505b5092505f5b84518110156107e25760408051600180825281830190925290602080830190803683370190505084828151811061074657610746611079565b60209081029190910101525f5b83518110156107d95782828151811061076e5761076e611079565b6020026020010151818151811061078757610787611079565b60200260200101518583815181106107a1576107a1611079565b60200260200101515f815181106107ba576107ba611079565b602002602001018181516107ce91906113b7565b905250600101610753565b5060010161070d565b505050915091565b6107f2610d75565b5f5f6107fd846104da565b915091505f815f8151811061081457610814611079565b60200260200101515190505f8167ffffffffffffffff8111156108395761083961108d565b604051908082528060200260200182016040528015610862578160200160208202803683370190505b5090505f845167ffffffffffffffff8111156108805761088061108d565b6040519080825280602002602001820160405280156108a9578160200160208202803683370190505b5090506108c760405180604001604052805f81526020015f81525090565b5f5b8651811015610b1d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bd30a0b98a89848151811061091457610914611079565b60200260200101516040518363ffffffff1660e01b81526004016109399291906110da565b602060405180830381865afa158015610954573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109789190611100565b15610b15575f5b858110156109eb5786828151811061099957610999611079565b602002602001015181815181106109b2576109b2611079565b60200260200101518582815181106109cc576109cc611079565b602002602001018181516109e091906113b7565b90525060010161097f565b505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639a43e3fb8b8a8581518110610a2f57610a2f611079565b60200260200101516040518363ffffffff1660e01b8152600401610a549291906110da565b60c060405180830381865afa158015610a6f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9391906111c6565b5090506040518060400160405280828152602001888481518110610ab957610ab9611079565b6020026020010151815250604051602001610ad49190611551565b60405160208183030381529060405280519060200120848381518110610afc57610afc611079565b6020908102919091010152610b118382610b53565b9250505b6001016108c9565b505f610b2883610bcf565b6040805160808101825291825297516020820152968701919091525050606084015250909392505050565b604080518082019091525f8082526020820152610b6e610dd5565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa90508080610ba857fe5b5080610bc75760405163d4b68fd760e01b815260040160405180910390fd5b505092915050565b5f60015b8251811015610bee57610be7600282611563565b9050610bd3565b5f8167ffffffffffffffff811115610c0857610c0861108d565b604051908082528060200260200182016040528015610c31578160200160208202803683370190505b5090505f5b8451811015610c7e57848181518110610c5157610c51611079565b6020026020010151828281518110610c6b57610c6b611079565b6020908102919091010152600101610c36565b505b81600114610d52575f610c9460028461157a565b90505f5b81811015610d4a5782610cac826002611563565b81518110610cbc57610cbc611079565b602002602001015183826002610cd29190611563565b610cdd9060016113b7565b81518110610ced57610ced611079565b6020026020010151604051602001610d0f929190918252602082015260400190565b60405160208183030381529060405280519060200120838281518110610d3757610d37611079565b6020908102919091010152600101610c98565b509150610c80565b805f81518110610d6457610d64611079565b602002602001015192505050919050565b60405180608001604052805f81526020015f8152602001610da760405180604001604052805f81526020015f81525090565b8152602001606081525090565b604080516080810182525f9181018281526060820192909252908190610da7565b60405180608001604052806004906020820280368337509192915050565b5f60408284031215610e03575f5ffd5b50919050565b6001600160a01b0381168114610e1d575f5ffd5b50565b5f5f60608385031215610e31575f5ffd5b610e3b8484610df3565b91506040830135610e4b81610e09565b809150509250929050565b5f60408284031215610e66575f5ffd5b610e708383610df3565b9392505050565b5f8151808452602084019350602083015f5b82811015610ea7578151865260209586019590910190600101610e89565b5093949350505050565b6020815281516020820152602082015160408201525f6040830151610ee3606084018280518252602090810151910152565b50606083015160a080840152610efc60c0840182610e77565b949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8151808452602084019350602083015f5b82811015610ea75781516001600160a01b0316865260209586019590910190600101610f4b565b604081525f610f846040830185610f39565b828103602084015280845180835260208301915060208160051b840101602087015f5b83811015610fd957601f19868403018552610fc3838351610e77565b6020958601959093509190910190600101610fa7565b509098975050505050505050565b610ffc82825180518252602090810151910152565b5f602082015160606040850152610efc6060850182610e77565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561106d57603f19878603018452611058858351610fe7565b9450602093840193919091019060010161103c565b50929695505050505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b80356110ac81610e09565b6001600160a01b03168252602081013563ffffffff81168082146110ce575f5ffd5b80602085015250505050565b606081016110e882856110a1565b6001600160a01b039290921660409190910152919050565b5f60208284031215611110575f5ffd5b81518015158114610e70575f5ffd5b6040805190810167ffffffffffffffff811182821017156111425761114261108d565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156111715761117161108d565b604052919050565b5f82601f830112611188575f5ffd5b61119061111f565b8060408401858111156111a1575f5ffd5b845b818110156111bb5780518452602093840193016111a3565b509095945050505050565b5f5f82840360c08112156111d8575f5ffd5b60408112156111e5575f5ffd5b6111ed61111f565b845181526020808601519082015292506080603f198201121561120e575f5ffd5b5061121761111f565b6112248560408601611179565b81526112338560808601611179565b6020820152809150509250929050565b6040810161025782846110a1565b5f67ffffffffffffffff82111561126a5761126a61108d565b5060051b60200190565b5f60208284031215611284575f5ffd5b815167ffffffffffffffff81111561129a575f5ffd5b8201601f810184136112aa575f5ffd5b80516112bd6112b882611251565b611148565b8082825260208201915060208360051b8501019250868311156112de575f5ffd5b6020840193505b828410156113095783516112f881610e09565b8252602093840193909101906112e5565b9695505050505050565b5f60208284031215611323575f5ffd5b815167ffffffffffffffff811115611339575f5ffd5b8201601f81018413611349575f5ffd5b80516113576112b882611251565b8082825260208201915060208360051b850101925086831115611378575f5ffd5b6020840193505b8284101561130957835161139281610e09565b82526020938401939091019061137f565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610257576102576113a3565b6113d481866110a1565b60a060408201525f6113e960a0830186610f39565b8281036060840152845180825260208087019201905f5b818110156114275783516001600160a01b0316835260209384019390920191600101611400565b5050809250505063ffffffff8316608083015295945050505050565b5f60208284031215611453575f5ffd5b815167ffffffffffffffff811115611469575f5ffd5b8201601f81018413611479575f5ffd5b80516114876112b882611251565b8082825260208201915060208360051b8501019250868311156114a8575f5ffd5b602084015b8381101561154657805167ffffffffffffffff8111156114cb575f5ffd5b8501603f810189136114db575f5ffd5b60208101516114ec6112b882611251565b808282526020820191506020808460051b8601010192508b83111561150f575f5ffd5b6040840193505b82841015611531578351825260209384019390910190611516565b865250506020938401939190910190506114ad565b509695505050505050565b602081525f610e706020830184610fe7565b8082028115828204841417610257576102576113a3565b5f8261159457634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212202fb15960ff7eeadbff4fd82320dfb7190d13d7c2f49e509f4b5a318c5641b2f464736f6c634300081b0033", +} + +// BN254TableCalculatorABI is the input ABI used to generate the binding from. +// Deprecated: Use BN254TableCalculatorMetaData.ABI instead. +var BN254TableCalculatorABI = BN254TableCalculatorMetaData.ABI + +// BN254TableCalculatorBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use BN254TableCalculatorMetaData.Bin instead. +var BN254TableCalculatorBin = BN254TableCalculatorMetaData.Bin + +// DeployBN254TableCalculator deploys a new Ethereum contract, binding an instance of BN254TableCalculator to it. +func DeployBN254TableCalculator(auth *bind.TransactOpts, backend bind.ContractBackend, _keyRegistrar common.Address, _allocationManager common.Address, _LOOKAHEAD_BLOCKS *big.Int) (common.Address, *types.Transaction, *BN254TableCalculator, error) { + parsed, err := BN254TableCalculatorMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(BN254TableCalculatorBin), backend, _keyRegistrar, _allocationManager, _LOOKAHEAD_BLOCKS) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &BN254TableCalculator{BN254TableCalculatorCaller: BN254TableCalculatorCaller{contract: contract}, BN254TableCalculatorTransactor: BN254TableCalculatorTransactor{contract: contract}, BN254TableCalculatorFilterer: BN254TableCalculatorFilterer{contract: contract}}, nil +} + +// BN254TableCalculator is an auto generated Go binding around an Ethereum contract. +type BN254TableCalculator struct { + BN254TableCalculatorCaller // Read-only binding to the contract + BN254TableCalculatorTransactor // Write-only binding to the contract + BN254TableCalculatorFilterer // Log filterer for contract events +} + +// BN254TableCalculatorCaller is an auto generated read-only Go binding around an Ethereum contract. +type BN254TableCalculatorCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BN254TableCalculatorTransactor is an auto generated write-only Go binding around an Ethereum contract. +type BN254TableCalculatorTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BN254TableCalculatorFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type BN254TableCalculatorFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BN254TableCalculatorSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type BN254TableCalculatorSession struct { + Contract *BN254TableCalculator // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BN254TableCalculatorCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type BN254TableCalculatorCallerSession struct { + Contract *BN254TableCalculatorCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// BN254TableCalculatorTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type BN254TableCalculatorTransactorSession struct { + Contract *BN254TableCalculatorTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BN254TableCalculatorRaw is an auto generated low-level Go binding around an Ethereum contract. +type BN254TableCalculatorRaw struct { + Contract *BN254TableCalculator // Generic contract binding to access the raw methods on +} + +// BN254TableCalculatorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type BN254TableCalculatorCallerRaw struct { + Contract *BN254TableCalculatorCaller // Generic read-only contract binding to access the raw methods on +} + +// BN254TableCalculatorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type BN254TableCalculatorTransactorRaw struct { + Contract *BN254TableCalculatorTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewBN254TableCalculator creates a new instance of BN254TableCalculator, bound to a specific deployed contract. +func NewBN254TableCalculator(address common.Address, backend bind.ContractBackend) (*BN254TableCalculator, error) { + contract, err := bindBN254TableCalculator(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &BN254TableCalculator{BN254TableCalculatorCaller: BN254TableCalculatorCaller{contract: contract}, BN254TableCalculatorTransactor: BN254TableCalculatorTransactor{contract: contract}, BN254TableCalculatorFilterer: BN254TableCalculatorFilterer{contract: contract}}, nil +} + +// NewBN254TableCalculatorCaller creates a new read-only instance of BN254TableCalculator, bound to a specific deployed contract. +func NewBN254TableCalculatorCaller(address common.Address, caller bind.ContractCaller) (*BN254TableCalculatorCaller, error) { + contract, err := bindBN254TableCalculator(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &BN254TableCalculatorCaller{contract: contract}, nil +} + +// NewBN254TableCalculatorTransactor creates a new write-only instance of BN254TableCalculator, bound to a specific deployed contract. +func NewBN254TableCalculatorTransactor(address common.Address, transactor bind.ContractTransactor) (*BN254TableCalculatorTransactor, error) { + contract, err := bindBN254TableCalculator(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &BN254TableCalculatorTransactor{contract: contract}, nil +} + +// NewBN254TableCalculatorFilterer creates a new log filterer instance of BN254TableCalculator, bound to a specific deployed contract. +func NewBN254TableCalculatorFilterer(address common.Address, filterer bind.ContractFilterer) (*BN254TableCalculatorFilterer, error) { + contract, err := bindBN254TableCalculator(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &BN254TableCalculatorFilterer{contract: contract}, nil +} + +// bindBN254TableCalculator binds a generic wrapper to an already deployed contract. +func bindBN254TableCalculator(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BN254TableCalculatorMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BN254TableCalculator *BN254TableCalculatorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BN254TableCalculator.Contract.BN254TableCalculatorCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BN254TableCalculator *BN254TableCalculatorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BN254TableCalculator.Contract.BN254TableCalculatorTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BN254TableCalculator *BN254TableCalculatorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BN254TableCalculator.Contract.BN254TableCalculatorTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_BN254TableCalculator *BN254TableCalculatorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BN254TableCalculator.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_BN254TableCalculator *BN254TableCalculatorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BN254TableCalculator.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BN254TableCalculator *BN254TableCalculatorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BN254TableCalculator.Contract.contract.Transact(opts, method, params...) +} + +// LOOKAHEADBLOCKS is a free data retrieval call binding the contract method 0x5e120ffc. +// +// Solidity: function LOOKAHEAD_BLOCKS() view returns(uint256) +func (_BN254TableCalculator *BN254TableCalculatorCaller) LOOKAHEADBLOCKS(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _BN254TableCalculator.contract.Call(opts, &out, "LOOKAHEAD_BLOCKS") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// LOOKAHEADBLOCKS is a free data retrieval call binding the contract method 0x5e120ffc. +// +// Solidity: function LOOKAHEAD_BLOCKS() view returns(uint256) +func (_BN254TableCalculator *BN254TableCalculatorSession) LOOKAHEADBLOCKS() (*big.Int, error) { + return _BN254TableCalculator.Contract.LOOKAHEADBLOCKS(&_BN254TableCalculator.CallOpts) +} + +// LOOKAHEADBLOCKS is a free data retrieval call binding the contract method 0x5e120ffc. +// +// Solidity: function LOOKAHEAD_BLOCKS() view returns(uint256) +func (_BN254TableCalculator *BN254TableCalculatorCallerSession) LOOKAHEADBLOCKS() (*big.Int, error) { + return _BN254TableCalculator.Contract.LOOKAHEADBLOCKS(&_BN254TableCalculator.CallOpts) +} + +// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. +// +// Solidity: function allocationManager() view returns(address) +func (_BN254TableCalculator *BN254TableCalculatorCaller) AllocationManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _BN254TableCalculator.contract.Call(opts, &out, "allocationManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. +// +// Solidity: function allocationManager() view returns(address) +func (_BN254TableCalculator *BN254TableCalculatorSession) AllocationManager() (common.Address, error) { + return _BN254TableCalculator.Contract.AllocationManager(&_BN254TableCalculator.CallOpts) +} + +// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. +// +// Solidity: function allocationManager() view returns(address) +func (_BN254TableCalculator *BN254TableCalculatorCallerSession) AllocationManager() (common.Address, error) { + return _BN254TableCalculator.Contract.AllocationManager(&_BN254TableCalculator.CallOpts) +} + +// CalculateOperatorTable is a free data retrieval call binding the contract method 0x124c87e0. +// +// Solidity: function calculateOperatorTable((address,uint32) operatorSet) view returns((bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo) +func (_BN254TableCalculator *BN254TableCalculatorCaller) CalculateOperatorTable(opts *bind.CallOpts, operatorSet OperatorSet) (IBN254TableCalculatorTypesBN254OperatorSetInfo, error) { + var out []interface{} + err := _BN254TableCalculator.contract.Call(opts, &out, "calculateOperatorTable", operatorSet) + + if err != nil { + return *new(IBN254TableCalculatorTypesBN254OperatorSetInfo), err + } + + out0 := *abi.ConvertType(out[0], new(IBN254TableCalculatorTypesBN254OperatorSetInfo)).(*IBN254TableCalculatorTypesBN254OperatorSetInfo) + + return out0, err + +} + +// CalculateOperatorTable is a free data retrieval call binding the contract method 0x124c87e0. +// +// Solidity: function calculateOperatorTable((address,uint32) operatorSet) view returns((bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo) +func (_BN254TableCalculator *BN254TableCalculatorSession) CalculateOperatorTable(operatorSet OperatorSet) (IBN254TableCalculatorTypesBN254OperatorSetInfo, error) { + return _BN254TableCalculator.Contract.CalculateOperatorTable(&_BN254TableCalculator.CallOpts, operatorSet) +} + +// CalculateOperatorTable is a free data retrieval call binding the contract method 0x124c87e0. +// +// Solidity: function calculateOperatorTable((address,uint32) operatorSet) view returns((bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo) +func (_BN254TableCalculator *BN254TableCalculatorCallerSession) CalculateOperatorTable(operatorSet OperatorSet) (IBN254TableCalculatorTypesBN254OperatorSetInfo, error) { + return _BN254TableCalculator.Contract.CalculateOperatorTable(&_BN254TableCalculator.CallOpts, operatorSet) +} + +// CalculateOperatorTableBytes is a free data retrieval call binding the contract method 0x41ee6d0e. +// +// Solidity: function calculateOperatorTableBytes((address,uint32) operatorSet) view returns(bytes operatorTableBytes) +func (_BN254TableCalculator *BN254TableCalculatorCaller) CalculateOperatorTableBytes(opts *bind.CallOpts, operatorSet OperatorSet) ([]byte, error) { + var out []interface{} + err := _BN254TableCalculator.contract.Call(opts, &out, "calculateOperatorTableBytes", operatorSet) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// CalculateOperatorTableBytes is a free data retrieval call binding the contract method 0x41ee6d0e. +// +// Solidity: function calculateOperatorTableBytes((address,uint32) operatorSet) view returns(bytes operatorTableBytes) +func (_BN254TableCalculator *BN254TableCalculatorSession) CalculateOperatorTableBytes(operatorSet OperatorSet) ([]byte, error) { + return _BN254TableCalculator.Contract.CalculateOperatorTableBytes(&_BN254TableCalculator.CallOpts, operatorSet) +} + +// CalculateOperatorTableBytes is a free data retrieval call binding the contract method 0x41ee6d0e. +// +// Solidity: function calculateOperatorTableBytes((address,uint32) operatorSet) view returns(bytes operatorTableBytes) +func (_BN254TableCalculator *BN254TableCalculatorCallerSession) CalculateOperatorTableBytes(operatorSet OperatorSet) ([]byte, error) { + return _BN254TableCalculator.Contract.CalculateOperatorTableBytes(&_BN254TableCalculator.CallOpts, operatorSet) +} + +// GetOperatorInfos is a free data retrieval call binding the contract method 0xcf2d90ef. +// +// Solidity: function getOperatorInfos((address,uint32) operatorSet) view returns(((uint256,uint256),uint256[])[]) +func (_BN254TableCalculator *BN254TableCalculatorCaller) GetOperatorInfos(opts *bind.CallOpts, operatorSet OperatorSet) ([]IBN254TableCalculatorTypesBN254OperatorInfo, error) { + var out []interface{} + err := _BN254TableCalculator.contract.Call(opts, &out, "getOperatorInfos", operatorSet) + + if err != nil { + return *new([]IBN254TableCalculatorTypesBN254OperatorInfo), err + } + + out0 := *abi.ConvertType(out[0], new([]IBN254TableCalculatorTypesBN254OperatorInfo)).(*[]IBN254TableCalculatorTypesBN254OperatorInfo) + + return out0, err + +} + +// GetOperatorInfos is a free data retrieval call binding the contract method 0xcf2d90ef. +// +// Solidity: function getOperatorInfos((address,uint32) operatorSet) view returns(((uint256,uint256),uint256[])[]) +func (_BN254TableCalculator *BN254TableCalculatorSession) GetOperatorInfos(operatorSet OperatorSet) ([]IBN254TableCalculatorTypesBN254OperatorInfo, error) { + return _BN254TableCalculator.Contract.GetOperatorInfos(&_BN254TableCalculator.CallOpts, operatorSet) +} + +// GetOperatorInfos is a free data retrieval call binding the contract method 0xcf2d90ef. +// +// Solidity: function getOperatorInfos((address,uint32) operatorSet) view returns(((uint256,uint256),uint256[])[]) +func (_BN254TableCalculator *BN254TableCalculatorCallerSession) GetOperatorInfos(operatorSet OperatorSet) ([]IBN254TableCalculatorTypesBN254OperatorInfo, error) { + return _BN254TableCalculator.Contract.GetOperatorInfos(&_BN254TableCalculator.CallOpts, operatorSet) +} + +// GetOperatorWeight is a free data retrieval call binding the contract method 0x1088794a. +// +// Solidity: function getOperatorWeight((address,uint32) operatorSet, address operator) view returns(uint256 weight) +func (_BN254TableCalculator *BN254TableCalculatorCaller) GetOperatorWeight(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) (*big.Int, error) { + var out []interface{} + err := _BN254TableCalculator.contract.Call(opts, &out, "getOperatorWeight", operatorSet, operator) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetOperatorWeight is a free data retrieval call binding the contract method 0x1088794a. +// +// Solidity: function getOperatorWeight((address,uint32) operatorSet, address operator) view returns(uint256 weight) +func (_BN254TableCalculator *BN254TableCalculatorSession) GetOperatorWeight(operatorSet OperatorSet, operator common.Address) (*big.Int, error) { + return _BN254TableCalculator.Contract.GetOperatorWeight(&_BN254TableCalculator.CallOpts, operatorSet, operator) +} + +// GetOperatorWeight is a free data retrieval call binding the contract method 0x1088794a. +// +// Solidity: function getOperatorWeight((address,uint32) operatorSet, address operator) view returns(uint256 weight) +func (_BN254TableCalculator *BN254TableCalculatorCallerSession) GetOperatorWeight(operatorSet OperatorSet, operator common.Address) (*big.Int, error) { + return _BN254TableCalculator.Contract.GetOperatorWeight(&_BN254TableCalculator.CallOpts, operatorSet, operator) +} + +// GetOperatorWeights is a free data retrieval call binding the contract method 0x71ca71d9. +// +// Solidity: function getOperatorWeights((address,uint32) operatorSet) view returns(address[] operators, uint256[][] weights) +func (_BN254TableCalculator *BN254TableCalculatorCaller) GetOperatorWeights(opts *bind.CallOpts, operatorSet OperatorSet) (struct { + Operators []common.Address + Weights [][]*big.Int +}, error) { + var out []interface{} + err := _BN254TableCalculator.contract.Call(opts, &out, "getOperatorWeights", operatorSet) + + outstruct := new(struct { + Operators []common.Address + Weights [][]*big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Operators = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + outstruct.Weights = *abi.ConvertType(out[1], new([][]*big.Int)).(*[][]*big.Int) + + return *outstruct, err + +} + +// GetOperatorWeights is a free data retrieval call binding the contract method 0x71ca71d9. +// +// Solidity: function getOperatorWeights((address,uint32) operatorSet) view returns(address[] operators, uint256[][] weights) +func (_BN254TableCalculator *BN254TableCalculatorSession) GetOperatorWeights(operatorSet OperatorSet) (struct { + Operators []common.Address + Weights [][]*big.Int +}, error) { + return _BN254TableCalculator.Contract.GetOperatorWeights(&_BN254TableCalculator.CallOpts, operatorSet) +} + +// GetOperatorWeights is a free data retrieval call binding the contract method 0x71ca71d9. +// +// Solidity: function getOperatorWeights((address,uint32) operatorSet) view returns(address[] operators, uint256[][] weights) +func (_BN254TableCalculator *BN254TableCalculatorCallerSession) GetOperatorWeights(operatorSet OperatorSet) (struct { + Operators []common.Address + Weights [][]*big.Int +}, error) { + return _BN254TableCalculator.Contract.GetOperatorWeights(&_BN254TableCalculator.CallOpts, operatorSet) +} + +// KeyRegistrar is a free data retrieval call binding the contract method 0x3ec45c7e. +// +// Solidity: function keyRegistrar() view returns(address) +func (_BN254TableCalculator *BN254TableCalculatorCaller) KeyRegistrar(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _BN254TableCalculator.contract.Call(opts, &out, "keyRegistrar") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// KeyRegistrar is a free data retrieval call binding the contract method 0x3ec45c7e. +// +// Solidity: function keyRegistrar() view returns(address) +func (_BN254TableCalculator *BN254TableCalculatorSession) KeyRegistrar() (common.Address, error) { + return _BN254TableCalculator.Contract.KeyRegistrar(&_BN254TableCalculator.CallOpts) +} + +// KeyRegistrar is a free data retrieval call binding the contract method 0x3ec45c7e. +// +// Solidity: function keyRegistrar() view returns(address) +func (_BN254TableCalculator *BN254TableCalculatorCallerSession) KeyRegistrar() (common.Address, error) { + return _BN254TableCalculator.Contract.KeyRegistrar(&_BN254TableCalculator.CallOpts) +} + +// BN254TableCalculatorLookaheadBlocksSetIterator is returned from FilterLookaheadBlocksSet and is used to iterate over the raw logs and unpacked data for LookaheadBlocksSet events raised by the BN254TableCalculator contract. +type BN254TableCalculatorLookaheadBlocksSetIterator struct { + Event *BN254TableCalculatorLookaheadBlocksSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BN254TableCalculatorLookaheadBlocksSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BN254TableCalculatorLookaheadBlocksSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BN254TableCalculatorLookaheadBlocksSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BN254TableCalculatorLookaheadBlocksSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BN254TableCalculatorLookaheadBlocksSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BN254TableCalculatorLookaheadBlocksSet represents a LookaheadBlocksSet event raised by the BN254TableCalculator contract. +type BN254TableCalculatorLookaheadBlocksSet struct { + LookaheadBlocks *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLookaheadBlocksSet is a free log retrieval operation binding the contract event 0xa41e64dd47db91b61b43ccea8b57d75abfa496f23efc708c22753c4bc9d68842. +// +// Solidity: event LookaheadBlocksSet(uint256 lookaheadBlocks) +func (_BN254TableCalculator *BN254TableCalculatorFilterer) FilterLookaheadBlocksSet(opts *bind.FilterOpts) (*BN254TableCalculatorLookaheadBlocksSetIterator, error) { + + logs, sub, err := _BN254TableCalculator.contract.FilterLogs(opts, "LookaheadBlocksSet") + if err != nil { + return nil, err + } + return &BN254TableCalculatorLookaheadBlocksSetIterator{contract: _BN254TableCalculator.contract, event: "LookaheadBlocksSet", logs: logs, sub: sub}, nil +} + +// WatchLookaheadBlocksSet is a free log subscription operation binding the contract event 0xa41e64dd47db91b61b43ccea8b57d75abfa496f23efc708c22753c4bc9d68842. +// +// Solidity: event LookaheadBlocksSet(uint256 lookaheadBlocks) +func (_BN254TableCalculator *BN254TableCalculatorFilterer) WatchLookaheadBlocksSet(opts *bind.WatchOpts, sink chan<- *BN254TableCalculatorLookaheadBlocksSet) (event.Subscription, error) { + + logs, sub, err := _BN254TableCalculator.contract.WatchLogs(opts, "LookaheadBlocksSet") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BN254TableCalculatorLookaheadBlocksSet) + if err := _BN254TableCalculator.contract.UnpackLog(event, "LookaheadBlocksSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLookaheadBlocksSet is a log parse operation binding the contract event 0xa41e64dd47db91b61b43ccea8b57d75abfa496f23efc708c22753c4bc9d68842. +// +// Solidity: event LookaheadBlocksSet(uint256 lookaheadBlocks) +func (_BN254TableCalculator *BN254TableCalculatorFilterer) ParseLookaheadBlocksSet(log types.Log) (*BN254TableCalculatorLookaheadBlocksSet, error) { + event := new(BN254TableCalculatorLookaheadBlocksSet) + if err := _BN254TableCalculator.contract.UnpackLog(event, "LookaheadBlocksSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/BeaconChainProofs/binding.go b/pkg/bindings/BeaconChainProofs/binding.go index f6f6cff21d..5762f50e0f 100644 --- a/pkg/bindings/BeaconChainProofs/binding.go +++ b/pkg/bindings/BeaconChainProofs/binding.go @@ -32,7 +32,7 @@ var ( // BeaconChainProofsMetaData contains all meta data concerning the BeaconChainProofs contract. var BeaconChainProofsMetaData = &bind.MetaData{ ABI: "[{\"type\":\"error\",\"name\":\"InvalidProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidValidatorFieldsLength\",\"inputs\":[]}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212209f88df6324f1350e30e882a6b975942cfcb154d768d0159f0e503982300bce3664736f6c634300081b0033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220c5779284c6270c143194f605bf189636f62d559008089cb9e1c89c5ca030d61e64736f6c634300081b0033", } // BeaconChainProofsABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/CrossChainRegistry/binding.go b/pkg/bindings/CrossChainRegistry/binding.go new file mode 100644 index 0000000000..04b6190ee2 --- /dev/null +++ b/pkg/bindings/CrossChainRegistry/binding.go @@ -0,0 +1,2630 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package CrossChainRegistry + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ICrossChainRegistryTypesOperatorSetConfig is an auto generated low-level Go binding around an user-defined struct. +type ICrossChainRegistryTypesOperatorSetConfig struct { + Owner common.Address + MaxStalenessPeriod uint32 +} + +// OperatorSet is an auto generated low-level Go binding around an user-defined struct. +type OperatorSet struct { + Avs common.Address + Id uint32 +} + +// CrossChainRegistryMetaData contains all meta data concerning the CrossChainRegistry contract. +var CrossChainRegistryMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_allocationManager\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"},{\"name\":\"_keyRegistrar\",\"type\":\"address\",\"internalType\":\"contractIKeyRegistrar\"},{\"name\":\"_permissionController\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addChainIDsToWhitelist\",\"inputs\":[{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"operatorTableUpdaters\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addTransportDestinations\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorTableBytes\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createGenerationReservation\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorTableCalculator\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableCalculator\"},{\"name\":\"config\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getActiveGenerationReservations\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getActiveTransportReservations\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetConfig\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorTableCalculator\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableCalculator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSupportedChains\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransportDestinations\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"keyRegistrar\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIKeyRegistrar\"}],\"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\":\"permissionController\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeChainIDsFromWhitelist\",\"inputs\":[{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeGenerationReservation\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeTransportDestinations\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorSetConfig\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"config\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorTableCalculator\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorTableCalculator\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableCalculator\"}],\"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\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"ChainIDAddedToWhitelist\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorTableUpdater\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChainIDRemovedFromWhitelist\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GenerationReservationCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GenerationReservationRemoved\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetConfigSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"config\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorTableCalculatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorTableCalculator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIOperatorTableCalculator\"}],\"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\":\"TransportDestinationAdded\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransportDestinationRemoved\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainID\",\"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\":\"error\",\"name\":\"ArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ChainIDAlreadyWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ChainIDNotWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EmptyChainIDsArray\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GenerationReservationAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GenerationReservationDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidChainId\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorTableCalculator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPermissions\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NeedToDelete\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RequireAtLeastOneTransportDestination\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StalenessPeriodZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"TransportDestinationAlreadyAdded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TransportDestinationNotFound\",\"inputs\":[]}]", + Bin: "0x610120604052348015610010575f5ffd5b50604051612ebc380380612ebc83398101604081905261002f916101c1565b80838686856001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805291821660a052811660c0521660e05261008181610098565b610100525061008e6100de565b5050505050610319565b5f5f829050601f815111156100cb578260405163305a27a960e01b81526004016100c291906102be565b60405180910390fd5b80516100d6826102f3565b179392505050565b5f54610100900460ff16156101455760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100c2565b5f5460ff90811614610194575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101aa575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f60a086880312156101d5575f5ffd5b85516101e081610196565b60208701519095506101f181610196565b604087015190945061020281610196565b606087015190935061021381610196565b60808701519092506001600160401b0381111561022e575f5ffd5b8601601f8101881361023e575f5ffd5b80516001600160401b03811115610257576102576101ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610285576102856101ad565b6040528181528282016020018a101561029c575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295909350565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610313575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051612b2061039c5f395f610c8801525f81816102c501526119bc01525f818161026601526109db01525f81816103e5015281816106630152818161081501528181610b7401528181610d1b015281816114d201526116a201525f8181610381015281816118b30152611fc80152612b205ff3fe608060405234801561000f575f5ffd5b50600436106101c6575f3560e01c80636c55a37f116100fe578063ca8aa7c71161009e578063f2fde38b1161006e578063f2fde38b14610442578063f3e9f5d414610455578063fabc1cbc14610468578063fe596dee1461047b575f5ffd5b8063ca8aa7c7146103e0578063cd6dc68714610407578063d09b978b1461041a578063dfbd9dfd1461042f575f5ffd5b8063886f1195116100d9578063886f11951461037c5780638da5cb5b146103a3578063bfda3b3d146103b4578063c4bffe2b146103ca575f5ffd5b80636c55a37f1461034e578063715018a61461036157806375e4b53914610369575f5ffd5b806341ee6d0e1161016957806354fd4d501161014457806354fd4d50146102fa578063595c6a67146103025780635ac86ab71461030a5780635c975abb1461033d575f5ffd5b806341ee6d0e146102a05780634657e26a146102c057806349be7d6f146102e7575f5ffd5b806321fa7fdc116101a457806321fa7fdc14610205578063277e1e621461022e5780633c75fddf146102415780633ec45c7e14610261575f5ffd5b806304e98be3146101ca578063136439dd146101df5780631ca9142a146101f2575b5f5ffd5b6101dd6101d8366004612319565b61048e565b005b6101dd6101ed366004612383565b6105d2565b6101dd6102003660046123c4565b61060c565b6102186102133660046124b3565b61075e565b60405161022591906124eb565b60405180910390f35b6101dd61023c3660046124f9565b6107be565b61025461024f3660046124b3565b6108ff565b6040516102259190612566565b6102887f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610225565b6102b36102ae366004612578565b6109d6565b60405161022591906125c0565b6102887f000000000000000000000000000000000000000000000000000000000000000081565b6101dd6102f53660046125d2565b610b1d565b6102b3610c81565b6101dd610cb1565b61032d610318366004612621565b606654600160ff9092169190911b9081161490565b6040519015158152602001610225565b606654604051908152602001610225565b6101dd61035c366004612578565b610cc5565b6101dd610e95565b6102886103773660046124b3565b610ea6565b6102887f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b0316610288565b6103bc610ed2565b60405161022592919061267c565b6103d261103e565b604051610225929190612719565b6102887f000000000000000000000000000000000000000000000000000000000000000081565b6101dd61041536600461277a565b611147565b610422611264565b60405161022591906127a4565b6101dd61043d3660046127b6565b611356565b6101dd6104503660046127f4565b611402565b6101dd6104633660046125d2565b61147b565b6101dd610476366004612383565b6115df565b6101dd61048936600461280f565b61164c565b6104966117fa565b60046104a181611854565b8382146104c15760405163512509d360e11b815260040160405180910390fd5b5f5b848110156105ca575f8686838181106104de576104de612883565b905060200201359050805f0361050757604051633d23e4d160e11b815260040160405180910390fd5b61053b8186868581811061051d5761051d612883565b905060200201602081019061053291906127f4565b609c919061187f565b610558576040516324bf631b60e11b815260040160405180910390fd5b7f7a0a76d85b582b17996dd7371a407aa7a79b870db8539247fba315c7b6beff628186868581811061058c5761058c612883565b90506020020160208101906105a191906127f4565b604080519283526001600160a01b0390911660208301520160405180910390a1506001016104c3565b505050505050565b6105da61189e565b60665481811681146105ff5760405163c61dca5d60e01b815260040160405180910390fd5b61060882611941565b5050565b600161061781611854565b61062460208401846127f4565b61062d8161197e565b61064a5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b815284906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc758906106989084906004016128c8565b602060405180830381865afa1580156106b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d791906128d6565b6106f457604051631fb1705560e21b815260040160405180910390fd5b61072161070e610709368890038801886124b3565b611a2e565b5f90815260986020526040902054151590565b61073e57604051634d2baea960e11b815260040160405180910390fd5b610757610750368790038701876124b3565b855f611a91565b5050505050565b604080518082019091525f8082526020820152609a5f61077d84611a2e565b815260208082019290925260409081015f208151808301909252546001600160a01b0381168252600160a01b900463ffffffff169181019190915292915050565b60026107c981611854565b6107d660208401846127f4565b6107df8161197e565b6107fc5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b815284906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc7589061084a9084906004016128c8565b602060405180830381865afa158015610865573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061088991906128d6565b6108a657604051631fb1705560e21b815260040160405180910390fd5b6108bb61070e610709368890038801886124b3565b6108d857604051634d2baea960e11b815260040160405180910390fd5b6107576108ea368790038701876124b3565b6108f9368790038701876124b3565b5f611b57565b60605f609b5f61090e85611a2e565b81526020019081526020015f2090505f61092782611c8a565b90505f816001600160401b03811115610942576109426123fa565b60405190808252806020026020018201604052801561096b578160200160208202803683370190505b5090505f805b838110156109cb575f6109848683611c93565b9050610991609c82611c9e565b156109c257808484815181106109a9576109a9612883565b6020908102919091010152826109be81612909565b9350505b50600101610971565b508152949350505050565b6060817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637cffe48c846040518263ffffffff1660e01b8152600401610a2591906128c8565b602060405180830381865afa158015610a40573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a649190612921565b610a76610213368690038601866124b3565b610a88610377368790038701876124b3565b6001600160a01b03166341ee6d0e866040518263ffffffff1660e01b8152600401610ab391906128c8565b5f60405180830381865afa158015610acd573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610af4919081019061293f565b604051602001610b0794939291906129d1565b6040516020818303038152906040529050919050565b6003610b2881611854565b610b3560208501856127f4565b610b3e8161197e565b610b5b5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b815285906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610ba99084906004016128c8565b602060405180830381865afa158015610bc4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610be891906128d6565b610c0557604051631fb1705560e21b815260040160405180910390fd5b610c1a61070e610709368990038901896124b3565b610c3757604051634d2baea960e11b815260040160405180910390fd5b6105ca610c49368890038801886124b3565b8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611ca992505050565b6060610cac7f0000000000000000000000000000000000000000000000000000000000000000611da5565b905090565b610cb961189e565b610cc35f19611941565b565b5f610ccf81611854565b610cdc60208301836127f4565b610ce58161197e565b610d025760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b815283906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610d509084906004016128c8565b602060405180830381865afa158015610d6b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8f91906128d6565b610dac57604051631fb1705560e21b815260040160405180910390fd5b5f610dbf610709368790038701876124b3565b9050610dcc609782611de2565b610de957604051634d2baea960e11b815260040160405180910390fd5b7f4ffdfdd59e9e1e3c301608788f78dd458e61cb8c045ca92b62a7b484c80824fb85604051610e1891906128c8565b60405180910390a1610e3a610e32368790038701876124b3565b5f6001611a91565b610e66610e4c368790038701876124b3565b604080518082019091525f80825260208201526001611b57565b610757610e78368790038701876124b3565b5f838152609b60205260409020610e8e90611ded565b6001611df9565b610e9d6117fa565b610cc35f611f43565b5f60995f610eb384611a2e565b815260208101919091526040015f20546001600160a01b031692915050565b6060805f610ee06097611c8a565b90505f816001600160401b03811115610efb57610efb6123fa565b604051908082528060200260200182016040528015610f3f57816020015b604080518082019091525f8082526020820152815260200190600190039081610f195790505b5090505f826001600160401b03811115610f5b57610f5b6123fa565b604051908082528060200260200182016040528015610f8e57816020015b6060815260200190600190039081610f795790505b5090505f5b83811015611033575f610fa7609783611c93565b90505f610fe382604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b905080858481518110610ff857610ff8612883565b602002602001018190525061100c816108ff565b84848151811061101e5761101e612883565b60209081029190910101525050600101610f93565b509094909350915050565b6060805f61104c609c611f94565b90505f816001600160401b03811115611067576110676123fa565b604051908082528060200260200182016040528015611090578160200160208202803683370190505b5090505f826001600160401b038111156110ac576110ac6123fa565b6040519080825280602002602001820160405280156110d5578160200160208202803683370190505b5090505f5b83811015611033575f806110ef609c84611f9e565b915091508185848151811061110657611106612883565b6020026020010181815250508084848151811061112557611125612883565b6001600160a01b039092166020928302919091019091015250506001016110da565b5f54610100900460ff161580801561116557505f54600160ff909116105b8061117e5750303b15801561117e57505f5460ff166001145b6111e65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611207575f805461ff0019166101001790555b61121083611f43565b61121982611941565b801561125f575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b60605f6112716097611c8a565b90505f816001600160401b0381111561128c5761128c6123fa565b6040519080825280602002602001820160405280156112d057816020015b604080518082019091525f80825260208201528152602001906001900390816112aa5790505b5090505f5b8281101561134f575f6112e9609783611c93565b90505f61132582604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b90508084848151811061133a5761133a612883565b602090810291909101015250506001016112d5565b5092915050565b61135e6117fa565b600461136981611854565b5f5b828110156113fc575f84848381811061138657611386612883565b9050602002013590506113a381609c611fbb90919063ffffffff16565b6113c05760405163b3f92ba160e01b815260040160405180910390fd5b6040518181527f6824d36084ecf2cd819b137cb5d837cc6e73afce1e0e348c9fdecaa81d0341e59060200160405180910390a15060010161136b565b50505050565b61140a6117fa565b6001600160a01b03811661146f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016111dd565b61147881611f43565b50565b600361148681611854565b61149360208501856127f4565b61149c8161197e565b6114b95760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b815285906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc758906115079084906004016128c8565b602060405180830381865afa158015611522573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154691906128d6565b61156357604051631fb1705560e21b815260040160405180910390fd5b61157861070e610709368990038901896124b3565b61159557604051634d2baea960e11b815260040160405180910390fd5b6105ca6115a7368890038801886124b3565b8686808060200260200160405190810160405280939291908181526020018383602002808284375f9201829052509250611df9915050565b6115e7611fc6565b6066548019821981161461160e5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f61165681611854565b61166360208701876127f4565b61166c8161197e565b6116895760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b815287906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc758906116d79084906004016128c8565b602060405180830381865afa1580156116f2573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061171691906128d6565b61173357604051631fb1705560e21b815260040160405180910390fd5b611750611748610709368b90038b018b6124b3565b609790612077565b61176d57604051631883461560e01b815260040160405180910390fd5b7f4fb6efec7dd60036ce3a7af8d5c48425019daa0fb61eb471a966a7ac2c6fa6a68860405161179c91906128c8565b60405180910390a16117bd6117b6368a90038a018a6124b3565b885f611a91565b6117de6117cf368a90038a018a6124b3565b6108f9368990038901896124b3565b6117f0610c49368a90038a018a6124b3565b5050505050505050565b6033546001600160a01b03163314610cc35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016111dd565b606654600160ff83161b908116036114785760405163840a48d560e01b815260040160405180910390fd5b5f61189484846001600160a01b038516612082565b90505b9392505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611900573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192491906128d6565b610cc357604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015611a04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a2891906128d6565b92915050565b5f815f0151826020015163ffffffff16604051602001611a7992919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b604051602081830303815290604052611a2890612a29565b80611ac1576001600160a01b038216611abc5760405162ccc65b60e11b815260040160405180910390fd5b611ae9565b6001600160a01b03821615611ae957604051637cd06bd160e11b815260040160405180910390fd5b8160995f611af686611a2e565b81526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055507f7f7ccafd92d20fdb39dee184a0dce002a9da420ed0def461f2a027abc9b3f6df8383604051611256929190612a4c565b80611bb35781516001600160a01b0316611b84576040516339b190bb60e11b815260040160405180910390fd5b816020015163ffffffff165f03611bae576040516314fa014960e11b815260040160405180910390fd5b611c05565b81516001600160a01b031615611bdc57604051637cd06bd160e11b815260040160405180910390fd5b602082015163ffffffff1615611c0557604051637cd06bd160e11b815260040160405180910390fd5b81609a5f611c1286611a2e565b815260208082019290925260409081015f2083518154949093015163ffffffff16600160a01b026001600160c01b03199094166001600160a01b0390931692909217929092179055517f3147846ee526009000671c20380b856a633345691300f82585f90034715cf0e2906112569085908590612a72565b5f611a28825490565b5f611897838361209e565b5f61189783836120c4565b5f815111611cca57604051638631a07560e01b815260040160405180910390fd5b5f611cd483611a2e565b90505f5b82518110156113fc575f838281518110611cf457611cf4612883565b60200260200101519050611d1281609c611c9e90919063ffffffff16565b611d2f5760405163b3f92ba160e01b815260040160405180910390fd5b5f838152609b60205260409020611d469082612077565b611d63576040516396d81ac960e01b815260040160405180910390fd5b7f8b3a5eb206599a7bd7dcffa354a014ae777667c6890b23d046ff6867cd9683938582604051611d94929190612a8d565b60405180910390a150600101611cd8565b60605f611db1836120db565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f6118978383612102565b60605f611897836121e5565b5f825111611e1a57604051638631a07560e01b815260040160405180910390fd5b5f611e2484611a2e565b90505f5b8351811015611ed0575f848281518110611e4457611e44612883565b60200260200101519050611e7181609b5f8681526020019081526020015f20611de290919063ffffffff16565b611e8e5760405163ab6cce0760e01b815260040160405180910390fd5b7f9fa5794dfaeae2ede46d5bdba347083580889221c3338813ca6c8d4b681ae8ee8682604051611ebf929190612a8d565b60405180910390a150600101611e28565b5081611f0f575f818152609b60205260408120611eec90611c8a565b11611f0a576040516343629f7b60e01b815260040160405180910390fd5b6113fc565b5f818152609b60205260409020611f2590611c8a565b156113fc57604051637cd06bd160e11b815260040160405180910390fd5b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f611a288261223e565b5f808080611fac8686612248565b909450925050505b9250929050565b5f6118978383612271565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612022573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120469190612aa8565b6001600160a01b0316336001600160a01b031614610cc35760405163794821ff60e01b815260040160405180910390fd5b5f611897838361228d565b5f82815260028401602052604081208290556118948484612077565b5f825f0182815481106120b3576120b3612883565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515611897565b5f60ff8216601f811115611a2857604051632cd44ac360e21b815260040160405180910390fd5b5f81815260018301602052604081205480156121dc575f612124600183612ac3565b85549091505f9061213790600190612ac3565b9050818114612196575f865f01828154811061215557612155612883565b905f5260205f200154905080875f01848154811061217557612175612883565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806121a7576121a7612ad6565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611a28565b5f915050611a28565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561223257602002820191905f5260205f20905b81548152602001906001019080831161221e575b50505050509050919050565b5f611a2882611c8a565b5f80806122558585611c93565b5f81815260029690960160205260409095205494959350505050565b5f81815260028301602052604081208190556118978383611de2565b5f8181526001830160205260408120546122d257508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611a28565b505f611a28565b5f5f83601f8401126122e9575f5ffd5b5081356001600160401b038111156122ff575f5ffd5b6020830191508360208260051b8501011115611fb4575f5ffd5b5f5f5f5f6040858703121561232c575f5ffd5b84356001600160401b03811115612341575f5ffd5b61234d878288016122d9565b90955093505060208501356001600160401b0381111561236b575f5ffd5b612377878288016122d9565b95989497509550505050565b5f60208284031215612393575f5ffd5b5035919050565b5f604082840312156123aa575f5ffd5b50919050565b6001600160a01b0381168114611478575f5ffd5b5f5f606083850312156123d5575f5ffd5b6123df848461239a565b915060408301356123ef816123b0565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715612436576124366123fa565b604052919050565b803563ffffffff81168114612451575f5ffd5b919050565b5f60408284031215612466575f5ffd5b604080519081016001600160401b0381118282101715612488576124886123fa565b6040529050808235612499816123b0565b81526124a76020840161243e565b60208201525092915050565b5f604082840312156124c3575f5ffd5b6118978383612456565b80516001600160a01b0316825260209081015163ffffffff16910152565b60408101611a2882846124cd565b5f5f6080838503121561250a575f5ffd5b612514848461239a565b9150612523846040850161239a565b90509250929050565b5f8151808452602084019350602083015f5b8281101561255c57815186526020958601959091019060010161253e565b5093949350505050565b602081525f611897602083018461252c565b5f60408284031215612588575f5ffd5b611897838361239a565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6118976020830184612592565b5f5f5f606084860312156125e4575f5ffd5b6125ee858561239a565b925060408401356001600160401b03811115612608575f5ffd5b612614868287016122d9565b9497909650939450505050565b5f60208284031215612631575f5ffd5b813560ff81168114611897575f5ffd5b5f8151808452602084019350602083015f5b8281101561255c576126668683516124cd565b6040959095019460209190910190600101612653565b604081525f61268e6040830185612641565b828103602084015280845180835260208301915060208160051b840101602087015f5b8381101561270b57858303601f19018552815180518085526020918201918501905f5b818110156126f25783518352602093840193909201916001016126d4565b50506020968701969094509290920191506001016126b1565b509098975050505050505050565b604081525f61272b604083018561252c565b82810360208401528084518083526020830191506020860192505f5b8181101561276e5783516001600160a01b0316835260209384019390920191600101612747565b50909695505050505050565b5f5f6040838503121561278b575f5ffd5b8235612796816123b0565b946020939093013593505050565b602081525f6118976020830184612641565b5f5f602083850312156127c7575f5ffd5b82356001600160401b038111156127dc575f5ffd5b6127e8858286016122d9565b90969095509350505050565b5f60208284031215612804575f5ffd5b8135611897816123b0565b5f5f5f5f5f60c08688031215612823575f5ffd5b61282d878761239a565b9450604086013561283d816123b0565b935061284c876060880161239a565b925060a08601356001600160401b03811115612866575f5ffd5b612872888289016122d9565b969995985093965092949392505050565b634e487b7160e01b5f52603260045260245ffd5b80356128a2816123b0565b6001600160a01b0316825263ffffffff6128be6020830161243e565b1660208301525050565b60408101611a288284612897565b5f602082840312156128e6575f5ffd5b81518015158114611897575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161291a5761291a6128f5565b5060010190565b5f60208284031215612931575f5ffd5b815160038110611897575f5ffd5b5f6020828403121561294f575f5ffd5b81516001600160401b03811115612964575f5ffd5b8201601f81018413612974575f5ffd5b80516001600160401b0381111561298d5761298d6123fa565b6129a0601f8201601f191660200161240e565b8181528560208385010111156129b4575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b6129db8186612897565b5f600385106129f857634e487b7160e01b5f52602160045260245ffd5b846040830152612a0b60608301856124cd565b60c060a0830152612a1f60c0830184612592565b9695505050505050565b805160208083015191908110156123aa575f1960209190910360031b1b16919050565b60608101612a5a82856124cd565b6001600160a01b039290921660409190910152919050565b60808101612a8082856124cd565b61189760408301846124cd565b60608101612a9b82856124cd565b8260408301529392505050565b5f60208284031215612ab8575f5ffd5b8151611897816123b0565b81810381811115611a2857611a286128f5565b634e487b7160e01b5f52603160045260245ffdfea26469706673582212204640ac49a8f85618e6a90691d71369c849158db34c8ae94d0d898b84a8b81edd64736f6c634300081b0033", +} + +// CrossChainRegistryABI is the input ABI used to generate the binding from. +// Deprecated: Use CrossChainRegistryMetaData.ABI instead. +var CrossChainRegistryABI = CrossChainRegistryMetaData.ABI + +// CrossChainRegistryBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use CrossChainRegistryMetaData.Bin instead. +var CrossChainRegistryBin = CrossChainRegistryMetaData.Bin + +// DeployCrossChainRegistry deploys a new Ethereum contract, binding an instance of CrossChainRegistry to it. +func DeployCrossChainRegistry(auth *bind.TransactOpts, backend bind.ContractBackend, _allocationManager common.Address, _keyRegistrar common.Address, _permissionController common.Address, _pauserRegistry common.Address, _version string) (common.Address, *types.Transaction, *CrossChainRegistry, error) { + parsed, err := CrossChainRegistryMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(CrossChainRegistryBin), backend, _allocationManager, _keyRegistrar, _permissionController, _pauserRegistry, _version) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &CrossChainRegistry{CrossChainRegistryCaller: CrossChainRegistryCaller{contract: contract}, CrossChainRegistryTransactor: CrossChainRegistryTransactor{contract: contract}, CrossChainRegistryFilterer: CrossChainRegistryFilterer{contract: contract}}, nil +} + +// CrossChainRegistry is an auto generated Go binding around an Ethereum contract. +type CrossChainRegistry struct { + CrossChainRegistryCaller // Read-only binding to the contract + CrossChainRegistryTransactor // Write-only binding to the contract + CrossChainRegistryFilterer // Log filterer for contract events +} + +// CrossChainRegistryCaller is an auto generated read-only Go binding around an Ethereum contract. +type CrossChainRegistryCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CrossChainRegistryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type CrossChainRegistryTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CrossChainRegistryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type CrossChainRegistryFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CrossChainRegistrySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type CrossChainRegistrySession struct { + Contract *CrossChainRegistry // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// CrossChainRegistryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type CrossChainRegistryCallerSession struct { + Contract *CrossChainRegistryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// CrossChainRegistryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type CrossChainRegistryTransactorSession struct { + Contract *CrossChainRegistryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// CrossChainRegistryRaw is an auto generated low-level Go binding around an Ethereum contract. +type CrossChainRegistryRaw struct { + Contract *CrossChainRegistry // Generic contract binding to access the raw methods on +} + +// CrossChainRegistryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type CrossChainRegistryCallerRaw struct { + Contract *CrossChainRegistryCaller // Generic read-only contract binding to access the raw methods on +} + +// CrossChainRegistryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type CrossChainRegistryTransactorRaw struct { + Contract *CrossChainRegistryTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewCrossChainRegistry creates a new instance of CrossChainRegistry, bound to a specific deployed contract. +func NewCrossChainRegistry(address common.Address, backend bind.ContractBackend) (*CrossChainRegistry, error) { + contract, err := bindCrossChainRegistry(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &CrossChainRegistry{CrossChainRegistryCaller: CrossChainRegistryCaller{contract: contract}, CrossChainRegistryTransactor: CrossChainRegistryTransactor{contract: contract}, CrossChainRegistryFilterer: CrossChainRegistryFilterer{contract: contract}}, nil +} + +// NewCrossChainRegistryCaller creates a new read-only instance of CrossChainRegistry, bound to a specific deployed contract. +func NewCrossChainRegistryCaller(address common.Address, caller bind.ContractCaller) (*CrossChainRegistryCaller, error) { + contract, err := bindCrossChainRegistry(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &CrossChainRegistryCaller{contract: contract}, nil +} + +// NewCrossChainRegistryTransactor creates a new write-only instance of CrossChainRegistry, bound to a specific deployed contract. +func NewCrossChainRegistryTransactor(address common.Address, transactor bind.ContractTransactor) (*CrossChainRegistryTransactor, error) { + contract, err := bindCrossChainRegistry(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &CrossChainRegistryTransactor{contract: contract}, nil +} + +// NewCrossChainRegistryFilterer creates a new log filterer instance of CrossChainRegistry, bound to a specific deployed contract. +func NewCrossChainRegistryFilterer(address common.Address, filterer bind.ContractFilterer) (*CrossChainRegistryFilterer, error) { + contract, err := bindCrossChainRegistry(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &CrossChainRegistryFilterer{contract: contract}, nil +} + +// bindCrossChainRegistry binds a generic wrapper to an already deployed contract. +func bindCrossChainRegistry(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := CrossChainRegistryMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_CrossChainRegistry *CrossChainRegistryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _CrossChainRegistry.Contract.CrossChainRegistryCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_CrossChainRegistry *CrossChainRegistryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.CrossChainRegistryTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_CrossChainRegistry *CrossChainRegistryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.CrossChainRegistryTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_CrossChainRegistry *CrossChainRegistryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _CrossChainRegistry.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_CrossChainRegistry *CrossChainRegistryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_CrossChainRegistry *CrossChainRegistryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.contract.Transact(opts, method, params...) +} + +// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. +// +// Solidity: function allocationManager() view returns(address) +func (_CrossChainRegistry *CrossChainRegistryCaller) AllocationManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _CrossChainRegistry.contract.Call(opts, &out, "allocationManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. +// +// Solidity: function allocationManager() view returns(address) +func (_CrossChainRegistry *CrossChainRegistrySession) AllocationManager() (common.Address, error) { + return _CrossChainRegistry.Contract.AllocationManager(&_CrossChainRegistry.CallOpts) +} + +// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. +// +// Solidity: function allocationManager() view returns(address) +func (_CrossChainRegistry *CrossChainRegistryCallerSession) AllocationManager() (common.Address, error) { + return _CrossChainRegistry.Contract.AllocationManager(&_CrossChainRegistry.CallOpts) +} + +// CalculateOperatorTableBytes is a free data retrieval call binding the contract method 0x41ee6d0e. +// +// Solidity: function calculateOperatorTableBytes((address,uint32) operatorSet) view returns(bytes) +func (_CrossChainRegistry *CrossChainRegistryCaller) CalculateOperatorTableBytes(opts *bind.CallOpts, operatorSet OperatorSet) ([]byte, error) { + var out []interface{} + err := _CrossChainRegistry.contract.Call(opts, &out, "calculateOperatorTableBytes", operatorSet) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// CalculateOperatorTableBytes is a free data retrieval call binding the contract method 0x41ee6d0e. +// +// Solidity: function calculateOperatorTableBytes((address,uint32) operatorSet) view returns(bytes) +func (_CrossChainRegistry *CrossChainRegistrySession) CalculateOperatorTableBytes(operatorSet OperatorSet) ([]byte, error) { + return _CrossChainRegistry.Contract.CalculateOperatorTableBytes(&_CrossChainRegistry.CallOpts, operatorSet) +} + +// CalculateOperatorTableBytes is a free data retrieval call binding the contract method 0x41ee6d0e. +// +// Solidity: function calculateOperatorTableBytes((address,uint32) operatorSet) view returns(bytes) +func (_CrossChainRegistry *CrossChainRegistryCallerSession) CalculateOperatorTableBytes(operatorSet OperatorSet) ([]byte, error) { + return _CrossChainRegistry.Contract.CalculateOperatorTableBytes(&_CrossChainRegistry.CallOpts, operatorSet) +} + +// GetActiveGenerationReservations is a free data retrieval call binding the contract method 0xd09b978b. +// +// Solidity: function getActiveGenerationReservations() view returns((address,uint32)[]) +func (_CrossChainRegistry *CrossChainRegistryCaller) GetActiveGenerationReservations(opts *bind.CallOpts) ([]OperatorSet, error) { + var out []interface{} + err := _CrossChainRegistry.contract.Call(opts, &out, "getActiveGenerationReservations") + + if err != nil { + return *new([]OperatorSet), err + } + + out0 := *abi.ConvertType(out[0], new([]OperatorSet)).(*[]OperatorSet) + + return out0, err + +} + +// GetActiveGenerationReservations is a free data retrieval call binding the contract method 0xd09b978b. +// +// Solidity: function getActiveGenerationReservations() view returns((address,uint32)[]) +func (_CrossChainRegistry *CrossChainRegistrySession) GetActiveGenerationReservations() ([]OperatorSet, error) { + return _CrossChainRegistry.Contract.GetActiveGenerationReservations(&_CrossChainRegistry.CallOpts) +} + +// GetActiveGenerationReservations is a free data retrieval call binding the contract method 0xd09b978b. +// +// Solidity: function getActiveGenerationReservations() view returns((address,uint32)[]) +func (_CrossChainRegistry *CrossChainRegistryCallerSession) GetActiveGenerationReservations() ([]OperatorSet, error) { + return _CrossChainRegistry.Contract.GetActiveGenerationReservations(&_CrossChainRegistry.CallOpts) +} + +// GetActiveTransportReservations is a free data retrieval call binding the contract method 0xbfda3b3d. +// +// Solidity: function getActiveTransportReservations() view returns((address,uint32)[], uint256[][]) +func (_CrossChainRegistry *CrossChainRegistryCaller) GetActiveTransportReservations(opts *bind.CallOpts) ([]OperatorSet, [][]*big.Int, error) { + var out []interface{} + err := _CrossChainRegistry.contract.Call(opts, &out, "getActiveTransportReservations") + + if err != nil { + return *new([]OperatorSet), *new([][]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]OperatorSet)).(*[]OperatorSet) + out1 := *abi.ConvertType(out[1], new([][]*big.Int)).(*[][]*big.Int) + + return out0, out1, err + +} + +// GetActiveTransportReservations is a free data retrieval call binding the contract method 0xbfda3b3d. +// +// Solidity: function getActiveTransportReservations() view returns((address,uint32)[], uint256[][]) +func (_CrossChainRegistry *CrossChainRegistrySession) GetActiveTransportReservations() ([]OperatorSet, [][]*big.Int, error) { + return _CrossChainRegistry.Contract.GetActiveTransportReservations(&_CrossChainRegistry.CallOpts) +} + +// GetActiveTransportReservations is a free data retrieval call binding the contract method 0xbfda3b3d. +// +// Solidity: function getActiveTransportReservations() view returns((address,uint32)[], uint256[][]) +func (_CrossChainRegistry *CrossChainRegistryCallerSession) GetActiveTransportReservations() ([]OperatorSet, [][]*big.Int, error) { + return _CrossChainRegistry.Contract.GetActiveTransportReservations(&_CrossChainRegistry.CallOpts) +} + +// GetOperatorSetConfig is a free data retrieval call binding the contract method 0x21fa7fdc. +// +// Solidity: function getOperatorSetConfig((address,uint32) operatorSet) view returns((address,uint32)) +func (_CrossChainRegistry *CrossChainRegistryCaller) GetOperatorSetConfig(opts *bind.CallOpts, operatorSet OperatorSet) (ICrossChainRegistryTypesOperatorSetConfig, error) { + var out []interface{} + err := _CrossChainRegistry.contract.Call(opts, &out, "getOperatorSetConfig", operatorSet) + + if err != nil { + return *new(ICrossChainRegistryTypesOperatorSetConfig), err + } + + out0 := *abi.ConvertType(out[0], new(ICrossChainRegistryTypesOperatorSetConfig)).(*ICrossChainRegistryTypesOperatorSetConfig) + + return out0, err + +} + +// GetOperatorSetConfig is a free data retrieval call binding the contract method 0x21fa7fdc. +// +// Solidity: function getOperatorSetConfig((address,uint32) operatorSet) view returns((address,uint32)) +func (_CrossChainRegistry *CrossChainRegistrySession) GetOperatorSetConfig(operatorSet OperatorSet) (ICrossChainRegistryTypesOperatorSetConfig, error) { + return _CrossChainRegistry.Contract.GetOperatorSetConfig(&_CrossChainRegistry.CallOpts, operatorSet) +} + +// GetOperatorSetConfig is a free data retrieval call binding the contract method 0x21fa7fdc. +// +// Solidity: function getOperatorSetConfig((address,uint32) operatorSet) view returns((address,uint32)) +func (_CrossChainRegistry *CrossChainRegistryCallerSession) GetOperatorSetConfig(operatorSet OperatorSet) (ICrossChainRegistryTypesOperatorSetConfig, error) { + return _CrossChainRegistry.Contract.GetOperatorSetConfig(&_CrossChainRegistry.CallOpts, operatorSet) +} + +// GetOperatorTableCalculator is a free data retrieval call binding the contract method 0x75e4b539. +// +// Solidity: function getOperatorTableCalculator((address,uint32) operatorSet) view returns(address) +func (_CrossChainRegistry *CrossChainRegistryCaller) GetOperatorTableCalculator(opts *bind.CallOpts, operatorSet OperatorSet) (common.Address, error) { + var out []interface{} + err := _CrossChainRegistry.contract.Call(opts, &out, "getOperatorTableCalculator", operatorSet) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetOperatorTableCalculator is a free data retrieval call binding the contract method 0x75e4b539. +// +// Solidity: function getOperatorTableCalculator((address,uint32) operatorSet) view returns(address) +func (_CrossChainRegistry *CrossChainRegistrySession) GetOperatorTableCalculator(operatorSet OperatorSet) (common.Address, error) { + return _CrossChainRegistry.Contract.GetOperatorTableCalculator(&_CrossChainRegistry.CallOpts, operatorSet) +} + +// GetOperatorTableCalculator is a free data retrieval call binding the contract method 0x75e4b539. +// +// Solidity: function getOperatorTableCalculator((address,uint32) operatorSet) view returns(address) +func (_CrossChainRegistry *CrossChainRegistryCallerSession) GetOperatorTableCalculator(operatorSet OperatorSet) (common.Address, error) { + return _CrossChainRegistry.Contract.GetOperatorTableCalculator(&_CrossChainRegistry.CallOpts, operatorSet) +} + +// GetSupportedChains is a free data retrieval call binding the contract method 0xc4bffe2b. +// +// Solidity: function getSupportedChains() view returns(uint256[], address[]) +func (_CrossChainRegistry *CrossChainRegistryCaller) GetSupportedChains(opts *bind.CallOpts) ([]*big.Int, []common.Address, error) { + var out []interface{} + err := _CrossChainRegistry.contract.Call(opts, &out, "getSupportedChains") + + if err != nil { + return *new([]*big.Int), *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + out1 := *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) + + return out0, out1, err + +} + +// GetSupportedChains is a free data retrieval call binding the contract method 0xc4bffe2b. +// +// Solidity: function getSupportedChains() view returns(uint256[], address[]) +func (_CrossChainRegistry *CrossChainRegistrySession) GetSupportedChains() ([]*big.Int, []common.Address, error) { + return _CrossChainRegistry.Contract.GetSupportedChains(&_CrossChainRegistry.CallOpts) +} + +// GetSupportedChains is a free data retrieval call binding the contract method 0xc4bffe2b. +// +// Solidity: function getSupportedChains() view returns(uint256[], address[]) +func (_CrossChainRegistry *CrossChainRegistryCallerSession) GetSupportedChains() ([]*big.Int, []common.Address, error) { + return _CrossChainRegistry.Contract.GetSupportedChains(&_CrossChainRegistry.CallOpts) +} + +// GetTransportDestinations is a free data retrieval call binding the contract method 0x3c75fddf. +// +// Solidity: function getTransportDestinations((address,uint32) operatorSet) view returns(uint256[]) +func (_CrossChainRegistry *CrossChainRegistryCaller) GetTransportDestinations(opts *bind.CallOpts, operatorSet OperatorSet) ([]*big.Int, error) { + var out []interface{} + err := _CrossChainRegistry.contract.Call(opts, &out, "getTransportDestinations", operatorSet) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// GetTransportDestinations is a free data retrieval call binding the contract method 0x3c75fddf. +// +// Solidity: function getTransportDestinations((address,uint32) operatorSet) view returns(uint256[]) +func (_CrossChainRegistry *CrossChainRegistrySession) GetTransportDestinations(operatorSet OperatorSet) ([]*big.Int, error) { + return _CrossChainRegistry.Contract.GetTransportDestinations(&_CrossChainRegistry.CallOpts, operatorSet) +} + +// GetTransportDestinations is a free data retrieval call binding the contract method 0x3c75fddf. +// +// Solidity: function getTransportDestinations((address,uint32) operatorSet) view returns(uint256[]) +func (_CrossChainRegistry *CrossChainRegistryCallerSession) GetTransportDestinations(operatorSet OperatorSet) ([]*big.Int, error) { + return _CrossChainRegistry.Contract.GetTransportDestinations(&_CrossChainRegistry.CallOpts, operatorSet) +} + +// KeyRegistrar is a free data retrieval call binding the contract method 0x3ec45c7e. +// +// Solidity: function keyRegistrar() view returns(address) +func (_CrossChainRegistry *CrossChainRegistryCaller) KeyRegistrar(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _CrossChainRegistry.contract.Call(opts, &out, "keyRegistrar") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// KeyRegistrar is a free data retrieval call binding the contract method 0x3ec45c7e. +// +// Solidity: function keyRegistrar() view returns(address) +func (_CrossChainRegistry *CrossChainRegistrySession) KeyRegistrar() (common.Address, error) { + return _CrossChainRegistry.Contract.KeyRegistrar(&_CrossChainRegistry.CallOpts) +} + +// KeyRegistrar is a free data retrieval call binding the contract method 0x3ec45c7e. +// +// Solidity: function keyRegistrar() view returns(address) +func (_CrossChainRegistry *CrossChainRegistryCallerSession) KeyRegistrar() (common.Address, error) { + return _CrossChainRegistry.Contract.KeyRegistrar(&_CrossChainRegistry.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_CrossChainRegistry *CrossChainRegistryCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _CrossChainRegistry.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_CrossChainRegistry *CrossChainRegistrySession) Owner() (common.Address, error) { + return _CrossChainRegistry.Contract.Owner(&_CrossChainRegistry.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_CrossChainRegistry *CrossChainRegistryCallerSession) Owner() (common.Address, error) { + return _CrossChainRegistry.Contract.Owner(&_CrossChainRegistry.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_CrossChainRegistry *CrossChainRegistryCaller) Paused(opts *bind.CallOpts, index uint8) (bool, error) { + var out []interface{} + err := _CrossChainRegistry.contract.Call(opts, &out, "paused", index) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_CrossChainRegistry *CrossChainRegistrySession) Paused(index uint8) (bool, error) { + return _CrossChainRegistry.Contract.Paused(&_CrossChainRegistry.CallOpts, index) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_CrossChainRegistry *CrossChainRegistryCallerSession) Paused(index uint8) (bool, error) { + return _CrossChainRegistry.Contract.Paused(&_CrossChainRegistry.CallOpts, index) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_CrossChainRegistry *CrossChainRegistryCaller) Paused0(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _CrossChainRegistry.contract.Call(opts, &out, "paused0") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_CrossChainRegistry *CrossChainRegistrySession) Paused0() (*big.Int, error) { + return _CrossChainRegistry.Contract.Paused0(&_CrossChainRegistry.CallOpts) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_CrossChainRegistry *CrossChainRegistryCallerSession) Paused0() (*big.Int, error) { + return _CrossChainRegistry.Contract.Paused0(&_CrossChainRegistry.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_CrossChainRegistry *CrossChainRegistryCaller) PauserRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _CrossChainRegistry.contract.Call(opts, &out, "pauserRegistry") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_CrossChainRegistry *CrossChainRegistrySession) PauserRegistry() (common.Address, error) { + return _CrossChainRegistry.Contract.PauserRegistry(&_CrossChainRegistry.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_CrossChainRegistry *CrossChainRegistryCallerSession) PauserRegistry() (common.Address, error) { + return _CrossChainRegistry.Contract.PauserRegistry(&_CrossChainRegistry.CallOpts) +} + +// PermissionController is a free data retrieval call binding the contract method 0x4657e26a. +// +// Solidity: function permissionController() view returns(address) +func (_CrossChainRegistry *CrossChainRegistryCaller) PermissionController(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _CrossChainRegistry.contract.Call(opts, &out, "permissionController") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PermissionController is a free data retrieval call binding the contract method 0x4657e26a. +// +// Solidity: function permissionController() view returns(address) +func (_CrossChainRegistry *CrossChainRegistrySession) PermissionController() (common.Address, error) { + return _CrossChainRegistry.Contract.PermissionController(&_CrossChainRegistry.CallOpts) +} + +// PermissionController is a free data retrieval call binding the contract method 0x4657e26a. +// +// Solidity: function permissionController() view returns(address) +func (_CrossChainRegistry *CrossChainRegistryCallerSession) PermissionController() (common.Address, error) { + return _CrossChainRegistry.Contract.PermissionController(&_CrossChainRegistry.CallOpts) +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_CrossChainRegistry *CrossChainRegistryCaller) Version(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _CrossChainRegistry.contract.Call(opts, &out, "version") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_CrossChainRegistry *CrossChainRegistrySession) Version() (string, error) { + return _CrossChainRegistry.Contract.Version(&_CrossChainRegistry.CallOpts) +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_CrossChainRegistry *CrossChainRegistryCallerSession) Version() (string, error) { + return _CrossChainRegistry.Contract.Version(&_CrossChainRegistry.CallOpts) +} + +// AddChainIDsToWhitelist is a paid mutator transaction binding the contract method 0x04e98be3. +// +// Solidity: function addChainIDsToWhitelist(uint256[] chainIDs, address[] operatorTableUpdaters) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactor) AddChainIDsToWhitelist(opts *bind.TransactOpts, chainIDs []*big.Int, operatorTableUpdaters []common.Address) (*types.Transaction, error) { + return _CrossChainRegistry.contract.Transact(opts, "addChainIDsToWhitelist", chainIDs, operatorTableUpdaters) +} + +// AddChainIDsToWhitelist is a paid mutator transaction binding the contract method 0x04e98be3. +// +// Solidity: function addChainIDsToWhitelist(uint256[] chainIDs, address[] operatorTableUpdaters) returns() +func (_CrossChainRegistry *CrossChainRegistrySession) AddChainIDsToWhitelist(chainIDs []*big.Int, operatorTableUpdaters []common.Address) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.AddChainIDsToWhitelist(&_CrossChainRegistry.TransactOpts, chainIDs, operatorTableUpdaters) +} + +// AddChainIDsToWhitelist is a paid mutator transaction binding the contract method 0x04e98be3. +// +// Solidity: function addChainIDsToWhitelist(uint256[] chainIDs, address[] operatorTableUpdaters) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactorSession) AddChainIDsToWhitelist(chainIDs []*big.Int, operatorTableUpdaters []common.Address) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.AddChainIDsToWhitelist(&_CrossChainRegistry.TransactOpts, chainIDs, operatorTableUpdaters) +} + +// AddTransportDestinations is a paid mutator transaction binding the contract method 0x49be7d6f. +// +// Solidity: function addTransportDestinations((address,uint32) operatorSet, uint256[] chainIDs) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactor) AddTransportDestinations(opts *bind.TransactOpts, operatorSet OperatorSet, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.contract.Transact(opts, "addTransportDestinations", operatorSet, chainIDs) +} + +// AddTransportDestinations is a paid mutator transaction binding the contract method 0x49be7d6f. +// +// Solidity: function addTransportDestinations((address,uint32) operatorSet, uint256[] chainIDs) returns() +func (_CrossChainRegistry *CrossChainRegistrySession) AddTransportDestinations(operatorSet OperatorSet, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.AddTransportDestinations(&_CrossChainRegistry.TransactOpts, operatorSet, chainIDs) +} + +// AddTransportDestinations is a paid mutator transaction binding the contract method 0x49be7d6f. +// +// Solidity: function addTransportDestinations((address,uint32) operatorSet, uint256[] chainIDs) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactorSession) AddTransportDestinations(operatorSet OperatorSet, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.AddTransportDestinations(&_CrossChainRegistry.TransactOpts, operatorSet, chainIDs) +} + +// CreateGenerationReservation is a paid mutator transaction binding the contract method 0xfe596dee. +// +// Solidity: function createGenerationReservation((address,uint32) operatorSet, address operatorTableCalculator, (address,uint32) config, uint256[] chainIDs) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactor) CreateGenerationReservation(opts *bind.TransactOpts, operatorSet OperatorSet, operatorTableCalculator common.Address, config ICrossChainRegistryTypesOperatorSetConfig, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.contract.Transact(opts, "createGenerationReservation", operatorSet, operatorTableCalculator, config, chainIDs) +} + +// CreateGenerationReservation is a paid mutator transaction binding the contract method 0xfe596dee. +// +// Solidity: function createGenerationReservation((address,uint32) operatorSet, address operatorTableCalculator, (address,uint32) config, uint256[] chainIDs) returns() +func (_CrossChainRegistry *CrossChainRegistrySession) CreateGenerationReservation(operatorSet OperatorSet, operatorTableCalculator common.Address, config ICrossChainRegistryTypesOperatorSetConfig, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.CreateGenerationReservation(&_CrossChainRegistry.TransactOpts, operatorSet, operatorTableCalculator, config, chainIDs) +} + +// CreateGenerationReservation is a paid mutator transaction binding the contract method 0xfe596dee. +// +// Solidity: function createGenerationReservation((address,uint32) operatorSet, address operatorTableCalculator, (address,uint32) config, uint256[] chainIDs) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactorSession) CreateGenerationReservation(operatorSet OperatorSet, operatorTableCalculator common.Address, config ICrossChainRegistryTypesOperatorSetConfig, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.CreateGenerationReservation(&_CrossChainRegistry.TransactOpts, operatorSet, operatorTableCalculator, config, chainIDs) +} + +// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687. +// +// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.contract.Transact(opts, "initialize", initialOwner, initialPausedStatus) +} + +// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687. +// +// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns() +func (_CrossChainRegistry *CrossChainRegistrySession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.Initialize(&_CrossChainRegistry.TransactOpts, initialOwner, initialPausedStatus) +} + +// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687. +// +// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactorSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.Initialize(&_CrossChainRegistry.TransactOpts, initialOwner, initialPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactor) Pause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.contract.Transact(opts, "pause", newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_CrossChainRegistry *CrossChainRegistrySession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.Pause(&_CrossChainRegistry.TransactOpts, newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactorSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.Pause(&_CrossChainRegistry.TransactOpts, newPausedStatus) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_CrossChainRegistry *CrossChainRegistryTransactor) PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) { + return _CrossChainRegistry.contract.Transact(opts, "pauseAll") +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_CrossChainRegistry *CrossChainRegistrySession) PauseAll() (*types.Transaction, error) { + return _CrossChainRegistry.Contract.PauseAll(&_CrossChainRegistry.TransactOpts) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_CrossChainRegistry *CrossChainRegistryTransactorSession) PauseAll() (*types.Transaction, error) { + return _CrossChainRegistry.Contract.PauseAll(&_CrossChainRegistry.TransactOpts) +} + +// RemoveChainIDsFromWhitelist is a paid mutator transaction binding the contract method 0xdfbd9dfd. +// +// Solidity: function removeChainIDsFromWhitelist(uint256[] chainIDs) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactor) RemoveChainIDsFromWhitelist(opts *bind.TransactOpts, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.contract.Transact(opts, "removeChainIDsFromWhitelist", chainIDs) +} + +// RemoveChainIDsFromWhitelist is a paid mutator transaction binding the contract method 0xdfbd9dfd. +// +// Solidity: function removeChainIDsFromWhitelist(uint256[] chainIDs) returns() +func (_CrossChainRegistry *CrossChainRegistrySession) RemoveChainIDsFromWhitelist(chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.RemoveChainIDsFromWhitelist(&_CrossChainRegistry.TransactOpts, chainIDs) +} + +// RemoveChainIDsFromWhitelist is a paid mutator transaction binding the contract method 0xdfbd9dfd. +// +// Solidity: function removeChainIDsFromWhitelist(uint256[] chainIDs) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactorSession) RemoveChainIDsFromWhitelist(chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.RemoveChainIDsFromWhitelist(&_CrossChainRegistry.TransactOpts, chainIDs) +} + +// RemoveGenerationReservation is a paid mutator transaction binding the contract method 0x6c55a37f. +// +// Solidity: function removeGenerationReservation((address,uint32) operatorSet) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactor) RemoveGenerationReservation(opts *bind.TransactOpts, operatorSet OperatorSet) (*types.Transaction, error) { + return _CrossChainRegistry.contract.Transact(opts, "removeGenerationReservation", operatorSet) +} + +// RemoveGenerationReservation is a paid mutator transaction binding the contract method 0x6c55a37f. +// +// Solidity: function removeGenerationReservation((address,uint32) operatorSet) returns() +func (_CrossChainRegistry *CrossChainRegistrySession) RemoveGenerationReservation(operatorSet OperatorSet) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.RemoveGenerationReservation(&_CrossChainRegistry.TransactOpts, operatorSet) +} + +// RemoveGenerationReservation is a paid mutator transaction binding the contract method 0x6c55a37f. +// +// Solidity: function removeGenerationReservation((address,uint32) operatorSet) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactorSession) RemoveGenerationReservation(operatorSet OperatorSet) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.RemoveGenerationReservation(&_CrossChainRegistry.TransactOpts, operatorSet) +} + +// RemoveTransportDestinations is a paid mutator transaction binding the contract method 0xf3e9f5d4. +// +// Solidity: function removeTransportDestinations((address,uint32) operatorSet, uint256[] chainIDs) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactor) RemoveTransportDestinations(opts *bind.TransactOpts, operatorSet OperatorSet, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.contract.Transact(opts, "removeTransportDestinations", operatorSet, chainIDs) +} + +// RemoveTransportDestinations is a paid mutator transaction binding the contract method 0xf3e9f5d4. +// +// Solidity: function removeTransportDestinations((address,uint32) operatorSet, uint256[] chainIDs) returns() +func (_CrossChainRegistry *CrossChainRegistrySession) RemoveTransportDestinations(operatorSet OperatorSet, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.RemoveTransportDestinations(&_CrossChainRegistry.TransactOpts, operatorSet, chainIDs) +} + +// RemoveTransportDestinations is a paid mutator transaction binding the contract method 0xf3e9f5d4. +// +// Solidity: function removeTransportDestinations((address,uint32) operatorSet, uint256[] chainIDs) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactorSession) RemoveTransportDestinations(operatorSet OperatorSet, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.RemoveTransportDestinations(&_CrossChainRegistry.TransactOpts, operatorSet, chainIDs) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_CrossChainRegistry *CrossChainRegistryTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _CrossChainRegistry.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_CrossChainRegistry *CrossChainRegistrySession) RenounceOwnership() (*types.Transaction, error) { + return _CrossChainRegistry.Contract.RenounceOwnership(&_CrossChainRegistry.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_CrossChainRegistry *CrossChainRegistryTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _CrossChainRegistry.Contract.RenounceOwnership(&_CrossChainRegistry.TransactOpts) +} + +// SetOperatorSetConfig is a paid mutator transaction binding the contract method 0x277e1e62. +// +// Solidity: function setOperatorSetConfig((address,uint32) operatorSet, (address,uint32) config) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactor) SetOperatorSetConfig(opts *bind.TransactOpts, operatorSet OperatorSet, config ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _CrossChainRegistry.contract.Transact(opts, "setOperatorSetConfig", operatorSet, config) +} + +// SetOperatorSetConfig is a paid mutator transaction binding the contract method 0x277e1e62. +// +// Solidity: function setOperatorSetConfig((address,uint32) operatorSet, (address,uint32) config) returns() +func (_CrossChainRegistry *CrossChainRegistrySession) SetOperatorSetConfig(operatorSet OperatorSet, config ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.SetOperatorSetConfig(&_CrossChainRegistry.TransactOpts, operatorSet, config) +} + +// SetOperatorSetConfig is a paid mutator transaction binding the contract method 0x277e1e62. +// +// Solidity: function setOperatorSetConfig((address,uint32) operatorSet, (address,uint32) config) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactorSession) SetOperatorSetConfig(operatorSet OperatorSet, config ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.SetOperatorSetConfig(&_CrossChainRegistry.TransactOpts, operatorSet, config) +} + +// SetOperatorTableCalculator is a paid mutator transaction binding the contract method 0x1ca9142a. +// +// Solidity: function setOperatorTableCalculator((address,uint32) operatorSet, address operatorTableCalculator) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactor) SetOperatorTableCalculator(opts *bind.TransactOpts, operatorSet OperatorSet, operatorTableCalculator common.Address) (*types.Transaction, error) { + return _CrossChainRegistry.contract.Transact(opts, "setOperatorTableCalculator", operatorSet, operatorTableCalculator) +} + +// SetOperatorTableCalculator is a paid mutator transaction binding the contract method 0x1ca9142a. +// +// Solidity: function setOperatorTableCalculator((address,uint32) operatorSet, address operatorTableCalculator) returns() +func (_CrossChainRegistry *CrossChainRegistrySession) SetOperatorTableCalculator(operatorSet OperatorSet, operatorTableCalculator common.Address) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.SetOperatorTableCalculator(&_CrossChainRegistry.TransactOpts, operatorSet, operatorTableCalculator) +} + +// SetOperatorTableCalculator is a paid mutator transaction binding the contract method 0x1ca9142a. +// +// Solidity: function setOperatorTableCalculator((address,uint32) operatorSet, address operatorTableCalculator) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactorSession) SetOperatorTableCalculator(operatorSet OperatorSet, operatorTableCalculator common.Address) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.SetOperatorTableCalculator(&_CrossChainRegistry.TransactOpts, operatorSet, operatorTableCalculator) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _CrossChainRegistry.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_CrossChainRegistry *CrossChainRegistrySession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.TransferOwnership(&_CrossChainRegistry.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.TransferOwnership(&_CrossChainRegistry.TransactOpts, newOwner) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactor) Unpause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.contract.Transact(opts, "unpause", newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_CrossChainRegistry *CrossChainRegistrySession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.Unpause(&_CrossChainRegistry.TransactOpts, newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_CrossChainRegistry *CrossChainRegistryTransactorSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _CrossChainRegistry.Contract.Unpause(&_CrossChainRegistry.TransactOpts, newPausedStatus) +} + +// CrossChainRegistryChainIDAddedToWhitelistIterator is returned from FilterChainIDAddedToWhitelist and is used to iterate over the raw logs and unpacked data for ChainIDAddedToWhitelist events raised by the CrossChainRegistry contract. +type CrossChainRegistryChainIDAddedToWhitelistIterator struct { + Event *CrossChainRegistryChainIDAddedToWhitelist // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryChainIDAddedToWhitelistIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryChainIDAddedToWhitelist) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryChainIDAddedToWhitelist) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryChainIDAddedToWhitelistIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryChainIDAddedToWhitelistIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryChainIDAddedToWhitelist represents a ChainIDAddedToWhitelist event raised by the CrossChainRegistry contract. +type CrossChainRegistryChainIDAddedToWhitelist struct { + ChainID *big.Int + OperatorTableUpdater common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterChainIDAddedToWhitelist is a free log retrieval operation binding the contract event 0x7a0a76d85b582b17996dd7371a407aa7a79b870db8539247fba315c7b6beff62. +// +// Solidity: event ChainIDAddedToWhitelist(uint256 chainID, address operatorTableUpdater) +func (_CrossChainRegistry *CrossChainRegistryFilterer) FilterChainIDAddedToWhitelist(opts *bind.FilterOpts) (*CrossChainRegistryChainIDAddedToWhitelistIterator, error) { + + logs, sub, err := _CrossChainRegistry.contract.FilterLogs(opts, "ChainIDAddedToWhitelist") + if err != nil { + return nil, err + } + return &CrossChainRegistryChainIDAddedToWhitelistIterator{contract: _CrossChainRegistry.contract, event: "ChainIDAddedToWhitelist", logs: logs, sub: sub}, nil +} + +// WatchChainIDAddedToWhitelist is a free log subscription operation binding the contract event 0x7a0a76d85b582b17996dd7371a407aa7a79b870db8539247fba315c7b6beff62. +// +// Solidity: event ChainIDAddedToWhitelist(uint256 chainID, address operatorTableUpdater) +func (_CrossChainRegistry *CrossChainRegistryFilterer) WatchChainIDAddedToWhitelist(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryChainIDAddedToWhitelist) (event.Subscription, error) { + + logs, sub, err := _CrossChainRegistry.contract.WatchLogs(opts, "ChainIDAddedToWhitelist") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryChainIDAddedToWhitelist) + if err := _CrossChainRegistry.contract.UnpackLog(event, "ChainIDAddedToWhitelist", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseChainIDAddedToWhitelist is a log parse operation binding the contract event 0x7a0a76d85b582b17996dd7371a407aa7a79b870db8539247fba315c7b6beff62. +// +// Solidity: event ChainIDAddedToWhitelist(uint256 chainID, address operatorTableUpdater) +func (_CrossChainRegistry *CrossChainRegistryFilterer) ParseChainIDAddedToWhitelist(log types.Log) (*CrossChainRegistryChainIDAddedToWhitelist, error) { + event := new(CrossChainRegistryChainIDAddedToWhitelist) + if err := _CrossChainRegistry.contract.UnpackLog(event, "ChainIDAddedToWhitelist", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CrossChainRegistryChainIDRemovedFromWhitelistIterator is returned from FilterChainIDRemovedFromWhitelist and is used to iterate over the raw logs and unpacked data for ChainIDRemovedFromWhitelist events raised by the CrossChainRegistry contract. +type CrossChainRegistryChainIDRemovedFromWhitelistIterator struct { + Event *CrossChainRegistryChainIDRemovedFromWhitelist // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryChainIDRemovedFromWhitelistIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryChainIDRemovedFromWhitelist) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryChainIDRemovedFromWhitelist) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryChainIDRemovedFromWhitelistIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryChainIDRemovedFromWhitelistIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryChainIDRemovedFromWhitelist represents a ChainIDRemovedFromWhitelist event raised by the CrossChainRegistry contract. +type CrossChainRegistryChainIDRemovedFromWhitelist struct { + ChainID *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterChainIDRemovedFromWhitelist is a free log retrieval operation binding the contract event 0x6824d36084ecf2cd819b137cb5d837cc6e73afce1e0e348c9fdecaa81d0341e5. +// +// Solidity: event ChainIDRemovedFromWhitelist(uint256 chainID) +func (_CrossChainRegistry *CrossChainRegistryFilterer) FilterChainIDRemovedFromWhitelist(opts *bind.FilterOpts) (*CrossChainRegistryChainIDRemovedFromWhitelistIterator, error) { + + logs, sub, err := _CrossChainRegistry.contract.FilterLogs(opts, "ChainIDRemovedFromWhitelist") + if err != nil { + return nil, err + } + return &CrossChainRegistryChainIDRemovedFromWhitelistIterator{contract: _CrossChainRegistry.contract, event: "ChainIDRemovedFromWhitelist", logs: logs, sub: sub}, nil +} + +// WatchChainIDRemovedFromWhitelist is a free log subscription operation binding the contract event 0x6824d36084ecf2cd819b137cb5d837cc6e73afce1e0e348c9fdecaa81d0341e5. +// +// Solidity: event ChainIDRemovedFromWhitelist(uint256 chainID) +func (_CrossChainRegistry *CrossChainRegistryFilterer) WatchChainIDRemovedFromWhitelist(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryChainIDRemovedFromWhitelist) (event.Subscription, error) { + + logs, sub, err := _CrossChainRegistry.contract.WatchLogs(opts, "ChainIDRemovedFromWhitelist") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryChainIDRemovedFromWhitelist) + if err := _CrossChainRegistry.contract.UnpackLog(event, "ChainIDRemovedFromWhitelist", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseChainIDRemovedFromWhitelist is a log parse operation binding the contract event 0x6824d36084ecf2cd819b137cb5d837cc6e73afce1e0e348c9fdecaa81d0341e5. +// +// Solidity: event ChainIDRemovedFromWhitelist(uint256 chainID) +func (_CrossChainRegistry *CrossChainRegistryFilterer) ParseChainIDRemovedFromWhitelist(log types.Log) (*CrossChainRegistryChainIDRemovedFromWhitelist, error) { + event := new(CrossChainRegistryChainIDRemovedFromWhitelist) + if err := _CrossChainRegistry.contract.UnpackLog(event, "ChainIDRemovedFromWhitelist", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CrossChainRegistryGenerationReservationCreatedIterator is returned from FilterGenerationReservationCreated and is used to iterate over the raw logs and unpacked data for GenerationReservationCreated events raised by the CrossChainRegistry contract. +type CrossChainRegistryGenerationReservationCreatedIterator struct { + Event *CrossChainRegistryGenerationReservationCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryGenerationReservationCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryGenerationReservationCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryGenerationReservationCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryGenerationReservationCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryGenerationReservationCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryGenerationReservationCreated represents a GenerationReservationCreated event raised by the CrossChainRegistry contract. +type CrossChainRegistryGenerationReservationCreated struct { + OperatorSet OperatorSet + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGenerationReservationCreated is a free log retrieval operation binding the contract event 0x4fb6efec7dd60036ce3a7af8d5c48425019daa0fb61eb471a966a7ac2c6fa6a6. +// +// Solidity: event GenerationReservationCreated((address,uint32) operatorSet) +func (_CrossChainRegistry *CrossChainRegistryFilterer) FilterGenerationReservationCreated(opts *bind.FilterOpts) (*CrossChainRegistryGenerationReservationCreatedIterator, error) { + + logs, sub, err := _CrossChainRegistry.contract.FilterLogs(opts, "GenerationReservationCreated") + if err != nil { + return nil, err + } + return &CrossChainRegistryGenerationReservationCreatedIterator{contract: _CrossChainRegistry.contract, event: "GenerationReservationCreated", logs: logs, sub: sub}, nil +} + +// WatchGenerationReservationCreated is a free log subscription operation binding the contract event 0x4fb6efec7dd60036ce3a7af8d5c48425019daa0fb61eb471a966a7ac2c6fa6a6. +// +// Solidity: event GenerationReservationCreated((address,uint32) operatorSet) +func (_CrossChainRegistry *CrossChainRegistryFilterer) WatchGenerationReservationCreated(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryGenerationReservationCreated) (event.Subscription, error) { + + logs, sub, err := _CrossChainRegistry.contract.WatchLogs(opts, "GenerationReservationCreated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryGenerationReservationCreated) + if err := _CrossChainRegistry.contract.UnpackLog(event, "GenerationReservationCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseGenerationReservationCreated is a log parse operation binding the contract event 0x4fb6efec7dd60036ce3a7af8d5c48425019daa0fb61eb471a966a7ac2c6fa6a6. +// +// Solidity: event GenerationReservationCreated((address,uint32) operatorSet) +func (_CrossChainRegistry *CrossChainRegistryFilterer) ParseGenerationReservationCreated(log types.Log) (*CrossChainRegistryGenerationReservationCreated, error) { + event := new(CrossChainRegistryGenerationReservationCreated) + if err := _CrossChainRegistry.contract.UnpackLog(event, "GenerationReservationCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CrossChainRegistryGenerationReservationRemovedIterator is returned from FilterGenerationReservationRemoved and is used to iterate over the raw logs and unpacked data for GenerationReservationRemoved events raised by the CrossChainRegistry contract. +type CrossChainRegistryGenerationReservationRemovedIterator struct { + Event *CrossChainRegistryGenerationReservationRemoved // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryGenerationReservationRemovedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryGenerationReservationRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryGenerationReservationRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryGenerationReservationRemovedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryGenerationReservationRemovedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryGenerationReservationRemoved represents a GenerationReservationRemoved event raised by the CrossChainRegistry contract. +type CrossChainRegistryGenerationReservationRemoved struct { + OperatorSet OperatorSet + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGenerationReservationRemoved is a free log retrieval operation binding the contract event 0x4ffdfdd59e9e1e3c301608788f78dd458e61cb8c045ca92b62a7b484c80824fb. +// +// Solidity: event GenerationReservationRemoved((address,uint32) operatorSet) +func (_CrossChainRegistry *CrossChainRegistryFilterer) FilterGenerationReservationRemoved(opts *bind.FilterOpts) (*CrossChainRegistryGenerationReservationRemovedIterator, error) { + + logs, sub, err := _CrossChainRegistry.contract.FilterLogs(opts, "GenerationReservationRemoved") + if err != nil { + return nil, err + } + return &CrossChainRegistryGenerationReservationRemovedIterator{contract: _CrossChainRegistry.contract, event: "GenerationReservationRemoved", logs: logs, sub: sub}, nil +} + +// WatchGenerationReservationRemoved is a free log subscription operation binding the contract event 0x4ffdfdd59e9e1e3c301608788f78dd458e61cb8c045ca92b62a7b484c80824fb. +// +// Solidity: event GenerationReservationRemoved((address,uint32) operatorSet) +func (_CrossChainRegistry *CrossChainRegistryFilterer) WatchGenerationReservationRemoved(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryGenerationReservationRemoved) (event.Subscription, error) { + + logs, sub, err := _CrossChainRegistry.contract.WatchLogs(opts, "GenerationReservationRemoved") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryGenerationReservationRemoved) + if err := _CrossChainRegistry.contract.UnpackLog(event, "GenerationReservationRemoved", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseGenerationReservationRemoved is a log parse operation binding the contract event 0x4ffdfdd59e9e1e3c301608788f78dd458e61cb8c045ca92b62a7b484c80824fb. +// +// Solidity: event GenerationReservationRemoved((address,uint32) operatorSet) +func (_CrossChainRegistry *CrossChainRegistryFilterer) ParseGenerationReservationRemoved(log types.Log) (*CrossChainRegistryGenerationReservationRemoved, error) { + event := new(CrossChainRegistryGenerationReservationRemoved) + if err := _CrossChainRegistry.contract.UnpackLog(event, "GenerationReservationRemoved", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CrossChainRegistryInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the CrossChainRegistry contract. +type CrossChainRegistryInitializedIterator struct { + Event *CrossChainRegistryInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryInitialized represents a Initialized event raised by the CrossChainRegistry contract. +type CrossChainRegistryInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_CrossChainRegistry *CrossChainRegistryFilterer) FilterInitialized(opts *bind.FilterOpts) (*CrossChainRegistryInitializedIterator, error) { + + logs, sub, err := _CrossChainRegistry.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &CrossChainRegistryInitializedIterator{contract: _CrossChainRegistry.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_CrossChainRegistry *CrossChainRegistryFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryInitialized) (event.Subscription, error) { + + logs, sub, err := _CrossChainRegistry.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryInitialized) + if err := _CrossChainRegistry.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_CrossChainRegistry *CrossChainRegistryFilterer) ParseInitialized(log types.Log) (*CrossChainRegistryInitialized, error) { + event := new(CrossChainRegistryInitialized) + if err := _CrossChainRegistry.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CrossChainRegistryOperatorSetConfigSetIterator is returned from FilterOperatorSetConfigSet and is used to iterate over the raw logs and unpacked data for OperatorSetConfigSet events raised by the CrossChainRegistry contract. +type CrossChainRegistryOperatorSetConfigSetIterator struct { + Event *CrossChainRegistryOperatorSetConfigSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryOperatorSetConfigSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryOperatorSetConfigSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryOperatorSetConfigSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryOperatorSetConfigSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryOperatorSetConfigSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryOperatorSetConfigSet represents a OperatorSetConfigSet event raised by the CrossChainRegistry contract. +type CrossChainRegistryOperatorSetConfigSet struct { + OperatorSet OperatorSet + Config ICrossChainRegistryTypesOperatorSetConfig + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSetConfigSet is a free log retrieval operation binding the contract event 0x3147846ee526009000671c20380b856a633345691300f82585f90034715cf0e2. +// +// Solidity: event OperatorSetConfigSet((address,uint32) operatorSet, (address,uint32) config) +func (_CrossChainRegistry *CrossChainRegistryFilterer) FilterOperatorSetConfigSet(opts *bind.FilterOpts) (*CrossChainRegistryOperatorSetConfigSetIterator, error) { + + logs, sub, err := _CrossChainRegistry.contract.FilterLogs(opts, "OperatorSetConfigSet") + if err != nil { + return nil, err + } + return &CrossChainRegistryOperatorSetConfigSetIterator{contract: _CrossChainRegistry.contract, event: "OperatorSetConfigSet", logs: logs, sub: sub}, nil +} + +// WatchOperatorSetConfigSet is a free log subscription operation binding the contract event 0x3147846ee526009000671c20380b856a633345691300f82585f90034715cf0e2. +// +// Solidity: event OperatorSetConfigSet((address,uint32) operatorSet, (address,uint32) config) +func (_CrossChainRegistry *CrossChainRegistryFilterer) WatchOperatorSetConfigSet(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryOperatorSetConfigSet) (event.Subscription, error) { + + logs, sub, err := _CrossChainRegistry.contract.WatchLogs(opts, "OperatorSetConfigSet") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryOperatorSetConfigSet) + if err := _CrossChainRegistry.contract.UnpackLog(event, "OperatorSetConfigSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorSetConfigSet is a log parse operation binding the contract event 0x3147846ee526009000671c20380b856a633345691300f82585f90034715cf0e2. +// +// Solidity: event OperatorSetConfigSet((address,uint32) operatorSet, (address,uint32) config) +func (_CrossChainRegistry *CrossChainRegistryFilterer) ParseOperatorSetConfigSet(log types.Log) (*CrossChainRegistryOperatorSetConfigSet, error) { + event := new(CrossChainRegistryOperatorSetConfigSet) + if err := _CrossChainRegistry.contract.UnpackLog(event, "OperatorSetConfigSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CrossChainRegistryOperatorTableCalculatorSetIterator is returned from FilterOperatorTableCalculatorSet and is used to iterate over the raw logs and unpacked data for OperatorTableCalculatorSet events raised by the CrossChainRegistry contract. +type CrossChainRegistryOperatorTableCalculatorSetIterator struct { + Event *CrossChainRegistryOperatorTableCalculatorSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryOperatorTableCalculatorSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryOperatorTableCalculatorSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryOperatorTableCalculatorSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryOperatorTableCalculatorSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryOperatorTableCalculatorSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryOperatorTableCalculatorSet represents a OperatorTableCalculatorSet event raised by the CrossChainRegistry contract. +type CrossChainRegistryOperatorTableCalculatorSet struct { + OperatorSet OperatorSet + OperatorTableCalculator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorTableCalculatorSet is a free log retrieval operation binding the contract event 0x7f7ccafd92d20fdb39dee184a0dce002a9da420ed0def461f2a027abc9b3f6df. +// +// Solidity: event OperatorTableCalculatorSet((address,uint32) operatorSet, address operatorTableCalculator) +func (_CrossChainRegistry *CrossChainRegistryFilterer) FilterOperatorTableCalculatorSet(opts *bind.FilterOpts) (*CrossChainRegistryOperatorTableCalculatorSetIterator, error) { + + logs, sub, err := _CrossChainRegistry.contract.FilterLogs(opts, "OperatorTableCalculatorSet") + if err != nil { + return nil, err + } + return &CrossChainRegistryOperatorTableCalculatorSetIterator{contract: _CrossChainRegistry.contract, event: "OperatorTableCalculatorSet", logs: logs, sub: sub}, nil +} + +// WatchOperatorTableCalculatorSet is a free log subscription operation binding the contract event 0x7f7ccafd92d20fdb39dee184a0dce002a9da420ed0def461f2a027abc9b3f6df. +// +// Solidity: event OperatorTableCalculatorSet((address,uint32) operatorSet, address operatorTableCalculator) +func (_CrossChainRegistry *CrossChainRegistryFilterer) WatchOperatorTableCalculatorSet(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryOperatorTableCalculatorSet) (event.Subscription, error) { + + logs, sub, err := _CrossChainRegistry.contract.WatchLogs(opts, "OperatorTableCalculatorSet") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryOperatorTableCalculatorSet) + if err := _CrossChainRegistry.contract.UnpackLog(event, "OperatorTableCalculatorSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorTableCalculatorSet is a log parse operation binding the contract event 0x7f7ccafd92d20fdb39dee184a0dce002a9da420ed0def461f2a027abc9b3f6df. +// +// Solidity: event OperatorTableCalculatorSet((address,uint32) operatorSet, address operatorTableCalculator) +func (_CrossChainRegistry *CrossChainRegistryFilterer) ParseOperatorTableCalculatorSet(log types.Log) (*CrossChainRegistryOperatorTableCalculatorSet, error) { + event := new(CrossChainRegistryOperatorTableCalculatorSet) + if err := _CrossChainRegistry.contract.UnpackLog(event, "OperatorTableCalculatorSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CrossChainRegistryOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the CrossChainRegistry contract. +type CrossChainRegistryOwnershipTransferredIterator struct { + Event *CrossChainRegistryOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryOwnershipTransferred represents a OwnershipTransferred event raised by the CrossChainRegistry contract. +type CrossChainRegistryOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_CrossChainRegistry *CrossChainRegistryFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*CrossChainRegistryOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _CrossChainRegistry.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &CrossChainRegistryOwnershipTransferredIterator{contract: _CrossChainRegistry.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_CrossChainRegistry *CrossChainRegistryFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _CrossChainRegistry.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryOwnershipTransferred) + if err := _CrossChainRegistry.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_CrossChainRegistry *CrossChainRegistryFilterer) ParseOwnershipTransferred(log types.Log) (*CrossChainRegistryOwnershipTransferred, error) { + event := new(CrossChainRegistryOwnershipTransferred) + if err := _CrossChainRegistry.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CrossChainRegistryPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the CrossChainRegistry contract. +type CrossChainRegistryPausedIterator struct { + Event *CrossChainRegistryPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryPaused represents a Paused event raised by the CrossChainRegistry contract. +type CrossChainRegistryPaused struct { + Account common.Address + NewPausedStatus *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d. +// +// Solidity: event Paused(address indexed account, uint256 newPausedStatus) +func (_CrossChainRegistry *CrossChainRegistryFilterer) FilterPaused(opts *bind.FilterOpts, account []common.Address) (*CrossChainRegistryPausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _CrossChainRegistry.contract.FilterLogs(opts, "Paused", accountRule) + if err != nil { + return nil, err + } + return &CrossChainRegistryPausedIterator{contract: _CrossChainRegistry.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d. +// +// Solidity: event Paused(address indexed account, uint256 newPausedStatus) +func (_CrossChainRegistry *CrossChainRegistryFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryPaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _CrossChainRegistry.contract.WatchLogs(opts, "Paused", accountRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryPaused) + if err := _CrossChainRegistry.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d. +// +// Solidity: event Paused(address indexed account, uint256 newPausedStatus) +func (_CrossChainRegistry *CrossChainRegistryFilterer) ParsePaused(log types.Log) (*CrossChainRegistryPaused, error) { + event := new(CrossChainRegistryPaused) + if err := _CrossChainRegistry.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CrossChainRegistryTransportDestinationAddedIterator is returned from FilterTransportDestinationAdded and is used to iterate over the raw logs and unpacked data for TransportDestinationAdded events raised by the CrossChainRegistry contract. +type CrossChainRegistryTransportDestinationAddedIterator struct { + Event *CrossChainRegistryTransportDestinationAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryTransportDestinationAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryTransportDestinationAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryTransportDestinationAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryTransportDestinationAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryTransportDestinationAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryTransportDestinationAdded represents a TransportDestinationAdded event raised by the CrossChainRegistry contract. +type CrossChainRegistryTransportDestinationAdded struct { + OperatorSet OperatorSet + ChainID *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransportDestinationAdded is a free log retrieval operation binding the contract event 0x8b3a5eb206599a7bd7dcffa354a014ae777667c6890b23d046ff6867cd968393. +// +// Solidity: event TransportDestinationAdded((address,uint32) operatorSet, uint256 chainID) +func (_CrossChainRegistry *CrossChainRegistryFilterer) FilterTransportDestinationAdded(opts *bind.FilterOpts) (*CrossChainRegistryTransportDestinationAddedIterator, error) { + + logs, sub, err := _CrossChainRegistry.contract.FilterLogs(opts, "TransportDestinationAdded") + if err != nil { + return nil, err + } + return &CrossChainRegistryTransportDestinationAddedIterator{contract: _CrossChainRegistry.contract, event: "TransportDestinationAdded", logs: logs, sub: sub}, nil +} + +// WatchTransportDestinationAdded is a free log subscription operation binding the contract event 0x8b3a5eb206599a7bd7dcffa354a014ae777667c6890b23d046ff6867cd968393. +// +// Solidity: event TransportDestinationAdded((address,uint32) operatorSet, uint256 chainID) +func (_CrossChainRegistry *CrossChainRegistryFilterer) WatchTransportDestinationAdded(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryTransportDestinationAdded) (event.Subscription, error) { + + logs, sub, err := _CrossChainRegistry.contract.WatchLogs(opts, "TransportDestinationAdded") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryTransportDestinationAdded) + if err := _CrossChainRegistry.contract.UnpackLog(event, "TransportDestinationAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransportDestinationAdded is a log parse operation binding the contract event 0x8b3a5eb206599a7bd7dcffa354a014ae777667c6890b23d046ff6867cd968393. +// +// Solidity: event TransportDestinationAdded((address,uint32) operatorSet, uint256 chainID) +func (_CrossChainRegistry *CrossChainRegistryFilterer) ParseTransportDestinationAdded(log types.Log) (*CrossChainRegistryTransportDestinationAdded, error) { + event := new(CrossChainRegistryTransportDestinationAdded) + if err := _CrossChainRegistry.contract.UnpackLog(event, "TransportDestinationAdded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CrossChainRegistryTransportDestinationRemovedIterator is returned from FilterTransportDestinationRemoved and is used to iterate over the raw logs and unpacked data for TransportDestinationRemoved events raised by the CrossChainRegistry contract. +type CrossChainRegistryTransportDestinationRemovedIterator struct { + Event *CrossChainRegistryTransportDestinationRemoved // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryTransportDestinationRemovedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryTransportDestinationRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryTransportDestinationRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryTransportDestinationRemovedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryTransportDestinationRemovedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryTransportDestinationRemoved represents a TransportDestinationRemoved event raised by the CrossChainRegistry contract. +type CrossChainRegistryTransportDestinationRemoved struct { + OperatorSet OperatorSet + ChainID *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransportDestinationRemoved is a free log retrieval operation binding the contract event 0x9fa5794dfaeae2ede46d5bdba347083580889221c3338813ca6c8d4b681ae8ee. +// +// Solidity: event TransportDestinationRemoved((address,uint32) operatorSet, uint256 chainID) +func (_CrossChainRegistry *CrossChainRegistryFilterer) FilterTransportDestinationRemoved(opts *bind.FilterOpts) (*CrossChainRegistryTransportDestinationRemovedIterator, error) { + + logs, sub, err := _CrossChainRegistry.contract.FilterLogs(opts, "TransportDestinationRemoved") + if err != nil { + return nil, err + } + return &CrossChainRegistryTransportDestinationRemovedIterator{contract: _CrossChainRegistry.contract, event: "TransportDestinationRemoved", logs: logs, sub: sub}, nil +} + +// WatchTransportDestinationRemoved is a free log subscription operation binding the contract event 0x9fa5794dfaeae2ede46d5bdba347083580889221c3338813ca6c8d4b681ae8ee. +// +// Solidity: event TransportDestinationRemoved((address,uint32) operatorSet, uint256 chainID) +func (_CrossChainRegistry *CrossChainRegistryFilterer) WatchTransportDestinationRemoved(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryTransportDestinationRemoved) (event.Subscription, error) { + + logs, sub, err := _CrossChainRegistry.contract.WatchLogs(opts, "TransportDestinationRemoved") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryTransportDestinationRemoved) + if err := _CrossChainRegistry.contract.UnpackLog(event, "TransportDestinationRemoved", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransportDestinationRemoved is a log parse operation binding the contract event 0x9fa5794dfaeae2ede46d5bdba347083580889221c3338813ca6c8d4b681ae8ee. +// +// Solidity: event TransportDestinationRemoved((address,uint32) operatorSet, uint256 chainID) +func (_CrossChainRegistry *CrossChainRegistryFilterer) ParseTransportDestinationRemoved(log types.Log) (*CrossChainRegistryTransportDestinationRemoved, error) { + event := new(CrossChainRegistryTransportDestinationRemoved) + if err := _CrossChainRegistry.contract.UnpackLog(event, "TransportDestinationRemoved", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CrossChainRegistryUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the CrossChainRegistry contract. +type CrossChainRegistryUnpausedIterator struct { + Event *CrossChainRegistryUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryUnpaused represents a Unpaused event raised by the CrossChainRegistry contract. +type CrossChainRegistryUnpaused struct { + Account common.Address + NewPausedStatus *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c. +// +// Solidity: event Unpaused(address indexed account, uint256 newPausedStatus) +func (_CrossChainRegistry *CrossChainRegistryFilterer) FilterUnpaused(opts *bind.FilterOpts, account []common.Address) (*CrossChainRegistryUnpausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _CrossChainRegistry.contract.FilterLogs(opts, "Unpaused", accountRule) + if err != nil { + return nil, err + } + return &CrossChainRegistryUnpausedIterator{contract: _CrossChainRegistry.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c. +// +// Solidity: event Unpaused(address indexed account, uint256 newPausedStatus) +func (_CrossChainRegistry *CrossChainRegistryFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryUnpaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _CrossChainRegistry.contract.WatchLogs(opts, "Unpaused", accountRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryUnpaused) + if err := _CrossChainRegistry.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c. +// +// Solidity: event Unpaused(address indexed account, uint256 newPausedStatus) +func (_CrossChainRegistry *CrossChainRegistryFilterer) ParseUnpaused(log types.Log) (*CrossChainRegistryUnpaused, error) { + event := new(CrossChainRegistryUnpaused) + if err := _CrossChainRegistry.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/CrossChainRegistryStorage/binding.go b/pkg/bindings/CrossChainRegistryStorage/binding.go new file mode 100644 index 0000000000..7ce1febc44 --- /dev/null +++ b/pkg/bindings/CrossChainRegistryStorage/binding.go @@ -0,0 +1,1719 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package CrossChainRegistryStorage + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ICrossChainRegistryTypesOperatorSetConfig is an auto generated low-level Go binding around an user-defined struct. +type ICrossChainRegistryTypesOperatorSetConfig struct { + Owner common.Address + MaxStalenessPeriod uint32 +} + +// OperatorSet is an auto generated low-level Go binding around an user-defined struct. +type OperatorSet struct { + Avs common.Address + Id uint32 +} + +// CrossChainRegistryStorageMetaData contains all meta data concerning the CrossChainRegistryStorage contract. +var CrossChainRegistryStorageMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"addChainIDsToWhitelist\",\"inputs\":[{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"operatorTableUpdaters\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addTransportDestinations\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorTableBytes\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createGenerationReservation\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorTableCalculator\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableCalculator\"},{\"name\":\"config\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getActiveGenerationReservations\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getActiveTransportReservations\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetConfig\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorTableCalculator\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableCalculator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSupportedChains\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransportDestinations\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"keyRegistrar\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIKeyRegistrar\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeChainIDsFromWhitelist\",\"inputs\":[{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeGenerationReservation\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeTransportDestinations\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorSetConfig\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"config\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorTableCalculator\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorTableCalculator\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableCalculator\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ChainIDAddedToWhitelist\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorTableUpdater\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChainIDRemovedFromWhitelist\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GenerationReservationCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GenerationReservationRemoved\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetConfigSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"config\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorTableCalculatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorTableCalculator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIOperatorTableCalculator\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransportDestinationAdded\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransportDestinationRemoved\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ChainIDAlreadyWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ChainIDNotWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EmptyChainIDsArray\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GenerationReservationAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GenerationReservationDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidChainId\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorTableCalculator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NeedToDelete\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RequireAtLeastOneTransportDestination\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StalenessPeriodZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TransportDestinationAlreadyAdded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TransportDestinationNotFound\",\"inputs\":[]}]", +} + +// CrossChainRegistryStorageABI is the input ABI used to generate the binding from. +// Deprecated: Use CrossChainRegistryStorageMetaData.ABI instead. +var CrossChainRegistryStorageABI = CrossChainRegistryStorageMetaData.ABI + +// CrossChainRegistryStorage is an auto generated Go binding around an Ethereum contract. +type CrossChainRegistryStorage struct { + CrossChainRegistryStorageCaller // Read-only binding to the contract + CrossChainRegistryStorageTransactor // Write-only binding to the contract + CrossChainRegistryStorageFilterer // Log filterer for contract events +} + +// CrossChainRegistryStorageCaller is an auto generated read-only Go binding around an Ethereum contract. +type CrossChainRegistryStorageCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CrossChainRegistryStorageTransactor is an auto generated write-only Go binding around an Ethereum contract. +type CrossChainRegistryStorageTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CrossChainRegistryStorageFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type CrossChainRegistryStorageFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CrossChainRegistryStorageSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type CrossChainRegistryStorageSession struct { + Contract *CrossChainRegistryStorage // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// CrossChainRegistryStorageCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type CrossChainRegistryStorageCallerSession struct { + Contract *CrossChainRegistryStorageCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// CrossChainRegistryStorageTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type CrossChainRegistryStorageTransactorSession struct { + Contract *CrossChainRegistryStorageTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// CrossChainRegistryStorageRaw is an auto generated low-level Go binding around an Ethereum contract. +type CrossChainRegistryStorageRaw struct { + Contract *CrossChainRegistryStorage // Generic contract binding to access the raw methods on +} + +// CrossChainRegistryStorageCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type CrossChainRegistryStorageCallerRaw struct { + Contract *CrossChainRegistryStorageCaller // Generic read-only contract binding to access the raw methods on +} + +// CrossChainRegistryStorageTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type CrossChainRegistryStorageTransactorRaw struct { + Contract *CrossChainRegistryStorageTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewCrossChainRegistryStorage creates a new instance of CrossChainRegistryStorage, bound to a specific deployed contract. +func NewCrossChainRegistryStorage(address common.Address, backend bind.ContractBackend) (*CrossChainRegistryStorage, error) { + contract, err := bindCrossChainRegistryStorage(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &CrossChainRegistryStorage{CrossChainRegistryStorageCaller: CrossChainRegistryStorageCaller{contract: contract}, CrossChainRegistryStorageTransactor: CrossChainRegistryStorageTransactor{contract: contract}, CrossChainRegistryStorageFilterer: CrossChainRegistryStorageFilterer{contract: contract}}, nil +} + +// NewCrossChainRegistryStorageCaller creates a new read-only instance of CrossChainRegistryStorage, bound to a specific deployed contract. +func NewCrossChainRegistryStorageCaller(address common.Address, caller bind.ContractCaller) (*CrossChainRegistryStorageCaller, error) { + contract, err := bindCrossChainRegistryStorage(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &CrossChainRegistryStorageCaller{contract: contract}, nil +} + +// NewCrossChainRegistryStorageTransactor creates a new write-only instance of CrossChainRegistryStorage, bound to a specific deployed contract. +func NewCrossChainRegistryStorageTransactor(address common.Address, transactor bind.ContractTransactor) (*CrossChainRegistryStorageTransactor, error) { + contract, err := bindCrossChainRegistryStorage(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &CrossChainRegistryStorageTransactor{contract: contract}, nil +} + +// NewCrossChainRegistryStorageFilterer creates a new log filterer instance of CrossChainRegistryStorage, bound to a specific deployed contract. +func NewCrossChainRegistryStorageFilterer(address common.Address, filterer bind.ContractFilterer) (*CrossChainRegistryStorageFilterer, error) { + contract, err := bindCrossChainRegistryStorage(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &CrossChainRegistryStorageFilterer{contract: contract}, nil +} + +// bindCrossChainRegistryStorage binds a generic wrapper to an already deployed contract. +func bindCrossChainRegistryStorage(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := CrossChainRegistryStorageMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_CrossChainRegistryStorage *CrossChainRegistryStorageRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _CrossChainRegistryStorage.Contract.CrossChainRegistryStorageCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_CrossChainRegistryStorage *CrossChainRegistryStorageRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.CrossChainRegistryStorageTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_CrossChainRegistryStorage *CrossChainRegistryStorageRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.CrossChainRegistryStorageTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_CrossChainRegistryStorage *CrossChainRegistryStorageCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _CrossChainRegistryStorage.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_CrossChainRegistryStorage *CrossChainRegistryStorageTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_CrossChainRegistryStorage *CrossChainRegistryStorageTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.contract.Transact(opts, method, params...) +} + +// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. +// +// Solidity: function allocationManager() view returns(address) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageCaller) AllocationManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _CrossChainRegistryStorage.contract.Call(opts, &out, "allocationManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. +// +// Solidity: function allocationManager() view returns(address) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageSession) AllocationManager() (common.Address, error) { + return _CrossChainRegistryStorage.Contract.AllocationManager(&_CrossChainRegistryStorage.CallOpts) +} + +// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. +// +// Solidity: function allocationManager() view returns(address) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageCallerSession) AllocationManager() (common.Address, error) { + return _CrossChainRegistryStorage.Contract.AllocationManager(&_CrossChainRegistryStorage.CallOpts) +} + +// CalculateOperatorTableBytes is a free data retrieval call binding the contract method 0x41ee6d0e. +// +// Solidity: function calculateOperatorTableBytes((address,uint32) operatorSet) view returns(bytes) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageCaller) CalculateOperatorTableBytes(opts *bind.CallOpts, operatorSet OperatorSet) ([]byte, error) { + var out []interface{} + err := _CrossChainRegistryStorage.contract.Call(opts, &out, "calculateOperatorTableBytes", operatorSet) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// CalculateOperatorTableBytes is a free data retrieval call binding the contract method 0x41ee6d0e. +// +// Solidity: function calculateOperatorTableBytes((address,uint32) operatorSet) view returns(bytes) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageSession) CalculateOperatorTableBytes(operatorSet OperatorSet) ([]byte, error) { + return _CrossChainRegistryStorage.Contract.CalculateOperatorTableBytes(&_CrossChainRegistryStorage.CallOpts, operatorSet) +} + +// CalculateOperatorTableBytes is a free data retrieval call binding the contract method 0x41ee6d0e. +// +// Solidity: function calculateOperatorTableBytes((address,uint32) operatorSet) view returns(bytes) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageCallerSession) CalculateOperatorTableBytes(operatorSet OperatorSet) ([]byte, error) { + return _CrossChainRegistryStorage.Contract.CalculateOperatorTableBytes(&_CrossChainRegistryStorage.CallOpts, operatorSet) +} + +// GetActiveGenerationReservations is a free data retrieval call binding the contract method 0xd09b978b. +// +// Solidity: function getActiveGenerationReservations() view returns((address,uint32)[]) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageCaller) GetActiveGenerationReservations(opts *bind.CallOpts) ([]OperatorSet, error) { + var out []interface{} + err := _CrossChainRegistryStorage.contract.Call(opts, &out, "getActiveGenerationReservations") + + if err != nil { + return *new([]OperatorSet), err + } + + out0 := *abi.ConvertType(out[0], new([]OperatorSet)).(*[]OperatorSet) + + return out0, err + +} + +// GetActiveGenerationReservations is a free data retrieval call binding the contract method 0xd09b978b. +// +// Solidity: function getActiveGenerationReservations() view returns((address,uint32)[]) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageSession) GetActiveGenerationReservations() ([]OperatorSet, error) { + return _CrossChainRegistryStorage.Contract.GetActiveGenerationReservations(&_CrossChainRegistryStorage.CallOpts) +} + +// GetActiveGenerationReservations is a free data retrieval call binding the contract method 0xd09b978b. +// +// Solidity: function getActiveGenerationReservations() view returns((address,uint32)[]) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageCallerSession) GetActiveGenerationReservations() ([]OperatorSet, error) { + return _CrossChainRegistryStorage.Contract.GetActiveGenerationReservations(&_CrossChainRegistryStorage.CallOpts) +} + +// GetActiveTransportReservations is a free data retrieval call binding the contract method 0xbfda3b3d. +// +// Solidity: function getActiveTransportReservations() view returns((address,uint32)[], uint256[][]) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageCaller) GetActiveTransportReservations(opts *bind.CallOpts) ([]OperatorSet, [][]*big.Int, error) { + var out []interface{} + err := _CrossChainRegistryStorage.contract.Call(opts, &out, "getActiveTransportReservations") + + if err != nil { + return *new([]OperatorSet), *new([][]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]OperatorSet)).(*[]OperatorSet) + out1 := *abi.ConvertType(out[1], new([][]*big.Int)).(*[][]*big.Int) + + return out0, out1, err + +} + +// GetActiveTransportReservations is a free data retrieval call binding the contract method 0xbfda3b3d. +// +// Solidity: function getActiveTransportReservations() view returns((address,uint32)[], uint256[][]) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageSession) GetActiveTransportReservations() ([]OperatorSet, [][]*big.Int, error) { + return _CrossChainRegistryStorage.Contract.GetActiveTransportReservations(&_CrossChainRegistryStorage.CallOpts) +} + +// GetActiveTransportReservations is a free data retrieval call binding the contract method 0xbfda3b3d. +// +// Solidity: function getActiveTransportReservations() view returns((address,uint32)[], uint256[][]) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageCallerSession) GetActiveTransportReservations() ([]OperatorSet, [][]*big.Int, error) { + return _CrossChainRegistryStorage.Contract.GetActiveTransportReservations(&_CrossChainRegistryStorage.CallOpts) +} + +// GetOperatorSetConfig is a free data retrieval call binding the contract method 0x21fa7fdc. +// +// Solidity: function getOperatorSetConfig((address,uint32) operatorSet) view returns((address,uint32)) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageCaller) GetOperatorSetConfig(opts *bind.CallOpts, operatorSet OperatorSet) (ICrossChainRegistryTypesOperatorSetConfig, error) { + var out []interface{} + err := _CrossChainRegistryStorage.contract.Call(opts, &out, "getOperatorSetConfig", operatorSet) + + if err != nil { + return *new(ICrossChainRegistryTypesOperatorSetConfig), err + } + + out0 := *abi.ConvertType(out[0], new(ICrossChainRegistryTypesOperatorSetConfig)).(*ICrossChainRegistryTypesOperatorSetConfig) + + return out0, err + +} + +// GetOperatorSetConfig is a free data retrieval call binding the contract method 0x21fa7fdc. +// +// Solidity: function getOperatorSetConfig((address,uint32) operatorSet) view returns((address,uint32)) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageSession) GetOperatorSetConfig(operatorSet OperatorSet) (ICrossChainRegistryTypesOperatorSetConfig, error) { + return _CrossChainRegistryStorage.Contract.GetOperatorSetConfig(&_CrossChainRegistryStorage.CallOpts, operatorSet) +} + +// GetOperatorSetConfig is a free data retrieval call binding the contract method 0x21fa7fdc. +// +// Solidity: function getOperatorSetConfig((address,uint32) operatorSet) view returns((address,uint32)) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageCallerSession) GetOperatorSetConfig(operatorSet OperatorSet) (ICrossChainRegistryTypesOperatorSetConfig, error) { + return _CrossChainRegistryStorage.Contract.GetOperatorSetConfig(&_CrossChainRegistryStorage.CallOpts, operatorSet) +} + +// GetOperatorTableCalculator is a free data retrieval call binding the contract method 0x75e4b539. +// +// Solidity: function getOperatorTableCalculator((address,uint32) operatorSet) view returns(address) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageCaller) GetOperatorTableCalculator(opts *bind.CallOpts, operatorSet OperatorSet) (common.Address, error) { + var out []interface{} + err := _CrossChainRegistryStorage.contract.Call(opts, &out, "getOperatorTableCalculator", operatorSet) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetOperatorTableCalculator is a free data retrieval call binding the contract method 0x75e4b539. +// +// Solidity: function getOperatorTableCalculator((address,uint32) operatorSet) view returns(address) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageSession) GetOperatorTableCalculator(operatorSet OperatorSet) (common.Address, error) { + return _CrossChainRegistryStorage.Contract.GetOperatorTableCalculator(&_CrossChainRegistryStorage.CallOpts, operatorSet) +} + +// GetOperatorTableCalculator is a free data retrieval call binding the contract method 0x75e4b539. +// +// Solidity: function getOperatorTableCalculator((address,uint32) operatorSet) view returns(address) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageCallerSession) GetOperatorTableCalculator(operatorSet OperatorSet) (common.Address, error) { + return _CrossChainRegistryStorage.Contract.GetOperatorTableCalculator(&_CrossChainRegistryStorage.CallOpts, operatorSet) +} + +// GetSupportedChains is a free data retrieval call binding the contract method 0xc4bffe2b. +// +// Solidity: function getSupportedChains() view returns(uint256[], address[]) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageCaller) GetSupportedChains(opts *bind.CallOpts) ([]*big.Int, []common.Address, error) { + var out []interface{} + err := _CrossChainRegistryStorage.contract.Call(opts, &out, "getSupportedChains") + + if err != nil { + return *new([]*big.Int), *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + out1 := *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) + + return out0, out1, err + +} + +// GetSupportedChains is a free data retrieval call binding the contract method 0xc4bffe2b. +// +// Solidity: function getSupportedChains() view returns(uint256[], address[]) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageSession) GetSupportedChains() ([]*big.Int, []common.Address, error) { + return _CrossChainRegistryStorage.Contract.GetSupportedChains(&_CrossChainRegistryStorage.CallOpts) +} + +// GetSupportedChains is a free data retrieval call binding the contract method 0xc4bffe2b. +// +// Solidity: function getSupportedChains() view returns(uint256[], address[]) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageCallerSession) GetSupportedChains() ([]*big.Int, []common.Address, error) { + return _CrossChainRegistryStorage.Contract.GetSupportedChains(&_CrossChainRegistryStorage.CallOpts) +} + +// GetTransportDestinations is a free data retrieval call binding the contract method 0x3c75fddf. +// +// Solidity: function getTransportDestinations((address,uint32) operatorSet) view returns(uint256[]) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageCaller) GetTransportDestinations(opts *bind.CallOpts, operatorSet OperatorSet) ([]*big.Int, error) { + var out []interface{} + err := _CrossChainRegistryStorage.contract.Call(opts, &out, "getTransportDestinations", operatorSet) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// GetTransportDestinations is a free data retrieval call binding the contract method 0x3c75fddf. +// +// Solidity: function getTransportDestinations((address,uint32) operatorSet) view returns(uint256[]) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageSession) GetTransportDestinations(operatorSet OperatorSet) ([]*big.Int, error) { + return _CrossChainRegistryStorage.Contract.GetTransportDestinations(&_CrossChainRegistryStorage.CallOpts, operatorSet) +} + +// GetTransportDestinations is a free data retrieval call binding the contract method 0x3c75fddf. +// +// Solidity: function getTransportDestinations((address,uint32) operatorSet) view returns(uint256[]) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageCallerSession) GetTransportDestinations(operatorSet OperatorSet) ([]*big.Int, error) { + return _CrossChainRegistryStorage.Contract.GetTransportDestinations(&_CrossChainRegistryStorage.CallOpts, operatorSet) +} + +// KeyRegistrar is a free data retrieval call binding the contract method 0x3ec45c7e. +// +// Solidity: function keyRegistrar() view returns(address) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageCaller) KeyRegistrar(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _CrossChainRegistryStorage.contract.Call(opts, &out, "keyRegistrar") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// KeyRegistrar is a free data retrieval call binding the contract method 0x3ec45c7e. +// +// Solidity: function keyRegistrar() view returns(address) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageSession) KeyRegistrar() (common.Address, error) { + return _CrossChainRegistryStorage.Contract.KeyRegistrar(&_CrossChainRegistryStorage.CallOpts) +} + +// KeyRegistrar is a free data retrieval call binding the contract method 0x3ec45c7e. +// +// Solidity: function keyRegistrar() view returns(address) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageCallerSession) KeyRegistrar() (common.Address, error) { + return _CrossChainRegistryStorage.Contract.KeyRegistrar(&_CrossChainRegistryStorage.CallOpts) +} + +// AddChainIDsToWhitelist is a paid mutator transaction binding the contract method 0x04e98be3. +// +// Solidity: function addChainIDsToWhitelist(uint256[] chainIDs, address[] operatorTableUpdaters) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageTransactor) AddChainIDsToWhitelist(opts *bind.TransactOpts, chainIDs []*big.Int, operatorTableUpdaters []common.Address) (*types.Transaction, error) { + return _CrossChainRegistryStorage.contract.Transact(opts, "addChainIDsToWhitelist", chainIDs, operatorTableUpdaters) +} + +// AddChainIDsToWhitelist is a paid mutator transaction binding the contract method 0x04e98be3. +// +// Solidity: function addChainIDsToWhitelist(uint256[] chainIDs, address[] operatorTableUpdaters) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageSession) AddChainIDsToWhitelist(chainIDs []*big.Int, operatorTableUpdaters []common.Address) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.AddChainIDsToWhitelist(&_CrossChainRegistryStorage.TransactOpts, chainIDs, operatorTableUpdaters) +} + +// AddChainIDsToWhitelist is a paid mutator transaction binding the contract method 0x04e98be3. +// +// Solidity: function addChainIDsToWhitelist(uint256[] chainIDs, address[] operatorTableUpdaters) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageTransactorSession) AddChainIDsToWhitelist(chainIDs []*big.Int, operatorTableUpdaters []common.Address) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.AddChainIDsToWhitelist(&_CrossChainRegistryStorage.TransactOpts, chainIDs, operatorTableUpdaters) +} + +// AddTransportDestinations is a paid mutator transaction binding the contract method 0x49be7d6f. +// +// Solidity: function addTransportDestinations((address,uint32) operatorSet, uint256[] chainIDs) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageTransactor) AddTransportDestinations(opts *bind.TransactOpts, operatorSet OperatorSet, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistryStorage.contract.Transact(opts, "addTransportDestinations", operatorSet, chainIDs) +} + +// AddTransportDestinations is a paid mutator transaction binding the contract method 0x49be7d6f. +// +// Solidity: function addTransportDestinations((address,uint32) operatorSet, uint256[] chainIDs) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageSession) AddTransportDestinations(operatorSet OperatorSet, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.AddTransportDestinations(&_CrossChainRegistryStorage.TransactOpts, operatorSet, chainIDs) +} + +// AddTransportDestinations is a paid mutator transaction binding the contract method 0x49be7d6f. +// +// Solidity: function addTransportDestinations((address,uint32) operatorSet, uint256[] chainIDs) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageTransactorSession) AddTransportDestinations(operatorSet OperatorSet, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.AddTransportDestinations(&_CrossChainRegistryStorage.TransactOpts, operatorSet, chainIDs) +} + +// CreateGenerationReservation is a paid mutator transaction binding the contract method 0xfe596dee. +// +// Solidity: function createGenerationReservation((address,uint32) operatorSet, address operatorTableCalculator, (address,uint32) config, uint256[] chainIDs) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageTransactor) CreateGenerationReservation(opts *bind.TransactOpts, operatorSet OperatorSet, operatorTableCalculator common.Address, config ICrossChainRegistryTypesOperatorSetConfig, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistryStorage.contract.Transact(opts, "createGenerationReservation", operatorSet, operatorTableCalculator, config, chainIDs) +} + +// CreateGenerationReservation is a paid mutator transaction binding the contract method 0xfe596dee. +// +// Solidity: function createGenerationReservation((address,uint32) operatorSet, address operatorTableCalculator, (address,uint32) config, uint256[] chainIDs) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageSession) CreateGenerationReservation(operatorSet OperatorSet, operatorTableCalculator common.Address, config ICrossChainRegistryTypesOperatorSetConfig, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.CreateGenerationReservation(&_CrossChainRegistryStorage.TransactOpts, operatorSet, operatorTableCalculator, config, chainIDs) +} + +// CreateGenerationReservation is a paid mutator transaction binding the contract method 0xfe596dee. +// +// Solidity: function createGenerationReservation((address,uint32) operatorSet, address operatorTableCalculator, (address,uint32) config, uint256[] chainIDs) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageTransactorSession) CreateGenerationReservation(operatorSet OperatorSet, operatorTableCalculator common.Address, config ICrossChainRegistryTypesOperatorSetConfig, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.CreateGenerationReservation(&_CrossChainRegistryStorage.TransactOpts, operatorSet, operatorTableCalculator, config, chainIDs) +} + +// RemoveChainIDsFromWhitelist is a paid mutator transaction binding the contract method 0xdfbd9dfd. +// +// Solidity: function removeChainIDsFromWhitelist(uint256[] chainIDs) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageTransactor) RemoveChainIDsFromWhitelist(opts *bind.TransactOpts, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistryStorage.contract.Transact(opts, "removeChainIDsFromWhitelist", chainIDs) +} + +// RemoveChainIDsFromWhitelist is a paid mutator transaction binding the contract method 0xdfbd9dfd. +// +// Solidity: function removeChainIDsFromWhitelist(uint256[] chainIDs) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageSession) RemoveChainIDsFromWhitelist(chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.RemoveChainIDsFromWhitelist(&_CrossChainRegistryStorage.TransactOpts, chainIDs) +} + +// RemoveChainIDsFromWhitelist is a paid mutator transaction binding the contract method 0xdfbd9dfd. +// +// Solidity: function removeChainIDsFromWhitelist(uint256[] chainIDs) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageTransactorSession) RemoveChainIDsFromWhitelist(chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.RemoveChainIDsFromWhitelist(&_CrossChainRegistryStorage.TransactOpts, chainIDs) +} + +// RemoveGenerationReservation is a paid mutator transaction binding the contract method 0x6c55a37f. +// +// Solidity: function removeGenerationReservation((address,uint32) operatorSet) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageTransactor) RemoveGenerationReservation(opts *bind.TransactOpts, operatorSet OperatorSet) (*types.Transaction, error) { + return _CrossChainRegistryStorage.contract.Transact(opts, "removeGenerationReservation", operatorSet) +} + +// RemoveGenerationReservation is a paid mutator transaction binding the contract method 0x6c55a37f. +// +// Solidity: function removeGenerationReservation((address,uint32) operatorSet) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageSession) RemoveGenerationReservation(operatorSet OperatorSet) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.RemoveGenerationReservation(&_CrossChainRegistryStorage.TransactOpts, operatorSet) +} + +// RemoveGenerationReservation is a paid mutator transaction binding the contract method 0x6c55a37f. +// +// Solidity: function removeGenerationReservation((address,uint32) operatorSet) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageTransactorSession) RemoveGenerationReservation(operatorSet OperatorSet) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.RemoveGenerationReservation(&_CrossChainRegistryStorage.TransactOpts, operatorSet) +} + +// RemoveTransportDestinations is a paid mutator transaction binding the contract method 0xf3e9f5d4. +// +// Solidity: function removeTransportDestinations((address,uint32) operatorSet, uint256[] chainIDs) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageTransactor) RemoveTransportDestinations(opts *bind.TransactOpts, operatorSet OperatorSet, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistryStorage.contract.Transact(opts, "removeTransportDestinations", operatorSet, chainIDs) +} + +// RemoveTransportDestinations is a paid mutator transaction binding the contract method 0xf3e9f5d4. +// +// Solidity: function removeTransportDestinations((address,uint32) operatorSet, uint256[] chainIDs) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageSession) RemoveTransportDestinations(operatorSet OperatorSet, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.RemoveTransportDestinations(&_CrossChainRegistryStorage.TransactOpts, operatorSet, chainIDs) +} + +// RemoveTransportDestinations is a paid mutator transaction binding the contract method 0xf3e9f5d4. +// +// Solidity: function removeTransportDestinations((address,uint32) operatorSet, uint256[] chainIDs) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageTransactorSession) RemoveTransportDestinations(operatorSet OperatorSet, chainIDs []*big.Int) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.RemoveTransportDestinations(&_CrossChainRegistryStorage.TransactOpts, operatorSet, chainIDs) +} + +// SetOperatorSetConfig is a paid mutator transaction binding the contract method 0x277e1e62. +// +// Solidity: function setOperatorSetConfig((address,uint32) operatorSet, (address,uint32) config) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageTransactor) SetOperatorSetConfig(opts *bind.TransactOpts, operatorSet OperatorSet, config ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _CrossChainRegistryStorage.contract.Transact(opts, "setOperatorSetConfig", operatorSet, config) +} + +// SetOperatorSetConfig is a paid mutator transaction binding the contract method 0x277e1e62. +// +// Solidity: function setOperatorSetConfig((address,uint32) operatorSet, (address,uint32) config) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageSession) SetOperatorSetConfig(operatorSet OperatorSet, config ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.SetOperatorSetConfig(&_CrossChainRegistryStorage.TransactOpts, operatorSet, config) +} + +// SetOperatorSetConfig is a paid mutator transaction binding the contract method 0x277e1e62. +// +// Solidity: function setOperatorSetConfig((address,uint32) operatorSet, (address,uint32) config) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageTransactorSession) SetOperatorSetConfig(operatorSet OperatorSet, config ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.SetOperatorSetConfig(&_CrossChainRegistryStorage.TransactOpts, operatorSet, config) +} + +// SetOperatorTableCalculator is a paid mutator transaction binding the contract method 0x1ca9142a. +// +// Solidity: function setOperatorTableCalculator((address,uint32) operatorSet, address operatorTableCalculator) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageTransactor) SetOperatorTableCalculator(opts *bind.TransactOpts, operatorSet OperatorSet, operatorTableCalculator common.Address) (*types.Transaction, error) { + return _CrossChainRegistryStorage.contract.Transact(opts, "setOperatorTableCalculator", operatorSet, operatorTableCalculator) +} + +// SetOperatorTableCalculator is a paid mutator transaction binding the contract method 0x1ca9142a. +// +// Solidity: function setOperatorTableCalculator((address,uint32) operatorSet, address operatorTableCalculator) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageSession) SetOperatorTableCalculator(operatorSet OperatorSet, operatorTableCalculator common.Address) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.SetOperatorTableCalculator(&_CrossChainRegistryStorage.TransactOpts, operatorSet, operatorTableCalculator) +} + +// SetOperatorTableCalculator is a paid mutator transaction binding the contract method 0x1ca9142a. +// +// Solidity: function setOperatorTableCalculator((address,uint32) operatorSet, address operatorTableCalculator) returns() +func (_CrossChainRegistryStorage *CrossChainRegistryStorageTransactorSession) SetOperatorTableCalculator(operatorSet OperatorSet, operatorTableCalculator common.Address) (*types.Transaction, error) { + return _CrossChainRegistryStorage.Contract.SetOperatorTableCalculator(&_CrossChainRegistryStorage.TransactOpts, operatorSet, operatorTableCalculator) +} + +// CrossChainRegistryStorageChainIDAddedToWhitelistIterator is returned from FilterChainIDAddedToWhitelist and is used to iterate over the raw logs and unpacked data for ChainIDAddedToWhitelist events raised by the CrossChainRegistryStorage contract. +type CrossChainRegistryStorageChainIDAddedToWhitelistIterator struct { + Event *CrossChainRegistryStorageChainIDAddedToWhitelist // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryStorageChainIDAddedToWhitelistIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryStorageChainIDAddedToWhitelist) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryStorageChainIDAddedToWhitelist) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryStorageChainIDAddedToWhitelistIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryStorageChainIDAddedToWhitelistIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryStorageChainIDAddedToWhitelist represents a ChainIDAddedToWhitelist event raised by the CrossChainRegistryStorage contract. +type CrossChainRegistryStorageChainIDAddedToWhitelist struct { + ChainID *big.Int + OperatorTableUpdater common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterChainIDAddedToWhitelist is a free log retrieval operation binding the contract event 0x7a0a76d85b582b17996dd7371a407aa7a79b870db8539247fba315c7b6beff62. +// +// Solidity: event ChainIDAddedToWhitelist(uint256 chainID, address operatorTableUpdater) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) FilterChainIDAddedToWhitelist(opts *bind.FilterOpts) (*CrossChainRegistryStorageChainIDAddedToWhitelistIterator, error) { + + logs, sub, err := _CrossChainRegistryStorage.contract.FilterLogs(opts, "ChainIDAddedToWhitelist") + if err != nil { + return nil, err + } + return &CrossChainRegistryStorageChainIDAddedToWhitelistIterator{contract: _CrossChainRegistryStorage.contract, event: "ChainIDAddedToWhitelist", logs: logs, sub: sub}, nil +} + +// WatchChainIDAddedToWhitelist is a free log subscription operation binding the contract event 0x7a0a76d85b582b17996dd7371a407aa7a79b870db8539247fba315c7b6beff62. +// +// Solidity: event ChainIDAddedToWhitelist(uint256 chainID, address operatorTableUpdater) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) WatchChainIDAddedToWhitelist(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryStorageChainIDAddedToWhitelist) (event.Subscription, error) { + + logs, sub, err := _CrossChainRegistryStorage.contract.WatchLogs(opts, "ChainIDAddedToWhitelist") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryStorageChainIDAddedToWhitelist) + if err := _CrossChainRegistryStorage.contract.UnpackLog(event, "ChainIDAddedToWhitelist", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseChainIDAddedToWhitelist is a log parse operation binding the contract event 0x7a0a76d85b582b17996dd7371a407aa7a79b870db8539247fba315c7b6beff62. +// +// Solidity: event ChainIDAddedToWhitelist(uint256 chainID, address operatorTableUpdater) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) ParseChainIDAddedToWhitelist(log types.Log) (*CrossChainRegistryStorageChainIDAddedToWhitelist, error) { + event := new(CrossChainRegistryStorageChainIDAddedToWhitelist) + if err := _CrossChainRegistryStorage.contract.UnpackLog(event, "ChainIDAddedToWhitelist", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CrossChainRegistryStorageChainIDRemovedFromWhitelistIterator is returned from FilterChainIDRemovedFromWhitelist and is used to iterate over the raw logs and unpacked data for ChainIDRemovedFromWhitelist events raised by the CrossChainRegistryStorage contract. +type CrossChainRegistryStorageChainIDRemovedFromWhitelistIterator struct { + Event *CrossChainRegistryStorageChainIDRemovedFromWhitelist // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryStorageChainIDRemovedFromWhitelistIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryStorageChainIDRemovedFromWhitelist) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryStorageChainIDRemovedFromWhitelist) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryStorageChainIDRemovedFromWhitelistIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryStorageChainIDRemovedFromWhitelistIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryStorageChainIDRemovedFromWhitelist represents a ChainIDRemovedFromWhitelist event raised by the CrossChainRegistryStorage contract. +type CrossChainRegistryStorageChainIDRemovedFromWhitelist struct { + ChainID *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterChainIDRemovedFromWhitelist is a free log retrieval operation binding the contract event 0x6824d36084ecf2cd819b137cb5d837cc6e73afce1e0e348c9fdecaa81d0341e5. +// +// Solidity: event ChainIDRemovedFromWhitelist(uint256 chainID) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) FilterChainIDRemovedFromWhitelist(opts *bind.FilterOpts) (*CrossChainRegistryStorageChainIDRemovedFromWhitelistIterator, error) { + + logs, sub, err := _CrossChainRegistryStorage.contract.FilterLogs(opts, "ChainIDRemovedFromWhitelist") + if err != nil { + return nil, err + } + return &CrossChainRegistryStorageChainIDRemovedFromWhitelistIterator{contract: _CrossChainRegistryStorage.contract, event: "ChainIDRemovedFromWhitelist", logs: logs, sub: sub}, nil +} + +// WatchChainIDRemovedFromWhitelist is a free log subscription operation binding the contract event 0x6824d36084ecf2cd819b137cb5d837cc6e73afce1e0e348c9fdecaa81d0341e5. +// +// Solidity: event ChainIDRemovedFromWhitelist(uint256 chainID) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) WatchChainIDRemovedFromWhitelist(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryStorageChainIDRemovedFromWhitelist) (event.Subscription, error) { + + logs, sub, err := _CrossChainRegistryStorage.contract.WatchLogs(opts, "ChainIDRemovedFromWhitelist") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryStorageChainIDRemovedFromWhitelist) + if err := _CrossChainRegistryStorage.contract.UnpackLog(event, "ChainIDRemovedFromWhitelist", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseChainIDRemovedFromWhitelist is a log parse operation binding the contract event 0x6824d36084ecf2cd819b137cb5d837cc6e73afce1e0e348c9fdecaa81d0341e5. +// +// Solidity: event ChainIDRemovedFromWhitelist(uint256 chainID) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) ParseChainIDRemovedFromWhitelist(log types.Log) (*CrossChainRegistryStorageChainIDRemovedFromWhitelist, error) { + event := new(CrossChainRegistryStorageChainIDRemovedFromWhitelist) + if err := _CrossChainRegistryStorage.contract.UnpackLog(event, "ChainIDRemovedFromWhitelist", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CrossChainRegistryStorageGenerationReservationCreatedIterator is returned from FilterGenerationReservationCreated and is used to iterate over the raw logs and unpacked data for GenerationReservationCreated events raised by the CrossChainRegistryStorage contract. +type CrossChainRegistryStorageGenerationReservationCreatedIterator struct { + Event *CrossChainRegistryStorageGenerationReservationCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryStorageGenerationReservationCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryStorageGenerationReservationCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryStorageGenerationReservationCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryStorageGenerationReservationCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryStorageGenerationReservationCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryStorageGenerationReservationCreated represents a GenerationReservationCreated event raised by the CrossChainRegistryStorage contract. +type CrossChainRegistryStorageGenerationReservationCreated struct { + OperatorSet OperatorSet + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGenerationReservationCreated is a free log retrieval operation binding the contract event 0x4fb6efec7dd60036ce3a7af8d5c48425019daa0fb61eb471a966a7ac2c6fa6a6. +// +// Solidity: event GenerationReservationCreated((address,uint32) operatorSet) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) FilterGenerationReservationCreated(opts *bind.FilterOpts) (*CrossChainRegistryStorageGenerationReservationCreatedIterator, error) { + + logs, sub, err := _CrossChainRegistryStorage.contract.FilterLogs(opts, "GenerationReservationCreated") + if err != nil { + return nil, err + } + return &CrossChainRegistryStorageGenerationReservationCreatedIterator{contract: _CrossChainRegistryStorage.contract, event: "GenerationReservationCreated", logs: logs, sub: sub}, nil +} + +// WatchGenerationReservationCreated is a free log subscription operation binding the contract event 0x4fb6efec7dd60036ce3a7af8d5c48425019daa0fb61eb471a966a7ac2c6fa6a6. +// +// Solidity: event GenerationReservationCreated((address,uint32) operatorSet) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) WatchGenerationReservationCreated(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryStorageGenerationReservationCreated) (event.Subscription, error) { + + logs, sub, err := _CrossChainRegistryStorage.contract.WatchLogs(opts, "GenerationReservationCreated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryStorageGenerationReservationCreated) + if err := _CrossChainRegistryStorage.contract.UnpackLog(event, "GenerationReservationCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseGenerationReservationCreated is a log parse operation binding the contract event 0x4fb6efec7dd60036ce3a7af8d5c48425019daa0fb61eb471a966a7ac2c6fa6a6. +// +// Solidity: event GenerationReservationCreated((address,uint32) operatorSet) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) ParseGenerationReservationCreated(log types.Log) (*CrossChainRegistryStorageGenerationReservationCreated, error) { + event := new(CrossChainRegistryStorageGenerationReservationCreated) + if err := _CrossChainRegistryStorage.contract.UnpackLog(event, "GenerationReservationCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CrossChainRegistryStorageGenerationReservationRemovedIterator is returned from FilterGenerationReservationRemoved and is used to iterate over the raw logs and unpacked data for GenerationReservationRemoved events raised by the CrossChainRegistryStorage contract. +type CrossChainRegistryStorageGenerationReservationRemovedIterator struct { + Event *CrossChainRegistryStorageGenerationReservationRemoved // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryStorageGenerationReservationRemovedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryStorageGenerationReservationRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryStorageGenerationReservationRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryStorageGenerationReservationRemovedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryStorageGenerationReservationRemovedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryStorageGenerationReservationRemoved represents a GenerationReservationRemoved event raised by the CrossChainRegistryStorage contract. +type CrossChainRegistryStorageGenerationReservationRemoved struct { + OperatorSet OperatorSet + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGenerationReservationRemoved is a free log retrieval operation binding the contract event 0x4ffdfdd59e9e1e3c301608788f78dd458e61cb8c045ca92b62a7b484c80824fb. +// +// Solidity: event GenerationReservationRemoved((address,uint32) operatorSet) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) FilterGenerationReservationRemoved(opts *bind.FilterOpts) (*CrossChainRegistryStorageGenerationReservationRemovedIterator, error) { + + logs, sub, err := _CrossChainRegistryStorage.contract.FilterLogs(opts, "GenerationReservationRemoved") + if err != nil { + return nil, err + } + return &CrossChainRegistryStorageGenerationReservationRemovedIterator{contract: _CrossChainRegistryStorage.contract, event: "GenerationReservationRemoved", logs: logs, sub: sub}, nil +} + +// WatchGenerationReservationRemoved is a free log subscription operation binding the contract event 0x4ffdfdd59e9e1e3c301608788f78dd458e61cb8c045ca92b62a7b484c80824fb. +// +// Solidity: event GenerationReservationRemoved((address,uint32) operatorSet) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) WatchGenerationReservationRemoved(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryStorageGenerationReservationRemoved) (event.Subscription, error) { + + logs, sub, err := _CrossChainRegistryStorage.contract.WatchLogs(opts, "GenerationReservationRemoved") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryStorageGenerationReservationRemoved) + if err := _CrossChainRegistryStorage.contract.UnpackLog(event, "GenerationReservationRemoved", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseGenerationReservationRemoved is a log parse operation binding the contract event 0x4ffdfdd59e9e1e3c301608788f78dd458e61cb8c045ca92b62a7b484c80824fb. +// +// Solidity: event GenerationReservationRemoved((address,uint32) operatorSet) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) ParseGenerationReservationRemoved(log types.Log) (*CrossChainRegistryStorageGenerationReservationRemoved, error) { + event := new(CrossChainRegistryStorageGenerationReservationRemoved) + if err := _CrossChainRegistryStorage.contract.UnpackLog(event, "GenerationReservationRemoved", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CrossChainRegistryStorageOperatorSetConfigSetIterator is returned from FilterOperatorSetConfigSet and is used to iterate over the raw logs and unpacked data for OperatorSetConfigSet events raised by the CrossChainRegistryStorage contract. +type CrossChainRegistryStorageOperatorSetConfigSetIterator struct { + Event *CrossChainRegistryStorageOperatorSetConfigSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryStorageOperatorSetConfigSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryStorageOperatorSetConfigSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryStorageOperatorSetConfigSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryStorageOperatorSetConfigSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryStorageOperatorSetConfigSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryStorageOperatorSetConfigSet represents a OperatorSetConfigSet event raised by the CrossChainRegistryStorage contract. +type CrossChainRegistryStorageOperatorSetConfigSet struct { + OperatorSet OperatorSet + Config ICrossChainRegistryTypesOperatorSetConfig + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSetConfigSet is a free log retrieval operation binding the contract event 0x3147846ee526009000671c20380b856a633345691300f82585f90034715cf0e2. +// +// Solidity: event OperatorSetConfigSet((address,uint32) operatorSet, (address,uint32) config) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) FilterOperatorSetConfigSet(opts *bind.FilterOpts) (*CrossChainRegistryStorageOperatorSetConfigSetIterator, error) { + + logs, sub, err := _CrossChainRegistryStorage.contract.FilterLogs(opts, "OperatorSetConfigSet") + if err != nil { + return nil, err + } + return &CrossChainRegistryStorageOperatorSetConfigSetIterator{contract: _CrossChainRegistryStorage.contract, event: "OperatorSetConfigSet", logs: logs, sub: sub}, nil +} + +// WatchOperatorSetConfigSet is a free log subscription operation binding the contract event 0x3147846ee526009000671c20380b856a633345691300f82585f90034715cf0e2. +// +// Solidity: event OperatorSetConfigSet((address,uint32) operatorSet, (address,uint32) config) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) WatchOperatorSetConfigSet(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryStorageOperatorSetConfigSet) (event.Subscription, error) { + + logs, sub, err := _CrossChainRegistryStorage.contract.WatchLogs(opts, "OperatorSetConfigSet") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryStorageOperatorSetConfigSet) + if err := _CrossChainRegistryStorage.contract.UnpackLog(event, "OperatorSetConfigSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorSetConfigSet is a log parse operation binding the contract event 0x3147846ee526009000671c20380b856a633345691300f82585f90034715cf0e2. +// +// Solidity: event OperatorSetConfigSet((address,uint32) operatorSet, (address,uint32) config) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) ParseOperatorSetConfigSet(log types.Log) (*CrossChainRegistryStorageOperatorSetConfigSet, error) { + event := new(CrossChainRegistryStorageOperatorSetConfigSet) + if err := _CrossChainRegistryStorage.contract.UnpackLog(event, "OperatorSetConfigSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CrossChainRegistryStorageOperatorTableCalculatorSetIterator is returned from FilterOperatorTableCalculatorSet and is used to iterate over the raw logs and unpacked data for OperatorTableCalculatorSet events raised by the CrossChainRegistryStorage contract. +type CrossChainRegistryStorageOperatorTableCalculatorSetIterator struct { + Event *CrossChainRegistryStorageOperatorTableCalculatorSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryStorageOperatorTableCalculatorSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryStorageOperatorTableCalculatorSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryStorageOperatorTableCalculatorSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryStorageOperatorTableCalculatorSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryStorageOperatorTableCalculatorSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryStorageOperatorTableCalculatorSet represents a OperatorTableCalculatorSet event raised by the CrossChainRegistryStorage contract. +type CrossChainRegistryStorageOperatorTableCalculatorSet struct { + OperatorSet OperatorSet + OperatorTableCalculator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorTableCalculatorSet is a free log retrieval operation binding the contract event 0x7f7ccafd92d20fdb39dee184a0dce002a9da420ed0def461f2a027abc9b3f6df. +// +// Solidity: event OperatorTableCalculatorSet((address,uint32) operatorSet, address operatorTableCalculator) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) FilterOperatorTableCalculatorSet(opts *bind.FilterOpts) (*CrossChainRegistryStorageOperatorTableCalculatorSetIterator, error) { + + logs, sub, err := _CrossChainRegistryStorage.contract.FilterLogs(opts, "OperatorTableCalculatorSet") + if err != nil { + return nil, err + } + return &CrossChainRegistryStorageOperatorTableCalculatorSetIterator{contract: _CrossChainRegistryStorage.contract, event: "OperatorTableCalculatorSet", logs: logs, sub: sub}, nil +} + +// WatchOperatorTableCalculatorSet is a free log subscription operation binding the contract event 0x7f7ccafd92d20fdb39dee184a0dce002a9da420ed0def461f2a027abc9b3f6df. +// +// Solidity: event OperatorTableCalculatorSet((address,uint32) operatorSet, address operatorTableCalculator) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) WatchOperatorTableCalculatorSet(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryStorageOperatorTableCalculatorSet) (event.Subscription, error) { + + logs, sub, err := _CrossChainRegistryStorage.contract.WatchLogs(opts, "OperatorTableCalculatorSet") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryStorageOperatorTableCalculatorSet) + if err := _CrossChainRegistryStorage.contract.UnpackLog(event, "OperatorTableCalculatorSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorTableCalculatorSet is a log parse operation binding the contract event 0x7f7ccafd92d20fdb39dee184a0dce002a9da420ed0def461f2a027abc9b3f6df. +// +// Solidity: event OperatorTableCalculatorSet((address,uint32) operatorSet, address operatorTableCalculator) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) ParseOperatorTableCalculatorSet(log types.Log) (*CrossChainRegistryStorageOperatorTableCalculatorSet, error) { + event := new(CrossChainRegistryStorageOperatorTableCalculatorSet) + if err := _CrossChainRegistryStorage.contract.UnpackLog(event, "OperatorTableCalculatorSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CrossChainRegistryStorageTransportDestinationAddedIterator is returned from FilterTransportDestinationAdded and is used to iterate over the raw logs and unpacked data for TransportDestinationAdded events raised by the CrossChainRegistryStorage contract. +type CrossChainRegistryStorageTransportDestinationAddedIterator struct { + Event *CrossChainRegistryStorageTransportDestinationAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryStorageTransportDestinationAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryStorageTransportDestinationAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryStorageTransportDestinationAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryStorageTransportDestinationAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryStorageTransportDestinationAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryStorageTransportDestinationAdded represents a TransportDestinationAdded event raised by the CrossChainRegistryStorage contract. +type CrossChainRegistryStorageTransportDestinationAdded struct { + OperatorSet OperatorSet + ChainID *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransportDestinationAdded is a free log retrieval operation binding the contract event 0x8b3a5eb206599a7bd7dcffa354a014ae777667c6890b23d046ff6867cd968393. +// +// Solidity: event TransportDestinationAdded((address,uint32) operatorSet, uint256 chainID) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) FilterTransportDestinationAdded(opts *bind.FilterOpts) (*CrossChainRegistryStorageTransportDestinationAddedIterator, error) { + + logs, sub, err := _CrossChainRegistryStorage.contract.FilterLogs(opts, "TransportDestinationAdded") + if err != nil { + return nil, err + } + return &CrossChainRegistryStorageTransportDestinationAddedIterator{contract: _CrossChainRegistryStorage.contract, event: "TransportDestinationAdded", logs: logs, sub: sub}, nil +} + +// WatchTransportDestinationAdded is a free log subscription operation binding the contract event 0x8b3a5eb206599a7bd7dcffa354a014ae777667c6890b23d046ff6867cd968393. +// +// Solidity: event TransportDestinationAdded((address,uint32) operatorSet, uint256 chainID) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) WatchTransportDestinationAdded(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryStorageTransportDestinationAdded) (event.Subscription, error) { + + logs, sub, err := _CrossChainRegistryStorage.contract.WatchLogs(opts, "TransportDestinationAdded") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryStorageTransportDestinationAdded) + if err := _CrossChainRegistryStorage.contract.UnpackLog(event, "TransportDestinationAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransportDestinationAdded is a log parse operation binding the contract event 0x8b3a5eb206599a7bd7dcffa354a014ae777667c6890b23d046ff6867cd968393. +// +// Solidity: event TransportDestinationAdded((address,uint32) operatorSet, uint256 chainID) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) ParseTransportDestinationAdded(log types.Log) (*CrossChainRegistryStorageTransportDestinationAdded, error) { + event := new(CrossChainRegistryStorageTransportDestinationAdded) + if err := _CrossChainRegistryStorage.contract.UnpackLog(event, "TransportDestinationAdded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// CrossChainRegistryStorageTransportDestinationRemovedIterator is returned from FilterTransportDestinationRemoved and is used to iterate over the raw logs and unpacked data for TransportDestinationRemoved events raised by the CrossChainRegistryStorage contract. +type CrossChainRegistryStorageTransportDestinationRemovedIterator struct { + Event *CrossChainRegistryStorageTransportDestinationRemoved // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *CrossChainRegistryStorageTransportDestinationRemovedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryStorageTransportDestinationRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(CrossChainRegistryStorageTransportDestinationRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *CrossChainRegistryStorageTransportDestinationRemovedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *CrossChainRegistryStorageTransportDestinationRemovedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// CrossChainRegistryStorageTransportDestinationRemoved represents a TransportDestinationRemoved event raised by the CrossChainRegistryStorage contract. +type CrossChainRegistryStorageTransportDestinationRemoved struct { + OperatorSet OperatorSet + ChainID *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransportDestinationRemoved is a free log retrieval operation binding the contract event 0x9fa5794dfaeae2ede46d5bdba347083580889221c3338813ca6c8d4b681ae8ee. +// +// Solidity: event TransportDestinationRemoved((address,uint32) operatorSet, uint256 chainID) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) FilterTransportDestinationRemoved(opts *bind.FilterOpts) (*CrossChainRegistryStorageTransportDestinationRemovedIterator, error) { + + logs, sub, err := _CrossChainRegistryStorage.contract.FilterLogs(opts, "TransportDestinationRemoved") + if err != nil { + return nil, err + } + return &CrossChainRegistryStorageTransportDestinationRemovedIterator{contract: _CrossChainRegistryStorage.contract, event: "TransportDestinationRemoved", logs: logs, sub: sub}, nil +} + +// WatchTransportDestinationRemoved is a free log subscription operation binding the contract event 0x9fa5794dfaeae2ede46d5bdba347083580889221c3338813ca6c8d4b681ae8ee. +// +// Solidity: event TransportDestinationRemoved((address,uint32) operatorSet, uint256 chainID) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) WatchTransportDestinationRemoved(opts *bind.WatchOpts, sink chan<- *CrossChainRegistryStorageTransportDestinationRemoved) (event.Subscription, error) { + + logs, sub, err := _CrossChainRegistryStorage.contract.WatchLogs(opts, "TransportDestinationRemoved") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(CrossChainRegistryStorageTransportDestinationRemoved) + if err := _CrossChainRegistryStorage.contract.UnpackLog(event, "TransportDestinationRemoved", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransportDestinationRemoved is a log parse operation binding the contract event 0x9fa5794dfaeae2ede46d5bdba347083580889221c3338813ca6c8d4b681ae8ee. +// +// Solidity: event TransportDestinationRemoved((address,uint32) operatorSet, uint256 chainID) +func (_CrossChainRegistryStorage *CrossChainRegistryStorageFilterer) ParseTransportDestinationRemoved(log types.Log) (*CrossChainRegistryStorageTransportDestinationRemoved, error) { + event := new(CrossChainRegistryStorageTransportDestinationRemoved) + if err := _CrossChainRegistryStorage.contract.UnpackLog(event, "TransportDestinationRemoved", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/DelegationManager/binding.go b/pkg/bindings/DelegationManager/binding.go index 99b04f1d01..5268d78e89 100644 --- a/pkg/bindings/DelegationManager/binding.go +++ b/pkg/bindings/DelegationManager/binding.go @@ -62,7 +62,7 @@ type OperatorSet 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\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"},{\"name\":\"_allocationManager\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_permissionController\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"},{\"name\":\"_MIN_WITHDRAWAL_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DELEGATION_APPROVAL_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateDelegationApprovalDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approver\",\"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\":\"calculateWithdrawalRoot\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawal\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[][]\",\"internalType\":\"contractIERC20[][]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"convertToDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"withdrawableShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"cumulativeWithdrawalsQueued\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"totalQueued\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"curDepositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"beaconChainSlashingFactorDecrease\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateTo\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtilsMixinTypes.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\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"operator\",\"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\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"spent\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositScalingFactor\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"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\":\"getDepositedShares\",\"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\":\"getOperatorsShares\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQueuedWithdrawal\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQueuedWithdrawalRoots\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQueuedWithdrawals\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"shares\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSlashableSharesInQueue\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWithdrawableShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"withdrawableShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"depositShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"prevDepositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addedShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialPausedStatus\",\"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\":\"minWithdrawalDelayBlocks\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyOperatorDetails\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newDelegationApprover\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"withdrawalRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"pending\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permissionController\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"queueWithdrawals\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.QueuedWithdrawalParams[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"depositShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"__deprecated_withdrawer\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"queuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"redelegate\",\"inputs\":[{\"name\":\"newOperator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newOperatorApproverSig\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtilsMixinTypes.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"withdrawalRoots\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerAsOperator\",\"inputs\":[{\"name\":\"initDelegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allocationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slashOperatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"prevMaxMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"newMaxMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"totalDepositSharesToSlash\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"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\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"DelegationApproverUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newDelegationApprover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DepositScalingFactorUpdated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"newDepositScalingFactor\",\"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\":\"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\":\"delegationApprover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"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\":\"OperatorSharesSlashed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"totalSlashedShares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"SlashingWithdrawalCompleted\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SlashingWithdrawalQueued\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"withdrawal\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManagerTypes.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\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"sharesToWithdraw\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"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\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ActivelyDelegated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerCannotUndelegate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FullySlashed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPermissions\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSnapshotOrdering\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotActivelyDelegated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyAllocationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyManagerOrEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorsCannotUndelegate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SaltSpent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"WithdrawalDelayNotElapsed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalNotQueued\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawerNotCaller\",\"inputs\":[]}]", - Bin: "0x610160604052348015610010575f5ffd5b5060405161605038038061605083398101604081905261002f916101d9565b808084898989878a6001600160a01b03811661005e576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c052821660e05263ffffffff16610100521661012052610095816100b0565b61014052506100a490506100f6565b50505050505050610364565b5f5f829050601f815111156100e3578260405163305a27a960e01b81526004016100da9190610309565b60405180910390fd5b80516100ee8261033e565b179392505050565b5f54610100900460ff161561015d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100da565b5f5460ff908116146101ac575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101c2575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f5f60e0888a0312156101ef575f5ffd5b87516101fa816101ae565b602089015190975061020b816101ae565b604089015190965061021c816101ae565b606089015190955061022d816101ae565b608089015190945061023e816101ae565b60a089015190935063ffffffff81168114610257575f5ffd5b60c08901519092506001600160401b03811115610272575f5ffd5b88015f601f82018b13610283575f5ffd5b81516001600160401b0381111561029c5761029c6101c5565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102ca576102ca6101c5565b6040528181528382016020018d10156102e1575f5ffd5b8160208501602083015e5f602083830101528092508094505050505092959891949750929550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8051602080830151919081101561035e575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051610100516101205161014051615bfa6104565f395f8181610fde0152613dc701525f8181610412015261317001525f81816107030152818161326f0152818161354101526136fa01525f818161075301528181610cf301528181610eb601528181611056015281816113af0152818161181101528181612480015261412a01525f818161043901528181610e340152818161130e0152818161158201528181612d7101528181612f5201526133b501525f818161036f01528181610e02015281816114d6015261338f01525f81816105e201528181612b370152613e360152615bfa5ff3fe608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636d70f7ae1161017b578063bb45fef2116100e4578063e4cc3f901161009e578063f698da2511610079578063f698da25146107ce578063fabc1cbc146107d6578063fd8aa88d146107e9578063fe4b84df146107fc575f5ffd5b8063e4cc3f9014610788578063eea9064b1461079b578063f0e0e676146107ae575f5ffd5b8063bb45fef2146106b9578063bfae3fd2146106e6578063c448feb8146106f9578063c978f7ac1461072d578063ca8aa7c71461074e578063da8be86414610775575f5ffd5b80639104c319116101355780639104c319146106175780639435bb431461063257806399f5371b14610645578063a178848414610665578063a33a343314610684578063b7f06ebe14610697575f5ffd5b80636d70f7ae1461057a5780636e1744481461058d578063778e55f3146105a057806378296ec5146105ca578063886f1195146105dd5780639004134714610604575f5ffd5b806354b7c96c1161021d5780635c975abb116101d75780635c975abb146104d45780635d975e88146104dc5780635dd68579146104fd57806360a0d1ce1461051e57806365da12641461053157806366d5ba9314610559575f5ffd5b806354b7c96c1461045b57806354fd4d501461046e578063595c6a6714610483578063597b36da1461048b5780635ac86ab71461049e5780635ae679a7146104c1575f5ffd5b806339b70e381161026e57806339b70e381461036a5780633c651cf2146103a95780633cdeb5e0146103bc5780633e28391d146103ea5780634657e26a1461040d5780634665bcda14610434575f5ffd5b806304a4f979146102b55780630b9f487a146102ef5780630dd8dd0214610302578063136439dd1461032257806325df922e146103375780632aa6d88814610357575b5f5ffd5b6102dc7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b6102dc6102fd366004614a64565b61080f565b610315610310366004614afb565b610897565b6040516102e69190614b39565b610335610330366004614b70565b610b09565b005b61034a610345366004614d05565b610b43565b6040516102e69190614db3565b610335610365366004614e15565b610ca3565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102e6565b6103356103b7366004614e73565b610df7565b6103916103ca366004614eb6565b6001600160a01b039081165f908152609960205260409020600101541690565b6103fd6103f8366004614eb6565b610f4a565b60405190151581526020016102e6565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b610335610469366004614ed1565b610f69565b610476610fd7565b6040516102e69190614f36565b610335611007565b6102dc610499366004615004565b61101b565b6103fd6104ac366004615035565b606654600160ff9092169190911b9081161490565b6102dc6104cf366004615069565b61104a565b6066546102dc565b6104ef6104ea366004614b70565b6111bc565b6040516102e692919061519e565b61051061050b366004614eb6565b6111d9565b6040516102e6929190615210565b61033561052c36600461527d565b611303565b61039161053f366004614eb6565b609a6020525f90815260409020546001600160a01b031681565b61056c610567366004614eb6565b6114ae565b6040516102e69291906152bc565b6103fd610588366004614eb6565b6117ae565b6102dc61059b366004614ed1565b6117e6565b6102dc6105ae366004614ed1565b609860209081525f928352604080842090915290825290205481565b6103356105d83660046152ce565b611890565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b61034a61061236600461531e565b611926565b61039173beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61033561064036600461536a565b6119fc565b610658610653366004614b70565b611ab7565b6040516102e69190615406565b6102dc610673366004614eb6565b609f6020525f908152604090205481565b610315610692366004615418565b611bd3565b6103fd6106a5366004614b70565b609e6020525f908152604090205460ff1681565b6103fd6106c73660046154ff565b609c60209081525f928352604080842090915290825290205460ff1681565b6102dc6106f4366004614ed1565b611beb565b60405163ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526020016102e6565b61074061073b36600461531e565b611c27565b6040516102e6929190615529565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b610315610783366004614eb6565b611eb4565b610335610796366004615548565b611fdd565b6103356107a9366004615418565b612015565b6107c16107bc3660046155c6565b612080565b6040516102e69190615673565b6102dc612125565b6103356107e4366004614b70565b6121de565b6103156107f7366004614eb6565b61224c565b61033561080a366004614b70565b61226f565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f9061088d9060e00160405160208183030381529060405280519060200120612380565b9695505050505050565b606060016108a4816123ae565b6108ac6123dc565b5f836001600160401b038111156108c5576108c5614b87565b6040519080825280602002602001820160405280156108ee578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610afa5786868281811061092857610928615685565b905060200281019061093a9190615699565b6109489060208101906156b7565b905087878381811061095c5761095c615685565b905060200281019061096e9190615699565b61097890806156b7565b905014610998576040516343714afd60e01b815260040160405180910390fd5b5f610a0233848a8a868181106109b0576109b0615685565b90506020028101906109c29190615699565b6109cc90806156b7565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061243592505050565b9050610ad433848a8a86818110610a1b57610a1b615685565b9050602002810190610a2d9190615699565b610a3790806156b7565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610a7c57610a7c615685565b9050602002810190610a8e9190615699565b610a9c9060208101906156b7565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250889250612587915050565b848381518110610ae657610ae6615685565b60209081029190910101525060010161090e565b5050600160c955949350505050565b610b11612b22565b6066548181168114610b365760405163c61dca5d60e01b815260040160405180910390fd5b610b3f82612bc5565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610b6c868387612435565b90505f85516001600160401b03811115610b8857610b88614b87565b604051908082528060200260200182016040528015610bb1578160200160208202803683370190505b5090505f5b8651811015610c96576001600160a01b0388165f90815260a260205260408120885182908a9085908110610bec57610bec615685565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610c70878381518110610c3e57610c3e615685565b6020026020010151858481518110610c5857610c58615685565b602002602001015183612c029092919063ffffffff16565b838381518110610c8257610c82615685565b602090810291909101015250600101610bb6565b50925050505b9392505050565b610cab6123dc565b610cb433610f4a565b15610cd257604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610d3c575f5ffd5b505af1158015610d4e573d5f5f3e3d5ffd5b50505050610d5c3385612c20565b610d663333612c82565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610ddf9291906156fc565b60405180910390a2610df1600160c955565b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610e565750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610e735760405163045206a560e21b815260040160405180910390fd5b610e7b6123dc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015610efb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1f919061572a565b90505f610f2d878784612f0b565b9050610f3d838888888886612fed565b505050610df1600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b81610f7381613132565b610f905760405163932d94f760e01b815260040160405180910390fd5b610f986123dc565b610fa1836117ae565b610fbe576040516325ec6c1f60e01b815260040160405180910390fd5b610fc88383612c20565b610fd2600160c955565b505050565b60606110027f00000000000000000000000000000000000000000000000000000000000000006131dc565b905090565b61100f612b22565b6110195f19612bc5565b565b5f8160405160200161102d9190615406565b604051602081830303815290604052805190602001209050919050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611094576040516323d871a560e01b815260040160405180910390fd5b61109c6123dc565b6001600160a01b038088165f9081526098602090815260408083209388168352929052908120546110da906001600160401b03808716908616613219565b90505f6110e989878787613231565b90506110f58183615759565b9250611103895f88856132ee565b604080516001600160a01b038881168252602082018690528b16917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a261115286613368565b6001600160a01b0316633fb99ca5898989876040518563ffffffff1660e01b8152600401611183949392919061576c565b5f604051808303815f87803b15801561119a575f5ffd5b505af11580156111ac573d5f5f3e3d5ffd5b50505050505061088d600160c955565b6111c4614925565b60606111cf836133da565b9094909350915050565b6060805f6111e68461224c565b8051909150806001600160401b0381111561120357611203614b87565b60405190808252806020026020018201604052801561123c57816020015b611229614925565b8152602001906001900390816112215790505b509350806001600160401b0381111561125757611257614b87565b60405190808252806020026020018201604052801561128a57816020015b60608152602001906001900390816112755790505b5092505f5b818110156112fb576112b98382815181106112ac576112ac615685565b60200260200101516133da565b8683815181106112cb576112cb615685565b602002602001018684815181106112e4576112e4615685565b60209081029190910101919091525260010161128f565b505050915091565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461134c57604051633213a66160e21b815260040160405180910390fd5b6113546123dc565b61135d83610f4a565b15610fc8576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa1580156113f4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611418919061572a565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac084528252808320815192830190915254815291925061147e866114766001600160401b0380871690891661362d565b849190613641565b90506114a0848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846132ee565b50505050610fd2600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd906024015f60405180830381865afa15801561151a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611541919081019061581c565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa1580156115c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115eb91906158d7565b9050805f036115ff57509094909350915050565b5f8351600161160e9190615759565b6001600160401b0381111561162557611625614b87565b60405190808252806020026020018201604052801561164e578160200160208202803683370190505b5090505f845160016116609190615759565b6001600160401b0381111561167757611677614b87565b6040519080825280602002602001820160405280156116a0578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106116cb576116cb615685565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106116ff576116ff615685565b60209081029190910101525f5b85518110156117a05785818151811061172757611727615685565b602002602001015183828151811061174157611741615685565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061177357611773615685565b602002602001015182828151811061178d5761178d615685565b602090810291909101015260010161170c565b509097909650945050505050565b5f6001600160a01b038216158015906117e057506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015611856573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061187a919061572a565b90506118888484835f613231565b949350505050565b8261189a81613132565b6118b75760405163932d94f760e01b815260040160405180910390fd5b6118c0846117ae565b6118dd576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b670809084846040516119189291906156fc565b60405180910390a250505050565b60605f82516001600160401b0381111561194257611942614b87565b60405190808252806020026020018201604052801561196b578160200160208202803683370190505b5090505f5b83518110156119f4576001600160a01b0385165f90815260986020526040812085519091908690849081106119a7576119a7615685565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f20548282815181106119e1576119e1615685565b6020908102919091010152600101611970565b509392505050565b6002611a07816123ae565b611a0f6123dc565b855f5b81811015611aa257611a9a898983818110611a2f57611a2f615685565b9050602002810190611a4191906158ee565b611a4a90615902565b888884818110611a5c57611a5c615685565b9050602002810190611a6e91906156b7565b888886818110611a8057611a80615685565b9050602002016020810190611a95919061590d565b61365f565b600101611a12565b5050611aae600160c955565b50505050505050565b611abf614925565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611b6d57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611b4f575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611bc357602002820191905f5260205f20905b815481526020019060010190808311611baf575b5050505050815250509050919050565b6060611bde33611eb4565b9050610c9c848484612015565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610c9c90613aa1565b60608082516001600160401b03811115611c4357611c43614b87565b604051908082528060200260200182016040528015611c6c578160200160208202803683370190505b50915082516001600160401b03811115611c8857611c88614b87565b604051908082528060200260200182016040528015611cb1578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611cdc868387612435565b90505f5b8551811015611ea9575f611d0c878381518110611cff57611cff615685565b6020026020010151613368565b9050806001600160a01b031663fe243a1789898581518110611d3057611d30615685565b60200260200101516040518363ffffffff1660e01b8152600401611d6a9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611d85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da991906158d7565b858381518110611dbb57611dbb615685565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f898581518110611dfe57611dfe615685565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050611e82868481518110611e5057611e50615685565b6020026020010151858581518110611e6a57611e6a615685565b6020026020010151836136419092919063ffffffff16565b878481518110611e9457611e94615685565b60209081029190910101525050600101611ce0565b5050505b9250929050565b6060611ebe6123dc565b611ec782610f4a565b611ee45760405163a5c7c44560e01b815260040160405180910390fd5b611eed826117ae565b15611f0b576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b03831614611fc3576001600160a01b038083165f908152609a602052604090205416611f3e81613132565b80611f6457506001600160a01b038181165f908152609960205260409020600101541633145b611f8157604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b611fcc82613ac0565b9050611fd8600160c955565b919050565b6002611fe8816123ae565b611ff06123dc565b612004611ffc86615902565b85858561365f565b61200e600160c955565b5050505050565b61201d6123dc565b61202633610f4a565b1561204457604051633bf2b50360e11b815260040160405180910390fd5b61204d836117ae565b61206a576040516325ec6c1f60e01b815260040160405180910390fd5b61207633848484613d00565b610fc83384612c82565b60605f83516001600160401b0381111561209c5761209c614b87565b6040519080825280602002602001820160405280156120cf57816020015b60608152602001906001900390816120ba5790505b5090505f5b84518110156119f4576121008582815181106120f2576120f2615685565b602002602001015185611926565b82828151811061211257612112615685565b60209081029190910101526001016120d4565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612192613dbf565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6121e6613e34565b6066548019821981161461220d5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906117e090613ee5565b5f54610100900460ff161580801561228d57505f54600160ff909116105b806122a65750303b1580156122a657505f5460ff166001145b61230e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561232f575f805461ff0019166101001790555b61233882612bc5565b8015610b3f575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b5f612389612125565b60405161190160f01b602082015260228101919091526042810183905260620161102d565b606654600160ff83161b908116036123d95760405163840a48d560e01b815260040160405180910390fd5b50565b600260c9540361242e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401612305565b600260c955565b60605f82516001600160401b0381111561245157612451614b87565b60405190808252806020026020018201604052801561247a578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016124cc929190615928565b5f60405180830381865afa1580156124e6573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261250d919081019061594b565b90505f5b845181101561257c576125578786838151811061253057612530615685565b602002602001015184848151811061254a5761254a615685565b6020026020010151612f0b565b83828151811061256957612569615685565b6020908102919091010152600101612511565b509095945050505050565b5f6001600160a01b0386166125af576040516339b190bb60e11b815260040160405180910390fd5b83515f036125d05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b038111156125ea576125ea614b87565b604051908082528060200260200182016040528015612613578160200160208202803683370190505b5090505f85516001600160401b0381111561263057612630614b87565b604051908082528060200260200182016040528015612659578160200160208202803683370190505b5090505f5b8651811015612955575f61267d888381518110611cff57611cff615685565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106126b6576126b6615685565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f20905061272f8884815181106126f4576126f4615685565b602002602001015188858151811061270e5761270e615685565b60209081029190910181015160408051928301905284548252909190613641565b84848151811061274157612741615685565b60200260200101818152505061278088848151811061276257612762615685565b60209081029190910181015160408051928301905283548252613ef1565b85848151811061279257612792615685565b60209081029190910101526001600160a01b038a1615612827576127e98a8a85815181106127c2576127c2615685565b60200260200101518786815181106127dc576127dc615685565b6020026020010151613f05565b6128278a8c8b868151811061280057612800615685565b602002602001015187878151811061281a5761281a615685565b60200260200101516132ee565b5f826001600160a01b031663724af4238d8c878151811061284a5761284a615685565b60200260200101518c888151811061286457612864615685565b60200260200101516040518463ffffffff1660e01b815260040161288a939291906159da565b6020604051808303815f875af11580156128a6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128ca91906158d7565b9050805f03612947575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b868151811061290a5761290a615685565b602002602001015161292f856040518060200160405290815f82015481525050613aa1565b60405161293e939291906159da565b60405180910390a15b50505080600101905061265e565b506001600160a01b0388165f908152609f6020526040812080549182919061297c836159fe565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f6129e28261101b565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612a98926005850192019061497e565b5060c08201518051612ab49160068401916020909101906149e1565b5050506001600160a01b038b165f90815260a360205260409020612ad89082613f6f565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612b0c93929190615a16565b60405180910390a19a9950505050505050505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015612b84573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ba89190615a40565b61101957604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61188882612c1a612c1387613aa1565b8690613f7a565b90613f7a565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c69101612240565b5f612c8c816123ae565b5f5f612c97856114ae565b915091505f612ca75f8685612435565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611aae5773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612d3a57612d3a615685565b60200260200101516001600160a01b031603612eaa5760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015612db8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ddc919061572a565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f878581518110612e1557612e15615685565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050612e89858481518110612e6757612e67615685565b6020026020010151836001600160401b0316836136419092919063ffffffff16565b858481518110612e9b57612e9b615685565b60200260200101818152505050505b612f038688868481518110612ec157612ec1615685565b60200260200101515f878681518110612edc57612edc615685565b6020026020010151878781518110612ef657612ef6615685565b6020026020010151612fed565b600101612d01565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b03841601612fdd5760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015612f99573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fbd919061572a565b9050612fd56001600160401b0384811690831661362d565b915050610c9c565b506001600160401b031692915050565b805f0361300d57604051630a33bc6960e21b815260040160405180910390fd5b811561312a576001600160a01b038086165f90815260a26020908152604080832093881683529290522061304381858585613f8e565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061308190613aa1565b604051613090939291906159da565b60405180910390a16130a186610f4a565b15611aae576001600160a01b038088165f908152609860209081526040808320938916835292905290812080548592906130dc908490615759565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c878786604051613120939291906159da565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af11580156131b8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117e09190615a40565b60605f6131e883614009565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f6132278483856001614030565b6118889085615a5b565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906132629061408b565b90505f6132c860016132947f000000000000000000000000000000000000000000000000000000000000000043615a6e565b61329e9190615a6e565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906140a5565b90505f6132d58284615a5b565b90506132e28187876140c1565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613324908490615a5b565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611918939291906159da565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146133b3577f00000000000000000000000000000000000000000000000000000000000000006117e0565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b6133e2614925565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561349457602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613476575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156134ea57602002820191905f5260205f20905b8154815260200190600101908083116134d6575b50505050508152505091508160a00151516001600160401b0381111561351257613512614b87565b60405190808252806020026020018201604052801561353b578160200160208202803683370190505b5090505f7f0000000000000000000000000000000000000000000000000000000000000000836080015161356f9190615a8a565b90505f4363ffffffff168263ffffffff16106135a05761359b845f015185602001518660a00151612435565b6135b7565b6135b7845f015185602001518660a00151856140df565b90505f5b8460a00151518110156112fb576136088560c0015182815181106135e1576135e1615685565b60200260200101518383815181106135fb576135fb615685565b602002602001015161420d565b84828151811061361a5761361a615685565b60209081029190910101526001016135bb565b5f610c9c8383670de0b6b3a7640000614218565b5f6118888261365961365287613aa1565b869061362d565b9061362d565b60a0840151518214613684576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b0316146136ba576040516316110d3560e21b815260040160405180910390fd5b5f6136c48561101b565b5f818152609e602052604090205490915060ff166136f5576040516387c9d21960e01b815260040160405180910390fd5b60605f7f000000000000000000000000000000000000000000000000000000000000000087608001516137289190615a8a565b90508063ffffffff164363ffffffff1611613756576040516378f67ae160e11b815260040160405180910390fd5b61376d875f015188602001518960a00151846140df565b87516001600160a01b03165f90815260a3602052604090209092506137939150836142fd565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff19169055906137ea6005830182614a1a565b6137f7600683015f614a1a565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a00906138409084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a0151919093169261387a918490612435565b90505f5b8860a0015151811015613a96575f6138a58a60a001518381518110611cff57611cff615685565b90505f6138db8b60c0015184815181106138c1576138c1615685565b60200260200101518785815181106135fb576135fb615685565b9050805f036138eb575050613a8e565b87156139b957816001600160a01b0316632eae418c8c5f01518d60a00151868151811061391a5761391a615685565b60200260200101518d8d8881811061393457613934615685565b90506020020160208101906139499190614eb6565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b15801561399e575f5ffd5b505af11580156139b0573d5f5f3e3d5ffd5b50505050613a8b565b5f5f836001600160a01b03166350ff72258e5f01518f60a0015188815181106139e4576139e4615685565b6020026020010151866040518463ffffffff1660e01b8152600401613a0b939291906159da565b60408051808303815f875af1158015613a26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a4a9190615aa6565b91509150613a88878e5f01518f60a001518881518110613a6c57613a6c615685565b602002602001015185858b8b81518110612ef657612ef6615685565b50505b50505b60010161387e565b505050505050505050565b80515f9015613ab15781516117e0565b670de0b6b3a764000092915050565b60606001613acd816123ae565b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613b2c866114ae565b9150915081515f03613b4057505050613cfa565b81516001600160401b03811115613b5957613b59614b87565b604051908082528060200260200182016040528015613b82578160200160208202803683370190505b5094505f613b91878585612435565b90505f5b8351811015613cf4576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613c1557613c15615685565b6020026020010151835f81518110613c2f57613c2f615685565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613c6157613c61615685565b6020026020010151825f81518110613c7b57613c7b615685565b602002602001018181525050848481518110613c9957613c99615685565b6020026020010151815f81518110613cb357613cb3615685565b602002602001018181525050613ccc8b89858585612587565b8a8581518110613cde57613cde615685565b6020908102919091010152505050600101613b95565b50505050505b50919050565b6001600160a01b038084165f908152609960205260409020600101541680613d285750610df1565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff1615613d6c57604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161200e908290613db390889088908490889061080f565b85516020870151614308565b60605f613deb7f00000000000000000000000000000000000000000000000000000000000000006131dc565b9050805f81518110613dff57613dff615685565b016020908101516040516001600160f81b03199091169181019190915260210160405160208183030381529060405291505090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e90573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613eb49190615ac8565b6001600160a01b0316336001600160a01b0316146110195760405163794821ff60e01b815260040160405180910390fd5b60605f610c9c8361435a565b5f610c9c613efe84613aa1565b839061362d565b6001600160a01b038084165f90815260a5602090815260408083209386168352929052908120613f349061408b565b9050610df143613f448484615759565b6001600160a01b038088165f90815260a560209081526040808320938a1683529290522091906143b3565b5f610c9c83836143be565b5f610c9c83670de0b6b3a764000084614218565b825f03613fba57604080516020810190915284548152613fb3908290612c1a90613aa1565b8455610df1565b6040805160208101909152845481525f90613fd6908584613641565b90505f613fe38483615759565b90505f613ffe84612c1a613ff7888a615759565b8590613f7a565b875550505050505050565b5f60ff8216601f8111156117e057604051632cd44ac360e21b815260040160405180910390fd5b5f5f61403d868686614218565b9050600183600281111561405357614053615ae3565b14801561406f57505f848061406a5761406a615af7565b868809115b156140825761407f600182615759565b90505b95945050505050565b5f614096828261440a565b6001600160e01b031692915050565b5f6140b183838361444f565b6001600160e01b03169392505050565b5f6118886140cf8385615b0b565b85906001600160401b031661362d565b60605f83516001600160401b038111156140fb576140fb614b87565b604051908082528060200260200182016040528015614124578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b815260040161417893929190615b2a565b5f60405180830381865afa158015614192573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526141b9919081019061594b565b90505f5b8551811015614201576141dc8887838151811061253057612530615685565b8382815181106141ee576141ee615685565b60209081029190910101526001016141bd565b50909695505050505050565b5f610c9c838361362d565b5f80805f19858709858702925082811083820303915050805f0361424f5783828161424557614245615af7565b0492505050610c9c565b8084116142965760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612305565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610c9c8383614498565b4281101561432957604051630819bdcd60e01b815260040160405180910390fd5b61433d6001600160a01b038516848461457b565b610df157604051638baa579f60e01b815260040160405180910390fd5b6060815f018054806020026020016040519081016040528092919081815260200182805480156143a757602002820191905f5260205f20905b815481526020019060010190808311614393575b50505050509050919050565b610fd28383836145cf565b5f81815260018301602052604081205461440357508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556117e0565b505f6117e0565b81545f9080156144475761443084614423600184615a5b565b5f91825260209091200190565b5464010000000090046001600160e01b0316611888565b509092915050565b82545f9081614460868683856146d5565b9050801561448e5761447786614423600184615a5b565b5464010000000090046001600160e01b031661088d565b5091949350505050565b5f8181526001830160205260408120548015614572575f6144ba600183615a5b565b85549091505f906144cd90600190615a5b565b905081811461452c575f865f0182815481106144eb576144eb615685565b905f5260205f200154905080875f01848154811061450b5761450b615685565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061453d5761453d615b63565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506117e0565b5f9150506117e0565b5f5f5f6145888585614728565b90925090505f8160048111156145a0576145a0615ae3565b1480156145be5750856001600160a01b0316826001600160a01b0316145b8061088d575061088d868686614767565b82548015614687575f6145e785614423600185615a5b565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b03166020840152919250908516101561463a5760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff808616911603614685578261465b86614423600186615a5b565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b818310156119f4575f6146ea848461484e565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561471457809250614722565b61471f816001615759565b93505b506146d7565b5f5f825160410361475c576020830151604084015160608501515f1a61475087828585614868565b94509450505050611ead565b505f90506002611ead565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161478f929190615b77565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516147cd9190615b8f565b5f60405180830381855afa9150503d805f8114614805576040519150601f19603f3d011682016040523d82523d5f602084013e61480a565b606091505b509150915081801561481e57506020815110155b801561088d57508051630b135d3f60e11b9061484390830160209081019084016158d7565b149695505050505050565b5f61485c6002848418615ba5565b610c9c90848416615759565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561489d57505f9050600361491c565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156148ee573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614916575f6001925092505061491c565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f209081019282156149d1579160200282015b828111156149d157825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061499c565b506149dd929150614a31565b5090565b828054828255905f5260205f209081019282156149d1579160200282015b828111156149d15782518255916020019190600101906149ff565b5080545f8255905f5260205f20908101906123d991905b5b808211156149dd575f8155600101614a32565b6001600160a01b03811681146123d9575f5ffd5b8035611fd881614a45565b5f5f5f5f5f60a08688031215614a78575f5ffd5b8535614a8381614a45565b94506020860135614a9381614a45565b93506040860135614aa381614a45565b94979396509394606081013594506080013592915050565b5f5f83601f840112614acb575f5ffd5b5081356001600160401b03811115614ae1575f5ffd5b6020830191508360208260051b8501011115611ead575f5ffd5b5f5f60208385031215614b0c575f5ffd5b82356001600160401b03811115614b21575f5ffd5b614b2d85828601614abb565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561257c578351835260209384019390920191600101614b52565b5f60208284031215614b80575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614bbd57614bbd614b87565b60405290565b604080519081016001600160401b0381118282101715614bbd57614bbd614b87565b604051601f8201601f191681016001600160401b0381118282101715614c0d57614c0d614b87565b604052919050565b5f6001600160401b03821115614c2d57614c2d614b87565b5060051b60200190565b5f82601f830112614c46575f5ffd5b8135614c59614c5482614c15565b614be5565b8082825260208201915060208360051b860101925085831115614c7a575f5ffd5b602085015b83811015614ca0578035614c9281614a45565b835260209283019201614c7f565b5095945050505050565b5f82601f830112614cb9575f5ffd5b8135614cc7614c5482614c15565b8082825260208201915060208360051b860101925085831115614ce8575f5ffd5b602085015b83811015614ca0578035835260209283019201614ced565b5f5f5f60608486031215614d17575f5ffd5b8335614d2281614a45565b925060208401356001600160401b03811115614d3c575f5ffd5b614d4886828701614c37565b92505060408401356001600160401b03811115614d63575f5ffd5b614d6f86828701614caa565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614da9578151865260209586019590910190600101614d8b565b5093949350505050565b602081525f610c9c6020830184614d79565b803563ffffffff81168114611fd8575f5ffd5b5f5f83601f840112614de8575f5ffd5b5081356001600160401b03811115614dfe575f5ffd5b602083019150836020828501011115611ead575f5ffd5b5f5f5f5f60608587031215614e28575f5ffd5b8435614e3381614a45565b9350614e4160208601614dc5565b925060408501356001600160401b03811115614e5b575f5ffd5b614e6787828801614dd8565b95989497509550505050565b5f5f5f5f60808587031215614e86575f5ffd5b8435614e9181614a45565b93506020850135614ea181614a45565b93969395505050506040820135916060013590565b5f60208284031215614ec6575f5ffd5b8135610c9c81614a45565b5f5f60408385031215614ee2575f5ffd5b8235614eed81614a45565b91506020830135614efd81614a45565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610c9c6020830184614f08565b5f60e08284031215614f58575f5ffd5b614f60614b9b565b9050614f6b82614a59565b8152614f7960208301614a59565b6020820152614f8a60408301614a59565b604082015260608281013590820152614fa560808301614dc5565b608082015260a08201356001600160401b03811115614fc2575f5ffd5b614fce84828501614c37565b60a08301525060c08201356001600160401b03811115614fec575f5ffd5b614ff884828501614caa565b60c08301525092915050565b5f60208284031215615014575f5ffd5b81356001600160401b03811115615029575f5ffd5b61188884828501614f48565b5f60208284031215615045575f5ffd5b813560ff81168114610c9c575f5ffd5b6001600160401b03811681146123d9575f5ffd5b5f5f5f5f5f5f86880360e081121561507f575f5ffd5b873561508a81614a45565b96506040601f198201121561509d575f5ffd5b506020870194506060870135935060808701356150b981614a45565b925060a08701356150c981615055565b915060c08701356150d981615055565b809150509295509295509295565b5f8151808452602084019350602083015f5b82811015614da95781516001600160a01b03168652602095860195909101906001016150f9565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f9161516b9085018263ffffffff169052565b5060a082015160e060a085015261518560e08501826150e7565b905060c083015184820360c08601526140828282614d79565b604081525f6151b06040830185615120565b82810360208401526140828185614d79565b5f82825180855260208501945060208160051b830101602085015f5b8381101561420157601f198584030188526151fa838351614d79565b60209889019890935091909101906001016151de565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b8281101561526757605f19878603018452615252858351615120565b94506020938401939190910190600101615236565b50505050828103602084015261408281856151c2565b5f5f5f6060848603121561528f575f5ffd5b833561529a81614a45565b92506020840135915060408401356152b181615055565b809150509250925092565b604081525f6151b060408301856150e7565b5f5f5f604084860312156152e0575f5ffd5b83356152eb81614a45565b925060208401356001600160401b03811115615305575f5ffd5b61531186828701614dd8565b9497909650939450505050565b5f5f6040838503121561532f575f5ffd5b823561533a81614a45565b915060208301356001600160401b03811115615354575f5ffd5b61536085828601614c37565b9150509250929050565b5f5f5f5f5f5f6060878903121561537f575f5ffd5b86356001600160401b03811115615394575f5ffd5b6153a089828a01614abb565b90975095505060208701356001600160401b038111156153be575f5ffd5b6153ca89828a01614abb565b90955093505060408701356001600160401b038111156153e8575f5ffd5b6153f489828a01614abb565b979a9699509497509295939492505050565b602081525f610c9c6020830184615120565b5f5f5f6060848603121561542a575f5ffd5b833561543581614a45565b925060208401356001600160401b0381111561544f575f5ffd5b840160408187031215615460575f5ffd5b615468614bc3565b81356001600160401b0381111561547d575f5ffd5b8201601f8101881361548d575f5ffd5b80356001600160401b038111156154a6576154a6614b87565b6154b9601f8201601f1916602001614be5565b8181528960208385010111156154cd575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f60408385031215615510575f5ffd5b823561551b81614a45565b946020939093013593505050565b604081525f6151b06040830185614d79565b80151581146123d9575f5ffd5b5f5f5f5f6060858703121561555b575f5ffd5b84356001600160401b03811115615570575f5ffd5b850160e08188031215615581575f5ffd5b935060208501356001600160401b0381111561559b575f5ffd5b6155a787828801614abb565b90945092505060408501356155bb8161553b565b939692955090935050565b5f5f604083850312156155d7575f5ffd5b82356001600160401b038111156155ec575f5ffd5b8301601f810185136155fc575f5ffd5b803561560a614c5482614c15565b8082825260208201915060208360051b85010192508783111561562b575f5ffd5b6020840193505b8284101561565657833561564581614a45565b825260209384019390910190615632565b945050505060208301356001600160401b03811115615354575f5ffd5b602081525f610c9c60208301846151c2565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126156ad575f5ffd5b9190910192915050565b5f5f8335601e198436030181126156cc575f5ffd5b8301803591506001600160401b038211156156e5575f5ffd5b6020019150600581901b3603821315611ead575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f6020828403121561573a575f5ffd5b8151610c9c81615055565b634e487b7160e01b5f52601160045260245ffd5b808201808211156117e0576117e0615745565b60a08101853561577b81614a45565b6001600160a01b0316825263ffffffff61579760208801614dc5565b16602083015260408201949094526001600160a01b03929092166060830152608090910152919050565b5f82601f8301126157d0575f5ffd5b81516157de614c5482614c15565b8082825260208201915060208360051b8601019250858311156157ff575f5ffd5b602085015b83811015614ca0578051835260209283019201615804565b5f5f6040838503121561582d575f5ffd5b82516001600160401b03811115615842575f5ffd5b8301601f81018513615852575f5ffd5b8051615860614c5482614c15565b8082825260208201915060208360051b850101925087831115615881575f5ffd5b6020840193505b828410156158ac57835161589b81614a45565b825260209384019390910190615888565b8095505050505060208301516001600160401b038111156158cb575f5ffd5b615360858286016157c1565b5f602082840312156158e7575f5ffd5b5051919050565b5f823560de198336030181126156ad575f5ffd5b5f6117e03683614f48565b5f6020828403121561591d575f5ffd5b8135610c9c8161553b565b6001600160a01b03831681526040602082018190525f90611888908301846150e7565b5f6020828403121561595b575f5ffd5b81516001600160401b03811115615970575f5ffd5b8201601f81018413615980575f5ffd5b805161598e614c5482614c15565b8082825260208201915060208360051b8501019250868311156159af575f5ffd5b6020840193505b8284101561088d5783516159c981615055565b8252602093840193909101906159b6565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615a0f57615a0f615745565b5060010190565b838152606060208201525f615a2e6060830185615120565b828103604084015261088d8185614d79565b5f60208284031215615a50575f5ffd5b8151610c9c8161553b565b818103818111156117e0576117e0615745565b63ffffffff82811682821603908111156117e0576117e0615745565b63ffffffff81811683821601908111156117e0576117e0615745565b5f5f60408385031215615ab7575f5ffd5b505080516020909101519092909150565b5f60208284031215615ad8575f5ffd5b8151610c9c81614a45565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156117e0576117e0615745565b6001600160a01b03841681526060602082018190525f90615b4d908301856150e7565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6118886040830184614f08565b5f82518060208501845e5f920191825250919050565b5f82615bbf57634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220f9ef772eabaa6b5fce23afe05df444492ec99933e2ae08ab18ec8b7b4dd4384c64736f6c634300081b0033", + Bin: "0x610160604052348015610010575f5ffd5b5060405161605038038061605083398101604081905261002f916101d9565b808084898989878a6001600160a01b03811661005e576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c052821660e05263ffffffff16610100521661012052610095816100b0565b61014052506100a490506100f6565b50505050505050610364565b5f5f829050601f815111156100e3578260405163305a27a960e01b81526004016100da9190610309565b60405180910390fd5b80516100ee8261033e565b179392505050565b5f54610100900460ff161561015d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100da565b5f5460ff908116146101ac575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101c2575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f5f60e0888a0312156101ef575f5ffd5b87516101fa816101ae565b602089015190975061020b816101ae565b604089015190965061021c816101ae565b606089015190955061022d816101ae565b608089015190945061023e816101ae565b60a089015190935063ffffffff81168114610257575f5ffd5b60c08901519092506001600160401b03811115610272575f5ffd5b88015f601f82018b13610283575f5ffd5b81516001600160401b0381111561029c5761029c6101c5565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102ca576102ca6101c5565b6040528181528382016020018d10156102e1575f5ffd5b8160208501602083015e5f602083830101528092508094505050505092959891949750929550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8051602080830151919081101561035e575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051610100516101205161014051615bfa6104565f395f8181610fde0152613dc701525f8181610412015261317001525f81816107030152818161326f0152818161354101526136fa01525f818161075301528181610cf301528181610eb601528181611056015281816113af0152818161181101528181612480015261412a01525f818161043901528181610e340152818161130e0152818161158201528181612d7101528181612f5201526133b501525f818161036f01528181610e02015281816114d6015261338f01525f81816105e201528181612b370152613e360152615bfa5ff3fe608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636d70f7ae1161017b578063bb45fef2116100e4578063e4cc3f901161009e578063f698da2511610079578063f698da25146107ce578063fabc1cbc146107d6578063fd8aa88d146107e9578063fe4b84df146107fc575f5ffd5b8063e4cc3f9014610788578063eea9064b1461079b578063f0e0e676146107ae575f5ffd5b8063bb45fef2146106b9578063bfae3fd2146106e6578063c448feb8146106f9578063c978f7ac1461072d578063ca8aa7c71461074e578063da8be86414610775575f5ffd5b80639104c319116101355780639104c319146106175780639435bb431461063257806399f5371b14610645578063a178848414610665578063a33a343314610684578063b7f06ebe14610697575f5ffd5b80636d70f7ae1461057a5780636e1744481461058d578063778e55f3146105a057806378296ec5146105ca578063886f1195146105dd5780639004134714610604575f5ffd5b806354b7c96c1161021d5780635c975abb116101d75780635c975abb146104d45780635d975e88146104dc5780635dd68579146104fd57806360a0d1ce1461051e57806365da12641461053157806366d5ba9314610559575f5ffd5b806354b7c96c1461045b57806354fd4d501461046e578063595c6a6714610483578063597b36da1461048b5780635ac86ab71461049e5780635ae679a7146104c1575f5ffd5b806339b70e381161026e57806339b70e381461036a5780633c651cf2146103a95780633cdeb5e0146103bc5780633e28391d146103ea5780634657e26a1461040d5780634665bcda14610434575f5ffd5b806304a4f979146102b55780630b9f487a146102ef5780630dd8dd0214610302578063136439dd1461032257806325df922e146103375780632aa6d88814610357575b5f5ffd5b6102dc7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b6102dc6102fd366004614a64565b61080f565b610315610310366004614afb565b610897565b6040516102e69190614b39565b610335610330366004614b70565b610b09565b005b61034a610345366004614d05565b610b43565b6040516102e69190614db3565b610335610365366004614e15565b610ca3565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102e6565b6103356103b7366004614e73565b610df7565b6103916103ca366004614eb6565b6001600160a01b039081165f908152609960205260409020600101541690565b6103fd6103f8366004614eb6565b610f4a565b60405190151581526020016102e6565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b610335610469366004614ed1565b610f69565b610476610fd7565b6040516102e69190614f36565b610335611007565b6102dc610499366004615004565b61101b565b6103fd6104ac366004615035565b606654600160ff9092169190911b9081161490565b6102dc6104cf366004615069565b61104a565b6066546102dc565b6104ef6104ea366004614b70565b6111bc565b6040516102e692919061519e565b61051061050b366004614eb6565b6111d9565b6040516102e6929190615210565b61033561052c36600461527d565b611303565b61039161053f366004614eb6565b609a6020525f90815260409020546001600160a01b031681565b61056c610567366004614eb6565b6114ae565b6040516102e69291906152bc565b6103fd610588366004614eb6565b6117ae565b6102dc61059b366004614ed1565b6117e6565b6102dc6105ae366004614ed1565b609860209081525f928352604080842090915290825290205481565b6103356105d83660046152ce565b611890565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b61034a61061236600461531e565b611926565b61039173beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61033561064036600461536a565b6119fc565b610658610653366004614b70565b611ab7565b6040516102e69190615406565b6102dc610673366004614eb6565b609f6020525f908152604090205481565b610315610692366004615418565b611bd3565b6103fd6106a5366004614b70565b609e6020525f908152604090205460ff1681565b6103fd6106c73660046154ff565b609c60209081525f928352604080842090915290825290205460ff1681565b6102dc6106f4366004614ed1565b611beb565b60405163ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526020016102e6565b61074061073b36600461531e565b611c27565b6040516102e6929190615529565b6103917f000000000000000000000000000000000000000000000000000000000000000081565b610315610783366004614eb6565b611eb4565b610335610796366004615548565b611fdd565b6103356107a9366004615418565b612015565b6107c16107bc3660046155c6565b612080565b6040516102e69190615673565b6102dc612125565b6103356107e4366004614b70565b6121de565b6103156107f7366004614eb6565b61224c565b61033561080a366004614b70565b61226f565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f9061088d9060e00160405160208183030381529060405280519060200120612380565b9695505050505050565b606060016108a4816123ae565b6108ac6123dc565b5f836001600160401b038111156108c5576108c5614b87565b6040519080825280602002602001820160405280156108ee578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610afa5786868281811061092857610928615685565b905060200281019061093a9190615699565b6109489060208101906156b7565b905087878381811061095c5761095c615685565b905060200281019061096e9190615699565b61097890806156b7565b905014610998576040516343714afd60e01b815260040160405180910390fd5b5f610a0233848a8a868181106109b0576109b0615685565b90506020028101906109c29190615699565b6109cc90806156b7565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061243592505050565b9050610ad433848a8a86818110610a1b57610a1b615685565b9050602002810190610a2d9190615699565b610a3790806156b7565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610a7c57610a7c615685565b9050602002810190610a8e9190615699565b610a9c9060208101906156b7565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250889250612587915050565b848381518110610ae657610ae6615685565b60209081029190910101525060010161090e565b5050600160c955949350505050565b610b11612b22565b6066548181168114610b365760405163c61dca5d60e01b815260040160405180910390fd5b610b3f82612bc5565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610b6c868387612435565b90505f85516001600160401b03811115610b8857610b88614b87565b604051908082528060200260200182016040528015610bb1578160200160208202803683370190505b5090505f5b8651811015610c96576001600160a01b0388165f90815260a260205260408120885182908a9085908110610bec57610bec615685565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610c70878381518110610c3e57610c3e615685565b6020026020010151858481518110610c5857610c58615685565b602002602001015183612c029092919063ffffffff16565b838381518110610c8257610c82615685565b602090810291909101015250600101610bb6565b50925050505b9392505050565b610cab6123dc565b610cb433610f4a565b15610cd257604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610d3c575f5ffd5b505af1158015610d4e573d5f5f3e3d5ffd5b50505050610d5c3385612c20565b610d663333612c82565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610ddf9291906156fc565b60405180910390a2610df1600160c955565b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610e565750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610e735760405163045206a560e21b815260040160405180910390fd5b610e7b6123dc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015610efb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1f919061572a565b90505f610f2d878784612f0b565b9050610f3d838888888886612fed565b505050610df1600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b81610f7381613132565b610f905760405163932d94f760e01b815260040160405180910390fd5b610f986123dc565b610fa1836117ae565b610fbe576040516325ec6c1f60e01b815260040160405180910390fd5b610fc88383612c20565b610fd2600160c955565b505050565b60606110027f00000000000000000000000000000000000000000000000000000000000000006131dc565b905090565b61100f612b22565b6110195f19612bc5565b565b5f8160405160200161102d9190615406565b604051602081830303815290604052805190602001209050919050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611094576040516323d871a560e01b815260040160405180910390fd5b61109c6123dc565b6001600160a01b038088165f9081526098602090815260408083209388168352929052908120546110da906001600160401b03808716908616613219565b90505f6110e989878787613231565b90506110f58183615759565b9250611103895f88856132ee565b604080516001600160a01b038881168252602082018690528b16917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a261115286613368565b6001600160a01b0316633fb99ca5898989876040518563ffffffff1660e01b8152600401611183949392919061576c565b5f604051808303815f87803b15801561119a575f5ffd5b505af11580156111ac573d5f5f3e3d5ffd5b50505050505061088d600160c955565b6111c4614925565b60606111cf836133da565b9094909350915050565b6060805f6111e68461224c565b8051909150806001600160401b0381111561120357611203614b87565b60405190808252806020026020018201604052801561123c57816020015b611229614925565b8152602001906001900390816112215790505b509350806001600160401b0381111561125757611257614b87565b60405190808252806020026020018201604052801561128a57816020015b60608152602001906001900390816112755790505b5092505f5b818110156112fb576112b98382815181106112ac576112ac615685565b60200260200101516133da565b8683815181106112cb576112cb615685565b602002602001018684815181106112e4576112e4615685565b60209081029190910101919091525260010161128f565b505050915091565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461134c57604051633213a66160e21b815260040160405180910390fd5b6113546123dc565b61135d83610f4a565b15610fc8576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa1580156113f4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611418919061572a565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac084528252808320815192830190915254815291925061147e866114766001600160401b0380871690891661362d565b849190613641565b90506114a0848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846132ee565b50505050610fd2600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd906024015f60405180830381865afa15801561151a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611541919081019061581c565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa1580156115c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115eb91906158d7565b9050805f036115ff57509094909350915050565b5f8351600161160e9190615759565b6001600160401b0381111561162557611625614b87565b60405190808252806020026020018201604052801561164e578160200160208202803683370190505b5090505f845160016116609190615759565b6001600160401b0381111561167757611677614b87565b6040519080825280602002602001820160405280156116a0578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106116cb576116cb615685565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106116ff576116ff615685565b60209081029190910101525f5b85518110156117a05785818151811061172757611727615685565b602002602001015183828151811061174157611741615685565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061177357611773615685565b602002602001015182828151811061178d5761178d615685565b602090810291909101015260010161170c565b509097909650945050505050565b5f6001600160a01b038216158015906117e057506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015611856573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061187a919061572a565b90506118888484835f613231565b949350505050565b8261189a81613132565b6118b75760405163932d94f760e01b815260040160405180910390fd5b6118c0846117ae565b6118dd576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b670809084846040516119189291906156fc565b60405180910390a250505050565b60605f82516001600160401b0381111561194257611942614b87565b60405190808252806020026020018201604052801561196b578160200160208202803683370190505b5090505f5b83518110156119f4576001600160a01b0385165f90815260986020526040812085519091908690849081106119a7576119a7615685565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f20548282815181106119e1576119e1615685565b6020908102919091010152600101611970565b509392505050565b6002611a07816123ae565b611a0f6123dc565b855f5b81811015611aa257611a9a898983818110611a2f57611a2f615685565b9050602002810190611a4191906158ee565b611a4a90615902565b888884818110611a5c57611a5c615685565b9050602002810190611a6e91906156b7565b888886818110611a8057611a80615685565b9050602002016020810190611a95919061590d565b61365f565b600101611a12565b5050611aae600160c955565b50505050505050565b611abf614925565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611b6d57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611b4f575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611bc357602002820191905f5260205f20905b815481526020019060010190808311611baf575b5050505050815250509050919050565b6060611bde33611eb4565b9050610c9c848484612015565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610c9c90613aa1565b60608082516001600160401b03811115611c4357611c43614b87565b604051908082528060200260200182016040528015611c6c578160200160208202803683370190505b50915082516001600160401b03811115611c8857611c88614b87565b604051908082528060200260200182016040528015611cb1578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611cdc868387612435565b90505f5b8551811015611ea9575f611d0c878381518110611cff57611cff615685565b6020026020010151613368565b9050806001600160a01b031663fe243a1789898581518110611d3057611d30615685565b60200260200101516040518363ffffffff1660e01b8152600401611d6a9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611d85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da991906158d7565b858381518110611dbb57611dbb615685565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f898581518110611dfe57611dfe615685565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050611e82868481518110611e5057611e50615685565b6020026020010151858581518110611e6a57611e6a615685565b6020026020010151836136419092919063ffffffff16565b878481518110611e9457611e94615685565b60209081029190910101525050600101611ce0565b5050505b9250929050565b6060611ebe6123dc565b611ec782610f4a565b611ee45760405163a5c7c44560e01b815260040160405180910390fd5b611eed826117ae565b15611f0b576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b03831614611fc3576001600160a01b038083165f908152609a602052604090205416611f3e81613132565b80611f6457506001600160a01b038181165f908152609960205260409020600101541633145b611f8157604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b611fcc82613ac0565b9050611fd8600160c955565b919050565b6002611fe8816123ae565b611ff06123dc565b612004611ffc86615902565b85858561365f565b61200e600160c955565b5050505050565b61201d6123dc565b61202633610f4a565b1561204457604051633bf2b50360e11b815260040160405180910390fd5b61204d836117ae565b61206a576040516325ec6c1f60e01b815260040160405180910390fd5b61207633848484613d00565b610fc83384612c82565b60605f83516001600160401b0381111561209c5761209c614b87565b6040519080825280602002602001820160405280156120cf57816020015b60608152602001906001900390816120ba5790505b5090505f5b84518110156119f4576121008582815181106120f2576120f2615685565b602002602001015185611926565b82828151811061211257612112615685565b60209081029190910101526001016120d4565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612192613dbf565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6121e6613e34565b6066548019821981161461220d5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906117e090613ee5565b5f54610100900460ff161580801561228d57505f54600160ff909116105b806122a65750303b1580156122a657505f5460ff166001145b61230e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561232f575f805461ff0019166101001790555b61233882612bc5565b8015610b3f575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b5f612389612125565b60405161190160f01b602082015260228101919091526042810183905260620161102d565b606654600160ff83161b908116036123d95760405163840a48d560e01b815260040160405180910390fd5b50565b600260c9540361242e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401612305565b600260c955565b60605f82516001600160401b0381111561245157612451614b87565b60405190808252806020026020018201604052801561247a578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016124cc929190615928565b5f60405180830381865afa1580156124e6573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261250d919081019061594b565b90505f5b845181101561257c576125578786838151811061253057612530615685565b602002602001015184848151811061254a5761254a615685565b6020026020010151612f0b565b83828151811061256957612569615685565b6020908102919091010152600101612511565b509095945050505050565b5f6001600160a01b0386166125af576040516339b190bb60e11b815260040160405180910390fd5b83515f036125d05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b038111156125ea576125ea614b87565b604051908082528060200260200182016040528015612613578160200160208202803683370190505b5090505f85516001600160401b0381111561263057612630614b87565b604051908082528060200260200182016040528015612659578160200160208202803683370190505b5090505f5b8651811015612955575f61267d888381518110611cff57611cff615685565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106126b6576126b6615685565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f20905061272f8884815181106126f4576126f4615685565b602002602001015188858151811061270e5761270e615685565b60209081029190910181015160408051928301905284548252909190613641565b84848151811061274157612741615685565b60200260200101818152505061278088848151811061276257612762615685565b60209081029190910181015160408051928301905283548252613ef1565b85848151811061279257612792615685565b60209081029190910101526001600160a01b038a1615612827576127e98a8a85815181106127c2576127c2615685565b60200260200101518786815181106127dc576127dc615685565b6020026020010151613f05565b6128278a8c8b868151811061280057612800615685565b602002602001015187878151811061281a5761281a615685565b60200260200101516132ee565b5f826001600160a01b031663724af4238d8c878151811061284a5761284a615685565b60200260200101518c888151811061286457612864615685565b60200260200101516040518463ffffffff1660e01b815260040161288a939291906159da565b6020604051808303815f875af11580156128a6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128ca91906158d7565b9050805f03612947575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b868151811061290a5761290a615685565b602002602001015161292f856040518060200160405290815f82015481525050613aa1565b60405161293e939291906159da565b60405180910390a15b50505080600101905061265e565b506001600160a01b0388165f908152609f6020526040812080549182919061297c836159fe565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f6129e28261101b565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612a98926005850192019061497e565b5060c08201518051612ab49160068401916020909101906149e1565b5050506001600160a01b038b165f90815260a360205260409020612ad89082613f6f565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612b0c93929190615a16565b60405180910390a19a9950505050505050505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015612b84573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ba89190615a40565b61101957604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61188882612c1a612c1387613aa1565b8690613f7a565b90613f7a565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c69101612240565b5f612c8c816123ae565b5f5f612c97856114ae565b915091505f612ca75f8685612435565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611aae5773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612d3a57612d3a615685565b60200260200101516001600160a01b031603612eaa5760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015612db8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ddc919061572a565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f878581518110612e1557612e15615685565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050612e89858481518110612e6757612e67615685565b6020026020010151836001600160401b0316836136419092919063ffffffff16565b858481518110612e9b57612e9b615685565b60200260200101818152505050505b612f038688868481518110612ec157612ec1615685565b60200260200101515f878681518110612edc57612edc615685565b6020026020010151878781518110612ef657612ef6615685565b6020026020010151612fed565b600101612d01565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b03841601612fdd5760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015612f99573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fbd919061572a565b9050612fd56001600160401b0384811690831661362d565b915050610c9c565b506001600160401b031692915050565b805f0361300d57604051630a33bc6960e21b815260040160405180910390fd5b811561312a576001600160a01b038086165f90815260a26020908152604080832093881683529290522061304381858585613f8e565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061308190613aa1565b604051613090939291906159da565b60405180910390a16130a186610f4a565b15611aae576001600160a01b038088165f908152609860209081526040808320938916835292905290812080548592906130dc908490615759565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c878786604051613120939291906159da565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af11580156131b8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117e09190615a40565b60605f6131e883614009565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f6132278483856001614030565b6118889085615a5b565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906132629061408b565b90505f6132c860016132947f000000000000000000000000000000000000000000000000000000000000000043615a6e565b61329e9190615a6e565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906140a5565b90505f6132d58284615a5b565b90506132e28187876140c1565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613324908490615a5b565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611918939291906159da565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146133b3577f00000000000000000000000000000000000000000000000000000000000000006117e0565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b6133e2614925565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561349457602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613476575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156134ea57602002820191905f5260205f20905b8154815260200190600101908083116134d6575b50505050508152505091508160a00151516001600160401b0381111561351257613512614b87565b60405190808252806020026020018201604052801561353b578160200160208202803683370190505b5090505f7f0000000000000000000000000000000000000000000000000000000000000000836080015161356f9190615a8a565b90505f4363ffffffff168263ffffffff16106135a05761359b845f015185602001518660a00151612435565b6135b7565b6135b7845f015185602001518660a00151856140df565b90505f5b8460a00151518110156112fb576136088560c0015182815181106135e1576135e1615685565b60200260200101518383815181106135fb576135fb615685565b602002602001015161420d565b84828151811061361a5761361a615685565b60209081029190910101526001016135bb565b5f610c9c8383670de0b6b3a7640000614218565b5f6118888261365961365287613aa1565b869061362d565b9061362d565b60a0840151518214613684576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b0316146136ba576040516316110d3560e21b815260040160405180910390fd5b5f6136c48561101b565b5f818152609e602052604090205490915060ff166136f5576040516387c9d21960e01b815260040160405180910390fd5b60605f7f000000000000000000000000000000000000000000000000000000000000000087608001516137289190615a8a565b90508063ffffffff164363ffffffff1611613756576040516378f67ae160e11b815260040160405180910390fd5b61376d875f015188602001518960a00151846140df565b87516001600160a01b03165f90815260a3602052604090209092506137939150836142fd565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff19169055906137ea6005830182614a1a565b6137f7600683015f614a1a565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a00906138409084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a0151919093169261387a918490612435565b90505f5b8860a0015151811015613a96575f6138a58a60a001518381518110611cff57611cff615685565b90505f6138db8b60c0015184815181106138c1576138c1615685565b60200260200101518785815181106135fb576135fb615685565b9050805f036138eb575050613a8e565b87156139b957816001600160a01b0316632eae418c8c5f01518d60a00151868151811061391a5761391a615685565b60200260200101518d8d8881811061393457613934615685565b90506020020160208101906139499190614eb6565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b15801561399e575f5ffd5b505af11580156139b0573d5f5f3e3d5ffd5b50505050613a8b565b5f5f836001600160a01b03166350ff72258e5f01518f60a0015188815181106139e4576139e4615685565b6020026020010151866040518463ffffffff1660e01b8152600401613a0b939291906159da565b60408051808303815f875af1158015613a26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a4a9190615aa6565b91509150613a88878e5f01518f60a001518881518110613a6c57613a6c615685565b602002602001015185858b8b81518110612ef657612ef6615685565b50505b50505b60010161387e565b505050505050505050565b80515f9015613ab15781516117e0565b670de0b6b3a764000092915050565b60606001613acd816123ae565b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613b2c866114ae565b9150915081515f03613b4057505050613cfa565b81516001600160401b03811115613b5957613b59614b87565b604051908082528060200260200182016040528015613b82578160200160208202803683370190505b5094505f613b91878585612435565b90505f5b8351811015613cf4576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613c1557613c15615685565b6020026020010151835f81518110613c2f57613c2f615685565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613c6157613c61615685565b6020026020010151825f81518110613c7b57613c7b615685565b602002602001018181525050848481518110613c9957613c99615685565b6020026020010151815f81518110613cb357613cb3615685565b602002602001018181525050613ccc8b89858585612587565b8a8581518110613cde57613cde615685565b6020908102919091010152505050600101613b95565b50505050505b50919050565b6001600160a01b038084165f908152609960205260409020600101541680613d285750610df1565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff1615613d6c57604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161200e908290613db390889088908490889061080f565b85516020870151614308565b60605f613deb7f00000000000000000000000000000000000000000000000000000000000000006131dc565b9050805f81518110613dff57613dff615685565b016020908101516040516001600160f81b03199091169181019190915260210160405160208183030381529060405291505090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e90573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613eb49190615ac8565b6001600160a01b0316336001600160a01b0316146110195760405163794821ff60e01b815260040160405180910390fd5b60605f610c9c8361435a565b5f610c9c613efe84613aa1565b839061362d565b6001600160a01b038084165f90815260a5602090815260408083209386168352929052908120613f349061408b565b9050610df143613f448484615759565b6001600160a01b038088165f90815260a560209081526040808320938a1683529290522091906143b3565b5f610c9c83836143be565b5f610c9c83670de0b6b3a764000084614218565b825f03613fba57604080516020810190915284548152613fb3908290612c1a90613aa1565b8455610df1565b6040805160208101909152845481525f90613fd6908584613641565b90505f613fe38483615759565b90505f613ffe84612c1a613ff7888a615759565b8590613f7a565b875550505050505050565b5f60ff8216601f8111156117e057604051632cd44ac360e21b815260040160405180910390fd5b5f5f61403d868686614218565b9050600183600281111561405357614053615ae3565b14801561406f57505f848061406a5761406a615af7565b868809115b156140825761407f600182615759565b90505b95945050505050565b5f614096828261440a565b6001600160e01b031692915050565b5f6140b183838361444f565b6001600160e01b03169392505050565b5f6118886140cf8385615b0b565b85906001600160401b031661362d565b60605f83516001600160401b038111156140fb576140fb614b87565b604051908082528060200260200182016040528015614124578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b815260040161417893929190615b2a565b5f60405180830381865afa158015614192573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526141b9919081019061594b565b90505f5b8551811015614201576141dc8887838151811061253057612530615685565b8382815181106141ee576141ee615685565b60209081029190910101526001016141bd565b50909695505050505050565b5f610c9c838361362d565b5f80805f19858709858702925082811083820303915050805f0361424f5783828161424557614245615af7565b0492505050610c9c565b8084116142965760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612305565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610c9c8383614498565b4281101561432957604051630819bdcd60e01b815260040160405180910390fd5b61433d6001600160a01b038516848461457b565b610df157604051638baa579f60e01b815260040160405180910390fd5b6060815f018054806020026020016040519081016040528092919081815260200182805480156143a757602002820191905f5260205f20905b815481526020019060010190808311614393575b50505050509050919050565b610fd28383836145cf565b5f81815260018301602052604081205461440357508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556117e0565b505f6117e0565b81545f9080156144475761443084614423600184615a5b565b5f91825260209091200190565b5464010000000090046001600160e01b0316611888565b509092915050565b82545f9081614460868683856146d5565b9050801561448e5761447786614423600184615a5b565b5464010000000090046001600160e01b031661088d565b5091949350505050565b5f8181526001830160205260408120548015614572575f6144ba600183615a5b565b85549091505f906144cd90600190615a5b565b905081811461452c575f865f0182815481106144eb576144eb615685565b905f5260205f200154905080875f01848154811061450b5761450b615685565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061453d5761453d615b63565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506117e0565b5f9150506117e0565b5f5f5f6145888585614728565b90925090505f8160048111156145a0576145a0615ae3565b1480156145be5750856001600160a01b0316826001600160a01b0316145b8061088d575061088d868686614767565b82548015614687575f6145e785614423600185615a5b565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b03166020840152919250908516101561463a5760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff808616911603614685578261465b86614423600186615a5b565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b818310156119f4575f6146ea848461484e565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561471457809250614722565b61471f816001615759565b93505b506146d7565b5f5f825160410361475c576020830151604084015160608501515f1a61475087828585614868565b94509450505050611ead565b505f90506002611ead565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161478f929190615b77565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516147cd9190615b8f565b5f60405180830381855afa9150503d805f8114614805576040519150601f19603f3d011682016040523d82523d5f602084013e61480a565b606091505b509150915081801561481e57506020815110155b801561088d57508051630b135d3f60e11b9061484390830160209081019084016158d7565b149695505050505050565b5f61485c6002848418615ba5565b610c9c90848416615759565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561489d57505f9050600361491c565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156148ee573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614916575f6001925092505061491c565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f209081019282156149d1579160200282015b828111156149d157825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061499c565b506149dd929150614a31565b5090565b828054828255905f5260205f209081019282156149d1579160200282015b828111156149d15782518255916020019190600101906149ff565b5080545f8255905f5260205f20908101906123d991905b5b808211156149dd575f8155600101614a32565b6001600160a01b03811681146123d9575f5ffd5b8035611fd881614a45565b5f5f5f5f5f60a08688031215614a78575f5ffd5b8535614a8381614a45565b94506020860135614a9381614a45565b93506040860135614aa381614a45565b94979396509394606081013594506080013592915050565b5f5f83601f840112614acb575f5ffd5b5081356001600160401b03811115614ae1575f5ffd5b6020830191508360208260051b8501011115611ead575f5ffd5b5f5f60208385031215614b0c575f5ffd5b82356001600160401b03811115614b21575f5ffd5b614b2d85828601614abb565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561257c578351835260209384019390920191600101614b52565b5f60208284031215614b80575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614bbd57614bbd614b87565b60405290565b604080519081016001600160401b0381118282101715614bbd57614bbd614b87565b604051601f8201601f191681016001600160401b0381118282101715614c0d57614c0d614b87565b604052919050565b5f6001600160401b03821115614c2d57614c2d614b87565b5060051b60200190565b5f82601f830112614c46575f5ffd5b8135614c59614c5482614c15565b614be5565b8082825260208201915060208360051b860101925085831115614c7a575f5ffd5b602085015b83811015614ca0578035614c9281614a45565b835260209283019201614c7f565b5095945050505050565b5f82601f830112614cb9575f5ffd5b8135614cc7614c5482614c15565b8082825260208201915060208360051b860101925085831115614ce8575f5ffd5b602085015b83811015614ca0578035835260209283019201614ced565b5f5f5f60608486031215614d17575f5ffd5b8335614d2281614a45565b925060208401356001600160401b03811115614d3c575f5ffd5b614d4886828701614c37565b92505060408401356001600160401b03811115614d63575f5ffd5b614d6f86828701614caa565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614da9578151865260209586019590910190600101614d8b565b5093949350505050565b602081525f610c9c6020830184614d79565b803563ffffffff81168114611fd8575f5ffd5b5f5f83601f840112614de8575f5ffd5b5081356001600160401b03811115614dfe575f5ffd5b602083019150836020828501011115611ead575f5ffd5b5f5f5f5f60608587031215614e28575f5ffd5b8435614e3381614a45565b9350614e4160208601614dc5565b925060408501356001600160401b03811115614e5b575f5ffd5b614e6787828801614dd8565b95989497509550505050565b5f5f5f5f60808587031215614e86575f5ffd5b8435614e9181614a45565b93506020850135614ea181614a45565b93969395505050506040820135916060013590565b5f60208284031215614ec6575f5ffd5b8135610c9c81614a45565b5f5f60408385031215614ee2575f5ffd5b8235614eed81614a45565b91506020830135614efd81614a45565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610c9c6020830184614f08565b5f60e08284031215614f58575f5ffd5b614f60614b9b565b9050614f6b82614a59565b8152614f7960208301614a59565b6020820152614f8a60408301614a59565b604082015260608281013590820152614fa560808301614dc5565b608082015260a08201356001600160401b03811115614fc2575f5ffd5b614fce84828501614c37565b60a08301525060c08201356001600160401b03811115614fec575f5ffd5b614ff884828501614caa565b60c08301525092915050565b5f60208284031215615014575f5ffd5b81356001600160401b03811115615029575f5ffd5b61188884828501614f48565b5f60208284031215615045575f5ffd5b813560ff81168114610c9c575f5ffd5b6001600160401b03811681146123d9575f5ffd5b5f5f5f5f5f5f86880360e081121561507f575f5ffd5b873561508a81614a45565b96506040601f198201121561509d575f5ffd5b506020870194506060870135935060808701356150b981614a45565b925060a08701356150c981615055565b915060c08701356150d981615055565b809150509295509295509295565b5f8151808452602084019350602083015f5b82811015614da95781516001600160a01b03168652602095860195909101906001016150f9565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f9161516b9085018263ffffffff169052565b5060a082015160e060a085015261518560e08501826150e7565b905060c083015184820360c08601526140828282614d79565b604081525f6151b06040830185615120565b82810360208401526140828185614d79565b5f82825180855260208501945060208160051b830101602085015f5b8381101561420157601f198584030188526151fa838351614d79565b60209889019890935091909101906001016151de565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b8281101561526757605f19878603018452615252858351615120565b94506020938401939190910190600101615236565b50505050828103602084015261408281856151c2565b5f5f5f6060848603121561528f575f5ffd5b833561529a81614a45565b92506020840135915060408401356152b181615055565b809150509250925092565b604081525f6151b060408301856150e7565b5f5f5f604084860312156152e0575f5ffd5b83356152eb81614a45565b925060208401356001600160401b03811115615305575f5ffd5b61531186828701614dd8565b9497909650939450505050565b5f5f6040838503121561532f575f5ffd5b823561533a81614a45565b915060208301356001600160401b03811115615354575f5ffd5b61536085828601614c37565b9150509250929050565b5f5f5f5f5f5f6060878903121561537f575f5ffd5b86356001600160401b03811115615394575f5ffd5b6153a089828a01614abb565b90975095505060208701356001600160401b038111156153be575f5ffd5b6153ca89828a01614abb565b90955093505060408701356001600160401b038111156153e8575f5ffd5b6153f489828a01614abb565b979a9699509497509295939492505050565b602081525f610c9c6020830184615120565b5f5f5f6060848603121561542a575f5ffd5b833561543581614a45565b925060208401356001600160401b0381111561544f575f5ffd5b840160408187031215615460575f5ffd5b615468614bc3565b81356001600160401b0381111561547d575f5ffd5b8201601f8101881361548d575f5ffd5b80356001600160401b038111156154a6576154a6614b87565b6154b9601f8201601f1916602001614be5565b8181528960208385010111156154cd575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f60408385031215615510575f5ffd5b823561551b81614a45565b946020939093013593505050565b604081525f6151b06040830185614d79565b80151581146123d9575f5ffd5b5f5f5f5f6060858703121561555b575f5ffd5b84356001600160401b03811115615570575f5ffd5b850160e08188031215615581575f5ffd5b935060208501356001600160401b0381111561559b575f5ffd5b6155a787828801614abb565b90945092505060408501356155bb8161553b565b939692955090935050565b5f5f604083850312156155d7575f5ffd5b82356001600160401b038111156155ec575f5ffd5b8301601f810185136155fc575f5ffd5b803561560a614c5482614c15565b8082825260208201915060208360051b85010192508783111561562b575f5ffd5b6020840193505b8284101561565657833561564581614a45565b825260209384019390910190615632565b945050505060208301356001600160401b03811115615354575f5ffd5b602081525f610c9c60208301846151c2565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126156ad575f5ffd5b9190910192915050565b5f5f8335601e198436030181126156cc575f5ffd5b8301803591506001600160401b038211156156e5575f5ffd5b6020019150600581901b3603821315611ead575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f6020828403121561573a575f5ffd5b8151610c9c81615055565b634e487b7160e01b5f52601160045260245ffd5b808201808211156117e0576117e0615745565b60a08101853561577b81614a45565b6001600160a01b0316825263ffffffff61579760208801614dc5565b16602083015260408201949094526001600160a01b03929092166060830152608090910152919050565b5f82601f8301126157d0575f5ffd5b81516157de614c5482614c15565b8082825260208201915060208360051b8601019250858311156157ff575f5ffd5b602085015b83811015614ca0578051835260209283019201615804565b5f5f6040838503121561582d575f5ffd5b82516001600160401b03811115615842575f5ffd5b8301601f81018513615852575f5ffd5b8051615860614c5482614c15565b8082825260208201915060208360051b850101925087831115615881575f5ffd5b6020840193505b828410156158ac57835161589b81614a45565b825260209384019390910190615888565b8095505050505060208301516001600160401b038111156158cb575f5ffd5b615360858286016157c1565b5f602082840312156158e7575f5ffd5b5051919050565b5f823560de198336030181126156ad575f5ffd5b5f6117e03683614f48565b5f6020828403121561591d575f5ffd5b8135610c9c8161553b565b6001600160a01b03831681526040602082018190525f90611888908301846150e7565b5f6020828403121561595b575f5ffd5b81516001600160401b03811115615970575f5ffd5b8201601f81018413615980575f5ffd5b805161598e614c5482614c15565b8082825260208201915060208360051b8501019250868311156159af575f5ffd5b6020840193505b8284101561088d5783516159c981615055565b8252602093840193909101906159b6565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615a0f57615a0f615745565b5060010190565b838152606060208201525f615a2e6060830185615120565b828103604084015261088d8185614d79565b5f60208284031215615a50575f5ffd5b8151610c9c8161553b565b818103818111156117e0576117e0615745565b63ffffffff82811682821603908111156117e0576117e0615745565b63ffffffff81811683821601908111156117e0576117e0615745565b5f5f60408385031215615ab7575f5ffd5b505080516020909101519092909150565b5f60208284031215615ad8575f5ffd5b8151610c9c81614a45565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156117e0576117e0615745565b6001600160a01b03841681526060602082018190525f90615b4d908301856150e7565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6118886040830184614f08565b5f82518060208501845e5f920191825250919050565b5f82615bbf57634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220ea1602dd19050342f24ce538156384c9ea0a5c8df6b6e3d6d51d9c92dc3d340c64736f6c634300081b0033", } // DelegationManagerABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/EigenPod/binding.go b/pkg/bindings/EigenPod/binding.go index 82eeea0882..321ded243d 100644 --- a/pkg/bindings/EigenPod/binding.go +++ b/pkg/bindings/EigenPod/binding.go @@ -85,8 +85,8 @@ type IEigenPodTypesWithdrawalRequest struct { // EigenPodMetaData contains all meta data concerning the EigenPod contract. var EigenPodMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_ethPOS\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"},{\"name\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"},{\"name\":\"_GENESIS_TIME\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"GENESIS_TIME\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activeValidatorCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkpointBalanceExitedGwei\",\"inputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentCheckpoint\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.Checkpoint\",\"components\":[{\"name\":\"beaconBlockRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proofsRemaining\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"podBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"balanceDeltasGwei\",\"type\":\"int64\",\"internalType\":\"int64\"},{\"name\":\"prevBeaconBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentCheckpointTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ethPOS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getParentBlockRoot\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastCheckpointTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"podOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proofSubmitter\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recoverTokens\",\"inputs\":[{\"name\":\"tokenList\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"amountsToWithdraw\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setProofSubmitter\",\"inputs\":[{\"name\":\"newProofSubmitter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"depositDataRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"startCheckpoint\",\"inputs\":[{\"name\":\"revertIfNoBalance\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"validatorPubkeyHashToInfo\",\"inputs\":[{\"name\":\"validatorPubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.ValidatorInfo\",\"components\":[{\"name\":\"validatorIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastCheckpointedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorPubkeyToInfo\",\"inputs\":[{\"name\":\"validatorPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.ValidatorInfo\",\"components\":[{\"name\":\"validatorIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastCheckpointedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorStatus\",\"inputs\":[{\"name\":\"validatorPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorStatus\",\"inputs\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyCheckpointProofs\",\"inputs\":[{\"name\":\"balanceContainerProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.BalanceContainerProof\",\"components\":[{\"name\":\"balanceContainerRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"proofs\",\"type\":\"tuple[]\",\"internalType\":\"structBeaconChainProofs.BalanceProof[]\",\"components\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"balanceRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyStaleBalance\",\"inputs\":[{\"name\":\"beaconTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stateRootProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.StateRootProof\",\"components\":[{\"name\":\"beaconStateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.ValidatorProof\",\"components\":[{\"name\":\"validatorFields\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyWithdrawalCredentials\",\"inputs\":[{\"name\":\"beaconTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stateRootProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.StateRootProof\",\"components\":[{\"name\":\"beaconStateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"validatorIndices\",\"type\":\"uint40[]\",\"internalType\":\"uint40[]\"},{\"name\":\"validatorFieldsProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"validatorFields\",\"type\":\"bytes32[][]\",\"internalType\":\"bytes32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawRestakedBeaconChainETH\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amountWei\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawableRestakedExecutionLayerGwei\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"CheckpointCreated\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"beaconBlockRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validatorCount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CheckpointFinalized\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"totalShareDeltaWei\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EigenPodStaked\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NonBeaconChainETHReceived\",\"inputs\":[{\"name\":\"amountReceived\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProofSubmitterUpdated\",\"inputs\":[{\"name\":\"prevProofSubmitter\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newProofSubmitter\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RestakedBeaconChainETHWithdrawn\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorBalanceUpdated\",\"inputs\":[{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":false,\"internalType\":\"uint40\"},{\"name\":\"balanceTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newValidatorBalanceGwei\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorCheckpointed\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":true,\"internalType\":\"uint40\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRestaked\",\"inputs\":[{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":false,\"internalType\":\"uint40\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWithdrawn\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":true,\"internalType\":\"uint40\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"BeaconTimestampTooFarInPast\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotCheckpointTwiceInSingleBlock\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CheckpointAlreadyActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CredentialsAlreadyVerified\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ForkTimestampZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientWithdrawableBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEIP4788Response\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPubKeyLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidValidatorFieldsLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MsgValueNot32ETH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoActiveCheckpoint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoBalanceToCheckpoint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodOwner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodOwnerOrProofSubmitter\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"TimestampOutOfRange\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorInactiveOnBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorIsExitingBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorNotActiveInPod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorNotSlashedOnBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalCredentialsNotForEigenPod\",\"inputs\":[]}]", - Bin: "0x610100604052348015610010575f5ffd5b506040516140a63803806140a683398101604081905261002f91610197565b806100398161006e565b608052506001600160a01b0380851660a052831660c0526001600160401b03821660e0526100656100b4565b505050506102e7565b5f5f829050601f815111156100a1578260405163305a27a960e01b8152600401610098919061028c565b60405180910390fd5b80516100ac826102c1565b179392505050565b5f54610100900460ff161561011b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610098565b5f5460ff9081161461016a575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610180575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f608085870312156101aa575f5ffd5b84516101b58161016c565b60208601519094506101c68161016c565b60408601519093506001600160401b03811681146101e2575f5ffd5b60608601519092506001600160401b038111156101fd575f5ffd5b8501601f8101871361020d575f5ffd5b80516001600160401b0381111561022657610226610183565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025457610254610183565b60405281815282820160200189101561026b575f5ffd5b8160208401602083015e5f6020838301015280935050505092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e1575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051613d3861036e5f395f61063f01525f81816102c30152818161067a01528181610722015281816109ef01528181610bba01528181610ec301528181610f6a015281816111a0015281816114ee0152818161162201528181611b0101526129b301525f81816105010152610fd301525f610c260152613d385ff3fe60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f000000000000000000000000000000000000000000000000000000000000000061239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea264697066735822122061e410d8c1f7c2785eb753b582a764d216e3516fdd3e48d92a3159d9a329a5d964736f6c634300081b0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_ethPOS\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"},{\"name\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"activeValidatorCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkpointBalanceExitedGwei\",\"inputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentCheckpoint\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.Checkpoint\",\"components\":[{\"name\":\"beaconBlockRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proofsRemaining\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"podBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"balanceDeltasGwei\",\"type\":\"int64\",\"internalType\":\"int64\"},{\"name\":\"prevBeaconBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentCheckpointTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ethPOS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConsolidationRequestFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getParentBlockRoot\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWithdrawalRequestFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastCheckpointTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"podOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proofSubmitter\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recoverTokens\",\"inputs\":[{\"name\":\"tokenList\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"amountsToWithdraw\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"requestConsolidation\",\"inputs\":[{\"name\":\"requests\",\"type\":\"tuple[]\",\"internalType\":\"structIEigenPodTypes.ConsolidationRequest[]\",\"components\":[{\"name\":\"srcPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"targetPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"requestWithdrawal\",\"inputs\":[{\"name\":\"requests\",\"type\":\"tuple[]\",\"internalType\":\"structIEigenPodTypes.WithdrawalRequest[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amountGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"setProofSubmitter\",\"inputs\":[{\"name\":\"newProofSubmitter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"depositDataRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"startCheckpoint\",\"inputs\":[{\"name\":\"revertIfNoBalance\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"validatorPubkeyHashToInfo\",\"inputs\":[{\"name\":\"validatorPubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.ValidatorInfo\",\"components\":[{\"name\":\"validatorIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastCheckpointedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorPubkeyToInfo\",\"inputs\":[{\"name\":\"validatorPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.ValidatorInfo\",\"components\":[{\"name\":\"validatorIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastCheckpointedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorStatus\",\"inputs\":[{\"name\":\"validatorPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorStatus\",\"inputs\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyCheckpointProofs\",\"inputs\":[{\"name\":\"balanceContainerProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.BalanceContainerProof\",\"components\":[{\"name\":\"balanceContainerRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"proofs\",\"type\":\"tuple[]\",\"internalType\":\"structBeaconChainProofs.BalanceProof[]\",\"components\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"balanceRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyStaleBalance\",\"inputs\":[{\"name\":\"beaconTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stateRootProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.StateRootProof\",\"components\":[{\"name\":\"beaconStateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.ValidatorProof\",\"components\":[{\"name\":\"validatorFields\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyWithdrawalCredentials\",\"inputs\":[{\"name\":\"beaconTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stateRootProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.StateRootProof\",\"components\":[{\"name\":\"beaconStateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"validatorIndices\",\"type\":\"uint40[]\",\"internalType\":\"uint40[]\"},{\"name\":\"validatorFieldsProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"validatorFields\",\"type\":\"bytes32[][]\",\"internalType\":\"bytes32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawRestakedBeaconChainETH\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amountWei\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawableRestakedExecutionLayerGwei\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"CheckpointCreated\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"beaconBlockRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validatorCount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CheckpointFinalized\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"totalShareDeltaWei\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConsolidationRequested\",\"inputs\":[{\"name\":\"sourcePubkeyHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"targetPubkeyHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EigenPodStaked\",\"inputs\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExitRequested\",\"inputs\":[{\"name\":\"validatorPubkeyHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NonBeaconChainETHReceived\",\"inputs\":[{\"name\":\"amountReceived\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProofSubmitterUpdated\",\"inputs\":[{\"name\":\"prevProofSubmitter\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newProofSubmitter\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RestakedBeaconChainETHWithdrawn\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SwitchToCompoundingRequested\",\"inputs\":[{\"name\":\"validatorPubkeyHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorBalanceUpdated\",\"inputs\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"balanceTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newValidatorBalanceGwei\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorCheckpointed\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRestaked\",\"inputs\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWithdrawn\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalRequested\",\"inputs\":[{\"name\":\"validatorPubkeyHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"withdrawalAmountGwei\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"BeaconTimestampTooFarInPast\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotCheckpointTwiceInSingleBlock\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CheckpointAlreadyActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CredentialsAlreadyVerified\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FeeQueryFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ForkTimestampZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientFunds\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientWithdrawableBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEIP4788Response\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPubKeyLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidValidatorFieldsLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MsgValueNot32ETH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoActiveCheckpoint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoBalanceToCheckpoint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodOwner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodOwnerOrProofSubmitter\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PredeployFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RefundFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"TimestampOutOfRange\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorInactiveOnBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorIsExitingBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorNotActiveInPod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorNotSlashedOnBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalCredentialsNotForEigenPod\",\"inputs\":[]}]", + Bin: "0x60e060405234801561000f575f5ffd5b506040516148cd3803806148cd83398101604081905261002e91610188565b806100388161005f565b608052506001600160a01b0380841660a052821660c0526100576100a5565b5050506102b9565b5f5f829050601f81511115610092578260405163305a27a960e01b8152600401610089919061025e565b60405180910390fd5b805161009d82610293565b179392505050565b5f54610100900460ff161561010c5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610089565b5f5460ff9081161461015b575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610171575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f6060848603121561019a575f5ffd5b83516101a58161015d565b60208501519093506101b68161015d565b60408501519092506001600160401b038111156101d1575f5ffd5b8401601f810186136101e1575f5ffd5b80516001600160401b038111156101fa576101fa610174565b604051601f8201601f19908116603f011681016001600160401b038111828210171561022857610228610174565b60405281815282820160200188101561023f575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102b3575f198160200360031b1b821691505b50919050565b60805160a05160c0516145886103455f395f8181610329015281816106d40152818161077c01528181610a2a01528181610dd301528181610f9e015281816110a901528181611605015281816116ac0152818161193501528181611c8301528181611db001528181612286015261319001525f818161057a015261171501525f61100a01526145885ff3fe6080604052600436106101bd575f3560e01c80636691954e116100f2578063b522538a11610092578063d06d558711610062578063d06d55871461063f578063dda3346c1461065e578063ee94d67c1461067d578063f074ba621461069c575f5ffd5b8063b522538a146105ce578063c44e30dc146105ed578063c490744214610601578063c4d66de814610620575f5ffd5b80637439841f116100cd5780637439841f1461053457806374cdd7981461056957806388676cad1461059c5780639b4e4634146105bb575f5ffd5b80636691954e146104d65780636c0d2d5a146104e95780636fcd0e5314610508575f5ffd5b806342ecff2a1161015d57806352396a591161013857806352396a591461043657806354fd4d501461046a578063587533571461048b57806358eaee79146104aa575f5ffd5b806342ecff2a146102f25780634665bcda1461031857806347d283721461034b575f5ffd5b80632340e8d3116101985780632340e8d31461027a5780633474aa161461028f5780633f5fa57a146102c05780633f65cf19146102d3575f5ffd5b8063039157d2146101fb5780630b18ff661461021c5780631e51553314610258575f5ffd5b366101f7576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b348015610206575f5ffd5b5061021a610215366004613a2f565b6106bb565b005b348015610227575f5ffd5b5060335461023b906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610263575f5ffd5b5061026c6109f0565b60405190815260200161024f565b348015610285575f5ffd5b5061026c60395481565b34801561029a575f5ffd5b506034546001600160401b03165b6040516001600160401b03909116815260200161024f565b61021a6102ce366004613aea565b610a11565b3480156102de575f5ffd5b5061021a6102ed366004613b28565b610d7a565b3480156102fd575f5ffd5b50603a546102a890600160401b90046001600160401b031681565b348015610323575f5ffd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610356575f5ffd5b506103db6040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161024f91905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b348015610441575f5ffd5b506102a8610450366004613bff565b603b6020525f90815260409020546001600160401b031681565b348015610475575f5ffd5b5061047e611003565b60405161024f9190613c48565b348015610496575f5ffd5b50603e5461023b906001600160a01b031681565b3480156104b5575f5ffd5b506104c96104c4366004613c97565b61102e565b60405161024f9190613cfd565b61021a6104e4366004613aea565b611090565b3480156104f4575f5ffd5b5061026c610503366004613bff565b6113f3565b348015610513575f5ffd5b50610527610522366004613d0b565b611501565b60405161024f9190613d22565b34801561053f575f5ffd5b506104c961054e366004613d0b565b5f90815260366020526040902054600160c01b900460ff1690565b348015610574575f5ffd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a7575f5ffd5b5061021a6105b6366004613d82565b6115ac565b61021a6105c9366004613d9d565b6116a1565b3480156105d9575f5ffd5b506105276105e8366004613c97565b61181f565b3480156105f8575f5ffd5b5061026c61190e565b34801561060c575f5ffd5b5061021a61061b366004613e32565b61192a565b34801561062b575f5ffd5b5061021a61063a366004613e5c565b611a61565b34801561064a575f5ffd5b5061021a610659366004613e5c565b611bab565b348015610669575f5ffd5b5061021a610678366004613f47565b611c3f565b348015610688575f5ffd5b50603a546102a8906001600160401b031681565b3480156106a7575f5ffd5b5061021a6106b6366004614019565b611d97565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610721573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107459190614080565b156107635760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156107c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ed9190614080565b1561080b5760405163840a48d560e01b815260040160405180910390fd5b5f61084f610819858061409b565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061219392505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156108bd576108bd613cc9565b60028111156108ce576108ce613cc9565b81525050905080604001516001600160401b0316876001600160401b03161161090a576040516337e07ffd60e01b815260040160405180910390fd5b60018160600151600281111561092257610922613cc9565b146109405760405163d49e19a760e01b815260040160405180910390fd5b61098361094d868061409b565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506121b592505050565b6109a05760405163161ce5ed60e31b815260040160405180910390fd5b6109b26109ac886113f3565b876121dd565b6109de6109be88612282565b87356109ca888061409b565b6109d760208b018b6140e0565b8751612359565b6109e75f61248d565b50505050505050565b5f610a0c71bbddc7ce488642fb579f8b00f3a59000725161260d565b905090565b604051635ac86ab760e01b8152600a60048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a77573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9b9190614080565b15610ab95760405163840a48d560e01b815260040160405180910390fd5b6033546001600160a01b0316331480610adc5750603e546001600160a01b031633145b610af95760405163427a777960e01b815260040160405180910390fd5b5f610b0261190e565b9050610b0e8382614136565b341015610b2e5760405163356680b760e01b815260040160405180910390fd5b5f610b398483614136565b610b43903461414d565b90505f5b84811015610d625736868683818110610b6257610b62614160565b9050602002810190610b749190614174565b9050610b8081806140e0565b9050603014610ba257604051634f88323960e11b815260040160405180910390fd5b5f610bad82806140e0565b610bbd6040850160208601613bff565b604051602001610bcf93929190614192565b60405160208183030381529060405290505f710961ef480eb55e80d19ad83579a64c0070026001600160a01b03168683604051610c0c91906141ca565b5f6040518083038185875af1925050503d805f8114610c46576040519150601f19603f3d011682016040523d82523d5f602084013e610c4b565b606091505b5050905080610c6d5760405163fc52d48360e01b815260040160405180910390fd5b5f610cb4610c7b85806140e0565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061269392505050565b9050610cc66040850160208601613bff565b6001600160401b03165f03610d045760405181907f60d8ca014d4765a2b8b389e25714cb1cef83b574222911a01d90c1bd69d2d320905f90a2610d52565b807f8b2737bb64ab2f2dc09552dfa1c250399e6a42c7ea9f0e1c658f5d65d708ec05610d366040870160208801613bff565b6040516001600160401b03909116815260200160405180910390a25b505060019092019150610b479050565b508015610d7357610d733382612724565b5050505050565b6033546001600160a01b0316331480610d9d5750603e546001600160a01b031633145b610dba5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610e20573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e449190614080565b15610e625760405163840a48d560e01b815260040160405180910390fd5b8584148015610e7057508382145b610e8d576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610ec3576040516337e07ffd60e01b815260040160405180910390fd5b610ed5610ecf8a6113f3565b896121dd565b5f805b87811015610f6e57610f5a8b8b358b8b85818110610ef857610ef8614160565b9050602002016020810190610f0d91906141d5565b8a8a86818110610f1f57610f1f614160565b9050602002810190610f3191906140e0565b8a8a88818110610f4357610f43614160565b9050602002810190610f55919061409b565b612839565b610f6490836141f9565b9150600101610ed8565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015610fe1575f5ffd5b505af1158015610ff3573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610a0c7f0000000000000000000000000000000000000000000000000000000000000000612d3a565b5f5f61106e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061269392505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b604051635ac86ab760e01b8152600960048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156110f6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111a9190614080565b156111385760405163840a48d560e01b815260040160405180910390fd5b6033546001600160a01b031633148061115b5750603e546001600160a01b031633145b6111785760405163427a777960e01b815260040160405180910390fd5b5f6111816109f0565b905061118d8382614136565b3410156111ad5760405163356680b760e01b815260040160405180910390fd5b5f6111b88483614136565b6111c2903461414d565b90505f5b84811015610d6257368686838181106111e1576111e1614160565b90506020028101906111f39190614174565b90506111ff81806140e0565b905060301461122157604051634f88323960e11b815260040160405180910390fd5b61122e60208201826140e0565b905060301461125057604051634f88323960e11b815260040160405180910390fd5b5f61125e610c7b83806140e0565b90505f611271610c7b60208501856140e0565b90505f61127d82611501565b905060018160600151600281111561129757611297613cc9565b146112b55760405163d49e19a760e01b815260040160405180910390fd5b5f6112c085806140e0565b6112cd60208801886140e0565b6040516020016112e0949392919061420c565b60405160208183030381529060405290505f71bbddc7ce488642fb579f8b00f3a5900072516001600160a01b0316898360405161131d91906141ca565b5f6040518083038185875af1925050503d805f8114611357576040519150601f19603f3d011682016040523d82523d5f602084013e61135c565b606091505b505090508061137e5760405163fc52d48360e01b815260040160405180910390fd5b8385036113b45760405185907fc97b965b92ae7fd20095fe8eb7b99f81f95f8c4adffb22a19116d8eb2846b016905f90a26113e1565b604051849086907f42f9c9db2ca443e9ec62f4588bd0c9b241065c02c2a8001ac164ae1282dc7b94905f90a35b5050600190940193506111c692505050565b5f611401611fff600c614136565b6114146001600160401b0384164261414d565b1061143257604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052611479916141ca565b5f60405180830381855afa9150503d805f81146114b1576040519150601f19603f3d011682016040523d82523d5f602084013e6114b6565b606091505b50915091508180156114c857505f8151115b6114e55760405163558ad0a360e01b815260040160405180910390fd5b808060200190518101906114f9919061422b565b949350505050565b611528604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff16600281111561159257611592613cc9565b60028111156115a3576115a3613cc9565b90525092915050565b6033546001600160a01b03163314806115cf5750603e546001600160a01b031633145b6115ec5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611652573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116769190614080565b156116945760405163840a48d560e01b815260040160405180910390fd5b61169d8261248d565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116ea57604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec800000146117135760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787611756612d77565b8888886040518863ffffffff1660e01b815260040161177a9695949392919061426a565b5f604051808303818588803b158015611791575f5ffd5b505af11580156117a3573d5f5f3e3d5ffd5b50505050507fa01003766d3cd97cf2ade5429690bf5d206be7fb01ef9d3a0089ecf67bc1121961180786868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061269392505050565b60405190815260200160405180910390a15050505050565b611846604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61188785858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061269392505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156118f3576118f3613cc9565b600281111561190457611904613cc9565b9052509392505050565b5f610a0c710961ef480eb55e80d19ad83579a64c00700261260d565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461197357604051633213a66160e21b815260040160405180910390fd5b5f611982633b9aca00836142cc565b905061199b633b9aca006001600160401b038316614136565b6034549092506001600160401b0390811690821611156119ce576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906119eb9084906001600160401b03166142df565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e83604051611a4a91815260200190565b60405180910390a2611a5c8383612724565b505050565b5f54610100900460ff1615808015611a7f57505f54600160ff909116105b80611a985750303b158015611a9857505f5460ff166001145b611b005760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611b21575f805461ff0019166101001790555b6001600160a01b038216611b48576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b038416179055801561169d575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b03163314611bd65760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314611c6a5760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611cd0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cf49190614080565b15611d125760405163840a48d560e01b815260040160405180910390fd5b8251845114611d34576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015610d7357611d8f83858381518110611d5557611d55614160565b6020026020010151878481518110611d6f57611d6f614160565b60200260200101516001600160a01b0316612da79092919063ffffffff16565b600101611d36565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611dfd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e219190614080565b15611e3f5760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f819003611e7357604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b90049091166080820152611eda611ed283612282565b825188612df9565b5f805b8581101561213a5736878783818110611ef857611ef8614160565b9050602002810190611f0a91906142fe565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f7a57611f7a613cc9565b6002811115611f8b57611f8b613cc9565b9052509050600181606001516002811115611fa857611fa8613cc9565b14611fb4575050612132565b856001600160401b031681604001516001600160401b031610611fd8575050612132565b5f8080611fe8848a8f3588612eba565b60208b0180519396509194509250611fff82614312565b62ffffff1690525060808801805184919061201b90839061432f565b6001600160401b031690525060608801805183919061203b90839061434e565b60070b90525061204b818861432f565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b8360028111156120ef576120ef613cc9565b021790555050604051863591506001600160401b038b16907fe4866335761a51dcaff766448ab0af6064291ee5dc94e68492bb9cd757c1e350905f90a350505050505b600101611edd565b506001600160401b038084165f908152603b60205260408120805484939192916121669185911661432f565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506109e782612fd0565b5f815f815181106121a6576121a6614160565b60200260200101519050919050565b5f816003815181106121c9576121c9614160565b60200260200101515f5f1b14159050919050565b6121e960036020614136565b6121f660208301836140e0565b905014612216576040516313717da960e21b815260040160405180910390fd5b61226561222660208301836140e0565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250869250508435905060036131f0565b61169d576040516309bde33960e01b815260040160405180910390fd5b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612304919061437d565b9050806001600160401b03165f0361232f576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115612350576001612352565b5f5b9392505050565b6008841461237a5760405163200591bd60e01b815260040160405180910390fd5b5f61238488613207565b905080612393602860016141f9565b61239d91906141f9565b6123a8906020614136565b83146123c7576040516313717da960e21b815260040160405180910390fd5b5f6124038787808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061322f92505050565b90505f64ffffffffff841661241a602860016141f9565b600b901b17905061246486868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d92508691508590506131f0565b612481576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b0316156124bd5760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b034281169116036124eb576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316612507633b9aca00476142cc565b61251191906142df565b905081801561252757506001600160401b038116155b15612545576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a0016040528061255a426113f3565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff00000000000000001990921691909117905590506125be81612fd0565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f5f836001600160a01b03166040515f60405180830381855afa9150503d805f8114612655576040519150601f19603f3d011682016040523d82523d5f602084013e61265a565b606091505b509150915081801561266d575080516020145b61268a5760405163c90158af60e01b815260040160405180910390fd5b6114f981614398565b5f81516030146126b657604051634f88323960e11b815260040160405180910390fd5b6040516002906126cc9084905f906020016143bb565b60408051601f19818403018152908290526126e6916141ca565b602060405180830381855afa158015612701573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061108a919061422b565b804710156127745760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611af7565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146127bd576040519150601f19603f3d011682016040523d82523d5f602084013e6127c2565b606091505b5050905080611a5c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611af7565b5f5f6128768484808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061219392505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156128e4576128e4613cc9565b60028111156128f5576128f5613cc9565b90525090505f8160600151600281111561291157612911613cc9565b1461292f576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b0380166129748686808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506134bf92505050565b6001600160401b03160361299b57604051631958236d60e21b815260040160405180910390fd5b6001600160401b0380166129e08686808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506134e392505050565b6001600160401b031614612a0757604051632eade63760e01b815260040160405180910390fd5b612a0f612d77565b612a1890614398565b612a538686808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506134fa92505050565b1480612aa85750612a6261350e565b612a6b90614398565b612aa68686808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506134fa92505050565b145b612ac557604051633772dd5360e11b815260040160405180910390fd5b5f612b018686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061352a92505050565b9050612b1a612b0f8c612282565b8b88888c8c8f612359565b60398054905f612b29836143df565b9091555050603a545f90600160401b90046001600160401b031615612b6057603a54600160401b90046001600160401b0316612b6d565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612c4257612c42613cc9565b021790555050603d8054849250601390612c6d908490600160981b90046001600160401b031661432f565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f101790c2993f6a4d962bd17c786126823ba1c4cf04ff4cccb2659d50fb20aee884604051612cc291815260200190565b60405180910390a1604080518581526001600160401b03838116602083015284168183015290517fcdae700d7241bc027168c53cf6f889763b0a2c88a65d77fc13a8a9fef0d8605f9181900360600190a1612d2a633b9aca006001600160401b038416614136565b9c9b505050505050505050505050565b60605f612d4683613541565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b604051606090612d9390600160f81b905f9030906020016143f7565b604051602081830303815290604052905090565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611a5c908490613568565b5f612e0384613207565b9050612e108160036141f9565b612e1b906020614136565b612e2860208401846140e0565b905014612e48576040516313717da960e21b815260040160405180910390fd5b6003811b600c17612e9d612e5f60208501856140e0565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508892505086359050846131f0565b610d73576040516309bde33960e01b815260040160405180910390fd5b5f5f5f866020015192505f612ed386895f01518761363b565b9050836001600160401b0316816001600160401b031614612f4757612ef88482614435565b60408051873581526001600160401b038a8116602083015284168183015290519194507fcdae700d7241bc027168c53cf6f889763b0a2c88a65d77fc13a8a9fef0d8605f919081900360600190a15b6001600160401b0380821660208a0181905290881660408a01525f03612fc55760398054905f612f7683614464565b909155505060026060890152612f8b83614479565b6040519092508535906001600160401b038916907f5ce0aa04ae51d52da6e680fbe0336d2e2432f7c3dc2d4f3193204c57b9072107905f90a35b509450945094915050565b8051603c556020810151603d805460408401516060850151608086015162ffffff9095166affffffffffffffffffffff19909316831763010000006001600160401b0393841602176fffffffffffffffffffffffffffffffff60581b1916600160581b9183169190910267ffffffffffffffff60981b191617600160981b9190941602929092179055156130615750565b60808101516034545f9161307d916001600160401b031661432f565b90505f82606001518360400151613094919061434e565b60408401516034805492935090915f906130b89084906001600160401b031661432f565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061310890633b9aca00908516614136565b90505f61311d633b9aca00600785900b61449e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b1580156131d3575f5ffd5b505af11580156131e5573d5f5f3e3d5ffd5b505050505050505050565b5f836131fd868585613719565b1495945050505050565b5f8082600181111561321b5761321b613cc9565b1461322757600661108a565b600592915050565b5f5f6002835161323f91906142cc565b90505f816001600160401b0381111561325a5761325a613e77565b604051908082528060200260200182016040528015613283578160200160208202803683370190505b5090505f5b8281101561337d5760028561329d8383614136565b815181106132ad576132ad614160565b6020026020010151868360026132c39190614136565b6132ce9060016141f9565b815181106132de576132de614160565b6020026020010151604051602001613300929190918252602082015260400190565b60408051601f198184030181529082905261331a916141ca565b602060405180830381855afa158015613335573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190613358919061422b565b82828151811061336a5761336a614160565b6020908102919091010152600101613288565b506133896002836142cc565b91505b811561349c575f5b82811015613489576002826133a98383614136565b815181106133b9576133b9614160565b6020026020010151838360026133cf9190614136565b6133da9060016141f9565b815181106133ea576133ea614160565b602002602001015160405160200161340c929190918252602082015260400190565b60408051601f1981840301815290829052613426916141ca565b602060405180830381855afa158015613441573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190613464919061422b565b82828151811061347657613476614160565b6020908102919091010152600101613394565b506134956002836142cc565b915061338c565b805f815181106134ae576134ae614160565b602002602001015192505050919050565b5f61108a826005815181106134d6576134d6614160565b60200260200101516137ed565b5f61108a826006815181106134d6576134d6614160565b5f816001815181106121a6576121a6614160565b604051606090612d9390600160f91b905f9030906020016143f7565b5f61108a826002815181106134d6576134d6614160565b5f60ff8216601f81111561108a57604051632cd44ac360e21b815260040160405180910390fd5b5f6135bc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166138549092919063ffffffff16565b905080515f14806135dc5750808060200190518101906135dc9190614080565b611a5c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611af7565b5f613648602660016141f9565b613653906020614136565b61366060408401846140e0565b905014613680576040516313717da960e21b815260040160405180910390fd5b5f61368c6004856144cd565b64ffffffffff1690506136e56136a560408501856140e0565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525089925050506020860135846131f0565b613702576040516309bde33960e01b815260040160405180910390fd5b613710836020013585613862565b95945050505050565b5f83515f1415801561373657506020845161373491906144f6565b155b613753576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b855181116137e3576137776002856144f6565b5f036137a95781515f528086015160205260208260405f60026107d05a03fa61379e575f5ffd5b6002840493506137d1565b808601515f52815160205260208260405f60026107d05a03fa6137ca575f5ffd5b6002840493505b6137dc6020826141f9565b9050613764565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b60606114f984845f8561388e565b5f8061386f600484614509565b61387a906040614532565b64ffffffffff1690506114f984821b6137ed565b6060824710156138ef5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611af7565b5f5f866001600160a01b0316858760405161390a91906141ca565b5f6040518083038185875af1925050503d805f8114613944576040519150601f19603f3d011682016040523d82523d5f602084013e613949565b606091505b509150915061395a87838387613965565b979650505050505050565b606083156139d35782515f036139cc576001600160a01b0385163b6139cc5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611af7565b50816114f9565b6114f983838151156139e85781518083602001fd5b8060405162461bcd60e51b8152600401611af79190613c48565b6001600160401b0381168114613a16575f5ffd5b50565b5f60408284031215613a29575f5ffd5b50919050565b5f5f5f60608486031215613a41575f5ffd5b8335613a4c81613a02565b925060208401356001600160401b03811115613a66575f5ffd5b613a7286828701613a19565b92505060408401356001600160401b03811115613a8d575f5ffd5b613a9986828701613a19565b9150509250925092565b5f5f83601f840112613ab3575f5ffd5b5081356001600160401b03811115613ac9575f5ffd5b6020830191508360208260051b8501011115613ae3575f5ffd5b9250929050565b5f5f60208385031215613afb575f5ffd5b82356001600160401b03811115613b10575f5ffd5b613b1c85828601613aa3565b90969095509350505050565b5f5f5f5f5f5f5f5f60a0898b031215613b3f575f5ffd5b8835613b4a81613a02565b975060208901356001600160401b03811115613b64575f5ffd5b613b708b828c01613a19565b97505060408901356001600160401b03811115613b8b575f5ffd5b613b978b828c01613aa3565b90975095505060608901356001600160401b03811115613bb5575f5ffd5b613bc18b828c01613aa3565b90955093505060808901356001600160401b03811115613bdf575f5ffd5b613beb8b828c01613aa3565b999c989b5096995094979396929594505050565b5f60208284031215613c0f575f5ffd5b813561235281613a02565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6123526020830184613c1a565b5f5f83601f840112613c6a575f5ffd5b5081356001600160401b03811115613c80575f5ffd5b602083019150836020828501011115613ae3575f5ffd5b5f5f60208385031215613ca8575f5ffd5b82356001600160401b03811115613cbd575f5ffd5b613b1c85828601613c5a565b634e487b7160e01b5f52602160045260245ffd5b60038110613cf957634e487b7160e01b5f52602160045260245ffd5b9052565b6020810161108a8284613cdd565b5f60208284031215613d1b575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b0360408401511660408301526060830151613d6e6060840182613cdd565b5092915050565b8015158114613a16575f5ffd5b5f60208284031215613d92575f5ffd5b813561235281613d75565b5f5f5f5f5f60608688031215613db1575f5ffd5b85356001600160401b03811115613dc6575f5ffd5b613dd288828901613c5a565b90965094505060208601356001600160401b03811115613df0575f5ffd5b613dfc88828901613c5a565b96999598509660400135949350505050565b6001600160a01b0381168114613a16575f5ffd5b8035613e2d81613e0e565b919050565b5f5f60408385031215613e43575f5ffd5b8235613e4e81613e0e565b946020939093013593505050565b5f60208284031215613e6c575f5ffd5b813561235281613e0e565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715613eb357613eb3613e77565b604052919050565b5f6001600160401b03821115613ed357613ed3613e77565b5060051b60200190565b5f82601f830112613eec575f5ffd5b8135613eff613efa82613ebb565b613e8b565b8082825260208201915060208360051b860101925085831115613f20575f5ffd5b602085015b83811015613f3d578035835260209283019201613f25565b5095945050505050565b5f5f5f60608486031215613f59575f5ffd5b83356001600160401b03811115613f6e575f5ffd5b8401601f81018613613f7e575f5ffd5b8035613f8c613efa82613ebb565b8082825260208201915060208360051b850101925088831115613fad575f5ffd5b6020840193505b82841015613fd8578335613fc781613e0e565b825260209384019390910190613fb4565b955050505060208401356001600160401b03811115613ff5575f5ffd5b61400186828701613edd565b92505061401060408501613e22565b90509250925092565b5f5f5f6040848603121561402b575f5ffd5b83356001600160401b03811115614040575f5ffd5b61404c86828701613a19565b93505060208401356001600160401b03811115614067575f5ffd5b61407386828701613aa3565b9497909650939450505050565b5f60208284031215614090575f5ffd5b815161235281613d75565b5f5f8335601e198436030181126140b0575f5ffd5b8301803591506001600160401b038211156140c9575f5ffd5b6020019150600581901b3603821315613ae3575f5ffd5b5f5f8335601e198436030181126140f5575f5ffd5b8301803591506001600160401b0382111561410e575f5ffd5b602001915036819003821315613ae3575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761108a5761108a614122565b8181038181111561108a5761108a614122565b634e487b7160e01b5f52603260045260245ffd5b5f8235603e19833603018112614188575f5ffd5b9190910192915050565b8284823760c09190911b6001600160c01b0319169101908152600801919050565b5f81518060208401855e5f93019283525090919050565b5f61235282846141b3565b5f602082840312156141e5575f5ffd5b813564ffffffffff81168114612352575f5ffd5b8082018082111561108a5761108a614122565b838582375f8482015f8152838582375f93019283525090949350505050565b5f6020828403121561423b575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f61427d60808301888a614242565b828103602084015261428f8188613c1a565b905082810360408401526142a4818688614242565b915050826060830152979650505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826142da576142da6142b8565b500490565b6001600160401b03828116828216039081111561108a5761108a614122565b5f8235605e19833603018112614188575f5ffd5b5f62ffffff82168061432657614326614122565b5f190192915050565b6001600160401b03818116838216019081111561108a5761108a614122565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff198212171561108a5761108a614122565b5f6020828403121561438d575f5ffd5b815161235281613a02565b80516020808301519190811015613a29575f1960209190910360031b1b16919050565b5f6143c682856141b3565b6001600160801b03199390931683525050601001919050565b5f600182016143f0576143f0614122565b5060010190565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff8213171561108a5761108a614122565b5f8161447257614472614122565b505f190190565b5f8160070b677fffffffffffffff19810361449657614496614122565b5f0392915050565b8082025f8212600160ff1b841416156144b9576144b9614122565b818105831482151761108a5761108a614122565b5f64ffffffffff8316806144e3576144e36142b8565b8064ffffffffff84160491505092915050565b5f82614504576145046142b8565b500690565b5f64ffffffffff83168061451f5761451f6142b8565b8064ffffffffff84160691505092915050565b64ffffffffff8181168382160290811690818114613d6e57613d6e61412256fea264697066735822122037ba933dd75abf7aa4f9792f1c1ffaae63438b68b034edf0f893d6ab837536cc64736f6c634300081b0033", } // EigenPodABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/EigenPodManager/binding.go b/pkg/bindings/EigenPodManager/binding.go index e92b20f417..ba983b90e4 100644 --- a/pkg/bindings/EigenPodManager/binding.go +++ b/pkg/bindings/EigenPodManager/binding.go @@ -38,7 +38,7 @@ type OperatorSet struct { // EigenPodManagerMetaData contains all meta data concerning the EigenPodManager contract. var EigenPodManagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_ethPOS\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"},{\"name\":\"_eigenPodBeacon\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"},{\"name\":\"_delegationManager\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainSlashingFactor\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burnableETHShares\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createPod\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodBeacon\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ethPOS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPod\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"hasPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseBurnOrRedistributableShares\",\"inputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"addedSharesToBurn\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_initPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"numPods\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ownerToPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPod\"}],\"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\":\"pectraForkTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"podOwnerDepositShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proofTimestampSetter\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recordBeaconChainETHBalanceUpdate\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"prevRestakedBalanceWei\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"balanceDeltaWei\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"depositSharesToRemove\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPectraForkTimestamp\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setProofTimestampSetter\",\"inputs\":[{\"name\":\"newProofTimestampSetter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"depositDataRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"stakerDepositShares\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"depositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawSharesAsTokens\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BeaconChainETHDeposited\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconChainETHWithdrawalCompleted\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconChainSlashingFactorDecreased\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"prevBeaconChainSlashingFactor\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newBeaconChainSlashingFactor\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BurnableETHSharesIncreased\",\"inputs\":[{\"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\":\"NewTotalShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newTotalShares\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"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\":\"PectraForkTimestampSet\",\"inputs\":[{\"name\":\"newPectraForkTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PodDeployed\",\"inputs\":[{\"name\":\"eigenPod\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PodSharesUpdated\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sharesDelta\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProofTimestampSetterSet\",\"inputs\":[{\"name\":\"newProofTimestampSetter\",\"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\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EigenPodAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStrategy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LegacyWithdrawalsNotCompleted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyProofTimestampSetter\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNegative\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNotMultipleOfGwei\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]}]", - Bin: "0x610120604052348015610010575f5ffd5b50604051612f01380380612f0183398101604081905261002f916101c2565b80858585856001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05290821660c0521660e05261008281610099565b610100525061008f6100df565b505050505061031a565b5f5f829050601f815111156100cc578260405163305a27a960e01b81526004016100c391906102bf565b60405180910390fd5b80516100d7826102f4565b179392505050565b5f54610100900460ff16156101465760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100c3565b5f5460ff90811614610195575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101ab575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f60a086880312156101d6575f5ffd5b85516101e181610197565b60208701519095506101f281610197565b604087015190945061020381610197565b606087015190935061021481610197565b60808701519092506001600160401b0381111561022f575f5ffd5b8601601f8101881361023f575f5ffd5b80516001600160401b03811115610258576102586101ae565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610286576102866101ae565b6040528181528282016020018a101561029d575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295909350565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610314575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051612b6461039d5f395f610b2401525f818161060c0152818161077b015281816109d401528181610a7a01528181610c0501528181610f82015261103701525f818161028b015281816110cd015261186701525f61044b01525f8181610492015281816114950152611a840152612b645ff3fe6080604052600436106101f1575f3560e01c8063886f119511610108578063a6a509be1161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063a6a509be1461059c578063cd6dc687146105b1578063d48e8894146105d0578063ea4d3c9b146105fb575f5ffd5b80639ba06275116100d85780639ba062751461050b578063a1ca780b1461053f578063a38406a31461055e578063a3d75e091461057d575f5ffd5b8063886f1195146104815780638da5cb5b146104b45780639104c319146104d15780639b4e4634146104f8575f5ffd5b8063595c6a67116101895780635c975abb116101595780635c975abb146103e9578063715018a614610407578063724af4231461041b57806374cdd7981461043a57806384d810621461046d575f5ffd5b8063595c6a6714610358578063595edbcb1461036c5780635a26fbf41461038b5780635ac86ab7146103aa575f5ffd5b80632eae418c116101c45780632eae418c146102c55780633fb99ca5146102e457806350ff72251461030357806354fd4d5014610337575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611d7e565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611d99565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611db0565b610770565b3480156102ef575f5ffd5b506102146102fe366004611dfe565b6109c9565b34801561030e575f5ffd5b5061032261031d366004611e48565b610a6d565b60408051928352602083019190915201610271565b348015610342575f5ffd5b5061034b610b1d565b6040516102719190611e86565b348015610363575f5ffd5b50610214610b4d565b348015610377575f5ffd5b50609f546102ad906001600160a01b031681565b348015610396575f5ffd5b506102146103a5366004611ebb565b610b61565b3480156103b5575f5ffd5b506103d96103c4366004611ee2565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103f4575f5ffd5b506066545b604051908152602001610271565b348015610412575f5ffd5b50610214610be8565b348015610426575f5ffd5b506103f9610435366004611e48565b610bf9565b348015610445575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610478575f5ffd5b506102ad610d3e565b34801561048c575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104bf575f5ffd5b506033546001600160a01b03166102ad565b3480156104dc575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610214610506366004611f40565b610da1565b348015610516575f5ffd5b506102ad610525366004611d7e565b60986020525f90815260409020546001600160a01b031681565b34801561054a575f5ffd5b50610214610559366004611fb3565b610e52565b348015610569575f5ffd5b506102ad610578366004611d7e565b611073565b348015610588575f5ffd5b5061025c610597366004611d7e565b611144565b3480156105a7575f5ffd5b506103f960995481565b3480156105bc575f5ffd5b506102146105cb366004611fe5565b6111a4565b3480156105db575f5ffd5b506103f96105ea366004611d7e565b609b6020525f908152604090205481565b348015610606575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610639575f5ffd5b50610214610648366004611d7e565b6112c0565b348015610658575f5ffd5b506103f9609e5481565b34801561066d575f5ffd5b506103d961067c366004611d7e565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611d99565b611339565b3480156106c5575f5ffd5b506103f96106d436600461200f565b6113a6565b6106e1611426565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b61073e611480565b60665481811681146107635760405163c61dca5d60e01b815260040160405180910390fd5b61076c82611523565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107b95760405163f739589b60e01b815260040160405180910390fd5b6107c1611560565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146107fe57604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b038416610825576040516339b190bb60e11b815260040160405180910390fd5b5f81136108455760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490829082121561093f575f6108718361205a565b90505f8185111561088f5750806108888186612074565b9250610895565b505f9150835b5f6108a08286612087565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906108f09085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161093391815260200190565b60405180910390a25050505b80156109b7576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b1580156109a0575f5ffd5b505af11580156109b2573d5f5f3e3d5ffd5b505050505b50506109c3600160c955565b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a125760405163f739589b60e01b815260040160405180910390fd5b610a1a611560565b80609e5f828254610a2b91906120ae565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a16109c3600160c955565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ab85760405163f739589b60e01b815260040160405180910390fd5b610ac0611560565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610afd57604051632711b74d60e11b815260040160405180910390fd5b610b0785846115b9565b91509150610b15600160c955565b935093915050565b6060610b487f0000000000000000000000000000000000000000000000000000000000000000611700565b905090565b610b55611480565b610b5f5f19611523565b565b609f546001600160a01b03163314610b8c57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610bf0611426565b610b5f5f61173d565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c435760405163f739589b60e01b815260040160405180910390fd5b610c4b611560565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610c8857604051632711b74d60e11b815260040160405180910390fd5b5f610c928361178e565b6001600160a01b0386165f908152609b6020526040902054610cb491906120c1565b90505f811215610cd75760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610d239084815260200190565b60405180910390a29050610d37600160c955565b9392505050565b5f5f610d49816117f7565b610d51611560565b335f908152609860205260409020546001600160a01b031615610d875760405163031a852160e21b815260040160405180910390fd5b5f610d90611822565b925050610d9d600160c955565b5090565b5f610dab816117f7565b610db3611560565b335f908152609860205260409020546001600160a01b031680610ddb57610dd8611822565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610e11908b908b908b908b908b9060040161210f565b5f604051808303818588803b158015610e28575f5ffd5b505af1158015610e3a573d5f5f3e3d5ffd5b505050505050610e4a600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610e8d576040516312e16d7160e11b815260040160405180910390fd5b610e95611560565b6001600160a01b038416610ebc576040516339b190bb60e11b815260040160405180910390fd5b610eca633b9aca008361215c565b15610ee8576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610f2157604051634b692bcf60e01b815260040160405180910390fd5b5f831315610fe2575f5f610f3587866115b9565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015610fc5575f5ffd5b505af1158015610fd7573d5f5f3e3d5ffd5b505050505050611068565b5f831215611068575f610ffe8686610ff98761205a565b61197d565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906360a0d1ce90606401610989565b506109c3600160c955565b6001600160a01b038082165f908152609860205260408120549091168061113e5761113b836001600160a01b03165f1b60405180610940016040528061090e815260200161222161090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f19818403018152908290526111209291602001612192565b60405160208183030381529060405280519060200120611a76565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061119a57670de0b6b3a7640000610d37565b6020015192915050565b5f54610100900460ff16158080156111c257505f54600160ff909116105b806111db5750303b1580156111db57505f5460ff166001145b6112435760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611264575f805461ff0019166101001790555b61126d8361173d565b61127682611523565b80156112bb575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6112c8611426565b6001600160a01b03811661132d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161123a565b6113368161173d565b50565b611341611a82565b606654801982198116146113685760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146113e457604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261141e576001600160a01b0383165f908152609b602052604090205461113b565b505f92915050565b6033546001600160a01b03163314610b5f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161123a565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156114e2573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150691906121ae565b610b5f57604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c954036115b25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161123a565b600260c955565b5f806001600160a01b0384166115e2576040516339b190bb60e11b815260040160405180910390fd5b5f8312156116035760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916116278383612087565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906116779086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516116ba91815260200190565b60405180910390a25f81136116d7575f5f945094505050506116f9565b5f8212156116ec575f945092506116f9915050565b5092508391506116f99050565b9250929050565b60605f61170c83611b33565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610d9d5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b606482015260840161123a565b606654600160ff83161b908116036113365760405163840a48d560e01b815260040160405180910390fd5b5f60995f8154611831906121cd565b9091555060408051610940810190915261090e8082525f916118ce91839133916122216020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f19818403018152908290526118ba9291602001612192565b604051602081830303815290604052611b5a565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b15801561190f575f5ffd5b505af1158015611921573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f806119898385612074565b90505f61199586611144565b90505f6119ad67ffffffffffffffff83168488611c5c565b90505f6119ba82846121e5565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61113b838330611d41565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ade573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b029190612205565b6001600160a01b0316336001600160a01b031614610b5f5760405163794821ff60e01b815260040160405180910390fd5b5f60ff8216601f81111561113e57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611bab5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161123a565b81515f03611bfb5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161123a565b8282516020840186f590506001600160a01b038116610d375760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161123a565b5f80805f19858709858702925082811083820303915050805f03611c9357838281611c8957611c89612148565b0492505050610d37565b808411611cda5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161123a565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b0381168114611336575f5ffd5b5f60208284031215611d8e575f5ffd5b8135610d3781611d6a565b5f60208284031215611da9575f5ffd5b5035919050565b5f5f5f5f60808587031215611dc3575f5ffd5b8435611dce81611d6a565b93506020850135611dde81611d6a565b92506040850135611dee81611d6a565b9396929550929360600135925050565b5f5f5f5f84860360a0811215611e12575f5ffd5b6040811215611e1f575f5ffd5b50849350604084013592506060840135611e3881611d6a565b9396929550929360800135925050565b5f5f5f60608486031215611e5a575f5ffd5b8335611e6581611d6a565b92506020840135611e7581611d6a565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611ecb575f5ffd5b813567ffffffffffffffff81168114610d37575f5ffd5b5f60208284031215611ef2575f5ffd5b813560ff81168114610d37575f5ffd5b5f5f83601f840112611f12575f5ffd5b50813567ffffffffffffffff811115611f29575f5ffd5b6020830191508360208285010111156116f9575f5ffd5b5f5f5f5f5f60608688031215611f54575f5ffd5b853567ffffffffffffffff811115611f6a575f5ffd5b611f7688828901611f02565b909650945050602086013567ffffffffffffffff811115611f95575f5ffd5b611fa188828901611f02565b96999598509660400135949350505050565b5f5f5f60608486031215611fc5575f5ffd5b8335611fd081611d6a565b95602085013595506040909401359392505050565b5f5f60408385031215611ff6575f5ffd5b823561200181611d6a565b946020939093013593505050565b5f5f60408385031215612020575f5ffd5b823561202b81611d6a565b9150602083013561203b81611d6a565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b820161206e5761206e612046565b505f0390565b8181038181111561113e5761113e612046565b8082018281125f8312801582168215821617156120a6576120a6612046565b505092915050565b8082018082111561113e5761113e612046565b8181035f8312801583831316838312821617156120e0576120e0612046565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f6121226060830187896120e7565b82810360208401526121358186886120e7565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f8261217657634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6121a66121a0838661217b565b8461217b565b949350505050565b5f602082840312156121be575f5ffd5b81518015158114610d37575f5ffd5b5f600182016121de576121de612046565b5060010190565b67ffffffffffffffff828116828216039081111561113e5761113e612046565b5f60208284031215612215575f5ffd5b8151610d3781611d6a56fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208db50c85498def4ce903b24e050eb96c88b6cdd8bc6da816f6c00b551f34834164736f6c634300081b0033", + Bin: "0x610120604052348015610010575f5ffd5b50604051612f01380380612f0183398101604081905261002f916101c2565b80858585856001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05290821660c0521660e05261008281610099565b610100525061008f6100df565b505050505061031a565b5f5f829050601f815111156100cc578260405163305a27a960e01b81526004016100c391906102bf565b60405180910390fd5b80516100d7826102f4565b179392505050565b5f54610100900460ff16156101465760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100c3565b5f5460ff90811614610195575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101ab575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f60a086880312156101d6575f5ffd5b85516101e181610197565b60208701519095506101f281610197565b604087015190945061020381610197565b606087015190935061021481610197565b60808701519092506001600160401b0381111561022f575f5ffd5b8601601f8101881361023f575f5ffd5b80516001600160401b03811115610258576102586101ae565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610286576102866101ae565b6040528181528282016020018a101561029d575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295909350565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610314575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051612b6461039d5f395f610b2401525f818161060c0152818161077b015281816109d401528181610a7a01528181610c0501528181610f82015261103701525f818161028b015281816110cd015261186701525f61044b01525f8181610492015281816114950152611a840152612b645ff3fe6080604052600436106101f1575f3560e01c8063886f119511610108578063a6a509be1161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063a6a509be1461059c578063cd6dc687146105b1578063d48e8894146105d0578063ea4d3c9b146105fb575f5ffd5b80639ba06275116100d85780639ba062751461050b578063a1ca780b1461053f578063a38406a31461055e578063a3d75e091461057d575f5ffd5b8063886f1195146104815780638da5cb5b146104b45780639104c319146104d15780639b4e4634146104f8575f5ffd5b8063595c6a67116101895780635c975abb116101595780635c975abb146103e9578063715018a614610407578063724af4231461041b57806374cdd7981461043a57806384d810621461046d575f5ffd5b8063595c6a6714610358578063595edbcb1461036c5780635a26fbf41461038b5780635ac86ab7146103aa575f5ffd5b80632eae418c116101c45780632eae418c146102c55780633fb99ca5146102e457806350ff72251461030357806354fd4d5014610337575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611d7e565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611d99565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611db0565b610770565b3480156102ef575f5ffd5b506102146102fe366004611dfe565b6109c9565b34801561030e575f5ffd5b5061032261031d366004611e48565b610a6d565b60408051928352602083019190915201610271565b348015610342575f5ffd5b5061034b610b1d565b6040516102719190611e86565b348015610363575f5ffd5b50610214610b4d565b348015610377575f5ffd5b50609f546102ad906001600160a01b031681565b348015610396575f5ffd5b506102146103a5366004611ebb565b610b61565b3480156103b5575f5ffd5b506103d96103c4366004611ee2565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103f4575f5ffd5b506066545b604051908152602001610271565b348015610412575f5ffd5b50610214610be8565b348015610426575f5ffd5b506103f9610435366004611e48565b610bf9565b348015610445575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610478575f5ffd5b506102ad610d3e565b34801561048c575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104bf575f5ffd5b506033546001600160a01b03166102ad565b3480156104dc575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610214610506366004611f40565b610da1565b348015610516575f5ffd5b506102ad610525366004611d7e565b60986020525f90815260409020546001600160a01b031681565b34801561054a575f5ffd5b50610214610559366004611fb3565b610e52565b348015610569575f5ffd5b506102ad610578366004611d7e565b611073565b348015610588575f5ffd5b5061025c610597366004611d7e565b611144565b3480156105a7575f5ffd5b506103f960995481565b3480156105bc575f5ffd5b506102146105cb366004611fe5565b6111a4565b3480156105db575f5ffd5b506103f96105ea366004611d7e565b609b6020525f908152604090205481565b348015610606575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610639575f5ffd5b50610214610648366004611d7e565b6112c0565b348015610658575f5ffd5b506103f9609e5481565b34801561066d575f5ffd5b506103d961067c366004611d7e565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611d99565b611339565b3480156106c5575f5ffd5b506103f96106d436600461200f565b6113a6565b6106e1611426565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b61073e611480565b60665481811681146107635760405163c61dca5d60e01b815260040160405180910390fd5b61076c82611523565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107b95760405163f739589b60e01b815260040160405180910390fd5b6107c1611560565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146107fe57604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b038416610825576040516339b190bb60e11b815260040160405180910390fd5b5f81136108455760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490829082121561093f575f6108718361205a565b90505f8185111561088f5750806108888186612074565b9250610895565b505f9150835b5f6108a08286612087565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906108f09085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161093391815260200190565b60405180910390a25050505b80156109b7576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b1580156109a0575f5ffd5b505af11580156109b2573d5f5f3e3d5ffd5b505050505b50506109c3600160c955565b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a125760405163f739589b60e01b815260040160405180910390fd5b610a1a611560565b80609e5f828254610a2b91906120ae565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a16109c3600160c955565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ab85760405163f739589b60e01b815260040160405180910390fd5b610ac0611560565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610afd57604051632711b74d60e11b815260040160405180910390fd5b610b0785846115b9565b91509150610b15600160c955565b935093915050565b6060610b487f0000000000000000000000000000000000000000000000000000000000000000611700565b905090565b610b55611480565b610b5f5f19611523565b565b609f546001600160a01b03163314610b8c57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610bf0611426565b610b5f5f61173d565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c435760405163f739589b60e01b815260040160405180910390fd5b610c4b611560565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610c8857604051632711b74d60e11b815260040160405180910390fd5b5f610c928361178e565b6001600160a01b0386165f908152609b6020526040902054610cb491906120c1565b90505f811215610cd75760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610d239084815260200190565b60405180910390a29050610d37600160c955565b9392505050565b5f5f610d49816117f7565b610d51611560565b335f908152609860205260409020546001600160a01b031615610d875760405163031a852160e21b815260040160405180910390fd5b5f610d90611822565b925050610d9d600160c955565b5090565b5f610dab816117f7565b610db3611560565b335f908152609860205260409020546001600160a01b031680610ddb57610dd8611822565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610e11908b908b908b908b908b9060040161210f565b5f604051808303818588803b158015610e28575f5ffd5b505af1158015610e3a573d5f5f3e3d5ffd5b505050505050610e4a600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610e8d576040516312e16d7160e11b815260040160405180910390fd5b610e95611560565b6001600160a01b038416610ebc576040516339b190bb60e11b815260040160405180910390fd5b610eca633b9aca008361215c565b15610ee8576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610f2157604051634b692bcf60e01b815260040160405180910390fd5b5f831315610fe2575f5f610f3587866115b9565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015610fc5575f5ffd5b505af1158015610fd7573d5f5f3e3d5ffd5b505050505050611068565b5f831215611068575f610ffe8686610ff98761205a565b61197d565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906360a0d1ce90606401610989565b506109c3600160c955565b6001600160a01b038082165f908152609860205260408120549091168061113e5761113b836001600160a01b03165f1b60405180610940016040528061090e815260200161222161090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f19818403018152908290526111209291602001612192565b60405160208183030381529060405280519060200120611a76565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061119a57670de0b6b3a7640000610d37565b6020015192915050565b5f54610100900460ff16158080156111c257505f54600160ff909116105b806111db5750303b1580156111db57505f5460ff166001145b6112435760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611264575f805461ff0019166101001790555b61126d8361173d565b61127682611523565b80156112bb575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6112c8611426565b6001600160a01b03811661132d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161123a565b6113368161173d565b50565b611341611a82565b606654801982198116146113685760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146113e457604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261141e576001600160a01b0383165f908152609b602052604090205461113b565b505f92915050565b6033546001600160a01b03163314610b5f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161123a565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156114e2573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150691906121ae565b610b5f57604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c954036115b25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161123a565b600260c955565b5f806001600160a01b0384166115e2576040516339b190bb60e11b815260040160405180910390fd5b5f8312156116035760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916116278383612087565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906116779086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516116ba91815260200190565b60405180910390a25f81136116d7575f5f945094505050506116f9565b5f8212156116ec575f945092506116f9915050565b5092508391506116f99050565b9250929050565b60605f61170c83611b33565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610d9d5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b606482015260840161123a565b606654600160ff83161b908116036113365760405163840a48d560e01b815260040160405180910390fd5b5f60995f8154611831906121cd565b9091555060408051610940810190915261090e8082525f916118ce91839133916122216020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f19818403018152908290526118ba9291602001612192565b604051602081830303815290604052611b5a565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b15801561190f575f5ffd5b505af1158015611921573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f806119898385612074565b90505f61199586611144565b90505f6119ad67ffffffffffffffff83168488611c5c565b90505f6119ba82846121e5565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61113b838330611d41565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ade573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b029190612205565b6001600160a01b0316336001600160a01b031614610b5f5760405163794821ff60e01b815260040160405180910390fd5b5f60ff8216601f81111561113e57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611bab5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161123a565b81515f03611bfb5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161123a565b8282516020840186f590506001600160a01b038116610d375760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161123a565b5f80805f19858709858702925082811083820303915050805f03611c9357838281611c8957611c89612148565b0492505050610d37565b808411611cda5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161123a565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b0381168114611336575f5ffd5b5f60208284031215611d8e575f5ffd5b8135610d3781611d6a565b5f60208284031215611da9575f5ffd5b5035919050565b5f5f5f5f60808587031215611dc3575f5ffd5b8435611dce81611d6a565b93506020850135611dde81611d6a565b92506040850135611dee81611d6a565b9396929550929360600135925050565b5f5f5f5f84860360a0811215611e12575f5ffd5b6040811215611e1f575f5ffd5b50849350604084013592506060840135611e3881611d6a565b9396929550929360800135925050565b5f5f5f60608486031215611e5a575f5ffd5b8335611e6581611d6a565b92506020840135611e7581611d6a565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611ecb575f5ffd5b813567ffffffffffffffff81168114610d37575f5ffd5b5f60208284031215611ef2575f5ffd5b813560ff81168114610d37575f5ffd5b5f5f83601f840112611f12575f5ffd5b50813567ffffffffffffffff811115611f29575f5ffd5b6020830191508360208285010111156116f9575f5ffd5b5f5f5f5f5f60608688031215611f54575f5ffd5b853567ffffffffffffffff811115611f6a575f5ffd5b611f7688828901611f02565b909650945050602086013567ffffffffffffffff811115611f95575f5ffd5b611fa188828901611f02565b96999598509660400135949350505050565b5f5f5f60608486031215611fc5575f5ffd5b8335611fd081611d6a565b95602085013595506040909401359392505050565b5f5f60408385031215611ff6575f5ffd5b823561200181611d6a565b946020939093013593505050565b5f5f60408385031215612020575f5ffd5b823561202b81611d6a565b9150602083013561203b81611d6a565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b820161206e5761206e612046565b505f0390565b8181038181111561113e5761113e612046565b8082018281125f8312801582168215821617156120a6576120a6612046565b505092915050565b8082018082111561113e5761113e612046565b8181035f8312801583831316838312821617156120e0576120e0612046565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f6121226060830187896120e7565b82810360208401526121358186886120e7565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f8261217657634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6121a66121a0838661217b565b8461217b565b949350505050565b5f602082840312156121be575f5ffd5b81518015158114610d37575f5ffd5b5f600182016121de576121de612046565b5060010190565b67ffffffffffffffff828116828216039081111561113e5761113e612046565b5f60208284031215612215575f5ffd5b8151610d3781611d6a56fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208e17466bc4e1bd8a38873726de0bdfb1a2b1e53233d791de2bc2874ff4581f5164736f6c634300081b0033", } // EigenPodManagerABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/EigenStrategy/binding.go b/pkg/bindings/EigenStrategy/binding.go index e0eaf1d1a5..6b6aa10d98 100644 --- a/pkg/bindings/EigenStrategy/binding.go +++ b/pkg/bindings/EigenStrategy/binding.go @@ -32,7 +32,7 @@ var ( // EigenStrategyMetaData contains all meta data concerning the EigenStrategy contract. var EigenStrategyMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"EIGEN\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigen\"}],\"stateMutability\":\"view\"},{\"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\":\"_EIGEN\",\"type\":\"address\",\"internalType\":\"contractIEigen\"},{\"name\":\"_bEIGEN\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_underlyingToken\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"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\":\"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\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"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\":[{\"name\":\"amountOut\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ExchangeRateEmitted\",\"inputs\":[{\"name\":\"rate\",\"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\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyTokenSet\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"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\":\"error\",\"name\":\"BalanceExceedsMaxTotalDeposits\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxPerDepositExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewSharesZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnderlyingToken\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"TotalSharesExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalAmountExceedsTotalDeposits\",\"inputs\":[]}]", - Bin: "0x60e060405234801561000f575f5ffd5b5060405161181238038061181283398101604081905261002e916101bc565b82828280826001600160a01b03811661005a576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660805261006f81610093565b60a052506001600160a01b03831660c0526100886100d9565b5050505050506102ed565b5f5f829050601f815111156100c6578260405163305a27a960e01b81526004016100bd9190610292565b60405180910390fd5b80516100d1826102c7565b179392505050565b5f54610100900460ff16156101405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bd565b5f5460ff9081161461018f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101a5575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101ce575f5ffd5b83516101d981610191565b60208501519093506101ea81610191565b60408501519092506001600160401b03811115610205575f5ffd5b8401601f81018613610215575f5ffd5b80516001600160401b0381111561022e5761022e6101a8565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025c5761025c6101a8565b604052818152828201602001881015610273575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e7575f198160200360031b1b821691505b50919050565b60805160a05160c0516114d861033a5f395f8181610196015281816103990152818161076101526107e301525f6105a401525f8181610274015281816109910152610eca01526114d85ff3fe608060405234801561000f575f5ffd5b5060043610610148575f3560e01c80637a8b2637116100bf578063ce7c2ac211610079578063ce7c2ac2146102d7578063d9caed12146102ea578063e3dae51c146102fd578063f3e7387514610310578063fabc1cbc14610323578063fdc371ce14610336575f5ffd5b80637a8b26371461025c578063886f11951461026f5780638c871019146102965780638f6a6240146102a9578063ab5921e1146102bc578063c4d66de8146102c4575f5ffd5b8063485cc95511610110578063485cc955146101e257806354fd4d50146101f5578063553ca5f81461020a578063595c6a671461021d5780635ac86ab7146102255780635c975abb14610254575f5ffd5b8063136439dd1461014c5780632495a5991461016157806339b70e38146101915780633a98ef39146101b857806347e7ef24146101cf575b5f5ffd5b61015f61015a3660046111cb565b610349565b005b603254610174906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101747f000000000000000000000000000000000000000000000000000000000000000081565b6101c160335481565b604051908152602001610188565b6101c16101dd3660046111f6565b610383565b61015f6101f0366004611220565b6104b2565b6101fd61059d565b6040516101889190611257565b6101c161021836600461128c565b6105cd565b61015f6105e0565b6102446102333660046112bc565b6001805460ff9092161b9081161490565b6040519015158152602001610188565b6001546101c1565b6101c161026a3660046111cb565b6105f4565b6101747f000000000000000000000000000000000000000000000000000000000000000081565b6101c16102a43660046111cb565b61063d565b6101c16102b736600461128c565b610647565b6101fd610654565b61015f6102d236600461128c565b610674565b6101c16102e536600461128c565b61073a565b6101c16102f83660046112d7565b6107cc565b6101c161030b3660046111cb565b6108ce565b6101c161031e3660046111cb565b610905565b61015f6103313660046111cb565b61090f565b606454610174906001600160a01b031681565b61035161097c565b60015481811681146103765760405163c61dca5d60e01b815260040160405180910390fd5b61037f82610a1f565b5050565b5f5f61038e81610a5c565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103d7576040516348da714f60e01b815260040160405180910390fd5b6103e18484610a92565b6033545f6103f16103e883611329565b90505f6103e86103ff610b4b565b6104099190611329565b90505f610416878361133c565b905080610423848961134f565b61042d9190611366565b9550855f0361044f57604051630c392ed360e11b815260040160405180910390fd5b6104598685611329565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561048e57604051632f14e8a360e11b815260040160405180910390fd5b6104a7826103e86033546104a29190611329565b610bb5565b505050505092915050565b5f54610100900460ff16158080156104d057505f54600160ff909116105b806104e95750303b1580156104e957505f5460ff166001145b61050e5760405162461bcd60e51b815260040161050590611385565b60405180910390fd5b5f805460ff19166001179055801561052f575f805461ff0019166101001790555b606480546001600160a01b0319166001600160a01b03851617905561055382610c01565b8015610598575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60606105c87f0000000000000000000000000000000000000000000000000000000000000000610d4c565b905090565b5f6105da61026a8361073a565b92915050565b6105e861097c565b6105f25f19610a1f565b565b5f5f6103e86033546106069190611329565b90505f6103e8610614610b4b565b61061e9190611329565b90508161062b858361134f565b6106359190611366565b949350505050565b5f6105da826108ce565b5f6105da61031e8361073a565b60606040518060800160405280604d8152602001611456604d9139905090565b5f54610100900460ff161580801561069257505f54600160ff909116105b806106ab5750303b1580156106ab57505f5460ff166001145b6106c75760405162461bcd60e51b815260040161050590611385565b5f805460ff1916600117905580156106e8575f805461ff0019166101001790555b6106f182610c01565b801561037f575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa1580156107a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105da91906113d3565b5f60016107d881610a5c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610821576040516348da714f60e01b815260040160405180910390fd5b61082c858585610d89565b6033548084111561085057604051630b469df360e41b815260040160405180910390fd5b5f61085d6103e883611329565b90505f6103e861086b610b4b565b6108759190611329565b905081610882878361134f565b61088c9190611366565b9450610898868461133c565b6033556108b86108a8868361133c565b6103e86033546104a29190611329565b6108c3888887610dcf565b505050509392505050565b5f5f6103e86033546108e09190611329565b90505f6103e86108ee610b4b565b6108f89190611329565b90508061062b838661134f565b5f6105da826105f4565b610917610ec8565b6001548019821981161461093e5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156109de573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0291906113ea565b6105f257604051631d77d47760e21b815260040160405180910390fd5b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b610a71816001805460ff9092161b9081161490565b15610a8f5760405163840a48d560e01b815260040160405180910390fd5b50565b6032546001600160a01b0383811691161480610abb57506064546001600160a01b038381169116145b610ad857604051630312abdd60e61b815260040160405180910390fd5b6064546001600160a01b039081169083160361037f57606454604051636f074d1f60e11b8152600481018390526001600160a01b039091169063de0e9a3e906024015f604051808303815f87803b158015610b31575f5ffd5b505af1158015610b43573d5f5f3e3d5ffd5b505050505050565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610b91573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c891906113d3565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610be984670de0b6b3a764000061134f565b610bf39190611366565b60405190815260200161072e565b5f54610100900460ff16610c6b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610505565b603280546001600160a01b0319166001600160a01b038316179055610c8f5f610a1f565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d01573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d259190611409565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b60605f610d5883610f79565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6032546001600160a01b0383811691161480610db257506064546001600160a01b038381169116145b61059857604051630312abdd60e61b815260040160405180910390fd5b6064546001600160a01b0390811690831603610eb45760325460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044016020604051808303815f875af1158015610e35573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5991906113ea565b50606454604051630ea598cb60e41b8152600481018390526001600160a01b039091169063ea598cb0906024015f604051808303815f87803b158015610e9d575f5ffd5b505af1158015610eaf573d5f5f3e3d5ffd5b505050505b6105986001600160a01b0383168483610fa0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f24573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f489190611424565b6001600160a01b0316336001600160a01b0316146105f25760405163794821ff60e01b815260040160405180910390fd5b5f60ff8216601f8111156105da57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610598928692915f9161102f9185169084906110ae565b905080515f148061104f57508080602001905181019061104f91906113ea565b6105985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610505565b606061063584845f85855f5f866001600160a01b031685876040516110d3919061143f565b5f6040518083038185875af1925050503d805f811461110d576040519150601f19603f3d011682016040523d82523d5f602084013e611112565b606091505b50915091506111238783838761112e565b979650505050505050565b6060831561119c5782515f03611195576001600160a01b0385163b6111955760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610505565b5081610635565b61063583838151156111b15781518083602001fd5b8060405162461bcd60e51b81526004016105059190611257565b5f602082840312156111db575f5ffd5b5035919050565b6001600160a01b0381168114610a8f575f5ffd5b5f5f60408385031215611207575f5ffd5b8235611212816111e2565b946020939093013593505050565b5f5f60408385031215611231575f5ffd5b823561123c816111e2565b9150602083013561124c816111e2565b809150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561129c575f5ffd5b81356112a7816111e2565b9392505050565b60ff81168114610a8f575f5ffd5b5f602082840312156112cc575f5ffd5b81356112a7816112ae565b5f5f5f606084860312156112e9575f5ffd5b83356112f4816111e2565b92506020840135611304816111e2565b929592945050506040919091013590565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105da576105da611315565b818103818111156105da576105da611315565b80820281158282048414176105da576105da611315565b5f8261138057634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f602082840312156113e3575f5ffd5b5051919050565b5f602082840312156113fa575f5ffd5b815180151581146112a7575f5ffd5b5f60208284031215611419575f5ffd5b81516112a7816112ae565b5f60208284031215611434575f5ffd5b81516112a7816111e2565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220b13cee67bb58f1ea1da8fd826c588345ffe46483f6aa0cf1f393d7395cc02d7764736f6c634300081b0033", + Bin: "0x60e060405234801561000f575f5ffd5b5060405161181238038061181283398101604081905261002e916101bc565b82828280826001600160a01b03811661005a576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660805261006f81610093565b60a052506001600160a01b03831660c0526100886100d9565b5050505050506102ed565b5f5f829050601f815111156100c6578260405163305a27a960e01b81526004016100bd9190610292565b60405180910390fd5b80516100d1826102c7565b179392505050565b5f54610100900460ff16156101405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bd565b5f5460ff9081161461018f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101a5575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101ce575f5ffd5b83516101d981610191565b60208501519093506101ea81610191565b60408501519092506001600160401b03811115610205575f5ffd5b8401601f81018613610215575f5ffd5b80516001600160401b0381111561022e5761022e6101a8565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025c5761025c6101a8565b604052818152828201602001881015610273575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e7575f198160200360031b1b821691505b50919050565b60805160a05160c0516114d861033a5f395f8181610196015281816103990152818161076101526107e301525f6105a401525f8181610274015281816109910152610eca01526114d85ff3fe608060405234801561000f575f5ffd5b5060043610610148575f3560e01c80637a8b2637116100bf578063ce7c2ac211610079578063ce7c2ac2146102d7578063d9caed12146102ea578063e3dae51c146102fd578063f3e7387514610310578063fabc1cbc14610323578063fdc371ce14610336575f5ffd5b80637a8b26371461025c578063886f11951461026f5780638c871019146102965780638f6a6240146102a9578063ab5921e1146102bc578063c4d66de8146102c4575f5ffd5b8063485cc95511610110578063485cc955146101e257806354fd4d50146101f5578063553ca5f81461020a578063595c6a671461021d5780635ac86ab7146102255780635c975abb14610254575f5ffd5b8063136439dd1461014c5780632495a5991461016157806339b70e38146101915780633a98ef39146101b857806347e7ef24146101cf575b5f5ffd5b61015f61015a3660046111cb565b610349565b005b603254610174906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101747f000000000000000000000000000000000000000000000000000000000000000081565b6101c160335481565b604051908152602001610188565b6101c16101dd3660046111f6565b610383565b61015f6101f0366004611220565b6104b2565b6101fd61059d565b6040516101889190611257565b6101c161021836600461128c565b6105cd565b61015f6105e0565b6102446102333660046112bc565b6001805460ff9092161b9081161490565b6040519015158152602001610188565b6001546101c1565b6101c161026a3660046111cb565b6105f4565b6101747f000000000000000000000000000000000000000000000000000000000000000081565b6101c16102a43660046111cb565b61063d565b6101c16102b736600461128c565b610647565b6101fd610654565b61015f6102d236600461128c565b610674565b6101c16102e536600461128c565b61073a565b6101c16102f83660046112d7565b6107cc565b6101c161030b3660046111cb565b6108ce565b6101c161031e3660046111cb565b610905565b61015f6103313660046111cb565b61090f565b606454610174906001600160a01b031681565b61035161097c565b60015481811681146103765760405163c61dca5d60e01b815260040160405180910390fd5b61037f82610a1f565b5050565b5f5f61038e81610a5c565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103d7576040516348da714f60e01b815260040160405180910390fd5b6103e18484610a92565b6033545f6103f16103e883611329565b90505f6103e86103ff610b4b565b6104099190611329565b90505f610416878361133c565b905080610423848961134f565b61042d9190611366565b9550855f0361044f57604051630c392ed360e11b815260040160405180910390fd5b6104598685611329565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561048e57604051632f14e8a360e11b815260040160405180910390fd5b6104a7826103e86033546104a29190611329565b610bb5565b505050505092915050565b5f54610100900460ff16158080156104d057505f54600160ff909116105b806104e95750303b1580156104e957505f5460ff166001145b61050e5760405162461bcd60e51b815260040161050590611385565b60405180910390fd5b5f805460ff19166001179055801561052f575f805461ff0019166101001790555b606480546001600160a01b0319166001600160a01b03851617905561055382610c01565b8015610598575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60606105c87f0000000000000000000000000000000000000000000000000000000000000000610d4c565b905090565b5f6105da61026a8361073a565b92915050565b6105e861097c565b6105f25f19610a1f565b565b5f5f6103e86033546106069190611329565b90505f6103e8610614610b4b565b61061e9190611329565b90508161062b858361134f565b6106359190611366565b949350505050565b5f6105da826108ce565b5f6105da61031e8361073a565b60606040518060800160405280604d8152602001611456604d9139905090565b5f54610100900460ff161580801561069257505f54600160ff909116105b806106ab5750303b1580156106ab57505f5460ff166001145b6106c75760405162461bcd60e51b815260040161050590611385565b5f805460ff1916600117905580156106e8575f805461ff0019166101001790555b6106f182610c01565b801561037f575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa1580156107a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105da91906113d3565b5f60016107d881610a5c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610821576040516348da714f60e01b815260040160405180910390fd5b61082c858585610d89565b6033548084111561085057604051630b469df360e41b815260040160405180910390fd5b5f61085d6103e883611329565b90505f6103e861086b610b4b565b6108759190611329565b905081610882878361134f565b61088c9190611366565b9450610898868461133c565b6033556108b86108a8868361133c565b6103e86033546104a29190611329565b6108c3888887610dcf565b505050509392505050565b5f5f6103e86033546108e09190611329565b90505f6103e86108ee610b4b565b6108f89190611329565b90508061062b838661134f565b5f6105da826105f4565b610917610ec8565b6001548019821981161461093e5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156109de573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0291906113ea565b6105f257604051631d77d47760e21b815260040160405180910390fd5b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b610a71816001805460ff9092161b9081161490565b15610a8f5760405163840a48d560e01b815260040160405180910390fd5b50565b6032546001600160a01b0383811691161480610abb57506064546001600160a01b038381169116145b610ad857604051630312abdd60e61b815260040160405180910390fd5b6064546001600160a01b039081169083160361037f57606454604051636f074d1f60e11b8152600481018390526001600160a01b039091169063de0e9a3e906024015f604051808303815f87803b158015610b31575f5ffd5b505af1158015610b43573d5f5f3e3d5ffd5b505050505050565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610b91573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c891906113d3565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610be984670de0b6b3a764000061134f565b610bf39190611366565b60405190815260200161072e565b5f54610100900460ff16610c6b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610505565b603280546001600160a01b0319166001600160a01b038316179055610c8f5f610a1f565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d01573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d259190611409565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b60605f610d5883610f79565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6032546001600160a01b0383811691161480610db257506064546001600160a01b038381169116145b61059857604051630312abdd60e61b815260040160405180910390fd5b6064546001600160a01b0390811690831603610eb45760325460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044016020604051808303815f875af1158015610e35573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5991906113ea565b50606454604051630ea598cb60e41b8152600481018390526001600160a01b039091169063ea598cb0906024015f604051808303815f87803b158015610e9d575f5ffd5b505af1158015610eaf573d5f5f3e3d5ffd5b505050505b6105986001600160a01b0383168483610fa0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f24573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f489190611424565b6001600160a01b0316336001600160a01b0316146105f25760405163794821ff60e01b815260040160405180910390fd5b5f60ff8216601f8111156105da57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610598928692915f9161102f9185169084906110ae565b905080515f148061104f57508080602001905181019061104f91906113ea565b6105985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610505565b606061063584845f85855f5f866001600160a01b031685876040516110d3919061143f565b5f6040518083038185875af1925050503d805f811461110d576040519150601f19603f3d011682016040523d82523d5f602084013e611112565b606091505b50915091506111238783838761112e565b979650505050505050565b6060831561119c5782515f03611195576001600160a01b0385163b6111955760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610505565b5081610635565b61063583838151156111b15781518083602001fd5b8060405162461bcd60e51b81526004016105059190611257565b5f602082840312156111db575f5ffd5b5035919050565b6001600160a01b0381168114610a8f575f5ffd5b5f5f60408385031215611207575f5ffd5b8235611212816111e2565b946020939093013593505050565b5f5f60408385031215611231575f5ffd5b823561123c816111e2565b9150602083013561124c816111e2565b809150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561129c575f5ffd5b81356112a7816111e2565b9392505050565b60ff81168114610a8f575f5ffd5b5f602082840312156112cc575f5ffd5b81356112a7816112ae565b5f5f5f606084860312156112e9575f5ffd5b83356112f4816111e2565b92506020840135611304816111e2565b929592945050506040919091013590565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105da576105da611315565b818103818111156105da576105da611315565b80820281158282048414176105da576105da611315565b5f8261138057634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f602082840312156113e3575f5ffd5b5051919050565b5f602082840312156113fa575f5ffd5b815180151581146112a7575f5ffd5b5f60208284031215611419575f5ffd5b81516112a7816112ae565b5f60208284031215611434575f5ffd5b81516112a7816111e2565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220aa95ae724dbf1fd99c1bfa7461da89376ba87f0012310d96a851c01cd1fab8be64736f6c634300081b0033", } // EigenStrategyABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/IAllocationManager/binding.go b/pkg/bindings/IAllocationManager/binding.go index df8fd37f7f..d45fb9d9f2 100644 --- a/pkg/bindings/IAllocationManager/binding.go +++ b/pkg/bindings/IAllocationManager/binding.go @@ -80,7 +80,7 @@ type OperatorSet struct { // IAllocationManagerMetaData contains all meta data concerning the IAllocationManager contract. var IAllocationManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"addStrategiesToOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"clearDeallocationQueue\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"numToClear\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.CreateSetParams[]\",\"components\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRedistributingOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.CreateSetParams[]\",\"components\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}]},{\"name\":\"redistributionRecipients\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterFromOperatorSets\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.DeregisterParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatableMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedStake\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"slashableStake\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocation\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.Allocation\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"isSet\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"delay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocations\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getEncumberedMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudesAtBlock\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMemberCount\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMembers\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinimumSlashableStake\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"futureBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"slashableStake\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetCount\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRedistributionRecipient\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRegisteredSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSlashCount\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategiesInOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategyAllocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isMemberOfOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorRedistributable\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSlashable\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRedistributingOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyAllocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.AllocateParams[]\",\"components\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"newMagnitudes\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerForOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.RegisterParams\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slashOperator\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.SlashingParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadsToSlash\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"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\":\"AVSRegistrarSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIAVSRegistrar\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationDelaySet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"magnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EncumberedMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"encumberedMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"maxMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAddedToOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSlashed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadSlashed\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"description\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RedistributionAddressSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"redistributionRecipient\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyAddedToOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AlreadyMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAVSRegistrar\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStrategy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWadToSlash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ModificationAlreadyPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NonexistentAVSMetadata\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotSlashable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SameMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategiesMustBeInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyAlreadyInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UninitializedAllocationDelay\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"DEALLOCATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"delay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addStrategiesToOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"clearDeallocationQueue\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"numToClear\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.CreateSetParams[]\",\"components\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRedistributingOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.CreateSetParams[]\",\"components\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}]},{\"name\":\"redistributionRecipients\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterFromOperatorSets\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.DeregisterParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatableMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedStake\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"slashableStake\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocation\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.Allocation\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"isSet\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"delay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocations\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getEncumberedMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudesAtBlock\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMemberCount\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMembers\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinimumSlashableStake\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"futureBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"slashableStake\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetCount\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRedistributionRecipient\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRegisteredSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSlashCount\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategiesInOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategyAllocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isMemberOfOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorRedistributable\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSlashable\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRedistributingOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyAllocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.AllocateParams[]\",\"components\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"newMagnitudes\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerForOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.RegisterParams\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slashOperator\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.SlashingParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadsToSlash\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"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\":\"AVSRegistrarSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIAVSRegistrar\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationDelaySet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"magnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EncumberedMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"encumberedMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"maxMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAddedToOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSlashed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadSlashed\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"description\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RedistributionAddressSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"redistributionRecipient\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyAddedToOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AlreadyMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAVSRegistrar\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStrategy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWadToSlash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ModificationAlreadyPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NonexistentAVSMetadata\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotSlashable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SameMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategiesMustBeInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyAlreadyInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UninitializedAllocationDelay\",\"inputs\":[]}]", } // IAllocationManagerABI is the input ABI used to generate the binding from. @@ -229,6 +229,37 @@ func (_IAllocationManager *IAllocationManagerTransactorRaw) Transact(opts *bind. return _IAllocationManager.Contract.contract.Transact(opts, method, params...) } +// DEALLOCATIONDELAY is a free data retrieval call binding the contract method 0x2981eb77. +// +// Solidity: function DEALLOCATION_DELAY() view returns(uint32 delay) +func (_IAllocationManager *IAllocationManagerCaller) DEALLOCATIONDELAY(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _IAllocationManager.contract.Call(opts, &out, "DEALLOCATION_DELAY") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// DEALLOCATIONDELAY is a free data retrieval call binding the contract method 0x2981eb77. +// +// Solidity: function DEALLOCATION_DELAY() view returns(uint32 delay) +func (_IAllocationManager *IAllocationManagerSession) DEALLOCATIONDELAY() (uint32, error) { + return _IAllocationManager.Contract.DEALLOCATIONDELAY(&_IAllocationManager.CallOpts) +} + +// DEALLOCATIONDELAY is a free data retrieval call binding the contract method 0x2981eb77. +// +// Solidity: function DEALLOCATION_DELAY() view returns(uint32 delay) +func (_IAllocationManager *IAllocationManagerCallerSession) DEALLOCATIONDELAY() (uint32, error) { + return _IAllocationManager.Contract.DEALLOCATIONDELAY(&_IAllocationManager.CallOpts) +} + // GetAVSRegistrar is a free data retrieval call binding the contract method 0x304c10cd. // // Solidity: function getAVSRegistrar(address avs) view returns(address) diff --git a/pkg/bindings/IBN254CertificateVerifier/binding.go b/pkg/bindings/IBN254CertificateVerifier/binding.go index df40eaf2b4..eb40bfdf9f 100644 --- a/pkg/bindings/IBN254CertificateVerifier/binding.go +++ b/pkg/bindings/IBN254CertificateVerifier/binding.go @@ -85,7 +85,7 @@ type OperatorSet struct { // IBN254CertificateVerifierMetaData contains all meta data concerning the IBN254CertificateVerifier contract. var IBN254CertificateVerifierMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"getOperatorSetOwner\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"latestReferenceTimestamp\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"maxOperatorTableStaleness\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorSetInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"operatorSetConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificate\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]}],\"outputs\":[{\"name\":\"signedStakes\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificateNominal\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"totalStakeNominalThresholds\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificateProportion\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"totalStakeProportionThresholds\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"MaxStalenessPeriodUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetOwnerUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TableUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"operatorSetInfo\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CertificateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyTableUpdater\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReferenceTimestampDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VerificationFailed\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"getOperatorSetOwner\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"latestReferenceTimestamp\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"maxOperatorTableStaleness\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorSetInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"operatorSetConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificate\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]}],\"outputs\":[{\"name\":\"signedStakes\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificateNominal\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"totalStakeNominalThresholds\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificateProportion\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"totalStakeProportionThresholds\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"MaxStalenessPeriodUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetOwnerUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TableUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"operatorSetInfo\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CertificateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyTableUpdater\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReferenceTimestampDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VerificationFailed\",\"inputs\":[]}]", } // IBN254CertificateVerifierABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/IBN254TableCalculator/binding.go b/pkg/bindings/IBN254TableCalculator/binding.go index 3bc25aad8e..85471ef729 100644 --- a/pkg/bindings/IBN254TableCalculator/binding.go +++ b/pkg/bindings/IBN254TableCalculator/binding.go @@ -57,7 +57,7 @@ type OperatorSet struct { // IBN254TableCalculatorMetaData contains all meta data concerning the IBN254TableCalculator contract. var IBN254TableCalculatorMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"calculateOperatorTable\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operatorSetInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorTableBytes\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorInfos\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operatorInfos\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"}]", + ABI: "[{\"type\":\"function\",\"name\":\"calculateOperatorTable\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operatorSetInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorTableBytes\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorInfos\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operatorInfos\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorWeight\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorWeights\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"weights\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"LookaheadBlocksSet\",\"inputs\":[{\"name\":\"lookaheadBlocks\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"LookaheadBlocksTooHigh\",\"inputs\":[]}]", } // IBN254TableCalculatorABI is the input ABI used to generate the binding from. @@ -298,3 +298,213 @@ func (_IBN254TableCalculator *IBN254TableCalculatorSession) GetOperatorInfos(ope func (_IBN254TableCalculator *IBN254TableCalculatorCallerSession) GetOperatorInfos(operatorSet OperatorSet) ([]IBN254TableCalculatorTypesBN254OperatorInfo, error) { return _IBN254TableCalculator.Contract.GetOperatorInfos(&_IBN254TableCalculator.CallOpts, operatorSet) } + +// GetOperatorWeight is a free data retrieval call binding the contract method 0x1088794a. +// +// Solidity: function getOperatorWeight((address,uint32) operatorSet, address operator) view returns(uint256 weight) +func (_IBN254TableCalculator *IBN254TableCalculatorCaller) GetOperatorWeight(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) (*big.Int, error) { + var out []interface{} + err := _IBN254TableCalculator.contract.Call(opts, &out, "getOperatorWeight", operatorSet, operator) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetOperatorWeight is a free data retrieval call binding the contract method 0x1088794a. +// +// Solidity: function getOperatorWeight((address,uint32) operatorSet, address operator) view returns(uint256 weight) +func (_IBN254TableCalculator *IBN254TableCalculatorSession) GetOperatorWeight(operatorSet OperatorSet, operator common.Address) (*big.Int, error) { + return _IBN254TableCalculator.Contract.GetOperatorWeight(&_IBN254TableCalculator.CallOpts, operatorSet, operator) +} + +// GetOperatorWeight is a free data retrieval call binding the contract method 0x1088794a. +// +// Solidity: function getOperatorWeight((address,uint32) operatorSet, address operator) view returns(uint256 weight) +func (_IBN254TableCalculator *IBN254TableCalculatorCallerSession) GetOperatorWeight(operatorSet OperatorSet, operator common.Address) (*big.Int, error) { + return _IBN254TableCalculator.Contract.GetOperatorWeight(&_IBN254TableCalculator.CallOpts, operatorSet, operator) +} + +// GetOperatorWeights is a free data retrieval call binding the contract method 0x71ca71d9. +// +// Solidity: function getOperatorWeights((address,uint32) operatorSet) view returns(address[] operators, uint256[][] weights) +func (_IBN254TableCalculator *IBN254TableCalculatorCaller) GetOperatorWeights(opts *bind.CallOpts, operatorSet OperatorSet) (struct { + Operators []common.Address + Weights [][]*big.Int +}, error) { + var out []interface{} + err := _IBN254TableCalculator.contract.Call(opts, &out, "getOperatorWeights", operatorSet) + + outstruct := new(struct { + Operators []common.Address + Weights [][]*big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Operators = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + outstruct.Weights = *abi.ConvertType(out[1], new([][]*big.Int)).(*[][]*big.Int) + + return *outstruct, err + +} + +// GetOperatorWeights is a free data retrieval call binding the contract method 0x71ca71d9. +// +// Solidity: function getOperatorWeights((address,uint32) operatorSet) view returns(address[] operators, uint256[][] weights) +func (_IBN254TableCalculator *IBN254TableCalculatorSession) GetOperatorWeights(operatorSet OperatorSet) (struct { + Operators []common.Address + Weights [][]*big.Int +}, error) { + return _IBN254TableCalculator.Contract.GetOperatorWeights(&_IBN254TableCalculator.CallOpts, operatorSet) +} + +// GetOperatorWeights is a free data retrieval call binding the contract method 0x71ca71d9. +// +// Solidity: function getOperatorWeights((address,uint32) operatorSet) view returns(address[] operators, uint256[][] weights) +func (_IBN254TableCalculator *IBN254TableCalculatorCallerSession) GetOperatorWeights(operatorSet OperatorSet) (struct { + Operators []common.Address + Weights [][]*big.Int +}, error) { + return _IBN254TableCalculator.Contract.GetOperatorWeights(&_IBN254TableCalculator.CallOpts, operatorSet) +} + +// IBN254TableCalculatorLookaheadBlocksSetIterator is returned from FilterLookaheadBlocksSet and is used to iterate over the raw logs and unpacked data for LookaheadBlocksSet events raised by the IBN254TableCalculator contract. +type IBN254TableCalculatorLookaheadBlocksSetIterator struct { + Event *IBN254TableCalculatorLookaheadBlocksSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IBN254TableCalculatorLookaheadBlocksSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IBN254TableCalculatorLookaheadBlocksSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IBN254TableCalculatorLookaheadBlocksSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IBN254TableCalculatorLookaheadBlocksSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IBN254TableCalculatorLookaheadBlocksSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IBN254TableCalculatorLookaheadBlocksSet represents a LookaheadBlocksSet event raised by the IBN254TableCalculator contract. +type IBN254TableCalculatorLookaheadBlocksSet struct { + LookaheadBlocks *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLookaheadBlocksSet is a free log retrieval operation binding the contract event 0xa41e64dd47db91b61b43ccea8b57d75abfa496f23efc708c22753c4bc9d68842. +// +// Solidity: event LookaheadBlocksSet(uint256 lookaheadBlocks) +func (_IBN254TableCalculator *IBN254TableCalculatorFilterer) FilterLookaheadBlocksSet(opts *bind.FilterOpts) (*IBN254TableCalculatorLookaheadBlocksSetIterator, error) { + + logs, sub, err := _IBN254TableCalculator.contract.FilterLogs(opts, "LookaheadBlocksSet") + if err != nil { + return nil, err + } + return &IBN254TableCalculatorLookaheadBlocksSetIterator{contract: _IBN254TableCalculator.contract, event: "LookaheadBlocksSet", logs: logs, sub: sub}, nil +} + +// WatchLookaheadBlocksSet is a free log subscription operation binding the contract event 0xa41e64dd47db91b61b43ccea8b57d75abfa496f23efc708c22753c4bc9d68842. +// +// Solidity: event LookaheadBlocksSet(uint256 lookaheadBlocks) +func (_IBN254TableCalculator *IBN254TableCalculatorFilterer) WatchLookaheadBlocksSet(opts *bind.WatchOpts, sink chan<- *IBN254TableCalculatorLookaheadBlocksSet) (event.Subscription, error) { + + logs, sub, err := _IBN254TableCalculator.contract.WatchLogs(opts, "LookaheadBlocksSet") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IBN254TableCalculatorLookaheadBlocksSet) + if err := _IBN254TableCalculator.contract.UnpackLog(event, "LookaheadBlocksSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLookaheadBlocksSet is a log parse operation binding the contract event 0xa41e64dd47db91b61b43ccea8b57d75abfa496f23efc708c22753c4bc9d68842. +// +// Solidity: event LookaheadBlocksSet(uint256 lookaheadBlocks) +func (_IBN254TableCalculator *IBN254TableCalculatorFilterer) ParseLookaheadBlocksSet(log types.Log) (*IBN254TableCalculatorLookaheadBlocksSet, error) { + event := new(IBN254TableCalculatorLookaheadBlocksSet) + if err := _IBN254TableCalculator.contract.UnpackLog(event, "LookaheadBlocksSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/ICrossChainRegistry/binding.go b/pkg/bindings/ICrossChainRegistry/binding.go index e0662e62a3..ce5428b296 100644 --- a/pkg/bindings/ICrossChainRegistry/binding.go +++ b/pkg/bindings/ICrossChainRegistry/binding.go @@ -29,6 +29,12 @@ var ( _ = abi.ConvertType ) +// ICrossChainRegistryTypesOperatorSetConfig is an auto generated low-level Go binding around an user-defined struct. +type ICrossChainRegistryTypesOperatorSetConfig struct { + Owner common.Address + MaxStalenessPeriod uint32 +} + // OperatorSet is an auto generated low-level Go binding around an user-defined struct. type OperatorSet struct { Avs common.Address @@ -37,7 +43,7 @@ type OperatorSet struct { // ICrossChainRegistryMetaData contains all meta data concerning the ICrossChainRegistry contract. var ICrossChainRegistryMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"addChainIDToWhitelist\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addTransportDestination\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainID\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getActiveGenerationReservations\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIOperatorTableCalculator[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getOperatorTableCalculator\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableCalculator\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getSupportedChains\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransportDestinations\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeChainIDFromWhitelist\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeGenerationReservation\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeTransportDestination\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainID\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"requestGenerationReservation\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorTableCalculator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorTableCalculator\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"calculator\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableCalculator\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ChainIDAddedToWhitelist\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChainIDRemovedFromWhitelist\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GenerationReservationMade\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorTableCalculator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIOperatorTableCalculator\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GenerationReservationRemoved\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorTableCalculator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIOperatorTableCalculator\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransportDestinationAdded\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainID\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransportDestinationRemoved\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainID\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidChainId\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"addChainIDsToWhitelist\",\"inputs\":[{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"operatorTableUpdaters\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addTransportDestinations\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"calculateOperatorTableBytes\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createGenerationReservation\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorTableCalculator\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableCalculator\"},{\"name\":\"config\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getActiveGenerationReservations\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getActiveTransportReservations\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetConfig\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorTableCalculator\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableCalculator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSupportedChains\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransportDestinations\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeChainIDsFromWhitelist\",\"inputs\":[{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeGenerationReservation\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeTransportDestinations\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainIDs\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorSetConfig\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"config\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorTableCalculator\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorTableCalculator\",\"type\":\"address\",\"internalType\":\"contractIOperatorTableCalculator\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ChainIDAddedToWhitelist\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorTableUpdater\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChainIDRemovedFromWhitelist\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GenerationReservationCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GenerationReservationRemoved\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetConfigSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"config\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorTableCalculatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorTableCalculator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIOperatorTableCalculator\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransportDestinationAdded\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransportDestinationRemoved\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ChainIDAlreadyWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ChainIDNotWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EmptyChainIDsArray\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GenerationReservationAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GenerationReservationDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidChainId\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorTableCalculator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NeedToDelete\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RequireAtLeastOneTransportDestination\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StalenessPeriodZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TransportDestinationAlreadyAdded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TransportDestinationNotFound\",\"inputs\":[]}]", } // ICrossChainRegistryABI is the input ABI used to generate the binding from. @@ -186,49 +192,206 @@ func (_ICrossChainRegistry *ICrossChainRegistryTransactorRaw) Transact(opts *bin return _ICrossChainRegistry.Contract.contract.Transact(opts, method, params...) } +// CalculateOperatorTableBytes is a free data retrieval call binding the contract method 0x41ee6d0e. +// +// Solidity: function calculateOperatorTableBytes((address,uint32) operatorSet) view returns(bytes) +func (_ICrossChainRegistry *ICrossChainRegistryCaller) CalculateOperatorTableBytes(opts *bind.CallOpts, operatorSet OperatorSet) ([]byte, error) { + var out []interface{} + err := _ICrossChainRegistry.contract.Call(opts, &out, "calculateOperatorTableBytes", operatorSet) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// CalculateOperatorTableBytes is a free data retrieval call binding the contract method 0x41ee6d0e. +// +// Solidity: function calculateOperatorTableBytes((address,uint32) operatorSet) view returns(bytes) +func (_ICrossChainRegistry *ICrossChainRegistrySession) CalculateOperatorTableBytes(operatorSet OperatorSet) ([]byte, error) { + return _ICrossChainRegistry.Contract.CalculateOperatorTableBytes(&_ICrossChainRegistry.CallOpts, operatorSet) +} + +// CalculateOperatorTableBytes is a free data retrieval call binding the contract method 0x41ee6d0e. +// +// Solidity: function calculateOperatorTableBytes((address,uint32) operatorSet) view returns(bytes) +func (_ICrossChainRegistry *ICrossChainRegistryCallerSession) CalculateOperatorTableBytes(operatorSet OperatorSet) ([]byte, error) { + return _ICrossChainRegistry.Contract.CalculateOperatorTableBytes(&_ICrossChainRegistry.CallOpts, operatorSet) +} + +// GetActiveGenerationReservations is a free data retrieval call binding the contract method 0xd09b978b. +// +// Solidity: function getActiveGenerationReservations() view returns((address,uint32)[]) +func (_ICrossChainRegistry *ICrossChainRegistryCaller) GetActiveGenerationReservations(opts *bind.CallOpts) ([]OperatorSet, error) { + var out []interface{} + err := _ICrossChainRegistry.contract.Call(opts, &out, "getActiveGenerationReservations") + + if err != nil { + return *new([]OperatorSet), err + } + + out0 := *abi.ConvertType(out[0], new([]OperatorSet)).(*[]OperatorSet) + + return out0, err + +} + +// GetActiveGenerationReservations is a free data retrieval call binding the contract method 0xd09b978b. +// +// Solidity: function getActiveGenerationReservations() view returns((address,uint32)[]) +func (_ICrossChainRegistry *ICrossChainRegistrySession) GetActiveGenerationReservations() ([]OperatorSet, error) { + return _ICrossChainRegistry.Contract.GetActiveGenerationReservations(&_ICrossChainRegistry.CallOpts) +} + +// GetActiveGenerationReservations is a free data retrieval call binding the contract method 0xd09b978b. +// +// Solidity: function getActiveGenerationReservations() view returns((address,uint32)[]) +func (_ICrossChainRegistry *ICrossChainRegistryCallerSession) GetActiveGenerationReservations() ([]OperatorSet, error) { + return _ICrossChainRegistry.Contract.GetActiveGenerationReservations(&_ICrossChainRegistry.CallOpts) +} + +// GetActiveTransportReservations is a free data retrieval call binding the contract method 0xbfda3b3d. +// +// Solidity: function getActiveTransportReservations() view returns((address,uint32)[], uint256[][]) +func (_ICrossChainRegistry *ICrossChainRegistryCaller) GetActiveTransportReservations(opts *bind.CallOpts) ([]OperatorSet, [][]*big.Int, error) { + var out []interface{} + err := _ICrossChainRegistry.contract.Call(opts, &out, "getActiveTransportReservations") + + if err != nil { + return *new([]OperatorSet), *new([][]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]OperatorSet)).(*[]OperatorSet) + out1 := *abi.ConvertType(out[1], new([][]*big.Int)).(*[][]*big.Int) + + return out0, out1, err + +} + +// GetActiveTransportReservations is a free data retrieval call binding the contract method 0xbfda3b3d. +// +// Solidity: function getActiveTransportReservations() view returns((address,uint32)[], uint256[][]) +func (_ICrossChainRegistry *ICrossChainRegistrySession) GetActiveTransportReservations() ([]OperatorSet, [][]*big.Int, error) { + return _ICrossChainRegistry.Contract.GetActiveTransportReservations(&_ICrossChainRegistry.CallOpts) +} + +// GetActiveTransportReservations is a free data retrieval call binding the contract method 0xbfda3b3d. +// +// Solidity: function getActiveTransportReservations() view returns((address,uint32)[], uint256[][]) +func (_ICrossChainRegistry *ICrossChainRegistryCallerSession) GetActiveTransportReservations() ([]OperatorSet, [][]*big.Int, error) { + return _ICrossChainRegistry.Contract.GetActiveTransportReservations(&_ICrossChainRegistry.CallOpts) +} + +// GetOperatorSetConfig is a free data retrieval call binding the contract method 0x21fa7fdc. +// +// Solidity: function getOperatorSetConfig((address,uint32) operatorSet) view returns((address,uint32)) +func (_ICrossChainRegistry *ICrossChainRegistryCaller) GetOperatorSetConfig(opts *bind.CallOpts, operatorSet OperatorSet) (ICrossChainRegistryTypesOperatorSetConfig, error) { + var out []interface{} + err := _ICrossChainRegistry.contract.Call(opts, &out, "getOperatorSetConfig", operatorSet) + + if err != nil { + return *new(ICrossChainRegistryTypesOperatorSetConfig), err + } + + out0 := *abi.ConvertType(out[0], new(ICrossChainRegistryTypesOperatorSetConfig)).(*ICrossChainRegistryTypesOperatorSetConfig) + + return out0, err + +} + +// GetOperatorSetConfig is a free data retrieval call binding the contract method 0x21fa7fdc. +// +// Solidity: function getOperatorSetConfig((address,uint32) operatorSet) view returns((address,uint32)) +func (_ICrossChainRegistry *ICrossChainRegistrySession) GetOperatorSetConfig(operatorSet OperatorSet) (ICrossChainRegistryTypesOperatorSetConfig, error) { + return _ICrossChainRegistry.Contract.GetOperatorSetConfig(&_ICrossChainRegistry.CallOpts, operatorSet) +} + +// GetOperatorSetConfig is a free data retrieval call binding the contract method 0x21fa7fdc. +// +// Solidity: function getOperatorSetConfig((address,uint32) operatorSet) view returns((address,uint32)) +func (_ICrossChainRegistry *ICrossChainRegistryCallerSession) GetOperatorSetConfig(operatorSet OperatorSet) (ICrossChainRegistryTypesOperatorSetConfig, error) { + return _ICrossChainRegistry.Contract.GetOperatorSetConfig(&_ICrossChainRegistry.CallOpts, operatorSet) +} + +// GetOperatorTableCalculator is a free data retrieval call binding the contract method 0x75e4b539. +// +// Solidity: function getOperatorTableCalculator((address,uint32) operatorSet) view returns(address) +func (_ICrossChainRegistry *ICrossChainRegistryCaller) GetOperatorTableCalculator(opts *bind.CallOpts, operatorSet OperatorSet) (common.Address, error) { + var out []interface{} + err := _ICrossChainRegistry.contract.Call(opts, &out, "getOperatorTableCalculator", operatorSet) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetOperatorTableCalculator is a free data retrieval call binding the contract method 0x75e4b539. +// +// Solidity: function getOperatorTableCalculator((address,uint32) operatorSet) view returns(address) +func (_ICrossChainRegistry *ICrossChainRegistrySession) GetOperatorTableCalculator(operatorSet OperatorSet) (common.Address, error) { + return _ICrossChainRegistry.Contract.GetOperatorTableCalculator(&_ICrossChainRegistry.CallOpts, operatorSet) +} + +// GetOperatorTableCalculator is a free data retrieval call binding the contract method 0x75e4b539. +// +// Solidity: function getOperatorTableCalculator((address,uint32) operatorSet) view returns(address) +func (_ICrossChainRegistry *ICrossChainRegistryCallerSession) GetOperatorTableCalculator(operatorSet OperatorSet) (common.Address, error) { + return _ICrossChainRegistry.Contract.GetOperatorTableCalculator(&_ICrossChainRegistry.CallOpts, operatorSet) +} + // GetSupportedChains is a free data retrieval call binding the contract method 0xc4bffe2b. // -// Solidity: function getSupportedChains() view returns(uint32[]) -func (_ICrossChainRegistry *ICrossChainRegistryCaller) GetSupportedChains(opts *bind.CallOpts) ([]uint32, error) { +// Solidity: function getSupportedChains() view returns(uint256[], address[]) +func (_ICrossChainRegistry *ICrossChainRegistryCaller) GetSupportedChains(opts *bind.CallOpts) ([]*big.Int, []common.Address, error) { var out []interface{} err := _ICrossChainRegistry.contract.Call(opts, &out, "getSupportedChains") if err != nil { - return *new([]uint32), err + return *new([]*big.Int), *new([]common.Address), err } - out0 := *abi.ConvertType(out[0], new([]uint32)).(*[]uint32) + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + out1 := *abi.ConvertType(out[1], new([]common.Address)).(*[]common.Address) - return out0, err + return out0, out1, err } // GetSupportedChains is a free data retrieval call binding the contract method 0xc4bffe2b. // -// Solidity: function getSupportedChains() view returns(uint32[]) -func (_ICrossChainRegistry *ICrossChainRegistrySession) GetSupportedChains() ([]uint32, error) { +// Solidity: function getSupportedChains() view returns(uint256[], address[]) +func (_ICrossChainRegistry *ICrossChainRegistrySession) GetSupportedChains() ([]*big.Int, []common.Address, error) { return _ICrossChainRegistry.Contract.GetSupportedChains(&_ICrossChainRegistry.CallOpts) } // GetSupportedChains is a free data retrieval call binding the contract method 0xc4bffe2b. // -// Solidity: function getSupportedChains() view returns(uint32[]) -func (_ICrossChainRegistry *ICrossChainRegistryCallerSession) GetSupportedChains() ([]uint32, error) { +// Solidity: function getSupportedChains() view returns(uint256[], address[]) +func (_ICrossChainRegistry *ICrossChainRegistryCallerSession) GetSupportedChains() ([]*big.Int, []common.Address, error) { return _ICrossChainRegistry.Contract.GetSupportedChains(&_ICrossChainRegistry.CallOpts) } // GetTransportDestinations is a free data retrieval call binding the contract method 0x3c75fddf. // -// Solidity: function getTransportDestinations((address,uint32) operatorSet) view returns(uint32[]) -func (_ICrossChainRegistry *ICrossChainRegistryCaller) GetTransportDestinations(opts *bind.CallOpts, operatorSet OperatorSet) ([]uint32, error) { +// Solidity: function getTransportDestinations((address,uint32) operatorSet) view returns(uint256[]) +func (_ICrossChainRegistry *ICrossChainRegistryCaller) GetTransportDestinations(opts *bind.CallOpts, operatorSet OperatorSet) ([]*big.Int, error) { var out []interface{} err := _ICrossChainRegistry.contract.Call(opts, &out, "getTransportDestinations", operatorSet) if err != nil { - return *new([]uint32), err + return *new([]*big.Int), err } - out0 := *abi.ConvertType(out[0], new([]uint32)).(*[]uint32) + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) return out0, err @@ -236,121 +399,100 @@ func (_ICrossChainRegistry *ICrossChainRegistryCaller) GetTransportDestinations( // GetTransportDestinations is a free data retrieval call binding the contract method 0x3c75fddf. // -// Solidity: function getTransportDestinations((address,uint32) operatorSet) view returns(uint32[]) -func (_ICrossChainRegistry *ICrossChainRegistrySession) GetTransportDestinations(operatorSet OperatorSet) ([]uint32, error) { +// Solidity: function getTransportDestinations((address,uint32) operatorSet) view returns(uint256[]) +func (_ICrossChainRegistry *ICrossChainRegistrySession) GetTransportDestinations(operatorSet OperatorSet) ([]*big.Int, error) { return _ICrossChainRegistry.Contract.GetTransportDestinations(&_ICrossChainRegistry.CallOpts, operatorSet) } // GetTransportDestinations is a free data retrieval call binding the contract method 0x3c75fddf. // -// Solidity: function getTransportDestinations((address,uint32) operatorSet) view returns(uint32[]) -func (_ICrossChainRegistry *ICrossChainRegistryCallerSession) GetTransportDestinations(operatorSet OperatorSet) ([]uint32, error) { +// Solidity: function getTransportDestinations((address,uint32) operatorSet) view returns(uint256[]) +func (_ICrossChainRegistry *ICrossChainRegistryCallerSession) GetTransportDestinations(operatorSet OperatorSet) ([]*big.Int, error) { return _ICrossChainRegistry.Contract.GetTransportDestinations(&_ICrossChainRegistry.CallOpts, operatorSet) } -// AddChainIDToWhitelist is a paid mutator transaction binding the contract method 0x16df80b5. +// AddChainIDsToWhitelist is a paid mutator transaction binding the contract method 0x04e98be3. // -// Solidity: function addChainIDToWhitelist(uint32 chainID) returns() -func (_ICrossChainRegistry *ICrossChainRegistryTransactor) AddChainIDToWhitelist(opts *bind.TransactOpts, chainID uint32) (*types.Transaction, error) { - return _ICrossChainRegistry.contract.Transact(opts, "addChainIDToWhitelist", chainID) +// Solidity: function addChainIDsToWhitelist(uint256[] chainIDs, address[] operatorTableUpdaters) returns() +func (_ICrossChainRegistry *ICrossChainRegistryTransactor) AddChainIDsToWhitelist(opts *bind.TransactOpts, chainIDs []*big.Int, operatorTableUpdaters []common.Address) (*types.Transaction, error) { + return _ICrossChainRegistry.contract.Transact(opts, "addChainIDsToWhitelist", chainIDs, operatorTableUpdaters) } -// AddChainIDToWhitelist is a paid mutator transaction binding the contract method 0x16df80b5. +// AddChainIDsToWhitelist is a paid mutator transaction binding the contract method 0x04e98be3. // -// Solidity: function addChainIDToWhitelist(uint32 chainID) returns() -func (_ICrossChainRegistry *ICrossChainRegistrySession) AddChainIDToWhitelist(chainID uint32) (*types.Transaction, error) { - return _ICrossChainRegistry.Contract.AddChainIDToWhitelist(&_ICrossChainRegistry.TransactOpts, chainID) +// Solidity: function addChainIDsToWhitelist(uint256[] chainIDs, address[] operatorTableUpdaters) returns() +func (_ICrossChainRegistry *ICrossChainRegistrySession) AddChainIDsToWhitelist(chainIDs []*big.Int, operatorTableUpdaters []common.Address) (*types.Transaction, error) { + return _ICrossChainRegistry.Contract.AddChainIDsToWhitelist(&_ICrossChainRegistry.TransactOpts, chainIDs, operatorTableUpdaters) } -// AddChainIDToWhitelist is a paid mutator transaction binding the contract method 0x16df80b5. +// AddChainIDsToWhitelist is a paid mutator transaction binding the contract method 0x04e98be3. // -// Solidity: function addChainIDToWhitelist(uint32 chainID) returns() -func (_ICrossChainRegistry *ICrossChainRegistryTransactorSession) AddChainIDToWhitelist(chainID uint32) (*types.Transaction, error) { - return _ICrossChainRegistry.Contract.AddChainIDToWhitelist(&_ICrossChainRegistry.TransactOpts, chainID) +// Solidity: function addChainIDsToWhitelist(uint256[] chainIDs, address[] operatorTableUpdaters) returns() +func (_ICrossChainRegistry *ICrossChainRegistryTransactorSession) AddChainIDsToWhitelist(chainIDs []*big.Int, operatorTableUpdaters []common.Address) (*types.Transaction, error) { + return _ICrossChainRegistry.Contract.AddChainIDsToWhitelist(&_ICrossChainRegistry.TransactOpts, chainIDs, operatorTableUpdaters) } -// AddTransportDestination is a paid mutator transaction binding the contract method 0x814e731b. +// AddTransportDestinations is a paid mutator transaction binding the contract method 0x49be7d6f. // -// Solidity: function addTransportDestination((address,uint32) operatorSet, uint32 chainID) returns() -func (_ICrossChainRegistry *ICrossChainRegistryTransactor) AddTransportDestination(opts *bind.TransactOpts, operatorSet OperatorSet, chainID uint32) (*types.Transaction, error) { - return _ICrossChainRegistry.contract.Transact(opts, "addTransportDestination", operatorSet, chainID) +// Solidity: function addTransportDestinations((address,uint32) operatorSet, uint256[] chainIDs) returns() +func (_ICrossChainRegistry *ICrossChainRegistryTransactor) AddTransportDestinations(opts *bind.TransactOpts, operatorSet OperatorSet, chainIDs []*big.Int) (*types.Transaction, error) { + return _ICrossChainRegistry.contract.Transact(opts, "addTransportDestinations", operatorSet, chainIDs) } -// AddTransportDestination is a paid mutator transaction binding the contract method 0x814e731b. +// AddTransportDestinations is a paid mutator transaction binding the contract method 0x49be7d6f. // -// Solidity: function addTransportDestination((address,uint32) operatorSet, uint32 chainID) returns() -func (_ICrossChainRegistry *ICrossChainRegistrySession) AddTransportDestination(operatorSet OperatorSet, chainID uint32) (*types.Transaction, error) { - return _ICrossChainRegistry.Contract.AddTransportDestination(&_ICrossChainRegistry.TransactOpts, operatorSet, chainID) +// Solidity: function addTransportDestinations((address,uint32) operatorSet, uint256[] chainIDs) returns() +func (_ICrossChainRegistry *ICrossChainRegistrySession) AddTransportDestinations(operatorSet OperatorSet, chainIDs []*big.Int) (*types.Transaction, error) { + return _ICrossChainRegistry.Contract.AddTransportDestinations(&_ICrossChainRegistry.TransactOpts, operatorSet, chainIDs) } -// AddTransportDestination is a paid mutator transaction binding the contract method 0x814e731b. +// AddTransportDestinations is a paid mutator transaction binding the contract method 0x49be7d6f. // -// Solidity: function addTransportDestination((address,uint32) operatorSet, uint32 chainID) returns() -func (_ICrossChainRegistry *ICrossChainRegistryTransactorSession) AddTransportDestination(operatorSet OperatorSet, chainID uint32) (*types.Transaction, error) { - return _ICrossChainRegistry.Contract.AddTransportDestination(&_ICrossChainRegistry.TransactOpts, operatorSet, chainID) +// Solidity: function addTransportDestinations((address,uint32) operatorSet, uint256[] chainIDs) returns() +func (_ICrossChainRegistry *ICrossChainRegistryTransactorSession) AddTransportDestinations(operatorSet OperatorSet, chainIDs []*big.Int) (*types.Transaction, error) { + return _ICrossChainRegistry.Contract.AddTransportDestinations(&_ICrossChainRegistry.TransactOpts, operatorSet, chainIDs) } -// GetActiveGenerationReservations is a paid mutator transaction binding the contract method 0xd09b978b. +// CreateGenerationReservation is a paid mutator transaction binding the contract method 0xfe596dee. // -// Solidity: function getActiveGenerationReservations() returns((address,uint32)[], address[]) -func (_ICrossChainRegistry *ICrossChainRegistryTransactor) GetActiveGenerationReservations(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ICrossChainRegistry.contract.Transact(opts, "getActiveGenerationReservations") +// Solidity: function createGenerationReservation((address,uint32) operatorSet, address operatorTableCalculator, (address,uint32) config, uint256[] chainIDs) returns() +func (_ICrossChainRegistry *ICrossChainRegistryTransactor) CreateGenerationReservation(opts *bind.TransactOpts, operatorSet OperatorSet, operatorTableCalculator common.Address, config ICrossChainRegistryTypesOperatorSetConfig, chainIDs []*big.Int) (*types.Transaction, error) { + return _ICrossChainRegistry.contract.Transact(opts, "createGenerationReservation", operatorSet, operatorTableCalculator, config, chainIDs) } -// GetActiveGenerationReservations is a paid mutator transaction binding the contract method 0xd09b978b. +// CreateGenerationReservation is a paid mutator transaction binding the contract method 0xfe596dee. // -// Solidity: function getActiveGenerationReservations() returns((address,uint32)[], address[]) -func (_ICrossChainRegistry *ICrossChainRegistrySession) GetActiveGenerationReservations() (*types.Transaction, error) { - return _ICrossChainRegistry.Contract.GetActiveGenerationReservations(&_ICrossChainRegistry.TransactOpts) +// Solidity: function createGenerationReservation((address,uint32) operatorSet, address operatorTableCalculator, (address,uint32) config, uint256[] chainIDs) returns() +func (_ICrossChainRegistry *ICrossChainRegistrySession) CreateGenerationReservation(operatorSet OperatorSet, operatorTableCalculator common.Address, config ICrossChainRegistryTypesOperatorSetConfig, chainIDs []*big.Int) (*types.Transaction, error) { + return _ICrossChainRegistry.Contract.CreateGenerationReservation(&_ICrossChainRegistry.TransactOpts, operatorSet, operatorTableCalculator, config, chainIDs) } -// GetActiveGenerationReservations is a paid mutator transaction binding the contract method 0xd09b978b. +// CreateGenerationReservation is a paid mutator transaction binding the contract method 0xfe596dee. // -// Solidity: function getActiveGenerationReservations() returns((address,uint32)[], address[]) -func (_ICrossChainRegistry *ICrossChainRegistryTransactorSession) GetActiveGenerationReservations() (*types.Transaction, error) { - return _ICrossChainRegistry.Contract.GetActiveGenerationReservations(&_ICrossChainRegistry.TransactOpts) +// Solidity: function createGenerationReservation((address,uint32) operatorSet, address operatorTableCalculator, (address,uint32) config, uint256[] chainIDs) returns() +func (_ICrossChainRegistry *ICrossChainRegistryTransactorSession) CreateGenerationReservation(operatorSet OperatorSet, operatorTableCalculator common.Address, config ICrossChainRegistryTypesOperatorSetConfig, chainIDs []*big.Int) (*types.Transaction, error) { + return _ICrossChainRegistry.Contract.CreateGenerationReservation(&_ICrossChainRegistry.TransactOpts, operatorSet, operatorTableCalculator, config, chainIDs) } -// GetOperatorTableCalculator is a paid mutator transaction binding the contract method 0x75e4b539. +// RemoveChainIDsFromWhitelist is a paid mutator transaction binding the contract method 0xdfbd9dfd. // -// Solidity: function getOperatorTableCalculator((address,uint32) operatorSet) returns(address) -func (_ICrossChainRegistry *ICrossChainRegistryTransactor) GetOperatorTableCalculator(opts *bind.TransactOpts, operatorSet OperatorSet) (*types.Transaction, error) { - return _ICrossChainRegistry.contract.Transact(opts, "getOperatorTableCalculator", operatorSet) +// Solidity: function removeChainIDsFromWhitelist(uint256[] chainIDs) returns() +func (_ICrossChainRegistry *ICrossChainRegistryTransactor) RemoveChainIDsFromWhitelist(opts *bind.TransactOpts, chainIDs []*big.Int) (*types.Transaction, error) { + return _ICrossChainRegistry.contract.Transact(opts, "removeChainIDsFromWhitelist", chainIDs) } -// GetOperatorTableCalculator is a paid mutator transaction binding the contract method 0x75e4b539. +// RemoveChainIDsFromWhitelist is a paid mutator transaction binding the contract method 0xdfbd9dfd. // -// Solidity: function getOperatorTableCalculator((address,uint32) operatorSet) returns(address) -func (_ICrossChainRegistry *ICrossChainRegistrySession) GetOperatorTableCalculator(operatorSet OperatorSet) (*types.Transaction, error) { - return _ICrossChainRegistry.Contract.GetOperatorTableCalculator(&_ICrossChainRegistry.TransactOpts, operatorSet) +// Solidity: function removeChainIDsFromWhitelist(uint256[] chainIDs) returns() +func (_ICrossChainRegistry *ICrossChainRegistrySession) RemoveChainIDsFromWhitelist(chainIDs []*big.Int) (*types.Transaction, error) { + return _ICrossChainRegistry.Contract.RemoveChainIDsFromWhitelist(&_ICrossChainRegistry.TransactOpts, chainIDs) } -// GetOperatorTableCalculator is a paid mutator transaction binding the contract method 0x75e4b539. +// RemoveChainIDsFromWhitelist is a paid mutator transaction binding the contract method 0xdfbd9dfd. // -// Solidity: function getOperatorTableCalculator((address,uint32) operatorSet) returns(address) -func (_ICrossChainRegistry *ICrossChainRegistryTransactorSession) GetOperatorTableCalculator(operatorSet OperatorSet) (*types.Transaction, error) { - return _ICrossChainRegistry.Contract.GetOperatorTableCalculator(&_ICrossChainRegistry.TransactOpts, operatorSet) -} - -// RemoveChainIDFromWhitelist is a paid mutator transaction binding the contract method 0x2ab0b20f. -// -// Solidity: function removeChainIDFromWhitelist(uint32 chainID) returns() -func (_ICrossChainRegistry *ICrossChainRegistryTransactor) RemoveChainIDFromWhitelist(opts *bind.TransactOpts, chainID uint32) (*types.Transaction, error) { - return _ICrossChainRegistry.contract.Transact(opts, "removeChainIDFromWhitelist", chainID) -} - -// RemoveChainIDFromWhitelist is a paid mutator transaction binding the contract method 0x2ab0b20f. -// -// Solidity: function removeChainIDFromWhitelist(uint32 chainID) returns() -func (_ICrossChainRegistry *ICrossChainRegistrySession) RemoveChainIDFromWhitelist(chainID uint32) (*types.Transaction, error) { - return _ICrossChainRegistry.Contract.RemoveChainIDFromWhitelist(&_ICrossChainRegistry.TransactOpts, chainID) -} - -// RemoveChainIDFromWhitelist is a paid mutator transaction binding the contract method 0x2ab0b20f. -// -// Solidity: function removeChainIDFromWhitelist(uint32 chainID) returns() -func (_ICrossChainRegistry *ICrossChainRegistryTransactorSession) RemoveChainIDFromWhitelist(chainID uint32) (*types.Transaction, error) { - return _ICrossChainRegistry.Contract.RemoveChainIDFromWhitelist(&_ICrossChainRegistry.TransactOpts, chainID) +// Solidity: function removeChainIDsFromWhitelist(uint256[] chainIDs) returns() +func (_ICrossChainRegistry *ICrossChainRegistryTransactorSession) RemoveChainIDsFromWhitelist(chainIDs []*big.Int) (*types.Transaction, error) { + return _ICrossChainRegistry.Contract.RemoveChainIDsFromWhitelist(&_ICrossChainRegistry.TransactOpts, chainIDs) } // RemoveGenerationReservation is a paid mutator transaction binding the contract method 0x6c55a37f. @@ -374,67 +516,67 @@ func (_ICrossChainRegistry *ICrossChainRegistryTransactorSession) RemoveGenerati return _ICrossChainRegistry.Contract.RemoveGenerationReservation(&_ICrossChainRegistry.TransactOpts, operatorSet) } -// RemoveTransportDestination is a paid mutator transaction binding the contract method 0x2132488f. +// RemoveTransportDestinations is a paid mutator transaction binding the contract method 0xf3e9f5d4. // -// Solidity: function removeTransportDestination((address,uint32) operatorSet, uint32 chainID) returns() -func (_ICrossChainRegistry *ICrossChainRegistryTransactor) RemoveTransportDestination(opts *bind.TransactOpts, operatorSet OperatorSet, chainID uint32) (*types.Transaction, error) { - return _ICrossChainRegistry.contract.Transact(opts, "removeTransportDestination", operatorSet, chainID) +// Solidity: function removeTransportDestinations((address,uint32) operatorSet, uint256[] chainIDs) returns() +func (_ICrossChainRegistry *ICrossChainRegistryTransactor) RemoveTransportDestinations(opts *bind.TransactOpts, operatorSet OperatorSet, chainIDs []*big.Int) (*types.Transaction, error) { + return _ICrossChainRegistry.contract.Transact(opts, "removeTransportDestinations", operatorSet, chainIDs) } -// RemoveTransportDestination is a paid mutator transaction binding the contract method 0x2132488f. +// RemoveTransportDestinations is a paid mutator transaction binding the contract method 0xf3e9f5d4. // -// Solidity: function removeTransportDestination((address,uint32) operatorSet, uint32 chainID) returns() -func (_ICrossChainRegistry *ICrossChainRegistrySession) RemoveTransportDestination(operatorSet OperatorSet, chainID uint32) (*types.Transaction, error) { - return _ICrossChainRegistry.Contract.RemoveTransportDestination(&_ICrossChainRegistry.TransactOpts, operatorSet, chainID) +// Solidity: function removeTransportDestinations((address,uint32) operatorSet, uint256[] chainIDs) returns() +func (_ICrossChainRegistry *ICrossChainRegistrySession) RemoveTransportDestinations(operatorSet OperatorSet, chainIDs []*big.Int) (*types.Transaction, error) { + return _ICrossChainRegistry.Contract.RemoveTransportDestinations(&_ICrossChainRegistry.TransactOpts, operatorSet, chainIDs) } -// RemoveTransportDestination is a paid mutator transaction binding the contract method 0x2132488f. +// RemoveTransportDestinations is a paid mutator transaction binding the contract method 0xf3e9f5d4. // -// Solidity: function removeTransportDestination((address,uint32) operatorSet, uint32 chainID) returns() -func (_ICrossChainRegistry *ICrossChainRegistryTransactorSession) RemoveTransportDestination(operatorSet OperatorSet, chainID uint32) (*types.Transaction, error) { - return _ICrossChainRegistry.Contract.RemoveTransportDestination(&_ICrossChainRegistry.TransactOpts, operatorSet, chainID) +// Solidity: function removeTransportDestinations((address,uint32) operatorSet, uint256[] chainIDs) returns() +func (_ICrossChainRegistry *ICrossChainRegistryTransactorSession) RemoveTransportDestinations(operatorSet OperatorSet, chainIDs []*big.Int) (*types.Transaction, error) { + return _ICrossChainRegistry.Contract.RemoveTransportDestinations(&_ICrossChainRegistry.TransactOpts, operatorSet, chainIDs) } -// RequestGenerationReservation is a paid mutator transaction binding the contract method 0x4d9d1e48. +// SetOperatorSetConfig is a paid mutator transaction binding the contract method 0x277e1e62. // -// Solidity: function requestGenerationReservation((address,uint32) operatorSet, address operatorTableCalculator) returns() -func (_ICrossChainRegistry *ICrossChainRegistryTransactor) RequestGenerationReservation(opts *bind.TransactOpts, operatorSet OperatorSet, operatorTableCalculator common.Address) (*types.Transaction, error) { - return _ICrossChainRegistry.contract.Transact(opts, "requestGenerationReservation", operatorSet, operatorTableCalculator) +// Solidity: function setOperatorSetConfig((address,uint32) operatorSet, (address,uint32) config) returns() +func (_ICrossChainRegistry *ICrossChainRegistryTransactor) SetOperatorSetConfig(opts *bind.TransactOpts, operatorSet OperatorSet, config ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _ICrossChainRegistry.contract.Transact(opts, "setOperatorSetConfig", operatorSet, config) } -// RequestGenerationReservation is a paid mutator transaction binding the contract method 0x4d9d1e48. +// SetOperatorSetConfig is a paid mutator transaction binding the contract method 0x277e1e62. // -// Solidity: function requestGenerationReservation((address,uint32) operatorSet, address operatorTableCalculator) returns() -func (_ICrossChainRegistry *ICrossChainRegistrySession) RequestGenerationReservation(operatorSet OperatorSet, operatorTableCalculator common.Address) (*types.Transaction, error) { - return _ICrossChainRegistry.Contract.RequestGenerationReservation(&_ICrossChainRegistry.TransactOpts, operatorSet, operatorTableCalculator) +// Solidity: function setOperatorSetConfig((address,uint32) operatorSet, (address,uint32) config) returns() +func (_ICrossChainRegistry *ICrossChainRegistrySession) SetOperatorSetConfig(operatorSet OperatorSet, config ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _ICrossChainRegistry.Contract.SetOperatorSetConfig(&_ICrossChainRegistry.TransactOpts, operatorSet, config) } -// RequestGenerationReservation is a paid mutator transaction binding the contract method 0x4d9d1e48. +// SetOperatorSetConfig is a paid mutator transaction binding the contract method 0x277e1e62. // -// Solidity: function requestGenerationReservation((address,uint32) operatorSet, address operatorTableCalculator) returns() -func (_ICrossChainRegistry *ICrossChainRegistryTransactorSession) RequestGenerationReservation(operatorSet OperatorSet, operatorTableCalculator common.Address) (*types.Transaction, error) { - return _ICrossChainRegistry.Contract.RequestGenerationReservation(&_ICrossChainRegistry.TransactOpts, operatorSet, operatorTableCalculator) +// Solidity: function setOperatorSetConfig((address,uint32) operatorSet, (address,uint32) config) returns() +func (_ICrossChainRegistry *ICrossChainRegistryTransactorSession) SetOperatorSetConfig(operatorSet OperatorSet, config ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _ICrossChainRegistry.Contract.SetOperatorSetConfig(&_ICrossChainRegistry.TransactOpts, operatorSet, config) } // SetOperatorTableCalculator is a paid mutator transaction binding the contract method 0x1ca9142a. // -// Solidity: function setOperatorTableCalculator((address,uint32) operatorSet, address calculator) returns() -func (_ICrossChainRegistry *ICrossChainRegistryTransactor) SetOperatorTableCalculator(opts *bind.TransactOpts, operatorSet OperatorSet, calculator common.Address) (*types.Transaction, error) { - return _ICrossChainRegistry.contract.Transact(opts, "setOperatorTableCalculator", operatorSet, calculator) +// Solidity: function setOperatorTableCalculator((address,uint32) operatorSet, address operatorTableCalculator) returns() +func (_ICrossChainRegistry *ICrossChainRegistryTransactor) SetOperatorTableCalculator(opts *bind.TransactOpts, operatorSet OperatorSet, operatorTableCalculator common.Address) (*types.Transaction, error) { + return _ICrossChainRegistry.contract.Transact(opts, "setOperatorTableCalculator", operatorSet, operatorTableCalculator) } // SetOperatorTableCalculator is a paid mutator transaction binding the contract method 0x1ca9142a. // -// Solidity: function setOperatorTableCalculator((address,uint32) operatorSet, address calculator) returns() -func (_ICrossChainRegistry *ICrossChainRegistrySession) SetOperatorTableCalculator(operatorSet OperatorSet, calculator common.Address) (*types.Transaction, error) { - return _ICrossChainRegistry.Contract.SetOperatorTableCalculator(&_ICrossChainRegistry.TransactOpts, operatorSet, calculator) +// Solidity: function setOperatorTableCalculator((address,uint32) operatorSet, address operatorTableCalculator) returns() +func (_ICrossChainRegistry *ICrossChainRegistrySession) SetOperatorTableCalculator(operatorSet OperatorSet, operatorTableCalculator common.Address) (*types.Transaction, error) { + return _ICrossChainRegistry.Contract.SetOperatorTableCalculator(&_ICrossChainRegistry.TransactOpts, operatorSet, operatorTableCalculator) } // SetOperatorTableCalculator is a paid mutator transaction binding the contract method 0x1ca9142a. // -// Solidity: function setOperatorTableCalculator((address,uint32) operatorSet, address calculator) returns() -func (_ICrossChainRegistry *ICrossChainRegistryTransactorSession) SetOperatorTableCalculator(operatorSet OperatorSet, calculator common.Address) (*types.Transaction, error) { - return _ICrossChainRegistry.Contract.SetOperatorTableCalculator(&_ICrossChainRegistry.TransactOpts, operatorSet, calculator) +// Solidity: function setOperatorTableCalculator((address,uint32) operatorSet, address operatorTableCalculator) returns() +func (_ICrossChainRegistry *ICrossChainRegistryTransactorSession) SetOperatorTableCalculator(operatorSet OperatorSet, operatorTableCalculator common.Address) (*types.Transaction, error) { + return _ICrossChainRegistry.Contract.SetOperatorTableCalculator(&_ICrossChainRegistry.TransactOpts, operatorSet, operatorTableCalculator) } // ICrossChainRegistryChainIDAddedToWhitelistIterator is returned from FilterChainIDAddedToWhitelist and is used to iterate over the raw logs and unpacked data for ChainIDAddedToWhitelist events raised by the ICrossChainRegistry contract. @@ -506,13 +648,14 @@ func (it *ICrossChainRegistryChainIDAddedToWhitelistIterator) Close() error { // ICrossChainRegistryChainIDAddedToWhitelist represents a ChainIDAddedToWhitelist event raised by the ICrossChainRegistry contract. type ICrossChainRegistryChainIDAddedToWhitelist struct { - ChainID uint32 - Raw types.Log // Blockchain specific contextual infos + ChainID *big.Int + OperatorTableUpdater common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterChainIDAddedToWhitelist is a free log retrieval operation binding the contract event 0x554da9a23c6204a2a98605c0fc1f29bf2988ff3f3bbfe2ac1e3c11ee1866e5b9. +// FilterChainIDAddedToWhitelist is a free log retrieval operation binding the contract event 0x7a0a76d85b582b17996dd7371a407aa7a79b870db8539247fba315c7b6beff62. // -// Solidity: event ChainIDAddedToWhitelist(uint32 chainID) +// Solidity: event ChainIDAddedToWhitelist(uint256 chainID, address operatorTableUpdater) func (_ICrossChainRegistry *ICrossChainRegistryFilterer) FilterChainIDAddedToWhitelist(opts *bind.FilterOpts) (*ICrossChainRegistryChainIDAddedToWhitelistIterator, error) { logs, sub, err := _ICrossChainRegistry.contract.FilterLogs(opts, "ChainIDAddedToWhitelist") @@ -522,9 +665,9 @@ func (_ICrossChainRegistry *ICrossChainRegistryFilterer) FilterChainIDAddedToWhi return &ICrossChainRegistryChainIDAddedToWhitelistIterator{contract: _ICrossChainRegistry.contract, event: "ChainIDAddedToWhitelist", logs: logs, sub: sub}, nil } -// WatchChainIDAddedToWhitelist is a free log subscription operation binding the contract event 0x554da9a23c6204a2a98605c0fc1f29bf2988ff3f3bbfe2ac1e3c11ee1866e5b9. +// WatchChainIDAddedToWhitelist is a free log subscription operation binding the contract event 0x7a0a76d85b582b17996dd7371a407aa7a79b870db8539247fba315c7b6beff62. // -// Solidity: event ChainIDAddedToWhitelist(uint32 chainID) +// Solidity: event ChainIDAddedToWhitelist(uint256 chainID, address operatorTableUpdater) func (_ICrossChainRegistry *ICrossChainRegistryFilterer) WatchChainIDAddedToWhitelist(opts *bind.WatchOpts, sink chan<- *ICrossChainRegistryChainIDAddedToWhitelist) (event.Subscription, error) { logs, sub, err := _ICrossChainRegistry.contract.WatchLogs(opts, "ChainIDAddedToWhitelist") @@ -559,9 +702,9 @@ func (_ICrossChainRegistry *ICrossChainRegistryFilterer) WatchChainIDAddedToWhit }), nil } -// ParseChainIDAddedToWhitelist is a log parse operation binding the contract event 0x554da9a23c6204a2a98605c0fc1f29bf2988ff3f3bbfe2ac1e3c11ee1866e5b9. +// ParseChainIDAddedToWhitelist is a log parse operation binding the contract event 0x7a0a76d85b582b17996dd7371a407aa7a79b870db8539247fba315c7b6beff62. // -// Solidity: event ChainIDAddedToWhitelist(uint32 chainID) +// Solidity: event ChainIDAddedToWhitelist(uint256 chainID, address operatorTableUpdater) func (_ICrossChainRegistry *ICrossChainRegistryFilterer) ParseChainIDAddedToWhitelist(log types.Log) (*ICrossChainRegistryChainIDAddedToWhitelist, error) { event := new(ICrossChainRegistryChainIDAddedToWhitelist) if err := _ICrossChainRegistry.contract.UnpackLog(event, "ChainIDAddedToWhitelist", log); err != nil { @@ -640,13 +783,13 @@ func (it *ICrossChainRegistryChainIDRemovedFromWhitelistIterator) Close() error // ICrossChainRegistryChainIDRemovedFromWhitelist represents a ChainIDRemovedFromWhitelist event raised by the ICrossChainRegistry contract. type ICrossChainRegistryChainIDRemovedFromWhitelist struct { - ChainID uint32 + ChainID *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterChainIDRemovedFromWhitelist is a free log retrieval operation binding the contract event 0x2069bbe11cd6c0fc8dd1e409735f3a6309718e89b813b4d648ede2399ae37f40. +// FilterChainIDRemovedFromWhitelist is a free log retrieval operation binding the contract event 0x6824d36084ecf2cd819b137cb5d837cc6e73afce1e0e348c9fdecaa81d0341e5. // -// Solidity: event ChainIDRemovedFromWhitelist(uint32 chainID) +// Solidity: event ChainIDRemovedFromWhitelist(uint256 chainID) func (_ICrossChainRegistry *ICrossChainRegistryFilterer) FilterChainIDRemovedFromWhitelist(opts *bind.FilterOpts) (*ICrossChainRegistryChainIDRemovedFromWhitelistIterator, error) { logs, sub, err := _ICrossChainRegistry.contract.FilterLogs(opts, "ChainIDRemovedFromWhitelist") @@ -656,9 +799,9 @@ func (_ICrossChainRegistry *ICrossChainRegistryFilterer) FilterChainIDRemovedFro return &ICrossChainRegistryChainIDRemovedFromWhitelistIterator{contract: _ICrossChainRegistry.contract, event: "ChainIDRemovedFromWhitelist", logs: logs, sub: sub}, nil } -// WatchChainIDRemovedFromWhitelist is a free log subscription operation binding the contract event 0x2069bbe11cd6c0fc8dd1e409735f3a6309718e89b813b4d648ede2399ae37f40. +// WatchChainIDRemovedFromWhitelist is a free log subscription operation binding the contract event 0x6824d36084ecf2cd819b137cb5d837cc6e73afce1e0e348c9fdecaa81d0341e5. // -// Solidity: event ChainIDRemovedFromWhitelist(uint32 chainID) +// Solidity: event ChainIDRemovedFromWhitelist(uint256 chainID) func (_ICrossChainRegistry *ICrossChainRegistryFilterer) WatchChainIDRemovedFromWhitelist(opts *bind.WatchOpts, sink chan<- *ICrossChainRegistryChainIDRemovedFromWhitelist) (event.Subscription, error) { logs, sub, err := _ICrossChainRegistry.contract.WatchLogs(opts, "ChainIDRemovedFromWhitelist") @@ -693,9 +836,9 @@ func (_ICrossChainRegistry *ICrossChainRegistryFilterer) WatchChainIDRemovedFrom }), nil } -// ParseChainIDRemovedFromWhitelist is a log parse operation binding the contract event 0x2069bbe11cd6c0fc8dd1e409735f3a6309718e89b813b4d648ede2399ae37f40. +// ParseChainIDRemovedFromWhitelist is a log parse operation binding the contract event 0x6824d36084ecf2cd819b137cb5d837cc6e73afce1e0e348c9fdecaa81d0341e5. // -// Solidity: event ChainIDRemovedFromWhitelist(uint32 chainID) +// Solidity: event ChainIDRemovedFromWhitelist(uint256 chainID) func (_ICrossChainRegistry *ICrossChainRegistryFilterer) ParseChainIDRemovedFromWhitelist(log types.Log) (*ICrossChainRegistryChainIDRemovedFromWhitelist, error) { event := new(ICrossChainRegistryChainIDRemovedFromWhitelist) if err := _ICrossChainRegistry.contract.UnpackLog(event, "ChainIDRemovedFromWhitelist", log); err != nil { @@ -705,9 +848,9 @@ func (_ICrossChainRegistry *ICrossChainRegistryFilterer) ParseChainIDRemovedFrom return event, nil } -// ICrossChainRegistryGenerationReservationMadeIterator is returned from FilterGenerationReservationMade and is used to iterate over the raw logs and unpacked data for GenerationReservationMade events raised by the ICrossChainRegistry contract. -type ICrossChainRegistryGenerationReservationMadeIterator struct { - Event *ICrossChainRegistryGenerationReservationMade // Event containing the contract specifics and raw log +// ICrossChainRegistryGenerationReservationCreatedIterator is returned from FilterGenerationReservationCreated and is used to iterate over the raw logs and unpacked data for GenerationReservationCreated events raised by the ICrossChainRegistry contract. +type ICrossChainRegistryGenerationReservationCreatedIterator struct { + Event *ICrossChainRegistryGenerationReservationCreated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -721,7 +864,7 @@ type ICrossChainRegistryGenerationReservationMadeIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ICrossChainRegistryGenerationReservationMadeIterator) Next() bool { +func (it *ICrossChainRegistryGenerationReservationCreatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -730,7 +873,7 @@ func (it *ICrossChainRegistryGenerationReservationMadeIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ICrossChainRegistryGenerationReservationMade) + it.Event = new(ICrossChainRegistryGenerationReservationCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -745,7 +888,7 @@ func (it *ICrossChainRegistryGenerationReservationMadeIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ICrossChainRegistryGenerationReservationMade) + it.Event = new(ICrossChainRegistryGenerationReservationCreated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -761,42 +904,41 @@ func (it *ICrossChainRegistryGenerationReservationMadeIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ICrossChainRegistryGenerationReservationMadeIterator) Error() error { +func (it *ICrossChainRegistryGenerationReservationCreatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ICrossChainRegistryGenerationReservationMadeIterator) Close() error { +func (it *ICrossChainRegistryGenerationReservationCreatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ICrossChainRegistryGenerationReservationMade represents a GenerationReservationMade event raised by the ICrossChainRegistry contract. -type ICrossChainRegistryGenerationReservationMade struct { - OperatorSet OperatorSet - OperatorTableCalculator common.Address - Raw types.Log // Blockchain specific contextual infos +// ICrossChainRegistryGenerationReservationCreated represents a GenerationReservationCreated event raised by the ICrossChainRegistry contract. +type ICrossChainRegistryGenerationReservationCreated struct { + OperatorSet OperatorSet + Raw types.Log // Blockchain specific contextual infos } -// FilterGenerationReservationMade is a free log retrieval operation binding the contract event 0x14772150bf340e929cfaf20fe5e530cb3f57c1c78a7e2fe90caca8452b5d868b. +// FilterGenerationReservationCreated is a free log retrieval operation binding the contract event 0x4fb6efec7dd60036ce3a7af8d5c48425019daa0fb61eb471a966a7ac2c6fa6a6. // -// Solidity: event GenerationReservationMade((address,uint32) operatorSet, address operatorTableCalculator) -func (_ICrossChainRegistry *ICrossChainRegistryFilterer) FilterGenerationReservationMade(opts *bind.FilterOpts) (*ICrossChainRegistryGenerationReservationMadeIterator, error) { +// Solidity: event GenerationReservationCreated((address,uint32) operatorSet) +func (_ICrossChainRegistry *ICrossChainRegistryFilterer) FilterGenerationReservationCreated(opts *bind.FilterOpts) (*ICrossChainRegistryGenerationReservationCreatedIterator, error) { - logs, sub, err := _ICrossChainRegistry.contract.FilterLogs(opts, "GenerationReservationMade") + logs, sub, err := _ICrossChainRegistry.contract.FilterLogs(opts, "GenerationReservationCreated") if err != nil { return nil, err } - return &ICrossChainRegistryGenerationReservationMadeIterator{contract: _ICrossChainRegistry.contract, event: "GenerationReservationMade", logs: logs, sub: sub}, nil + return &ICrossChainRegistryGenerationReservationCreatedIterator{contract: _ICrossChainRegistry.contract, event: "GenerationReservationCreated", logs: logs, sub: sub}, nil } -// WatchGenerationReservationMade is a free log subscription operation binding the contract event 0x14772150bf340e929cfaf20fe5e530cb3f57c1c78a7e2fe90caca8452b5d868b. +// WatchGenerationReservationCreated is a free log subscription operation binding the contract event 0x4fb6efec7dd60036ce3a7af8d5c48425019daa0fb61eb471a966a7ac2c6fa6a6. // -// Solidity: event GenerationReservationMade((address,uint32) operatorSet, address operatorTableCalculator) -func (_ICrossChainRegistry *ICrossChainRegistryFilterer) WatchGenerationReservationMade(opts *bind.WatchOpts, sink chan<- *ICrossChainRegistryGenerationReservationMade) (event.Subscription, error) { +// Solidity: event GenerationReservationCreated((address,uint32) operatorSet) +func (_ICrossChainRegistry *ICrossChainRegistryFilterer) WatchGenerationReservationCreated(opts *bind.WatchOpts, sink chan<- *ICrossChainRegistryGenerationReservationCreated) (event.Subscription, error) { - logs, sub, err := _ICrossChainRegistry.contract.WatchLogs(opts, "GenerationReservationMade") + logs, sub, err := _ICrossChainRegistry.contract.WatchLogs(opts, "GenerationReservationCreated") if err != nil { return nil, err } @@ -806,8 +948,8 @@ func (_ICrossChainRegistry *ICrossChainRegistryFilterer) WatchGenerationReservat select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ICrossChainRegistryGenerationReservationMade) - if err := _ICrossChainRegistry.contract.UnpackLog(event, "GenerationReservationMade", log); err != nil { + event := new(ICrossChainRegistryGenerationReservationCreated) + if err := _ICrossChainRegistry.contract.UnpackLog(event, "GenerationReservationCreated", log); err != nil { return err } event.Raw = log @@ -828,12 +970,12 @@ func (_ICrossChainRegistry *ICrossChainRegistryFilterer) WatchGenerationReservat }), nil } -// ParseGenerationReservationMade is a log parse operation binding the contract event 0x14772150bf340e929cfaf20fe5e530cb3f57c1c78a7e2fe90caca8452b5d868b. +// ParseGenerationReservationCreated is a log parse operation binding the contract event 0x4fb6efec7dd60036ce3a7af8d5c48425019daa0fb61eb471a966a7ac2c6fa6a6. // -// Solidity: event GenerationReservationMade((address,uint32) operatorSet, address operatorTableCalculator) -func (_ICrossChainRegistry *ICrossChainRegistryFilterer) ParseGenerationReservationMade(log types.Log) (*ICrossChainRegistryGenerationReservationMade, error) { - event := new(ICrossChainRegistryGenerationReservationMade) - if err := _ICrossChainRegistry.contract.UnpackLog(event, "GenerationReservationMade", log); err != nil { +// Solidity: event GenerationReservationCreated((address,uint32) operatorSet) +func (_ICrossChainRegistry *ICrossChainRegistryFilterer) ParseGenerationReservationCreated(log types.Log) (*ICrossChainRegistryGenerationReservationCreated, error) { + event := new(ICrossChainRegistryGenerationReservationCreated) + if err := _ICrossChainRegistry.contract.UnpackLog(event, "GenerationReservationCreated", log); err != nil { return nil, err } event.Raw = log @@ -909,14 +1051,13 @@ func (it *ICrossChainRegistryGenerationReservationRemovedIterator) Close() error // ICrossChainRegistryGenerationReservationRemoved represents a GenerationReservationRemoved event raised by the ICrossChainRegistry contract. type ICrossChainRegistryGenerationReservationRemoved struct { - OperatorSet OperatorSet - OperatorTableCalculator common.Address - Raw types.Log // Blockchain specific contextual infos + OperatorSet OperatorSet + Raw types.Log // Blockchain specific contextual infos } -// FilterGenerationReservationRemoved is a free log retrieval operation binding the contract event 0x14c80ad57c80435a6a5df1a9e493d2bf1cee67dd762db709dc5363315fa224dd. +// FilterGenerationReservationRemoved is a free log retrieval operation binding the contract event 0x4ffdfdd59e9e1e3c301608788f78dd458e61cb8c045ca92b62a7b484c80824fb. // -// Solidity: event GenerationReservationRemoved((address,uint32) operatorSet, address operatorTableCalculator) +// Solidity: event GenerationReservationRemoved((address,uint32) operatorSet) func (_ICrossChainRegistry *ICrossChainRegistryFilterer) FilterGenerationReservationRemoved(opts *bind.FilterOpts) (*ICrossChainRegistryGenerationReservationRemovedIterator, error) { logs, sub, err := _ICrossChainRegistry.contract.FilterLogs(opts, "GenerationReservationRemoved") @@ -926,9 +1067,9 @@ func (_ICrossChainRegistry *ICrossChainRegistryFilterer) FilterGenerationReserva return &ICrossChainRegistryGenerationReservationRemovedIterator{contract: _ICrossChainRegistry.contract, event: "GenerationReservationRemoved", logs: logs, sub: sub}, nil } -// WatchGenerationReservationRemoved is a free log subscription operation binding the contract event 0x14c80ad57c80435a6a5df1a9e493d2bf1cee67dd762db709dc5363315fa224dd. +// WatchGenerationReservationRemoved is a free log subscription operation binding the contract event 0x4ffdfdd59e9e1e3c301608788f78dd458e61cb8c045ca92b62a7b484c80824fb. // -// Solidity: event GenerationReservationRemoved((address,uint32) operatorSet, address operatorTableCalculator) +// Solidity: event GenerationReservationRemoved((address,uint32) operatorSet) func (_ICrossChainRegistry *ICrossChainRegistryFilterer) WatchGenerationReservationRemoved(opts *bind.WatchOpts, sink chan<- *ICrossChainRegistryGenerationReservationRemoved) (event.Subscription, error) { logs, sub, err := _ICrossChainRegistry.contract.WatchLogs(opts, "GenerationReservationRemoved") @@ -963,9 +1104,9 @@ func (_ICrossChainRegistry *ICrossChainRegistryFilterer) WatchGenerationReservat }), nil } -// ParseGenerationReservationRemoved is a log parse operation binding the contract event 0x14c80ad57c80435a6a5df1a9e493d2bf1cee67dd762db709dc5363315fa224dd. +// ParseGenerationReservationRemoved is a log parse operation binding the contract event 0x4ffdfdd59e9e1e3c301608788f78dd458e61cb8c045ca92b62a7b484c80824fb. // -// Solidity: event GenerationReservationRemoved((address,uint32) operatorSet, address operatorTableCalculator) +// Solidity: event GenerationReservationRemoved((address,uint32) operatorSet) func (_ICrossChainRegistry *ICrossChainRegistryFilterer) ParseGenerationReservationRemoved(log types.Log) (*ICrossChainRegistryGenerationReservationRemoved, error) { event := new(ICrossChainRegistryGenerationReservationRemoved) if err := _ICrossChainRegistry.contract.UnpackLog(event, "GenerationReservationRemoved", log); err != nil { @@ -975,6 +1116,276 @@ func (_ICrossChainRegistry *ICrossChainRegistryFilterer) ParseGenerationReservat return event, nil } +// ICrossChainRegistryOperatorSetConfigSetIterator is returned from FilterOperatorSetConfigSet and is used to iterate over the raw logs and unpacked data for OperatorSetConfigSet events raised by the ICrossChainRegistry contract. +type ICrossChainRegistryOperatorSetConfigSetIterator struct { + Event *ICrossChainRegistryOperatorSetConfigSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ICrossChainRegistryOperatorSetConfigSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ICrossChainRegistryOperatorSetConfigSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ICrossChainRegistryOperatorSetConfigSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ICrossChainRegistryOperatorSetConfigSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ICrossChainRegistryOperatorSetConfigSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ICrossChainRegistryOperatorSetConfigSet represents a OperatorSetConfigSet event raised by the ICrossChainRegistry contract. +type ICrossChainRegistryOperatorSetConfigSet struct { + OperatorSet OperatorSet + Config ICrossChainRegistryTypesOperatorSetConfig + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSetConfigSet is a free log retrieval operation binding the contract event 0x3147846ee526009000671c20380b856a633345691300f82585f90034715cf0e2. +// +// Solidity: event OperatorSetConfigSet((address,uint32) operatorSet, (address,uint32) config) +func (_ICrossChainRegistry *ICrossChainRegistryFilterer) FilterOperatorSetConfigSet(opts *bind.FilterOpts) (*ICrossChainRegistryOperatorSetConfigSetIterator, error) { + + logs, sub, err := _ICrossChainRegistry.contract.FilterLogs(opts, "OperatorSetConfigSet") + if err != nil { + return nil, err + } + return &ICrossChainRegistryOperatorSetConfigSetIterator{contract: _ICrossChainRegistry.contract, event: "OperatorSetConfigSet", logs: logs, sub: sub}, nil +} + +// WatchOperatorSetConfigSet is a free log subscription operation binding the contract event 0x3147846ee526009000671c20380b856a633345691300f82585f90034715cf0e2. +// +// Solidity: event OperatorSetConfigSet((address,uint32) operatorSet, (address,uint32) config) +func (_ICrossChainRegistry *ICrossChainRegistryFilterer) WatchOperatorSetConfigSet(opts *bind.WatchOpts, sink chan<- *ICrossChainRegistryOperatorSetConfigSet) (event.Subscription, error) { + + logs, sub, err := _ICrossChainRegistry.contract.WatchLogs(opts, "OperatorSetConfigSet") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ICrossChainRegistryOperatorSetConfigSet) + if err := _ICrossChainRegistry.contract.UnpackLog(event, "OperatorSetConfigSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorSetConfigSet is a log parse operation binding the contract event 0x3147846ee526009000671c20380b856a633345691300f82585f90034715cf0e2. +// +// Solidity: event OperatorSetConfigSet((address,uint32) operatorSet, (address,uint32) config) +func (_ICrossChainRegistry *ICrossChainRegistryFilterer) ParseOperatorSetConfigSet(log types.Log) (*ICrossChainRegistryOperatorSetConfigSet, error) { + event := new(ICrossChainRegistryOperatorSetConfigSet) + if err := _ICrossChainRegistry.contract.UnpackLog(event, "OperatorSetConfigSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ICrossChainRegistryOperatorTableCalculatorSetIterator is returned from FilterOperatorTableCalculatorSet and is used to iterate over the raw logs and unpacked data for OperatorTableCalculatorSet events raised by the ICrossChainRegistry contract. +type ICrossChainRegistryOperatorTableCalculatorSetIterator struct { + Event *ICrossChainRegistryOperatorTableCalculatorSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ICrossChainRegistryOperatorTableCalculatorSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ICrossChainRegistryOperatorTableCalculatorSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ICrossChainRegistryOperatorTableCalculatorSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ICrossChainRegistryOperatorTableCalculatorSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ICrossChainRegistryOperatorTableCalculatorSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ICrossChainRegistryOperatorTableCalculatorSet represents a OperatorTableCalculatorSet event raised by the ICrossChainRegistry contract. +type ICrossChainRegistryOperatorTableCalculatorSet struct { + OperatorSet OperatorSet + OperatorTableCalculator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorTableCalculatorSet is a free log retrieval operation binding the contract event 0x7f7ccafd92d20fdb39dee184a0dce002a9da420ed0def461f2a027abc9b3f6df. +// +// Solidity: event OperatorTableCalculatorSet((address,uint32) operatorSet, address operatorTableCalculator) +func (_ICrossChainRegistry *ICrossChainRegistryFilterer) FilterOperatorTableCalculatorSet(opts *bind.FilterOpts) (*ICrossChainRegistryOperatorTableCalculatorSetIterator, error) { + + logs, sub, err := _ICrossChainRegistry.contract.FilterLogs(opts, "OperatorTableCalculatorSet") + if err != nil { + return nil, err + } + return &ICrossChainRegistryOperatorTableCalculatorSetIterator{contract: _ICrossChainRegistry.contract, event: "OperatorTableCalculatorSet", logs: logs, sub: sub}, nil +} + +// WatchOperatorTableCalculatorSet is a free log subscription operation binding the contract event 0x7f7ccafd92d20fdb39dee184a0dce002a9da420ed0def461f2a027abc9b3f6df. +// +// Solidity: event OperatorTableCalculatorSet((address,uint32) operatorSet, address operatorTableCalculator) +func (_ICrossChainRegistry *ICrossChainRegistryFilterer) WatchOperatorTableCalculatorSet(opts *bind.WatchOpts, sink chan<- *ICrossChainRegistryOperatorTableCalculatorSet) (event.Subscription, error) { + + logs, sub, err := _ICrossChainRegistry.contract.WatchLogs(opts, "OperatorTableCalculatorSet") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ICrossChainRegistryOperatorTableCalculatorSet) + if err := _ICrossChainRegistry.contract.UnpackLog(event, "OperatorTableCalculatorSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorTableCalculatorSet is a log parse operation binding the contract event 0x7f7ccafd92d20fdb39dee184a0dce002a9da420ed0def461f2a027abc9b3f6df. +// +// Solidity: event OperatorTableCalculatorSet((address,uint32) operatorSet, address operatorTableCalculator) +func (_ICrossChainRegistry *ICrossChainRegistryFilterer) ParseOperatorTableCalculatorSet(log types.Log) (*ICrossChainRegistryOperatorTableCalculatorSet, error) { + event := new(ICrossChainRegistryOperatorTableCalculatorSet) + if err := _ICrossChainRegistry.contract.UnpackLog(event, "OperatorTableCalculatorSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ICrossChainRegistryTransportDestinationAddedIterator is returned from FilterTransportDestinationAdded and is used to iterate over the raw logs and unpacked data for TransportDestinationAdded events raised by the ICrossChainRegistry contract. type ICrossChainRegistryTransportDestinationAddedIterator struct { Event *ICrossChainRegistryTransportDestinationAdded // Event containing the contract specifics and raw log @@ -1045,13 +1456,13 @@ func (it *ICrossChainRegistryTransportDestinationAddedIterator) Close() error { // ICrossChainRegistryTransportDestinationAdded represents a TransportDestinationAdded event raised by the ICrossChainRegistry contract. type ICrossChainRegistryTransportDestinationAdded struct { OperatorSet OperatorSet - ChainID uint32 + ChainID *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterTransportDestinationAdded is a free log retrieval operation binding the contract event 0x8b4440933d21e00b2cb9054306b21777f3da3f19c8fd32d61bb225c02d2b9877. +// FilterTransportDestinationAdded is a free log retrieval operation binding the contract event 0x8b3a5eb206599a7bd7dcffa354a014ae777667c6890b23d046ff6867cd968393. // -// Solidity: event TransportDestinationAdded((address,uint32) operatorSet, uint32 chainID) +// Solidity: event TransportDestinationAdded((address,uint32) operatorSet, uint256 chainID) func (_ICrossChainRegistry *ICrossChainRegistryFilterer) FilterTransportDestinationAdded(opts *bind.FilterOpts) (*ICrossChainRegistryTransportDestinationAddedIterator, error) { logs, sub, err := _ICrossChainRegistry.contract.FilterLogs(opts, "TransportDestinationAdded") @@ -1061,9 +1472,9 @@ func (_ICrossChainRegistry *ICrossChainRegistryFilterer) FilterTransportDestinat return &ICrossChainRegistryTransportDestinationAddedIterator{contract: _ICrossChainRegistry.contract, event: "TransportDestinationAdded", logs: logs, sub: sub}, nil } -// WatchTransportDestinationAdded is a free log subscription operation binding the contract event 0x8b4440933d21e00b2cb9054306b21777f3da3f19c8fd32d61bb225c02d2b9877. +// WatchTransportDestinationAdded is a free log subscription operation binding the contract event 0x8b3a5eb206599a7bd7dcffa354a014ae777667c6890b23d046ff6867cd968393. // -// Solidity: event TransportDestinationAdded((address,uint32) operatorSet, uint32 chainID) +// Solidity: event TransportDestinationAdded((address,uint32) operatorSet, uint256 chainID) func (_ICrossChainRegistry *ICrossChainRegistryFilterer) WatchTransportDestinationAdded(opts *bind.WatchOpts, sink chan<- *ICrossChainRegistryTransportDestinationAdded) (event.Subscription, error) { logs, sub, err := _ICrossChainRegistry.contract.WatchLogs(opts, "TransportDestinationAdded") @@ -1098,9 +1509,9 @@ func (_ICrossChainRegistry *ICrossChainRegistryFilterer) WatchTransportDestinati }), nil } -// ParseTransportDestinationAdded is a log parse operation binding the contract event 0x8b4440933d21e00b2cb9054306b21777f3da3f19c8fd32d61bb225c02d2b9877. +// ParseTransportDestinationAdded is a log parse operation binding the contract event 0x8b3a5eb206599a7bd7dcffa354a014ae777667c6890b23d046ff6867cd968393. // -// Solidity: event TransportDestinationAdded((address,uint32) operatorSet, uint32 chainID) +// Solidity: event TransportDestinationAdded((address,uint32) operatorSet, uint256 chainID) func (_ICrossChainRegistry *ICrossChainRegistryFilterer) ParseTransportDestinationAdded(log types.Log) (*ICrossChainRegistryTransportDestinationAdded, error) { event := new(ICrossChainRegistryTransportDestinationAdded) if err := _ICrossChainRegistry.contract.UnpackLog(event, "TransportDestinationAdded", log); err != nil { @@ -1180,13 +1591,13 @@ func (it *ICrossChainRegistryTransportDestinationRemovedIterator) Close() error // ICrossChainRegistryTransportDestinationRemoved represents a TransportDestinationRemoved event raised by the ICrossChainRegistry contract. type ICrossChainRegistryTransportDestinationRemoved struct { OperatorSet OperatorSet - ChainID uint32 + ChainID *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterTransportDestinationRemoved is a free log retrieval operation binding the contract event 0x6492ce451b3fd0b7d79c6695d244676a8ee605aa63dab2ec2382796695d9461c. +// FilterTransportDestinationRemoved is a free log retrieval operation binding the contract event 0x9fa5794dfaeae2ede46d5bdba347083580889221c3338813ca6c8d4b681ae8ee. // -// Solidity: event TransportDestinationRemoved((address,uint32) operatorSet, uint32 chainID) +// Solidity: event TransportDestinationRemoved((address,uint32) operatorSet, uint256 chainID) func (_ICrossChainRegistry *ICrossChainRegistryFilterer) FilterTransportDestinationRemoved(opts *bind.FilterOpts) (*ICrossChainRegistryTransportDestinationRemovedIterator, error) { logs, sub, err := _ICrossChainRegistry.contract.FilterLogs(opts, "TransportDestinationRemoved") @@ -1196,9 +1607,9 @@ func (_ICrossChainRegistry *ICrossChainRegistryFilterer) FilterTransportDestinat return &ICrossChainRegistryTransportDestinationRemovedIterator{contract: _ICrossChainRegistry.contract, event: "TransportDestinationRemoved", logs: logs, sub: sub}, nil } -// WatchTransportDestinationRemoved is a free log subscription operation binding the contract event 0x6492ce451b3fd0b7d79c6695d244676a8ee605aa63dab2ec2382796695d9461c. +// WatchTransportDestinationRemoved is a free log subscription operation binding the contract event 0x9fa5794dfaeae2ede46d5bdba347083580889221c3338813ca6c8d4b681ae8ee. // -// Solidity: event TransportDestinationRemoved((address,uint32) operatorSet, uint32 chainID) +// Solidity: event TransportDestinationRemoved((address,uint32) operatorSet, uint256 chainID) func (_ICrossChainRegistry *ICrossChainRegistryFilterer) WatchTransportDestinationRemoved(opts *bind.WatchOpts, sink chan<- *ICrossChainRegistryTransportDestinationRemoved) (event.Subscription, error) { logs, sub, err := _ICrossChainRegistry.contract.WatchLogs(opts, "TransportDestinationRemoved") @@ -1233,9 +1644,9 @@ func (_ICrossChainRegistry *ICrossChainRegistryFilterer) WatchTransportDestinati }), nil } -// ParseTransportDestinationRemoved is a log parse operation binding the contract event 0x6492ce451b3fd0b7d79c6695d244676a8ee605aa63dab2ec2382796695d9461c. +// ParseTransportDestinationRemoved is a log parse operation binding the contract event 0x9fa5794dfaeae2ede46d5bdba347083580889221c3338813ca6c8d4b681ae8ee. // -// Solidity: event TransportDestinationRemoved((address,uint32) operatorSet, uint32 chainID) +// Solidity: event TransportDestinationRemoved((address,uint32) operatorSet, uint256 chainID) func (_ICrossChainRegistry *ICrossChainRegistryFilterer) ParseTransportDestinationRemoved(log types.Log) (*ICrossChainRegistryTransportDestinationRemoved, error) { event := new(ICrossChainRegistryTransportDestinationRemoved) if err := _ICrossChainRegistry.contract.UnpackLog(event, "TransportDestinationRemoved", log); err != nil { diff --git a/pkg/bindings/IECDSACertificateVerifier/binding.go b/pkg/bindings/IECDSACertificateVerifier/binding.go index f072e2f30b..c07c2ea4e6 100644 --- a/pkg/bindings/IECDSACertificateVerifier/binding.go +++ b/pkg/bindings/IECDSACertificateVerifier/binding.go @@ -56,7 +56,7 @@ type OperatorSet struct { // IECDSACertificateVerifierMetaData contains all meta data concerning the IECDSACertificateVerifier contract. var IECDSACertificateVerifierMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"getOperatorSetOwner\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"latestReferenceTimestamp\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"maxOperatorTableStaleness\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfos\",\"type\":\"tuple[]\",\"internalType\":\"structIECDSATableCalculatorTypes.ECDSAOperatorInfo[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"weights\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"}]},{\"name\":\"operatorSetConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificate\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIECDSACertificateVerifierTypes.ECDSACertificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"signedStakes\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificateNominal\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIECDSACertificateVerifierTypes.ECDSACertificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"totalStakeNominalThresholds\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificateProportion\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIECDSACertificateVerifierTypes.ECDSACertificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"totalStakeProportionThresholds\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"MaxStalenessPeriodUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetOwnerUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TableUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"operatorInfos\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structIECDSATableCalculatorTypes.ECDSAOperatorInfo[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"weights\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"}]}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CertificateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyTableUpdater\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReferenceTimestampDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VerificationFailed\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"getOperatorSetOwner\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"latestReferenceTimestamp\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"maxOperatorTableStaleness\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfos\",\"type\":\"tuple[]\",\"internalType\":\"structIECDSATableCalculatorTypes.ECDSAOperatorInfo[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"operatorSetConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificate\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIECDSACertificateVerifierTypes.ECDSACertificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"signedStakes\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificateNominal\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIECDSACertificateVerifierTypes.ECDSACertificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"totalStakeNominalThresholds\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyCertificateProportion\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"cert\",\"type\":\"tuple\",\"internalType\":\"structIECDSACertificateVerifierTypes.ECDSACertificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"totalStakeProportionThresholds\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"MaxStalenessPeriodUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetOwnerUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TableUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"operatorInfos\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structIECDSATableCalculatorTypes.ECDSAOperatorInfo[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CertificateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyTableUpdater\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReferenceTimestampDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"VerificationFailed\",\"inputs\":[]}]", } // IECDSACertificateVerifierABI is the input ABI used to generate the binding from. @@ -268,23 +268,23 @@ func (_IECDSACertificateVerifier *IECDSACertificateVerifierTransactorSession) Ma return _IECDSACertificateVerifier.Contract.MaxOperatorTableStaleness(&_IECDSACertificateVerifier.TransactOpts, operatorSet) } -// UpdateOperatorTable is a paid mutator transaction binding the contract method 0xa4f2f812. +// UpdateOperatorTable is a paid mutator transaction binding the contract method 0x56d482f5. // -// Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint96[])[] operatorInfos, (address,uint32) operatorSetConfig) returns() +// Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint256[])[] operatorInfos, (address,uint32) operatorSetConfig) returns() func (_IECDSACertificateVerifier *IECDSACertificateVerifierTransactor) UpdateOperatorTable(opts *bind.TransactOpts, operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IECDSATableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _IECDSACertificateVerifier.contract.Transact(opts, "updateOperatorTable", operatorSet, referenceTimestamp, operatorInfos, operatorSetConfig) } -// UpdateOperatorTable is a paid mutator transaction binding the contract method 0xa4f2f812. +// UpdateOperatorTable is a paid mutator transaction binding the contract method 0x56d482f5. // -// Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint96[])[] operatorInfos, (address,uint32) operatorSetConfig) returns() +// Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint256[])[] operatorInfos, (address,uint32) operatorSetConfig) returns() func (_IECDSACertificateVerifier *IECDSACertificateVerifierSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IECDSATableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _IECDSACertificateVerifier.Contract.UpdateOperatorTable(&_IECDSACertificateVerifier.TransactOpts, operatorSet, referenceTimestamp, operatorInfos, operatorSetConfig) } -// UpdateOperatorTable is a paid mutator transaction binding the contract method 0xa4f2f812. +// UpdateOperatorTable is a paid mutator transaction binding the contract method 0x56d482f5. // -// Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint96[])[] operatorInfos, (address,uint32) operatorSetConfig) returns() +// Solidity: function updateOperatorTable((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint256[])[] operatorInfos, (address,uint32) operatorSetConfig) returns() func (_IECDSACertificateVerifier *IECDSACertificateVerifierTransactorSession) UpdateOperatorTable(operatorSet OperatorSet, referenceTimestamp uint32, operatorInfos []IECDSATableCalculatorTypesECDSAOperatorInfo, operatorSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { return _IECDSACertificateVerifier.Contract.UpdateOperatorTable(&_IECDSACertificateVerifier.TransactOpts, operatorSet, referenceTimestamp, operatorInfos, operatorSetConfig) } @@ -697,9 +697,9 @@ type IECDSACertificateVerifierTableUpdated struct { Raw types.Log // Blockchain specific contextual infos } -// FilterTableUpdated is a free log retrieval operation binding the contract event 0xdb1bca48b18b28fdf43760e8f885c152b536f7acb4e99e68c354433c39312030. +// FilterTableUpdated is a free log retrieval operation binding the contract event 0x4f588da9ec57976194a79b5594f8f8782923d93013df2b9ed12fe125805011ef. // -// Solidity: event TableUpdated((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint96[])[] operatorInfos) +// Solidity: event TableUpdated((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint256[])[] operatorInfos) func (_IECDSACertificateVerifier *IECDSACertificateVerifierFilterer) FilterTableUpdated(opts *bind.FilterOpts) (*IECDSACertificateVerifierTableUpdatedIterator, error) { logs, sub, err := _IECDSACertificateVerifier.contract.FilterLogs(opts, "TableUpdated") @@ -709,9 +709,9 @@ func (_IECDSACertificateVerifier *IECDSACertificateVerifierFilterer) FilterTable return &IECDSACertificateVerifierTableUpdatedIterator{contract: _IECDSACertificateVerifier.contract, event: "TableUpdated", logs: logs, sub: sub}, nil } -// WatchTableUpdated is a free log subscription operation binding the contract event 0xdb1bca48b18b28fdf43760e8f885c152b536f7acb4e99e68c354433c39312030. +// WatchTableUpdated is a free log subscription operation binding the contract event 0x4f588da9ec57976194a79b5594f8f8782923d93013df2b9ed12fe125805011ef. // -// Solidity: event TableUpdated((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint96[])[] operatorInfos) +// Solidity: event TableUpdated((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint256[])[] operatorInfos) func (_IECDSACertificateVerifier *IECDSACertificateVerifierFilterer) WatchTableUpdated(opts *bind.WatchOpts, sink chan<- *IECDSACertificateVerifierTableUpdated) (event.Subscription, error) { logs, sub, err := _IECDSACertificateVerifier.contract.WatchLogs(opts, "TableUpdated") @@ -746,9 +746,9 @@ func (_IECDSACertificateVerifier *IECDSACertificateVerifierFilterer) WatchTableU }), nil } -// ParseTableUpdated is a log parse operation binding the contract event 0xdb1bca48b18b28fdf43760e8f885c152b536f7acb4e99e68c354433c39312030. +// ParseTableUpdated is a log parse operation binding the contract event 0x4f588da9ec57976194a79b5594f8f8782923d93013df2b9ed12fe125805011ef. // -// Solidity: event TableUpdated((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint96[])[] operatorInfos) +// Solidity: event TableUpdated((address,uint32) operatorSet, uint32 referenceTimestamp, (address,uint256[])[] operatorInfos) func (_IECDSACertificateVerifier *IECDSACertificateVerifierFilterer) ParseTableUpdated(log types.Log) (*IECDSACertificateVerifierTableUpdated, error) { event := new(IECDSACertificateVerifierTableUpdated) if err := _IECDSACertificateVerifier.contract.UnpackLog(event, "TableUpdated", log); err != nil { diff --git a/pkg/bindings/IECDSATableCalculator/binding.go b/pkg/bindings/IECDSATableCalculator/binding.go index b66a2f71db..511b132ed9 100644 --- a/pkg/bindings/IECDSATableCalculator/binding.go +++ b/pkg/bindings/IECDSATableCalculator/binding.go @@ -43,7 +43,7 @@ type OperatorSet struct { // IECDSATableCalculatorMetaData contains all meta data concerning the IECDSATableCalculator contract. var IECDSATableCalculatorMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"calculateOperatorTable\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operatorInfos\",\"type\":\"tuple[]\",\"internalType\":\"structIECDSATableCalculatorTypes.ECDSAOperatorInfo[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"weights\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorTableBytes\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"}]", + ABI: "[{\"type\":\"function\",\"name\":\"calculateOperatorTable\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operatorInfos\",\"type\":\"tuple[]\",\"internalType\":\"structIECDSATableCalculatorTypes.ECDSAOperatorInfo[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorTableBytes\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorWeight\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorWeights\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"weights\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"LookaheadBlocksSet\",\"inputs\":[{\"name\":\"lookaheadBlocks\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"LookaheadBlocksTooHigh\",\"inputs\":[]}]", } // IECDSATableCalculatorABI is the input ABI used to generate the binding from. @@ -194,7 +194,7 @@ func (_IECDSATableCalculator *IECDSATableCalculatorTransactorRaw) Transact(opts // CalculateOperatorTable is a free data retrieval call binding the contract method 0x124c87e0. // -// Solidity: function calculateOperatorTable((address,uint32) operatorSet) view returns((address,uint96[])[] operatorInfos) +// Solidity: function calculateOperatorTable((address,uint32) operatorSet) view returns((address,uint256[])[] operatorInfos) func (_IECDSATableCalculator *IECDSATableCalculatorCaller) CalculateOperatorTable(opts *bind.CallOpts, operatorSet OperatorSet) ([]IECDSATableCalculatorTypesECDSAOperatorInfo, error) { var out []interface{} err := _IECDSATableCalculator.contract.Call(opts, &out, "calculateOperatorTable", operatorSet) @@ -211,14 +211,14 @@ func (_IECDSATableCalculator *IECDSATableCalculatorCaller) CalculateOperatorTabl // CalculateOperatorTable is a free data retrieval call binding the contract method 0x124c87e0. // -// Solidity: function calculateOperatorTable((address,uint32) operatorSet) view returns((address,uint96[])[] operatorInfos) +// Solidity: function calculateOperatorTable((address,uint32) operatorSet) view returns((address,uint256[])[] operatorInfos) func (_IECDSATableCalculator *IECDSATableCalculatorSession) CalculateOperatorTable(operatorSet OperatorSet) ([]IECDSATableCalculatorTypesECDSAOperatorInfo, error) { return _IECDSATableCalculator.Contract.CalculateOperatorTable(&_IECDSATableCalculator.CallOpts, operatorSet) } // CalculateOperatorTable is a free data retrieval call binding the contract method 0x124c87e0. // -// Solidity: function calculateOperatorTable((address,uint32) operatorSet) view returns((address,uint96[])[] operatorInfos) +// Solidity: function calculateOperatorTable((address,uint32) operatorSet) view returns((address,uint256[])[] operatorInfos) func (_IECDSATableCalculator *IECDSATableCalculatorCallerSession) CalculateOperatorTable(operatorSet OperatorSet) ([]IECDSATableCalculatorTypesECDSAOperatorInfo, error) { return _IECDSATableCalculator.Contract.CalculateOperatorTable(&_IECDSATableCalculator.CallOpts, operatorSet) } @@ -253,3 +253,213 @@ func (_IECDSATableCalculator *IECDSATableCalculatorSession) CalculateOperatorTab func (_IECDSATableCalculator *IECDSATableCalculatorCallerSession) CalculateOperatorTableBytes(operatorSet OperatorSet) ([]byte, error) { return _IECDSATableCalculator.Contract.CalculateOperatorTableBytes(&_IECDSATableCalculator.CallOpts, operatorSet) } + +// GetOperatorWeight is a free data retrieval call binding the contract method 0x1088794a. +// +// Solidity: function getOperatorWeight((address,uint32) operatorSet, address operator) view returns(uint256 weight) +func (_IECDSATableCalculator *IECDSATableCalculatorCaller) GetOperatorWeight(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) (*big.Int, error) { + var out []interface{} + err := _IECDSATableCalculator.contract.Call(opts, &out, "getOperatorWeight", operatorSet, operator) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetOperatorWeight is a free data retrieval call binding the contract method 0x1088794a. +// +// Solidity: function getOperatorWeight((address,uint32) operatorSet, address operator) view returns(uint256 weight) +func (_IECDSATableCalculator *IECDSATableCalculatorSession) GetOperatorWeight(operatorSet OperatorSet, operator common.Address) (*big.Int, error) { + return _IECDSATableCalculator.Contract.GetOperatorWeight(&_IECDSATableCalculator.CallOpts, operatorSet, operator) +} + +// GetOperatorWeight is a free data retrieval call binding the contract method 0x1088794a. +// +// Solidity: function getOperatorWeight((address,uint32) operatorSet, address operator) view returns(uint256 weight) +func (_IECDSATableCalculator *IECDSATableCalculatorCallerSession) GetOperatorWeight(operatorSet OperatorSet, operator common.Address) (*big.Int, error) { + return _IECDSATableCalculator.Contract.GetOperatorWeight(&_IECDSATableCalculator.CallOpts, operatorSet, operator) +} + +// GetOperatorWeights is a free data retrieval call binding the contract method 0x71ca71d9. +// +// Solidity: function getOperatorWeights((address,uint32) operatorSet) view returns(address[] operators, uint256[][] weights) +func (_IECDSATableCalculator *IECDSATableCalculatorCaller) GetOperatorWeights(opts *bind.CallOpts, operatorSet OperatorSet) (struct { + Operators []common.Address + Weights [][]*big.Int +}, error) { + var out []interface{} + err := _IECDSATableCalculator.contract.Call(opts, &out, "getOperatorWeights", operatorSet) + + outstruct := new(struct { + Operators []common.Address + Weights [][]*big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Operators = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + outstruct.Weights = *abi.ConvertType(out[1], new([][]*big.Int)).(*[][]*big.Int) + + return *outstruct, err + +} + +// GetOperatorWeights is a free data retrieval call binding the contract method 0x71ca71d9. +// +// Solidity: function getOperatorWeights((address,uint32) operatorSet) view returns(address[] operators, uint256[][] weights) +func (_IECDSATableCalculator *IECDSATableCalculatorSession) GetOperatorWeights(operatorSet OperatorSet) (struct { + Operators []common.Address + Weights [][]*big.Int +}, error) { + return _IECDSATableCalculator.Contract.GetOperatorWeights(&_IECDSATableCalculator.CallOpts, operatorSet) +} + +// GetOperatorWeights is a free data retrieval call binding the contract method 0x71ca71d9. +// +// Solidity: function getOperatorWeights((address,uint32) operatorSet) view returns(address[] operators, uint256[][] weights) +func (_IECDSATableCalculator *IECDSATableCalculatorCallerSession) GetOperatorWeights(operatorSet OperatorSet) (struct { + Operators []common.Address + Weights [][]*big.Int +}, error) { + return _IECDSATableCalculator.Contract.GetOperatorWeights(&_IECDSATableCalculator.CallOpts, operatorSet) +} + +// IECDSATableCalculatorLookaheadBlocksSetIterator is returned from FilterLookaheadBlocksSet and is used to iterate over the raw logs and unpacked data for LookaheadBlocksSet events raised by the IECDSATableCalculator contract. +type IECDSATableCalculatorLookaheadBlocksSetIterator struct { + Event *IECDSATableCalculatorLookaheadBlocksSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IECDSATableCalculatorLookaheadBlocksSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IECDSATableCalculatorLookaheadBlocksSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IECDSATableCalculatorLookaheadBlocksSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IECDSATableCalculatorLookaheadBlocksSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IECDSATableCalculatorLookaheadBlocksSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IECDSATableCalculatorLookaheadBlocksSet represents a LookaheadBlocksSet event raised by the IECDSATableCalculator contract. +type IECDSATableCalculatorLookaheadBlocksSet struct { + LookaheadBlocks *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLookaheadBlocksSet is a free log retrieval operation binding the contract event 0xa41e64dd47db91b61b43ccea8b57d75abfa496f23efc708c22753c4bc9d68842. +// +// Solidity: event LookaheadBlocksSet(uint256 lookaheadBlocks) +func (_IECDSATableCalculator *IECDSATableCalculatorFilterer) FilterLookaheadBlocksSet(opts *bind.FilterOpts) (*IECDSATableCalculatorLookaheadBlocksSetIterator, error) { + + logs, sub, err := _IECDSATableCalculator.contract.FilterLogs(opts, "LookaheadBlocksSet") + if err != nil { + return nil, err + } + return &IECDSATableCalculatorLookaheadBlocksSetIterator{contract: _IECDSATableCalculator.contract, event: "LookaheadBlocksSet", logs: logs, sub: sub}, nil +} + +// WatchLookaheadBlocksSet is a free log subscription operation binding the contract event 0xa41e64dd47db91b61b43ccea8b57d75abfa496f23efc708c22753c4bc9d68842. +// +// Solidity: event LookaheadBlocksSet(uint256 lookaheadBlocks) +func (_IECDSATableCalculator *IECDSATableCalculatorFilterer) WatchLookaheadBlocksSet(opts *bind.WatchOpts, sink chan<- *IECDSATableCalculatorLookaheadBlocksSet) (event.Subscription, error) { + + logs, sub, err := _IECDSATableCalculator.contract.WatchLogs(opts, "LookaheadBlocksSet") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IECDSATableCalculatorLookaheadBlocksSet) + if err := _IECDSATableCalculator.contract.UnpackLog(event, "LookaheadBlocksSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLookaheadBlocksSet is a log parse operation binding the contract event 0xa41e64dd47db91b61b43ccea8b57d75abfa496f23efc708c22753c4bc9d68842. +// +// Solidity: event LookaheadBlocksSet(uint256 lookaheadBlocks) +func (_IECDSATableCalculator *IECDSATableCalculatorFilterer) ParseLookaheadBlocksSet(log types.Log) (*IECDSATableCalculatorLookaheadBlocksSet, error) { + event := new(IECDSATableCalculatorLookaheadBlocksSet) + if err := _IECDSATableCalculator.contract.UnpackLog(event, "LookaheadBlocksSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/IKeyRegistrar/binding.go b/pkg/bindings/IKeyRegistrar/binding.go new file mode 100644 index 0000000000..78be109dee --- /dev/null +++ b/pkg/bindings/IKeyRegistrar/binding.go @@ -0,0 +1,1118 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package IKeyRegistrar + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// BN254G1Point is an auto generated low-level Go binding around an user-defined struct. +type BN254G1Point struct { + X *big.Int + Y *big.Int +} + +// BN254G2Point is an auto generated low-level Go binding around an user-defined struct. +type BN254G2Point struct { + X [2]*big.Int + Y [2]*big.Int +} + +// OperatorSet is an auto generated low-level Go binding around an user-defined struct. +type OperatorSet struct { + Avs common.Address + Id uint32 +} + +// IKeyRegistrarMetaData contains all meta data concerning the IKeyRegistrar contract. +var IKeyRegistrarMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"checkKey\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"configureOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterKey\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBN254Key\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"g1Point\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"g2Point\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getECDSAAddress\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getECDSAKey\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getKeyHash\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetCurveType\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isKeyGloballyRegistered\",\"inputs\":[{\"name\":\"keyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRegistered\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerKey\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"AggregateBN254KeyUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"newAggregateKey\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"KeyDeregistered\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"curveType\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"KeyRegistered\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"curveType\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"},{\"name\":\"pubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetConfigured\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"curveType\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ConfigurationAlreadySet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidKeyFormat\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidKeypair\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"KeyAlreadyRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"KeyNotFound\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OperatorSetNotConfigured\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroPubkey\",\"inputs\":[]}]", +} + +// IKeyRegistrarABI is the input ABI used to generate the binding from. +// Deprecated: Use IKeyRegistrarMetaData.ABI instead. +var IKeyRegistrarABI = IKeyRegistrarMetaData.ABI + +// IKeyRegistrar is an auto generated Go binding around an Ethereum contract. +type IKeyRegistrar struct { + IKeyRegistrarCaller // Read-only binding to the contract + IKeyRegistrarTransactor // Write-only binding to the contract + IKeyRegistrarFilterer // Log filterer for contract events +} + +// IKeyRegistrarCaller is an auto generated read-only Go binding around an Ethereum contract. +type IKeyRegistrarCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IKeyRegistrarTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IKeyRegistrarTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IKeyRegistrarFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IKeyRegistrarFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IKeyRegistrarSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IKeyRegistrarSession struct { + Contract *IKeyRegistrar // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IKeyRegistrarCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IKeyRegistrarCallerSession struct { + Contract *IKeyRegistrarCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IKeyRegistrarTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IKeyRegistrarTransactorSession struct { + Contract *IKeyRegistrarTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IKeyRegistrarRaw is an auto generated low-level Go binding around an Ethereum contract. +type IKeyRegistrarRaw struct { + Contract *IKeyRegistrar // Generic contract binding to access the raw methods on +} + +// IKeyRegistrarCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IKeyRegistrarCallerRaw struct { + Contract *IKeyRegistrarCaller // Generic read-only contract binding to access the raw methods on +} + +// IKeyRegistrarTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IKeyRegistrarTransactorRaw struct { + Contract *IKeyRegistrarTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIKeyRegistrar creates a new instance of IKeyRegistrar, bound to a specific deployed contract. +func NewIKeyRegistrar(address common.Address, backend bind.ContractBackend) (*IKeyRegistrar, error) { + contract, err := bindIKeyRegistrar(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IKeyRegistrar{IKeyRegistrarCaller: IKeyRegistrarCaller{contract: contract}, IKeyRegistrarTransactor: IKeyRegistrarTransactor{contract: contract}, IKeyRegistrarFilterer: IKeyRegistrarFilterer{contract: contract}}, nil +} + +// NewIKeyRegistrarCaller creates a new read-only instance of IKeyRegistrar, bound to a specific deployed contract. +func NewIKeyRegistrarCaller(address common.Address, caller bind.ContractCaller) (*IKeyRegistrarCaller, error) { + contract, err := bindIKeyRegistrar(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IKeyRegistrarCaller{contract: contract}, nil +} + +// NewIKeyRegistrarTransactor creates a new write-only instance of IKeyRegistrar, bound to a specific deployed contract. +func NewIKeyRegistrarTransactor(address common.Address, transactor bind.ContractTransactor) (*IKeyRegistrarTransactor, error) { + contract, err := bindIKeyRegistrar(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IKeyRegistrarTransactor{contract: contract}, nil +} + +// NewIKeyRegistrarFilterer creates a new log filterer instance of IKeyRegistrar, bound to a specific deployed contract. +func NewIKeyRegistrarFilterer(address common.Address, filterer bind.ContractFilterer) (*IKeyRegistrarFilterer, error) { + contract, err := bindIKeyRegistrar(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IKeyRegistrarFilterer{contract: contract}, nil +} + +// bindIKeyRegistrar binds a generic wrapper to an already deployed contract. +func bindIKeyRegistrar(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IKeyRegistrarMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IKeyRegistrar *IKeyRegistrarRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IKeyRegistrar.Contract.IKeyRegistrarCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IKeyRegistrar *IKeyRegistrarRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IKeyRegistrar.Contract.IKeyRegistrarTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IKeyRegistrar *IKeyRegistrarRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IKeyRegistrar.Contract.IKeyRegistrarTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IKeyRegistrar *IKeyRegistrarCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IKeyRegistrar.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IKeyRegistrar *IKeyRegistrarTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IKeyRegistrar.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IKeyRegistrar *IKeyRegistrarTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IKeyRegistrar.Contract.contract.Transact(opts, method, params...) +} + +// CheckKey is a free data retrieval call binding the contract method 0x0a6ac264. +// +// Solidity: function checkKey((address,uint32) operatorSet, address operator) view returns(bool) +func (_IKeyRegistrar *IKeyRegistrarCaller) CheckKey(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) (bool, error) { + var out []interface{} + err := _IKeyRegistrar.contract.Call(opts, &out, "checkKey", operatorSet, operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// CheckKey is a free data retrieval call binding the contract method 0x0a6ac264. +// +// Solidity: function checkKey((address,uint32) operatorSet, address operator) view returns(bool) +func (_IKeyRegistrar *IKeyRegistrarSession) CheckKey(operatorSet OperatorSet, operator common.Address) (bool, error) { + return _IKeyRegistrar.Contract.CheckKey(&_IKeyRegistrar.CallOpts, operatorSet, operator) +} + +// CheckKey is a free data retrieval call binding the contract method 0x0a6ac264. +// +// Solidity: function checkKey((address,uint32) operatorSet, address operator) view returns(bool) +func (_IKeyRegistrar *IKeyRegistrarCallerSession) CheckKey(operatorSet OperatorSet, operator common.Address) (bool, error) { + return _IKeyRegistrar.Contract.CheckKey(&_IKeyRegistrar.CallOpts, operatorSet, operator) +} + +// GetBN254Key is a free data retrieval call binding the contract method 0x9a43e3fb. +// +// Solidity: function getBN254Key((address,uint32) operatorSet, address operator) view returns((uint256,uint256) g1Point, (uint256[2],uint256[2]) g2Point) +func (_IKeyRegistrar *IKeyRegistrarCaller) GetBN254Key(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) (struct { + G1Point BN254G1Point + G2Point BN254G2Point +}, error) { + var out []interface{} + err := _IKeyRegistrar.contract.Call(opts, &out, "getBN254Key", operatorSet, operator) + + outstruct := new(struct { + G1Point BN254G1Point + G2Point BN254G2Point + }) + if err != nil { + return *outstruct, err + } + + outstruct.G1Point = *abi.ConvertType(out[0], new(BN254G1Point)).(*BN254G1Point) + outstruct.G2Point = *abi.ConvertType(out[1], new(BN254G2Point)).(*BN254G2Point) + + return *outstruct, err + +} + +// GetBN254Key is a free data retrieval call binding the contract method 0x9a43e3fb. +// +// Solidity: function getBN254Key((address,uint32) operatorSet, address operator) view returns((uint256,uint256) g1Point, (uint256[2],uint256[2]) g2Point) +func (_IKeyRegistrar *IKeyRegistrarSession) GetBN254Key(operatorSet OperatorSet, operator common.Address) (struct { + G1Point BN254G1Point + G2Point BN254G2Point +}, error) { + return _IKeyRegistrar.Contract.GetBN254Key(&_IKeyRegistrar.CallOpts, operatorSet, operator) +} + +// GetBN254Key is a free data retrieval call binding the contract method 0x9a43e3fb. +// +// Solidity: function getBN254Key((address,uint32) operatorSet, address operator) view returns((uint256,uint256) g1Point, (uint256[2],uint256[2]) g2Point) +func (_IKeyRegistrar *IKeyRegistrarCallerSession) GetBN254Key(operatorSet OperatorSet, operator common.Address) (struct { + G1Point BN254G1Point + G2Point BN254G2Point +}, error) { + return _IKeyRegistrar.Contract.GetBN254Key(&_IKeyRegistrar.CallOpts, operatorSet, operator) +} + +// GetECDSAAddress is a free data retrieval call binding the contract method 0x3b32a7bd. +// +// Solidity: function getECDSAAddress((address,uint32) operatorSet, address operator) view returns(address) +func (_IKeyRegistrar *IKeyRegistrarCaller) GetECDSAAddress(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) (common.Address, error) { + var out []interface{} + err := _IKeyRegistrar.contract.Call(opts, &out, "getECDSAAddress", operatorSet, operator) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetECDSAAddress is a free data retrieval call binding the contract method 0x3b32a7bd. +// +// Solidity: function getECDSAAddress((address,uint32) operatorSet, address operator) view returns(address) +func (_IKeyRegistrar *IKeyRegistrarSession) GetECDSAAddress(operatorSet OperatorSet, operator common.Address) (common.Address, error) { + return _IKeyRegistrar.Contract.GetECDSAAddress(&_IKeyRegistrar.CallOpts, operatorSet, operator) +} + +// GetECDSAAddress is a free data retrieval call binding the contract method 0x3b32a7bd. +// +// Solidity: function getECDSAAddress((address,uint32) operatorSet, address operator) view returns(address) +func (_IKeyRegistrar *IKeyRegistrarCallerSession) GetECDSAAddress(operatorSet OperatorSet, operator common.Address) (common.Address, error) { + return _IKeyRegistrar.Contract.GetECDSAAddress(&_IKeyRegistrar.CallOpts, operatorSet, operator) +} + +// GetECDSAKey is a free data retrieval call binding the contract method 0xaa165c30. +// +// Solidity: function getECDSAKey((address,uint32) operatorSet, address operator) view returns(bytes) +func (_IKeyRegistrar *IKeyRegistrarCaller) GetECDSAKey(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) ([]byte, error) { + var out []interface{} + err := _IKeyRegistrar.contract.Call(opts, &out, "getECDSAKey", operatorSet, operator) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// GetECDSAKey is a free data retrieval call binding the contract method 0xaa165c30. +// +// Solidity: function getECDSAKey((address,uint32) operatorSet, address operator) view returns(bytes) +func (_IKeyRegistrar *IKeyRegistrarSession) GetECDSAKey(operatorSet OperatorSet, operator common.Address) ([]byte, error) { + return _IKeyRegistrar.Contract.GetECDSAKey(&_IKeyRegistrar.CallOpts, operatorSet, operator) +} + +// GetECDSAKey is a free data retrieval call binding the contract method 0xaa165c30. +// +// Solidity: function getECDSAKey((address,uint32) operatorSet, address operator) view returns(bytes) +func (_IKeyRegistrar *IKeyRegistrarCallerSession) GetECDSAKey(operatorSet OperatorSet, operator common.Address) ([]byte, error) { + return _IKeyRegistrar.Contract.GetECDSAKey(&_IKeyRegistrar.CallOpts, operatorSet, operator) +} + +// GetKeyHash is a free data retrieval call binding the contract method 0xea194e2e. +// +// Solidity: function getKeyHash((address,uint32) operatorSet, address operator) view returns(bytes32) +func (_IKeyRegistrar *IKeyRegistrarCaller) GetKeyHash(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) ([32]byte, error) { + var out []interface{} + err := _IKeyRegistrar.contract.Call(opts, &out, "getKeyHash", operatorSet, operator) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetKeyHash is a free data retrieval call binding the contract method 0xea194e2e. +// +// Solidity: function getKeyHash((address,uint32) operatorSet, address operator) view returns(bytes32) +func (_IKeyRegistrar *IKeyRegistrarSession) GetKeyHash(operatorSet OperatorSet, operator common.Address) ([32]byte, error) { + return _IKeyRegistrar.Contract.GetKeyHash(&_IKeyRegistrar.CallOpts, operatorSet, operator) +} + +// GetKeyHash is a free data retrieval call binding the contract method 0xea194e2e. +// +// Solidity: function getKeyHash((address,uint32) operatorSet, address operator) view returns(bytes32) +func (_IKeyRegistrar *IKeyRegistrarCallerSession) GetKeyHash(operatorSet OperatorSet, operator common.Address) ([32]byte, error) { + return _IKeyRegistrar.Contract.GetKeyHash(&_IKeyRegistrar.CallOpts, operatorSet, operator) +} + +// GetOperatorSetCurveType is a free data retrieval call binding the contract method 0x7cffe48c. +// +// Solidity: function getOperatorSetCurveType((address,uint32) operatorSet) view returns(uint8) +func (_IKeyRegistrar *IKeyRegistrarCaller) GetOperatorSetCurveType(opts *bind.CallOpts, operatorSet OperatorSet) (uint8, error) { + var out []interface{} + err := _IKeyRegistrar.contract.Call(opts, &out, "getOperatorSetCurveType", operatorSet) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// GetOperatorSetCurveType is a free data retrieval call binding the contract method 0x7cffe48c. +// +// Solidity: function getOperatorSetCurveType((address,uint32) operatorSet) view returns(uint8) +func (_IKeyRegistrar *IKeyRegistrarSession) GetOperatorSetCurveType(operatorSet OperatorSet) (uint8, error) { + return _IKeyRegistrar.Contract.GetOperatorSetCurveType(&_IKeyRegistrar.CallOpts, operatorSet) +} + +// GetOperatorSetCurveType is a free data retrieval call binding the contract method 0x7cffe48c. +// +// Solidity: function getOperatorSetCurveType((address,uint32) operatorSet) view returns(uint8) +func (_IKeyRegistrar *IKeyRegistrarCallerSession) GetOperatorSetCurveType(operatorSet OperatorSet) (uint8, error) { + return _IKeyRegistrar.Contract.GetOperatorSetCurveType(&_IKeyRegistrar.CallOpts, operatorSet) +} + +// IsKeyGloballyRegistered is a free data retrieval call binding the contract method 0xdab42d7e. +// +// Solidity: function isKeyGloballyRegistered(bytes32 keyHash) view returns(bool) +func (_IKeyRegistrar *IKeyRegistrarCaller) IsKeyGloballyRegistered(opts *bind.CallOpts, keyHash [32]byte) (bool, error) { + var out []interface{} + err := _IKeyRegistrar.contract.Call(opts, &out, "isKeyGloballyRegistered", keyHash) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsKeyGloballyRegistered is a free data retrieval call binding the contract method 0xdab42d7e. +// +// Solidity: function isKeyGloballyRegistered(bytes32 keyHash) view returns(bool) +func (_IKeyRegistrar *IKeyRegistrarSession) IsKeyGloballyRegistered(keyHash [32]byte) (bool, error) { + return _IKeyRegistrar.Contract.IsKeyGloballyRegistered(&_IKeyRegistrar.CallOpts, keyHash) +} + +// IsKeyGloballyRegistered is a free data retrieval call binding the contract method 0xdab42d7e. +// +// Solidity: function isKeyGloballyRegistered(bytes32 keyHash) view returns(bool) +func (_IKeyRegistrar *IKeyRegistrarCallerSession) IsKeyGloballyRegistered(keyHash [32]byte) (bool, error) { + return _IKeyRegistrar.Contract.IsKeyGloballyRegistered(&_IKeyRegistrar.CallOpts, keyHash) +} + +// IsRegistered is a free data retrieval call binding the contract method 0xbd30a0b9. +// +// Solidity: function isRegistered((address,uint32) operatorSet, address operator) view returns(bool) +func (_IKeyRegistrar *IKeyRegistrarCaller) IsRegistered(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) (bool, error) { + var out []interface{} + err := _IKeyRegistrar.contract.Call(opts, &out, "isRegistered", operatorSet, operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsRegistered is a free data retrieval call binding the contract method 0xbd30a0b9. +// +// Solidity: function isRegistered((address,uint32) operatorSet, address operator) view returns(bool) +func (_IKeyRegistrar *IKeyRegistrarSession) IsRegistered(operatorSet OperatorSet, operator common.Address) (bool, error) { + return _IKeyRegistrar.Contract.IsRegistered(&_IKeyRegistrar.CallOpts, operatorSet, operator) +} + +// IsRegistered is a free data retrieval call binding the contract method 0xbd30a0b9. +// +// Solidity: function isRegistered((address,uint32) operatorSet, address operator) view returns(bool) +func (_IKeyRegistrar *IKeyRegistrarCallerSession) IsRegistered(operatorSet OperatorSet, operator common.Address) (bool, error) { + return _IKeyRegistrar.Contract.IsRegistered(&_IKeyRegistrar.CallOpts, operatorSet, operator) +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_IKeyRegistrar *IKeyRegistrarCaller) Version(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IKeyRegistrar.contract.Call(opts, &out, "version") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_IKeyRegistrar *IKeyRegistrarSession) Version() (string, error) { + return _IKeyRegistrar.Contract.Version(&_IKeyRegistrar.CallOpts) +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_IKeyRegistrar *IKeyRegistrarCallerSession) Version() (string, error) { + return _IKeyRegistrar.Contract.Version(&_IKeyRegistrar.CallOpts) +} + +// ConfigureOperatorSet is a paid mutator transaction binding the contract method 0xea0d8149. +// +// Solidity: function configureOperatorSet((address,uint32) operatorSet, uint8 curveType) returns() +func (_IKeyRegistrar *IKeyRegistrarTransactor) ConfigureOperatorSet(opts *bind.TransactOpts, operatorSet OperatorSet, curveType uint8) (*types.Transaction, error) { + return _IKeyRegistrar.contract.Transact(opts, "configureOperatorSet", operatorSet, curveType) +} + +// ConfigureOperatorSet is a paid mutator transaction binding the contract method 0xea0d8149. +// +// Solidity: function configureOperatorSet((address,uint32) operatorSet, uint8 curveType) returns() +func (_IKeyRegistrar *IKeyRegistrarSession) ConfigureOperatorSet(operatorSet OperatorSet, curveType uint8) (*types.Transaction, error) { + return _IKeyRegistrar.Contract.ConfigureOperatorSet(&_IKeyRegistrar.TransactOpts, operatorSet, curveType) +} + +// ConfigureOperatorSet is a paid mutator transaction binding the contract method 0xea0d8149. +// +// Solidity: function configureOperatorSet((address,uint32) operatorSet, uint8 curveType) returns() +func (_IKeyRegistrar *IKeyRegistrarTransactorSession) ConfigureOperatorSet(operatorSet OperatorSet, curveType uint8) (*types.Transaction, error) { + return _IKeyRegistrar.Contract.ConfigureOperatorSet(&_IKeyRegistrar.TransactOpts, operatorSet, curveType) +} + +// DeregisterKey is a paid mutator transaction binding the contract method 0x87ab86f4. +// +// Solidity: function deregisterKey(address operator, (address,uint32) operatorSet) returns() +func (_IKeyRegistrar *IKeyRegistrarTransactor) DeregisterKey(opts *bind.TransactOpts, operator common.Address, operatorSet OperatorSet) (*types.Transaction, error) { + return _IKeyRegistrar.contract.Transact(opts, "deregisterKey", operator, operatorSet) +} + +// DeregisterKey is a paid mutator transaction binding the contract method 0x87ab86f4. +// +// Solidity: function deregisterKey(address operator, (address,uint32) operatorSet) returns() +func (_IKeyRegistrar *IKeyRegistrarSession) DeregisterKey(operator common.Address, operatorSet OperatorSet) (*types.Transaction, error) { + return _IKeyRegistrar.Contract.DeregisterKey(&_IKeyRegistrar.TransactOpts, operator, operatorSet) +} + +// DeregisterKey is a paid mutator transaction binding the contract method 0x87ab86f4. +// +// Solidity: function deregisterKey(address operator, (address,uint32) operatorSet) returns() +func (_IKeyRegistrar *IKeyRegistrarTransactorSession) DeregisterKey(operator common.Address, operatorSet OperatorSet) (*types.Transaction, error) { + return _IKeyRegistrar.Contract.DeregisterKey(&_IKeyRegistrar.TransactOpts, operator, operatorSet) +} + +// RegisterKey is a paid mutator transaction binding the contract method 0xd40cda16. +// +// Solidity: function registerKey(address operator, (address,uint32) operatorSet, bytes pubkey, bytes signature) returns() +func (_IKeyRegistrar *IKeyRegistrarTransactor) RegisterKey(opts *bind.TransactOpts, operator common.Address, operatorSet OperatorSet, pubkey []byte, signature []byte) (*types.Transaction, error) { + return _IKeyRegistrar.contract.Transact(opts, "registerKey", operator, operatorSet, pubkey, signature) +} + +// RegisterKey is a paid mutator transaction binding the contract method 0xd40cda16. +// +// Solidity: function registerKey(address operator, (address,uint32) operatorSet, bytes pubkey, bytes signature) returns() +func (_IKeyRegistrar *IKeyRegistrarSession) RegisterKey(operator common.Address, operatorSet OperatorSet, pubkey []byte, signature []byte) (*types.Transaction, error) { + return _IKeyRegistrar.Contract.RegisterKey(&_IKeyRegistrar.TransactOpts, operator, operatorSet, pubkey, signature) +} + +// RegisterKey is a paid mutator transaction binding the contract method 0xd40cda16. +// +// Solidity: function registerKey(address operator, (address,uint32) operatorSet, bytes pubkey, bytes signature) returns() +func (_IKeyRegistrar *IKeyRegistrarTransactorSession) RegisterKey(operator common.Address, operatorSet OperatorSet, pubkey []byte, signature []byte) (*types.Transaction, error) { + return _IKeyRegistrar.Contract.RegisterKey(&_IKeyRegistrar.TransactOpts, operator, operatorSet, pubkey, signature) +} + +// IKeyRegistrarAggregateBN254KeyUpdatedIterator is returned from FilterAggregateBN254KeyUpdated and is used to iterate over the raw logs and unpacked data for AggregateBN254KeyUpdated events raised by the IKeyRegistrar contract. +type IKeyRegistrarAggregateBN254KeyUpdatedIterator struct { + Event *IKeyRegistrarAggregateBN254KeyUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IKeyRegistrarAggregateBN254KeyUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IKeyRegistrarAggregateBN254KeyUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IKeyRegistrarAggregateBN254KeyUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IKeyRegistrarAggregateBN254KeyUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IKeyRegistrarAggregateBN254KeyUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IKeyRegistrarAggregateBN254KeyUpdated represents a AggregateBN254KeyUpdated event raised by the IKeyRegistrar contract. +type IKeyRegistrarAggregateBN254KeyUpdated struct { + OperatorSet OperatorSet + NewAggregateKey BN254G1Point + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAggregateBN254KeyUpdated is a free log retrieval operation binding the contract event 0xdfa2f59e55747ba641fbdff4eb78577de8789d605920d5be4a74ee3a6470d1d1. +// +// Solidity: event AggregateBN254KeyUpdated((address,uint32) operatorSet, (uint256,uint256) newAggregateKey) +func (_IKeyRegistrar *IKeyRegistrarFilterer) FilterAggregateBN254KeyUpdated(opts *bind.FilterOpts) (*IKeyRegistrarAggregateBN254KeyUpdatedIterator, error) { + + logs, sub, err := _IKeyRegistrar.contract.FilterLogs(opts, "AggregateBN254KeyUpdated") + if err != nil { + return nil, err + } + return &IKeyRegistrarAggregateBN254KeyUpdatedIterator{contract: _IKeyRegistrar.contract, event: "AggregateBN254KeyUpdated", logs: logs, sub: sub}, nil +} + +// WatchAggregateBN254KeyUpdated is a free log subscription operation binding the contract event 0xdfa2f59e55747ba641fbdff4eb78577de8789d605920d5be4a74ee3a6470d1d1. +// +// Solidity: event AggregateBN254KeyUpdated((address,uint32) operatorSet, (uint256,uint256) newAggregateKey) +func (_IKeyRegistrar *IKeyRegistrarFilterer) WatchAggregateBN254KeyUpdated(opts *bind.WatchOpts, sink chan<- *IKeyRegistrarAggregateBN254KeyUpdated) (event.Subscription, error) { + + logs, sub, err := _IKeyRegistrar.contract.WatchLogs(opts, "AggregateBN254KeyUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IKeyRegistrarAggregateBN254KeyUpdated) + if err := _IKeyRegistrar.contract.UnpackLog(event, "AggregateBN254KeyUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAggregateBN254KeyUpdated is a log parse operation binding the contract event 0xdfa2f59e55747ba641fbdff4eb78577de8789d605920d5be4a74ee3a6470d1d1. +// +// Solidity: event AggregateBN254KeyUpdated((address,uint32) operatorSet, (uint256,uint256) newAggregateKey) +func (_IKeyRegistrar *IKeyRegistrarFilterer) ParseAggregateBN254KeyUpdated(log types.Log) (*IKeyRegistrarAggregateBN254KeyUpdated, error) { + event := new(IKeyRegistrarAggregateBN254KeyUpdated) + if err := _IKeyRegistrar.contract.UnpackLog(event, "AggregateBN254KeyUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IKeyRegistrarKeyDeregisteredIterator is returned from FilterKeyDeregistered and is used to iterate over the raw logs and unpacked data for KeyDeregistered events raised by the IKeyRegistrar contract. +type IKeyRegistrarKeyDeregisteredIterator struct { + Event *IKeyRegistrarKeyDeregistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IKeyRegistrarKeyDeregisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IKeyRegistrarKeyDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IKeyRegistrarKeyDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IKeyRegistrarKeyDeregisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IKeyRegistrarKeyDeregisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IKeyRegistrarKeyDeregistered represents a KeyDeregistered event raised by the IKeyRegistrar contract. +type IKeyRegistrarKeyDeregistered struct { + OperatorSet OperatorSet + Operator common.Address + CurveType uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterKeyDeregistered is a free log retrieval operation binding the contract event 0x28d3c3cee49478ec6fd219cfd685cd15cd01d95cabf69b4b7b57f9eaa3eb6442. +// +// Solidity: event KeyDeregistered((address,uint32) operatorSet, address indexed operator, uint8 curveType) +func (_IKeyRegistrar *IKeyRegistrarFilterer) FilterKeyDeregistered(opts *bind.FilterOpts, operator []common.Address) (*IKeyRegistrarKeyDeregisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _IKeyRegistrar.contract.FilterLogs(opts, "KeyDeregistered", operatorRule) + if err != nil { + return nil, err + } + return &IKeyRegistrarKeyDeregisteredIterator{contract: _IKeyRegistrar.contract, event: "KeyDeregistered", logs: logs, sub: sub}, nil +} + +// WatchKeyDeregistered is a free log subscription operation binding the contract event 0x28d3c3cee49478ec6fd219cfd685cd15cd01d95cabf69b4b7b57f9eaa3eb6442. +// +// Solidity: event KeyDeregistered((address,uint32) operatorSet, address indexed operator, uint8 curveType) +func (_IKeyRegistrar *IKeyRegistrarFilterer) WatchKeyDeregistered(opts *bind.WatchOpts, sink chan<- *IKeyRegistrarKeyDeregistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _IKeyRegistrar.contract.WatchLogs(opts, "KeyDeregistered", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IKeyRegistrarKeyDeregistered) + if err := _IKeyRegistrar.contract.UnpackLog(event, "KeyDeregistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseKeyDeregistered is a log parse operation binding the contract event 0x28d3c3cee49478ec6fd219cfd685cd15cd01d95cabf69b4b7b57f9eaa3eb6442. +// +// Solidity: event KeyDeregistered((address,uint32) operatorSet, address indexed operator, uint8 curveType) +func (_IKeyRegistrar *IKeyRegistrarFilterer) ParseKeyDeregistered(log types.Log) (*IKeyRegistrarKeyDeregistered, error) { + event := new(IKeyRegistrarKeyDeregistered) + if err := _IKeyRegistrar.contract.UnpackLog(event, "KeyDeregistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IKeyRegistrarKeyRegisteredIterator is returned from FilterKeyRegistered and is used to iterate over the raw logs and unpacked data for KeyRegistered events raised by the IKeyRegistrar contract. +type IKeyRegistrarKeyRegisteredIterator struct { + Event *IKeyRegistrarKeyRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IKeyRegistrarKeyRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IKeyRegistrarKeyRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IKeyRegistrarKeyRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IKeyRegistrarKeyRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IKeyRegistrarKeyRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IKeyRegistrarKeyRegistered represents a KeyRegistered event raised by the IKeyRegistrar contract. +type IKeyRegistrarKeyRegistered struct { + OperatorSet OperatorSet + Operator common.Address + CurveType uint8 + Pubkey []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterKeyRegistered is a free log retrieval operation binding the contract event 0x1201ce0c5e577111bce91e907fd99cb183da5edc1e3fb650ca40769e4e9176dd. +// +// Solidity: event KeyRegistered((address,uint32) operatorSet, address indexed operator, uint8 curveType, bytes pubkey) +func (_IKeyRegistrar *IKeyRegistrarFilterer) FilterKeyRegistered(opts *bind.FilterOpts, operator []common.Address) (*IKeyRegistrarKeyRegisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _IKeyRegistrar.contract.FilterLogs(opts, "KeyRegistered", operatorRule) + if err != nil { + return nil, err + } + return &IKeyRegistrarKeyRegisteredIterator{contract: _IKeyRegistrar.contract, event: "KeyRegistered", logs: logs, sub: sub}, nil +} + +// WatchKeyRegistered is a free log subscription operation binding the contract event 0x1201ce0c5e577111bce91e907fd99cb183da5edc1e3fb650ca40769e4e9176dd. +// +// Solidity: event KeyRegistered((address,uint32) operatorSet, address indexed operator, uint8 curveType, bytes pubkey) +func (_IKeyRegistrar *IKeyRegistrarFilterer) WatchKeyRegistered(opts *bind.WatchOpts, sink chan<- *IKeyRegistrarKeyRegistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _IKeyRegistrar.contract.WatchLogs(opts, "KeyRegistered", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IKeyRegistrarKeyRegistered) + if err := _IKeyRegistrar.contract.UnpackLog(event, "KeyRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseKeyRegistered is a log parse operation binding the contract event 0x1201ce0c5e577111bce91e907fd99cb183da5edc1e3fb650ca40769e4e9176dd. +// +// Solidity: event KeyRegistered((address,uint32) operatorSet, address indexed operator, uint8 curveType, bytes pubkey) +func (_IKeyRegistrar *IKeyRegistrarFilterer) ParseKeyRegistered(log types.Log) (*IKeyRegistrarKeyRegistered, error) { + event := new(IKeyRegistrarKeyRegistered) + if err := _IKeyRegistrar.contract.UnpackLog(event, "KeyRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IKeyRegistrarOperatorSetConfiguredIterator is returned from FilterOperatorSetConfigured and is used to iterate over the raw logs and unpacked data for OperatorSetConfigured events raised by the IKeyRegistrar contract. +type IKeyRegistrarOperatorSetConfiguredIterator struct { + Event *IKeyRegistrarOperatorSetConfigured // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IKeyRegistrarOperatorSetConfiguredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IKeyRegistrarOperatorSetConfigured) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IKeyRegistrarOperatorSetConfigured) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IKeyRegistrarOperatorSetConfiguredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IKeyRegistrarOperatorSetConfiguredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IKeyRegistrarOperatorSetConfigured represents a OperatorSetConfigured event raised by the IKeyRegistrar contract. +type IKeyRegistrarOperatorSetConfigured struct { + OperatorSet OperatorSet + CurveType uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSetConfigured is a free log retrieval operation binding the contract event 0xb2266cb118e57095fcdbedb24dabd9fc9f5127e2dbedf62ce6ee71696fb8b6e7. +// +// Solidity: event OperatorSetConfigured((address,uint32) operatorSet, uint8 curveType) +func (_IKeyRegistrar *IKeyRegistrarFilterer) FilterOperatorSetConfigured(opts *bind.FilterOpts) (*IKeyRegistrarOperatorSetConfiguredIterator, error) { + + logs, sub, err := _IKeyRegistrar.contract.FilterLogs(opts, "OperatorSetConfigured") + if err != nil { + return nil, err + } + return &IKeyRegistrarOperatorSetConfiguredIterator{contract: _IKeyRegistrar.contract, event: "OperatorSetConfigured", logs: logs, sub: sub}, nil +} + +// WatchOperatorSetConfigured is a free log subscription operation binding the contract event 0xb2266cb118e57095fcdbedb24dabd9fc9f5127e2dbedf62ce6ee71696fb8b6e7. +// +// Solidity: event OperatorSetConfigured((address,uint32) operatorSet, uint8 curveType) +func (_IKeyRegistrar *IKeyRegistrarFilterer) WatchOperatorSetConfigured(opts *bind.WatchOpts, sink chan<- *IKeyRegistrarOperatorSetConfigured) (event.Subscription, error) { + + logs, sub, err := _IKeyRegistrar.contract.WatchLogs(opts, "OperatorSetConfigured") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IKeyRegistrarOperatorSetConfigured) + if err := _IKeyRegistrar.contract.UnpackLog(event, "OperatorSetConfigured", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorSetConfigured is a log parse operation binding the contract event 0xb2266cb118e57095fcdbedb24dabd9fc9f5127e2dbedf62ce6ee71696fb8b6e7. +// +// Solidity: event OperatorSetConfigured((address,uint32) operatorSet, uint8 curveType) +func (_IKeyRegistrar *IKeyRegistrarFilterer) ParseOperatorSetConfigured(log types.Log) (*IKeyRegistrarOperatorSetConfigured, error) { + event := new(IKeyRegistrarOperatorSetConfigured) + if err := _IKeyRegistrar.contract.UnpackLog(event, "OperatorSetConfigured", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/IOperatorTableCalculator/binding.go b/pkg/bindings/IOperatorTableCalculator/binding.go index d446fc5618..7494799f21 100644 --- a/pkg/bindings/IOperatorTableCalculator/binding.go +++ b/pkg/bindings/IOperatorTableCalculator/binding.go @@ -37,7 +37,7 @@ type OperatorSet struct { // IOperatorTableCalculatorMetaData contains all meta data concerning the IOperatorTableCalculator contract. var IOperatorTableCalculatorMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"calculateOperatorTableBytes\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"}]", + ABI: "[{\"type\":\"function\",\"name\":\"calculateOperatorTableBytes\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorWeight\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"weight\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorWeights\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"weights\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"}]", } // IOperatorTableCalculatorABI is the input ABI used to generate the binding from. @@ -216,3 +216,79 @@ func (_IOperatorTableCalculator *IOperatorTableCalculatorSession) CalculateOpera func (_IOperatorTableCalculator *IOperatorTableCalculatorCallerSession) CalculateOperatorTableBytes(operatorSet OperatorSet) ([]byte, error) { return _IOperatorTableCalculator.Contract.CalculateOperatorTableBytes(&_IOperatorTableCalculator.CallOpts, operatorSet) } + +// GetOperatorWeight is a free data retrieval call binding the contract method 0x1088794a. +// +// Solidity: function getOperatorWeight((address,uint32) operatorSet, address operator) view returns(uint256 weight) +func (_IOperatorTableCalculator *IOperatorTableCalculatorCaller) GetOperatorWeight(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) (*big.Int, error) { + var out []interface{} + err := _IOperatorTableCalculator.contract.Call(opts, &out, "getOperatorWeight", operatorSet, operator) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetOperatorWeight is a free data retrieval call binding the contract method 0x1088794a. +// +// Solidity: function getOperatorWeight((address,uint32) operatorSet, address operator) view returns(uint256 weight) +func (_IOperatorTableCalculator *IOperatorTableCalculatorSession) GetOperatorWeight(operatorSet OperatorSet, operator common.Address) (*big.Int, error) { + return _IOperatorTableCalculator.Contract.GetOperatorWeight(&_IOperatorTableCalculator.CallOpts, operatorSet, operator) +} + +// GetOperatorWeight is a free data retrieval call binding the contract method 0x1088794a. +// +// Solidity: function getOperatorWeight((address,uint32) operatorSet, address operator) view returns(uint256 weight) +func (_IOperatorTableCalculator *IOperatorTableCalculatorCallerSession) GetOperatorWeight(operatorSet OperatorSet, operator common.Address) (*big.Int, error) { + return _IOperatorTableCalculator.Contract.GetOperatorWeight(&_IOperatorTableCalculator.CallOpts, operatorSet, operator) +} + +// GetOperatorWeights is a free data retrieval call binding the contract method 0x71ca71d9. +// +// Solidity: function getOperatorWeights((address,uint32) operatorSet) view returns(address[] operators, uint256[][] weights) +func (_IOperatorTableCalculator *IOperatorTableCalculatorCaller) GetOperatorWeights(opts *bind.CallOpts, operatorSet OperatorSet) (struct { + Operators []common.Address + Weights [][]*big.Int +}, error) { + var out []interface{} + err := _IOperatorTableCalculator.contract.Call(opts, &out, "getOperatorWeights", operatorSet) + + outstruct := new(struct { + Operators []common.Address + Weights [][]*big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Operators = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + outstruct.Weights = *abi.ConvertType(out[1], new([][]*big.Int)).(*[][]*big.Int) + + return *outstruct, err + +} + +// GetOperatorWeights is a free data retrieval call binding the contract method 0x71ca71d9. +// +// Solidity: function getOperatorWeights((address,uint32) operatorSet) view returns(address[] operators, uint256[][] weights) +func (_IOperatorTableCalculator *IOperatorTableCalculatorSession) GetOperatorWeights(operatorSet OperatorSet) (struct { + Operators []common.Address + Weights [][]*big.Int +}, error) { + return _IOperatorTableCalculator.Contract.GetOperatorWeights(&_IOperatorTableCalculator.CallOpts, operatorSet) +} + +// GetOperatorWeights is a free data retrieval call binding the contract method 0x71ca71d9. +// +// Solidity: function getOperatorWeights((address,uint32) operatorSet) view returns(address[] operators, uint256[][] weights) +func (_IOperatorTableCalculator *IOperatorTableCalculatorCallerSession) GetOperatorWeights(operatorSet OperatorSet) (struct { + Operators []common.Address + Weights [][]*big.Int +}, error) { + return _IOperatorTableCalculator.Contract.GetOperatorWeights(&_IOperatorTableCalculator.CallOpts, operatorSet) +} diff --git a/pkg/bindings/IOperatorTableUpdater/binding.go b/pkg/bindings/IOperatorTableUpdater/binding.go index 7813532521..edecee7c77 100644 --- a/pkg/bindings/IOperatorTableUpdater/binding.go +++ b/pkg/bindings/IOperatorTableUpdater/binding.go @@ -63,26 +63,6 @@ type IBN254TableCalculatorTypesBN254OperatorInfo struct { Weights []*big.Int } -// IBN254TableCalculatorTypesBN254OperatorSetInfo is an auto generated low-level Go binding around an user-defined struct. -type IBN254TableCalculatorTypesBN254OperatorSetInfo struct { - OperatorInfoTreeRoot [32]byte - NumOperators *big.Int - AggregatePubkey BN254G1Point - TotalWeights []*big.Int -} - -// ICrossChainRegistryTypesOperatorSetConfig is an auto generated low-level Go binding around an user-defined struct. -type ICrossChainRegistryTypesOperatorSetConfig struct { - Owner common.Address - MaxStalenessPeriod uint32 -} - -// IECDSATableCalculatorTypesECDSAOperatorInfo is an auto generated low-level Go binding around an user-defined struct. -type IECDSATableCalculatorTypesECDSAOperatorInfo struct { - Pubkey common.Address - Weights []*big.Int -} - // OperatorSet is an auto generated low-level Go binding around an user-defined struct. type OperatorSet struct { Avs common.Address @@ -91,7 +71,7 @@ type OperatorSet struct { // IOperatorTableUpdaterMetaData contains all meta data concerning the IOperatorTableUpdater contract. var IOperatorTableUpdaterMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"confirmGlobalTableRoot\",\"inputs\":[{\"name\":\"globalTableRootCert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getCurrentGlobalTableRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTableRootByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"tableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmationThreshold\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmerSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateBN254OperatorTable\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorSetInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"config\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateECDSAOperatorTable\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorInfos\",\"type\":\"tuple[]\",\"internalType\":\"structIECDSATableCalculatorTypes.ECDSAOperatorInfo[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"weights\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"}]},{\"name\":\"config\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"NewglobalTableRoot\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"GlobalTableRootUpdateFailed\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"confirmGlobalTableRoot\",\"inputs\":[{\"name\":\"globalTableRootCert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getCertificateVerifier\",\"inputs\":[{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentGlobalTableRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalRootConfirmerSet\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableRootByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"tableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmationThreshold\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmerSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"GlobalRootConfirmationThresholdUpdated\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootConfirmerSetUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewGlobalTableRoot\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CertificateInvalid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidConfirmationThreshold\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGlobalTableRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSetProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableRootNotInCertificate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateForPastTimestamp\",\"inputs\":[]}]", } // IOperatorTableUpdaterABI is the input ABI used to generate the binding from. @@ -240,6 +220,37 @@ func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactorRaw) Transact(opts return _IOperatorTableUpdater.Contract.contract.Transact(opts, method, params...) } +// GetCertificateVerifier is a free data retrieval call binding the contract method 0x6f728c50. +// +// Solidity: function getCertificateVerifier(uint8 curveType) view returns(address) +func (_IOperatorTableUpdater *IOperatorTableUpdaterCaller) GetCertificateVerifier(opts *bind.CallOpts, curveType uint8) (common.Address, error) { + var out []interface{} + err := _IOperatorTableUpdater.contract.Call(opts, &out, "getCertificateVerifier", curveType) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetCertificateVerifier is a free data retrieval call binding the contract method 0x6f728c50. +// +// Solidity: function getCertificateVerifier(uint8 curveType) view returns(address) +func (_IOperatorTableUpdater *IOperatorTableUpdaterSession) GetCertificateVerifier(curveType uint8) (common.Address, error) { + return _IOperatorTableUpdater.Contract.GetCertificateVerifier(&_IOperatorTableUpdater.CallOpts, curveType) +} + +// GetCertificateVerifier is a free data retrieval call binding the contract method 0x6f728c50. +// +// Solidity: function getCertificateVerifier(uint8 curveType) view returns(address) +func (_IOperatorTableUpdater *IOperatorTableUpdaterCallerSession) GetCertificateVerifier(curveType uint8) (common.Address, error) { + return _IOperatorTableUpdater.Contract.GetCertificateVerifier(&_IOperatorTableUpdater.CallOpts, curveType) +} + // GetCurrentGlobalTableRoot is a free data retrieval call binding the contract method 0x28522d79. // // Solidity: function getCurrentGlobalTableRoot() view returns(bytes32 globalTableRoot) @@ -271,12 +282,43 @@ func (_IOperatorTableUpdater *IOperatorTableUpdaterCallerSession) GetCurrentGlob return _IOperatorTableUpdater.Contract.GetCurrentGlobalTableRoot(&_IOperatorTableUpdater.CallOpts) } -// GetTableRootByTimestamp is a free data retrieval call binding the contract method 0x9ea8dbce. +// GetGlobalRootConfirmerSet is a free data retrieval call binding the contract method 0x46282889. // -// Solidity: function getTableRootByTimestamp(uint32 referenceTimestamp) view returns(bytes32 tableRoot) -func (_IOperatorTableUpdater *IOperatorTableUpdaterCaller) GetTableRootByTimestamp(opts *bind.CallOpts, referenceTimestamp uint32) ([32]byte, error) { +// Solidity: function getGlobalRootConfirmerSet() view returns((address,uint32)) +func (_IOperatorTableUpdater *IOperatorTableUpdaterCaller) GetGlobalRootConfirmerSet(opts *bind.CallOpts) (OperatorSet, error) { var out []interface{} - err := _IOperatorTableUpdater.contract.Call(opts, &out, "getTableRootByTimestamp", referenceTimestamp) + err := _IOperatorTableUpdater.contract.Call(opts, &out, "getGlobalRootConfirmerSet") + + if err != nil { + return *new(OperatorSet), err + } + + out0 := *abi.ConvertType(out[0], new(OperatorSet)).(*OperatorSet) + + return out0, err + +} + +// GetGlobalRootConfirmerSet is a free data retrieval call binding the contract method 0x46282889. +// +// Solidity: function getGlobalRootConfirmerSet() view returns((address,uint32)) +func (_IOperatorTableUpdater *IOperatorTableUpdaterSession) GetGlobalRootConfirmerSet() (OperatorSet, error) { + return _IOperatorTableUpdater.Contract.GetGlobalRootConfirmerSet(&_IOperatorTableUpdater.CallOpts) +} + +// GetGlobalRootConfirmerSet is a free data retrieval call binding the contract method 0x46282889. +// +// Solidity: function getGlobalRootConfirmerSet() view returns((address,uint32)) +func (_IOperatorTableUpdater *IOperatorTableUpdaterCallerSession) GetGlobalRootConfirmerSet() (OperatorSet, error) { + return _IOperatorTableUpdater.Contract.GetGlobalRootConfirmerSet(&_IOperatorTableUpdater.CallOpts) +} + +// GetGlobalTableRootByTimestamp is a free data retrieval call binding the contract method 0xc5916a39. +// +// Solidity: function getGlobalTableRootByTimestamp(uint32 referenceTimestamp) view returns(bytes32 tableRoot) +func (_IOperatorTableUpdater *IOperatorTableUpdaterCaller) GetGlobalTableRootByTimestamp(opts *bind.CallOpts, referenceTimestamp uint32) ([32]byte, error) { + var out []interface{} + err := _IOperatorTableUpdater.contract.Call(opts, &out, "getGlobalTableRootByTimestamp", referenceTimestamp) if err != nil { return *new([32]byte), err @@ -288,18 +330,18 @@ func (_IOperatorTableUpdater *IOperatorTableUpdaterCaller) GetTableRootByTimesta } -// GetTableRootByTimestamp is a free data retrieval call binding the contract method 0x9ea8dbce. +// GetGlobalTableRootByTimestamp is a free data retrieval call binding the contract method 0xc5916a39. // -// Solidity: function getTableRootByTimestamp(uint32 referenceTimestamp) view returns(bytes32 tableRoot) -func (_IOperatorTableUpdater *IOperatorTableUpdaterSession) GetTableRootByTimestamp(referenceTimestamp uint32) ([32]byte, error) { - return _IOperatorTableUpdater.Contract.GetTableRootByTimestamp(&_IOperatorTableUpdater.CallOpts, referenceTimestamp) +// Solidity: function getGlobalTableRootByTimestamp(uint32 referenceTimestamp) view returns(bytes32 tableRoot) +func (_IOperatorTableUpdater *IOperatorTableUpdaterSession) GetGlobalTableRootByTimestamp(referenceTimestamp uint32) ([32]byte, error) { + return _IOperatorTableUpdater.Contract.GetGlobalTableRootByTimestamp(&_IOperatorTableUpdater.CallOpts, referenceTimestamp) } -// GetTableRootByTimestamp is a free data retrieval call binding the contract method 0x9ea8dbce. +// GetGlobalTableRootByTimestamp is a free data retrieval call binding the contract method 0xc5916a39. // -// Solidity: function getTableRootByTimestamp(uint32 referenceTimestamp) view returns(bytes32 tableRoot) -func (_IOperatorTableUpdater *IOperatorTableUpdaterCallerSession) GetTableRootByTimestamp(referenceTimestamp uint32) ([32]byte, error) { - return _IOperatorTableUpdater.Contract.GetTableRootByTimestamp(&_IOperatorTableUpdater.CallOpts, referenceTimestamp) +// Solidity: function getGlobalTableRootByTimestamp(uint32 referenceTimestamp) view returns(bytes32 tableRoot) +func (_IOperatorTableUpdater *IOperatorTableUpdaterCallerSession) GetGlobalTableRootByTimestamp(referenceTimestamp uint32) ([32]byte, error) { + return _IOperatorTableUpdater.Contract.GetGlobalTableRootByTimestamp(&_IOperatorTableUpdater.CallOpts, referenceTimestamp) } // ConfirmGlobalTableRoot is a paid mutator transaction binding the contract method 0x6ab40904. @@ -365,51 +407,298 @@ func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactorSession) SetGlobalR return _IOperatorTableUpdater.Contract.SetGlobalRootConfirmerSet(&_IOperatorTableUpdater.TransactOpts, operatorSet) } -// UpdateBN254OperatorTable is a paid mutator transaction binding the contract method 0x71034fe1. +// UpdateOperatorTable is a paid mutator transaction binding the contract method 0x9ea94778. +// +// Solidity: function updateOperatorTable(uint32 referenceTimestamp, bytes32 globalTableRoot, uint32 operatorSetIndex, bytes proof, bytes operatorTableBytes) returns() +func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactor) UpdateOperatorTable(opts *bind.TransactOpts, referenceTimestamp uint32, globalTableRoot [32]byte, operatorSetIndex uint32, proof []byte, operatorTableBytes []byte) (*types.Transaction, error) { + return _IOperatorTableUpdater.contract.Transact(opts, "updateOperatorTable", referenceTimestamp, globalTableRoot, operatorSetIndex, proof, operatorTableBytes) +} + +// UpdateOperatorTable is a paid mutator transaction binding the contract method 0x9ea94778. // -// Solidity: function updateBN254OperatorTable(uint32 referenceTimestamp, bytes32 globalTableRoot, uint32 operatorSetIndex, bytes proof, (address,uint32) operatorSet, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo, (address,uint32) config) returns() -func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactor) UpdateBN254OperatorTable(opts *bind.TransactOpts, referenceTimestamp uint32, globalTableRoot [32]byte, operatorSetIndex uint32, proof []byte, operatorSet OperatorSet, operatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, config ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { - return _IOperatorTableUpdater.contract.Transact(opts, "updateBN254OperatorTable", referenceTimestamp, globalTableRoot, operatorSetIndex, proof, operatorSet, operatorSetInfo, config) +// Solidity: function updateOperatorTable(uint32 referenceTimestamp, bytes32 globalTableRoot, uint32 operatorSetIndex, bytes proof, bytes operatorTableBytes) returns() +func (_IOperatorTableUpdater *IOperatorTableUpdaterSession) UpdateOperatorTable(referenceTimestamp uint32, globalTableRoot [32]byte, operatorSetIndex uint32, proof []byte, operatorTableBytes []byte) (*types.Transaction, error) { + return _IOperatorTableUpdater.Contract.UpdateOperatorTable(&_IOperatorTableUpdater.TransactOpts, referenceTimestamp, globalTableRoot, operatorSetIndex, proof, operatorTableBytes) } -// UpdateBN254OperatorTable is a paid mutator transaction binding the contract method 0x71034fe1. +// UpdateOperatorTable is a paid mutator transaction binding the contract method 0x9ea94778. // -// Solidity: function updateBN254OperatorTable(uint32 referenceTimestamp, bytes32 globalTableRoot, uint32 operatorSetIndex, bytes proof, (address,uint32) operatorSet, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo, (address,uint32) config) returns() -func (_IOperatorTableUpdater *IOperatorTableUpdaterSession) UpdateBN254OperatorTable(referenceTimestamp uint32, globalTableRoot [32]byte, operatorSetIndex uint32, proof []byte, operatorSet OperatorSet, operatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, config ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { - return _IOperatorTableUpdater.Contract.UpdateBN254OperatorTable(&_IOperatorTableUpdater.TransactOpts, referenceTimestamp, globalTableRoot, operatorSetIndex, proof, operatorSet, operatorSetInfo, config) +// Solidity: function updateOperatorTable(uint32 referenceTimestamp, bytes32 globalTableRoot, uint32 operatorSetIndex, bytes proof, bytes operatorTableBytes) returns() +func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactorSession) UpdateOperatorTable(referenceTimestamp uint32, globalTableRoot [32]byte, operatorSetIndex uint32, proof []byte, operatorTableBytes []byte) (*types.Transaction, error) { + return _IOperatorTableUpdater.Contract.UpdateOperatorTable(&_IOperatorTableUpdater.TransactOpts, referenceTimestamp, globalTableRoot, operatorSetIndex, proof, operatorTableBytes) +} + +// IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator is returned from FilterGlobalRootConfirmationThresholdUpdated and is used to iterate over the raw logs and unpacked data for GlobalRootConfirmationThresholdUpdated events raised by the IOperatorTableUpdater contract. +type IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator struct { + Event *IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated represents a GlobalRootConfirmationThresholdUpdated event raised by the IOperatorTableUpdater contract. +type IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated struct { + Bps uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGlobalRootConfirmationThresholdUpdated is a free log retrieval operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. +// +// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) +func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) FilterGlobalRootConfirmationThresholdUpdated(opts *bind.FilterOpts) (*IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator, error) { + + logs, sub, err := _IOperatorTableUpdater.contract.FilterLogs(opts, "GlobalRootConfirmationThresholdUpdated") + if err != nil { + return nil, err + } + return &IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator{contract: _IOperatorTableUpdater.contract, event: "GlobalRootConfirmationThresholdUpdated", logs: logs, sub: sub}, nil +} + +// WatchGlobalRootConfirmationThresholdUpdated is a free log subscription operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. +// +// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) +func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) WatchGlobalRootConfirmationThresholdUpdated(opts *bind.WatchOpts, sink chan<- *IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) (event.Subscription, error) { + + logs, sub, err := _IOperatorTableUpdater.contract.WatchLogs(opts, "GlobalRootConfirmationThresholdUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) + if err := _IOperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmationThresholdUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// UpdateBN254OperatorTable is a paid mutator transaction binding the contract method 0x71034fe1. +// ParseGlobalRootConfirmationThresholdUpdated is a log parse operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. // -// Solidity: function updateBN254OperatorTable(uint32 referenceTimestamp, bytes32 globalTableRoot, uint32 operatorSetIndex, bytes proof, (address,uint32) operatorSet, (bytes32,uint256,(uint256,uint256),uint256[]) operatorSetInfo, (address,uint32) config) returns() -func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactorSession) UpdateBN254OperatorTable(referenceTimestamp uint32, globalTableRoot [32]byte, operatorSetIndex uint32, proof []byte, operatorSet OperatorSet, operatorSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, config ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { - return _IOperatorTableUpdater.Contract.UpdateBN254OperatorTable(&_IOperatorTableUpdater.TransactOpts, referenceTimestamp, globalTableRoot, operatorSetIndex, proof, operatorSet, operatorSetInfo, config) +// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) +func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) ParseGlobalRootConfirmationThresholdUpdated(log types.Log) (*IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated, error) { + event := new(IOperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) + if err := _IOperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmationThresholdUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IOperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator is returned from FilterGlobalRootConfirmerSetUpdated and is used to iterate over the raw logs and unpacked data for GlobalRootConfirmerSetUpdated events raised by the IOperatorTableUpdater contract. +type IOperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator struct { + Event *IOperatorTableUpdaterGlobalRootConfirmerSetUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration } -// UpdateECDSAOperatorTable is a paid mutator transaction binding the contract method 0x3397579c. +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IOperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IOperatorTableUpdaterGlobalRootConfirmerSetUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IOperatorTableUpdaterGlobalRootConfirmerSetUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IOperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IOperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IOperatorTableUpdaterGlobalRootConfirmerSetUpdated represents a GlobalRootConfirmerSetUpdated event raised by the IOperatorTableUpdater contract. +type IOperatorTableUpdaterGlobalRootConfirmerSetUpdated struct { + OperatorSet OperatorSet + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGlobalRootConfirmerSetUpdated is a free log retrieval operation binding the contract event 0x20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b37. // -// Solidity: function updateECDSAOperatorTable(uint32 referenceTimestamp, bytes32 globalTableRoot, uint32 operatorSetIndex, bytes proof, (address,uint32) operatorSet, (address,uint96[])[] operatorInfos, (address,uint32) config) returns() -func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactor) UpdateECDSAOperatorTable(opts *bind.TransactOpts, referenceTimestamp uint32, globalTableRoot [32]byte, operatorSetIndex uint32, proof []byte, operatorSet OperatorSet, operatorInfos []IECDSATableCalculatorTypesECDSAOperatorInfo, config ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { - return _IOperatorTableUpdater.contract.Transact(opts, "updateECDSAOperatorTable", referenceTimestamp, globalTableRoot, operatorSetIndex, proof, operatorSet, operatorInfos, config) +// Solidity: event GlobalRootConfirmerSetUpdated((address,uint32) operatorSet) +func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) FilterGlobalRootConfirmerSetUpdated(opts *bind.FilterOpts) (*IOperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator, error) { + + logs, sub, err := _IOperatorTableUpdater.contract.FilterLogs(opts, "GlobalRootConfirmerSetUpdated") + if err != nil { + return nil, err + } + return &IOperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator{contract: _IOperatorTableUpdater.contract, event: "GlobalRootConfirmerSetUpdated", logs: logs, sub: sub}, nil } -// UpdateECDSAOperatorTable is a paid mutator transaction binding the contract method 0x3397579c. +// WatchGlobalRootConfirmerSetUpdated is a free log subscription operation binding the contract event 0x20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b37. // -// Solidity: function updateECDSAOperatorTable(uint32 referenceTimestamp, bytes32 globalTableRoot, uint32 operatorSetIndex, bytes proof, (address,uint32) operatorSet, (address,uint96[])[] operatorInfos, (address,uint32) config) returns() -func (_IOperatorTableUpdater *IOperatorTableUpdaterSession) UpdateECDSAOperatorTable(referenceTimestamp uint32, globalTableRoot [32]byte, operatorSetIndex uint32, proof []byte, operatorSet OperatorSet, operatorInfos []IECDSATableCalculatorTypesECDSAOperatorInfo, config ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { - return _IOperatorTableUpdater.Contract.UpdateECDSAOperatorTable(&_IOperatorTableUpdater.TransactOpts, referenceTimestamp, globalTableRoot, operatorSetIndex, proof, operatorSet, operatorInfos, config) +// Solidity: event GlobalRootConfirmerSetUpdated((address,uint32) operatorSet) +func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) WatchGlobalRootConfirmerSetUpdated(opts *bind.WatchOpts, sink chan<- *IOperatorTableUpdaterGlobalRootConfirmerSetUpdated) (event.Subscription, error) { + + logs, sub, err := _IOperatorTableUpdater.contract.WatchLogs(opts, "GlobalRootConfirmerSetUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IOperatorTableUpdaterGlobalRootConfirmerSetUpdated) + if err := _IOperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmerSetUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// UpdateECDSAOperatorTable is a paid mutator transaction binding the contract method 0x3397579c. +// ParseGlobalRootConfirmerSetUpdated is a log parse operation binding the contract event 0x20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b37. // -// Solidity: function updateECDSAOperatorTable(uint32 referenceTimestamp, bytes32 globalTableRoot, uint32 operatorSetIndex, bytes proof, (address,uint32) operatorSet, (address,uint96[])[] operatorInfos, (address,uint32) config) returns() -func (_IOperatorTableUpdater *IOperatorTableUpdaterTransactorSession) UpdateECDSAOperatorTable(referenceTimestamp uint32, globalTableRoot [32]byte, operatorSetIndex uint32, proof []byte, operatorSet OperatorSet, operatorInfos []IECDSATableCalculatorTypesECDSAOperatorInfo, config ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { - return _IOperatorTableUpdater.Contract.UpdateECDSAOperatorTable(&_IOperatorTableUpdater.TransactOpts, referenceTimestamp, globalTableRoot, operatorSetIndex, proof, operatorSet, operatorInfos, config) +// Solidity: event GlobalRootConfirmerSetUpdated((address,uint32) operatorSet) +func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) ParseGlobalRootConfirmerSetUpdated(log types.Log) (*IOperatorTableUpdaterGlobalRootConfirmerSetUpdated, error) { + event := new(IOperatorTableUpdaterGlobalRootConfirmerSetUpdated) + if err := _IOperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmerSetUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil } -// IOperatorTableUpdaterNewglobalTableRootIterator is returned from FilterNewglobalTableRoot and is used to iterate over the raw logs and unpacked data for NewglobalTableRoot events raised by the IOperatorTableUpdater contract. -type IOperatorTableUpdaterNewglobalTableRootIterator struct { - Event *IOperatorTableUpdaterNewglobalTableRoot // Event containing the contract specifics and raw log +// IOperatorTableUpdaterNewGlobalTableRootIterator is returned from FilterNewGlobalTableRoot and is used to iterate over the raw logs and unpacked data for NewGlobalTableRoot events raised by the IOperatorTableUpdater contract. +type IOperatorTableUpdaterNewGlobalTableRootIterator struct { + Event *IOperatorTableUpdaterNewGlobalTableRoot // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -423,7 +712,7 @@ type IOperatorTableUpdaterNewglobalTableRootIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *IOperatorTableUpdaterNewglobalTableRootIterator) Next() bool { +func (it *IOperatorTableUpdaterNewGlobalTableRootIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -432,7 +721,7 @@ func (it *IOperatorTableUpdaterNewglobalTableRootIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(IOperatorTableUpdaterNewglobalTableRoot) + it.Event = new(IOperatorTableUpdaterNewGlobalTableRoot) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -447,7 +736,7 @@ func (it *IOperatorTableUpdaterNewglobalTableRootIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(IOperatorTableUpdaterNewglobalTableRoot) + it.Event = new(IOperatorTableUpdaterNewGlobalTableRoot) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -463,42 +752,60 @@ func (it *IOperatorTableUpdaterNewglobalTableRootIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *IOperatorTableUpdaterNewglobalTableRootIterator) Error() error { +func (it *IOperatorTableUpdaterNewGlobalTableRootIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *IOperatorTableUpdaterNewglobalTableRootIterator) Close() error { +func (it *IOperatorTableUpdaterNewGlobalTableRootIterator) Close() error { it.sub.Unsubscribe() return nil } -// IOperatorTableUpdaterNewglobalTableRoot represents a NewglobalTableRoot event raised by the IOperatorTableUpdater contract. -type IOperatorTableUpdaterNewglobalTableRoot struct { +// IOperatorTableUpdaterNewGlobalTableRoot represents a NewGlobalTableRoot event raised by the IOperatorTableUpdater contract. +type IOperatorTableUpdaterNewGlobalTableRoot struct { ReferenceTimestamp uint32 GlobalTableRoot [32]byte Raw types.Log // Blockchain specific contextual infos } -// FilterNewglobalTableRoot is a free log retrieval operation binding the contract event 0xbb96ecabc83b99776c3ba3d12d8131e99aeca109d673db36e42959d154359a65. +// FilterNewGlobalTableRoot is a free log retrieval operation binding the contract event 0x010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d369. // -// Solidity: event NewglobalTableRoot(uint32 referenceTimestamp, bytes32 globalTableRoot) -func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) FilterNewglobalTableRoot(opts *bind.FilterOpts) (*IOperatorTableUpdaterNewglobalTableRootIterator, error) { +// Solidity: event NewGlobalTableRoot(uint32 indexed referenceTimestamp, bytes32 indexed globalTableRoot) +func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) FilterNewGlobalTableRoot(opts *bind.FilterOpts, referenceTimestamp []uint32, globalTableRoot [][32]byte) (*IOperatorTableUpdaterNewGlobalTableRootIterator, error) { + + var referenceTimestampRule []interface{} + for _, referenceTimestampItem := range referenceTimestamp { + referenceTimestampRule = append(referenceTimestampRule, referenceTimestampItem) + } + var globalTableRootRule []interface{} + for _, globalTableRootItem := range globalTableRoot { + globalTableRootRule = append(globalTableRootRule, globalTableRootItem) + } - logs, sub, err := _IOperatorTableUpdater.contract.FilterLogs(opts, "NewglobalTableRoot") + logs, sub, err := _IOperatorTableUpdater.contract.FilterLogs(opts, "NewGlobalTableRoot", referenceTimestampRule, globalTableRootRule) if err != nil { return nil, err } - return &IOperatorTableUpdaterNewglobalTableRootIterator{contract: _IOperatorTableUpdater.contract, event: "NewglobalTableRoot", logs: logs, sub: sub}, nil + return &IOperatorTableUpdaterNewGlobalTableRootIterator{contract: _IOperatorTableUpdater.contract, event: "NewGlobalTableRoot", logs: logs, sub: sub}, nil } -// WatchNewglobalTableRoot is a free log subscription operation binding the contract event 0xbb96ecabc83b99776c3ba3d12d8131e99aeca109d673db36e42959d154359a65. +// WatchNewGlobalTableRoot is a free log subscription operation binding the contract event 0x010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d369. // -// Solidity: event NewglobalTableRoot(uint32 referenceTimestamp, bytes32 globalTableRoot) -func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) WatchNewglobalTableRoot(opts *bind.WatchOpts, sink chan<- *IOperatorTableUpdaterNewglobalTableRoot) (event.Subscription, error) { +// Solidity: event NewGlobalTableRoot(uint32 indexed referenceTimestamp, bytes32 indexed globalTableRoot) +func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) WatchNewGlobalTableRoot(opts *bind.WatchOpts, sink chan<- *IOperatorTableUpdaterNewGlobalTableRoot, referenceTimestamp []uint32, globalTableRoot [][32]byte) (event.Subscription, error) { + + var referenceTimestampRule []interface{} + for _, referenceTimestampItem := range referenceTimestamp { + referenceTimestampRule = append(referenceTimestampRule, referenceTimestampItem) + } + var globalTableRootRule []interface{} + for _, globalTableRootItem := range globalTableRoot { + globalTableRootRule = append(globalTableRootRule, globalTableRootItem) + } - logs, sub, err := _IOperatorTableUpdater.contract.WatchLogs(opts, "NewglobalTableRoot") + logs, sub, err := _IOperatorTableUpdater.contract.WatchLogs(opts, "NewGlobalTableRoot", referenceTimestampRule, globalTableRootRule) if err != nil { return nil, err } @@ -508,8 +815,8 @@ func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) WatchNewglobalTable select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(IOperatorTableUpdaterNewglobalTableRoot) - if err := _IOperatorTableUpdater.contract.UnpackLog(event, "NewglobalTableRoot", log); err != nil { + event := new(IOperatorTableUpdaterNewGlobalTableRoot) + if err := _IOperatorTableUpdater.contract.UnpackLog(event, "NewGlobalTableRoot", log); err != nil { return err } event.Raw = log @@ -530,12 +837,12 @@ func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) WatchNewglobalTable }), nil } -// ParseNewglobalTableRoot is a log parse operation binding the contract event 0xbb96ecabc83b99776c3ba3d12d8131e99aeca109d673db36e42959d154359a65. +// ParseNewGlobalTableRoot is a log parse operation binding the contract event 0x010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d369. // -// Solidity: event NewglobalTableRoot(uint32 referenceTimestamp, bytes32 globalTableRoot) -func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) ParseNewglobalTableRoot(log types.Log) (*IOperatorTableUpdaterNewglobalTableRoot, error) { - event := new(IOperatorTableUpdaterNewglobalTableRoot) - if err := _IOperatorTableUpdater.contract.UnpackLog(event, "NewglobalTableRoot", log); err != nil { +// Solidity: event NewGlobalTableRoot(uint32 indexed referenceTimestamp, bytes32 indexed globalTableRoot) +func (_IOperatorTableUpdater *IOperatorTableUpdaterFilterer) ParseNewGlobalTableRoot(log types.Log) (*IOperatorTableUpdaterNewGlobalTableRoot, error) { + event := new(IOperatorTableUpdaterNewGlobalTableRoot) + if err := _IOperatorTableUpdater.contract.UnpackLog(event, "NewGlobalTableRoot", log); err != nil { return nil, err } event.Raw = log diff --git a/pkg/bindings/KeyRegistrar/binding.go b/pkg/bindings/KeyRegistrar/binding.go new file mode 100644 index 0000000000..d08488f7c4 --- /dev/null +++ b/pkg/bindings/KeyRegistrar/binding.go @@ -0,0 +1,1386 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package KeyRegistrar + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// BN254G1Point is an auto generated low-level Go binding around an user-defined struct. +type BN254G1Point struct { + X *big.Int + Y *big.Int +} + +// BN254G2Point is an auto generated low-level Go binding around an user-defined struct. +type BN254G2Point struct { + X [2]*big.Int + Y [2]*big.Int +} + +// OperatorSet is an auto generated low-level Go binding around an user-defined struct. +type OperatorSet struct { + Avs common.Address + Id uint32 +} + +// KeyRegistrarMetaData contains all meta data concerning the KeyRegistrar contract. +var KeyRegistrarMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_permissionController\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"},{\"name\":\"_allocationManager\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"BN254_KEY_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ECDSA_KEY_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"_verifyBN254Signature\",\"inputs\":[{\"name\":\"messagePoint\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"pubkeyG1\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"pubkeyG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkKey\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"configureOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterKey\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBN254Key\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"g1Point\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"g2Point\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBN254KeyRegistrationMessageHash\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"keyData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getECDSAAddress\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getECDSAKey\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getECDSAKeyRegistrationMessageHash\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"keyAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getKeyHash\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetCurveType\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isKeyGloballyRegistered\",\"inputs\":[{\"name\":\"keyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRegistered\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permissionController\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerKey\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"keyData\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"AggregateBN254KeyUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"newAggregateKey\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"KeyDeregistered\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"curveType\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"KeyRegistered\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"curveType\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"},{\"name\":\"pubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetConfigured\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"curveType\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ConfigurationAlreadySet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECAddFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECMulFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECPairingFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpModFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidKeyFormat\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidKeypair\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPermissions\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"KeyAlreadyRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"KeyNotFound\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OperatorSetNotConfigured\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroPubkey\",\"inputs\":[]}]", + Bin: "0x60e060405234801561000f575f5ffd5b50604051612f66380380612f6683398101604081905261002e916100cb565b6001600160a01b03808316608052831660a052808061004c8161005a565b60c052506101fc9350505050565b5f5f829050601f8151111561008d578260405163305a27a960e01b815260040161008491906101a1565b60405180910390fd5b8051610098826101d6565b179392505050565b6001600160a01b03811681146100b4575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156100dd575f5ffd5b83516100e8816100a0565b60208501519093506100f9816100a0565b60408501519092506001600160401b03811115610114575f5ffd5b8401601f81018613610124575f5ffd5b80516001600160401b0381111561013d5761013d6100b7565b604051601f8201601f19908116603f011681016001600160401b038111828210171561016b5761016b6100b7565b604052818152828201602001881015610182575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156101f6575f198160200360031b1b821691505b50919050565b60805160a05160c051612d2b61023b5f395f81816104b60152611ccc01525f81816101b801526117b001525f81816102bd01526105d00152612d2b5ff3fe608060405234801561000f575f5ffd5b5060043610610127575f3560e01c8063aa165c30116100a9578063d9f12db21161006e578063d9f12db2146102f2578063dab42d7e14610305578063ea0d814914610327578063ea194e2e1461033a578063f698da251461034d575f5ffd5b8063aa165c301461026b578063b05c8f6d1461027e578063bd30a0b9146102a5578063ca8aa7c7146102b8578063d40cda16146102df575f5ffd5b80637690e395116100ef5780637690e395146101ef5780637cffe48c1461020257806387ab86f4146102225780639a43e3fb146102375780639eb1725114610258575f5ffd5b80630a6ac2641461012b578063166aa127146101535780633b32a7bd146101885780634657e26a146101b357806354fd4d50146101da575b5f5ffd5b61013e6101393660046123e8565b610355565b60405190151581526020015b60405180910390f35b61017a7f991b0a3376ce87f8ecc5d70962279ac09cdce934e8b5b9683e73c8ff087c7f8181565b60405190815260200161014a565b61019b6101963660046123e8565b610491565b6040516001600160a01b03909116815260200161014a565b61019b7f000000000000000000000000000000000000000000000000000000000000000081565b6101e26104af565b60405161014a919061244c565b61017a6101fd36600461249c565b6104df565b6102156102103660046124fc565b610587565b60405161014a919061254a565b610235610230366004612558565b6105ad565b005b61024a6102453660046123e8565b610871565b60405161014a9291906125ae565b61023561026636600461269c565b610a5b565b6101e26102793660046123e8565b610bf5565b61017a7fda86e76deaed01641f80ff5f72c372a038fa5182697aeb967e8b1f9819d58d8181565b61013e6102b33660046123e8565b610d32565b61019b7f000000000000000000000000000000000000000000000000000000000000000081565b6102356102ed366004612765565b610d6f565b61017a6103003660046127f8565b610ef9565b61013e61031336600461283f565b5f9081526002602052604090205460ff1690565b610235610335366004612856565b610f92565b61017a6103483660046123e8565b6110d5565b61017a6111fd565b5f5f60015f610363866112b6565b815260208101919091526040015f9081205460ff16915081600281111561038c5761038c612516565b036103aa57604051635cd3106d60e11b815260040160405180910390fd5b5f5f5f6103b6876112b6565b815260208082019290925260409081015f9081206001600160a01b038816825283528190208151808301909252805460ff1615158252600181018054929391929184019161040390612884565b80601f016020809104026020016040519081016040528092919081815260200182805461042f90612884565b801561047a5780601f106104515761010080835404028352916020019161047a565b820191905f5260205f20905b81548152906001019060200180831161045d57829003601f168201915b505050919092525050905193505050505b92915050565b5f61049c8383610bf5565b6104a5906128bc565b60601c9392505050565b60606104da7f0000000000000000000000000000000000000000000000000000000000000000611314565b905090565b5f5f7fda86e76deaed01641f80ff5f72c372a038fa5182697aeb967e8b1f9819d58d8186865f01518760200151878760405161051c929190612900565b6040805191829003822060208301969096526001600160a01b039485169082015292909116606083015263ffffffff16608082015260a081019190915260c00160405160208183030381529060405280519060200120905061057d81611351565b9695505050505050565b5f60015f610594846112b6565b815260208101919091526040015f205460ff1692915050565b805160405163304c10cd60e01b81526001600160a01b03918216600482015233917f0000000000000000000000000000000000000000000000000000000000000000169063304c10cd90602401602060405180830381865afa158015610615573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610639919061290f565b6001600160a01b0316146106605760405163932d94f760e01b815260040160405180910390fd5b5f60015f61066d846112b6565b815260208101919091526040015f9081205460ff16915081600281111561069657610696612516565b036106b457604051635cd3106d60e11b815260040160405180910390fd5b5f5f5f6106c0856112b6565b815260208082019290925260409081015f9081206001600160a01b038816825283528190208151808301909252805460ff1615158252600181018054929391929184019161070d90612884565b80601f016020809104026020016040519081016040528092919081815260200182805461073990612884565b80156107845780601f1061075b57610100808354040283529160200191610784565b820191905f5260205f20905b81548152906001019060200180831161076757829003601f168201915b5050505050815250509050805f0151838590916107de57604051632e40e18760e01b815282516001600160a01b03908116600483015260209093015163ffffffff1660248201529116604482015260640160405180910390fd5b50505f5f6107eb856112b6565b815260208082019290925260409081015f9081206001600160a01b03881682529092528120805460ff191681559061082660018301826121f2565b5050836001600160a01b03167f28d3c3cee49478ec6fd219cfd685cd15cd01d95cabf69b4b7b57f9eaa3eb6442848460405161086392919061292a565b60405180910390a250505050565b604080518082019091525f808252602082015261088c61222c565b5f60015f610899876112b6565b815260208101919091526040015f205460ff16905060028160028111156108c2576108c2612516565b146108e05760405163fdea7c0960e01b815260040160405180910390fd5b5f5f5f6108ec886112b6565b815260208082019290925260409081015f9081206001600160a01b038916825283528190208151808301909252805460ff1615158252600181018054929391929184019161093990612884565b80601f016020809104026020016040519081016040528092919081815260200182805461096590612884565b80156109b05780601f10610987576101008083540402835291602001916109b0565b820191905f5260205f20905b81548152906001019060200180831161099357829003601f168201915b5050505050815250509050805f0151610a055750506040805180820182525f80825260208083018290528351808501855282815280820192909252835180850190945282845283019190915292509050610a54565b5f5f5f5f8460200151806020019051810190610a21919061299c565b60408051808201825294855260208086019490945280518082019091529182529181019190915290985096505050505050505b9250929050565b604080518082019091525f80825260208201525f5f85806020019051810190610a8491906129d7565b6040805180820190915282815260208082018390528851898201518951805190840151938b01518051959a505f99507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000019850929491939092909190600160200201518e5f01518f60200151604051602001610b489a99989796959493929190998a5260208a019890985260408901969096526060880194909452608087019290925260a086015260c085015260e08401526101008301526101208201526101400190565b604051602081830303815290604052805190602001205f1c610b6a9190612a0d565b9050610bd0610b83610b7c8684611397565b8490611407565b610b8b61147b565b610bca610bc385610bbd6040805180820182525f80825260209182015281518083019092526001825260029082015290565b90611397565b8a90611407565b8661153b565b610bed57604051638baa579f60e01b815260040160405180910390fd5b505050505050565b60605f60015f610c04866112b6565b815260208101919091526040015f205460ff1690506001816002811115610c2d57610c2d612516565b14610c4b5760405163fdea7c0960e01b815260040160405180910390fd5b5f5f5f610c57876112b6565b815260208082019290925260409081015f9081206001600160a01b038816825283528190208151808301909252805460ff16151582526001810180549293919291840191610ca490612884565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd090612884565b8015610d1b5780601f10610cf257610100808354040283529160200191610d1b565b820191905f5260205f20905b815481529060010190602001808311610cfe57829003601f168201915b505050919092525050506020015195945050505050565b5f5f5f610d3e856112b6565b815260208082019290925260409081015f9081206001600160a01b038616825290925290205460ff16905092915050565b85610d7981611772565b610d965760405163932d94f760e01b815260040160405180910390fd5b5f60015f610da3896112b6565b815260208101919091526040015f9081205460ff169150816002811115610dcc57610dcc612516565b03610dea57604051635cd3106d60e11b815260040160405180910390fd5b5f5f610df5896112b6565b815260208082019290925260409081015f9081206001600160a01b038c16825290925290205460ff1615610e3c57604051630c7bc20160e11b815260040160405180910390fd5b6001816002811115610e5057610e50612516565b03610e6857610e6387898888888861181c565b610ea8565b6002816002811115610e7c57610e7c612516565b03610e8f57610e63878988888888611a00565b60405163fdea7c0960e01b815260040160405180910390fd5b876001600160a01b03167f1201ce0c5e577111bce91e907fd99cb183da5edc1e3fb650ca40769e4e9176dd88838989604051610ee79493929190612a2c565b60405180910390a25050505050505050565b81516020808401516040515f938493610f66937f991b0a3376ce87f8ecc5d70962279ac09cdce934e8b5b9683e73c8ff087c7f81938a93928991019485526001600160a01b039384166020860152918316604085015263ffffffff16606084015216608082015260a00190565b604051602081830303815290604052805190602001209050610f8781611351565b9150505b9392505050565b8151610f9d81611772565b610fba5760405163932d94f760e01b815260040160405180910390fd5b6001826002811115610fce57610fce612516565b1480610feb57506002826002811115610fe957610fe9612516565b145b6110085760405163fdea7c0960e01b815260040160405180910390fd5b5f60015f611015866112b6565b815260208101919091526040015f9081205460ff16915081600281111561103e5761103e612516565b1461105b576040516281f09f60e01b815260040160405180910390fd5b8260015f611068876112b6565b815260208101919091526040015f20805460ff1916600183600281111561109157611091612516565b02179055507fb2266cb118e57095fcdbedb24dabd9fc9f5127e2dbedf62ce6ee71696fb8b6e784846040516110c792919061292a565b60405180910390a150505050565b5f5f5f5f6110e2866112b6565b815260208082019290925260409081015f9081206001600160a01b038716825283528190208151808301909252805460ff1615158252600181018054929391929184019161112f90612884565b80601f016020809104026020016040519081016040528092919081815260200182805461115b90612884565b80156111a65780601f1061117d576101008083540402835291602001916111a6565b820191905f5260205f20905b81548152906001019060200180831161118957829003601f168201915b50505050508152505090505f60015f6111be876112b6565b815260208101919091526040015f2054825160ff90911691506111e657505f915061048b9050565b6111f4826020015182611c43565b95945050505050565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61126a611cc4565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f815f0151826020015163ffffffff166040516020016112fc92919060609290921b6001600160601b031916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261048b90612a89565b60605f61132083611d39565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61135a6111fd565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b604080518082019091525f80825260208201526113b2612251565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa905080806113e057fe5b50806113ff57604051632319df1960e11b815260040160405180910390fd5b505092915050565b604080518082019091525f808252602082015261142261226f565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa9050808061145c57fe5b50806113ff5760405163d4b68fd760e01b815260040160405180910390fd5b61148361222c565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528581526020808201859052825180840190935285835282018390525f9161156961228d565b5f5b6002811015611720575f611580826006612ac0565b9050848260028110611594576115946129f9565b602002015151836115a5835f612ad7565b600c81106115b5576115b56129f9565b60200201528482600281106115cc576115cc6129f9565b602002015160200151838260016115e39190612ad7565b600c81106115f3576115f36129f9565b602002015283826002811061160a5761160a6129f9565b602002015151518361161d836002612ad7565b600c811061162d5761162d6129f9565b6020020152838260028110611644576116446129f9565b602002015151600160200201518361165d836003612ad7565b600c811061166d5761166d6129f9565b6020020152838260028110611684576116846129f9565b6020020151602001515f6002811061169e5761169e6129f9565b6020020151836116af836004612ad7565b600c81106116bf576116bf6129f9565b60200201528382600281106116d6576116d66129f9565b6020020151602001516001600281106116f1576116f16129f9565b602002015183611702836005612ad7565b600c8110611712576117126129f9565b60200201525060010161156b565b506117296122ac565b5f6020826101808560086107d05a03fa9050808061174357fe5b5080611762576040516324ccc79360e21b815260040160405180910390fd5b5051151598975050505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af11580156117f8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061048b9190612aea565b6014831461183d5760405163d109118160e01b815260040160405180910390fd5b5f6118488486612b09565b60601c90508061186b57604051634935505f60e01b815260040160405180910390fd5b5f6118ad86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250611c43915050565b5f8181526002602052604090205490915060ff16156118df57604051630c7bc20160e11b815260040160405180910390fd5b87516020808a01516040515f9361194b937f991b0a3376ce87f8ecc5d70962279ac09cdce934e8b5b9683e73c8ff087c7f81938d9390918991019485526001600160a01b039384166020860152918316604085015263ffffffff16606084015216608082015260a00190565b6040516020818303038152906040528051906020012090505f61196d82611351565b90506119b2848288888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505f199250611d60915050565b6119f48a8a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250899250611db8915050565b50505050505050505050565b604080518082019091525f8082526020820152611a1b61222c565b5f808080611a2b898b018b612b47565b93509350935093506040518060400160405280858152602001848152509550835f148015611a57575082155b15611a7557604051634935505f60e01b815260040160405180910390fd5b6040518060400160405280838152602001828152509450505050505f7fda86e76deaed01641f80ff5f72c372a038fa5182697aeb967e8b1f9819d58d81888a5f01518b602001518a8a604051611acc929190612900565b6040805191829003822060208301969096526001600160a01b039485169082015292909116606083015263ffffffff16608082015260a081019190915260c0016040516020818303038152906040528051906020012090505f611b2e82611351565b90505f611b3a82611e3c565b9050611b7f8188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a9250899150610a5b9050565b5f611bc18a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060029250611c43915050565b5f8181526002602052604090205490915060ff1615611bf357604051630c7bc20160e11b815260040160405180910390fd5b611c358c8c8c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250879250611db8915050565b505050505050505050505050565b5f6001826002811115611c5857611c58612516565b03611c6a57508151602083012061048b565b6002826002811115611c7e57611c7e612516565b03610e8f575f5f84806020019051810190611c99919061299c565b505060408051808201825283815260209081019283525f93845291519091529020925061048b915050565b60605f611cf07f0000000000000000000000000000000000000000000000000000000000000000611314565b9050805f81518110611d0457611d046129f9565b016020908101516040516001600160f81b03199091169181019190915260210160405160208183030381529060405291505090565b5f60ff8216601f81111561048b57604051632cd44ac360e21b815260040160405180910390fd5b42811015611d8157604051630819bdcd60e01b815260040160405180910390fd5b611d956001600160a01b0385168484611ec6565b611db257604051638baa579f60e01b815260040160405180910390fd5b50505050565b6040805180820190915260018152602081018390525f80611dd8876112b6565b815260208082019290925260409081015f9081206001600160a01b03881682528352208251815460ff1916901515178155908201516001820190611e1c9082612bcd565b5050505f908152600260205260409020805460ff19166001179055505050565b604080518082019091525f80825260208201525f8080611e695f516020612cd65f395f51905f5286612a0d565b90505b611e7581611f1a565b90935091505f516020612cd65f395f51905f528283098303611ead576040805180820190915290815260208101919091529392505050565b5f516020612cd65f395f51905f52600182089050611e6c565b5f5f5f611ed38585611f96565b90925090505f816004811115611eeb57611eeb612516565b148015611f095750856001600160a01b0316826001600160a01b0316145b8061057d575061057d868686611fd5565b5f80805f516020612cd65f395f51905f5260035f516020612cd65f395f51905f52865f516020612cd65f395f51905f52888909090890505f611f8a827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f525f516020612cd65f395f51905f526120bc565b91959194509092505050565b5f5f8251604103611fca576020830151604084015160608501515f1a611fbe87828585612135565b94509450505050610a54565b505f90506002610a54565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401611ffd929190612c88565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161203b9190612ca8565b5f60405180830381855afa9150503d805f8114612073576040519150601f19603f3d011682016040523d82523d5f602084013e612078565b606091505b509150915081801561208c57506020815110155b801561057d57508051630b135d3f60e11b906120b19083016020908101908401612cbe565b149695505050505050565b5f5f6120c66122ac565b6120ce6122ca565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828061210b57fe5b508261212a5760405163d51edae360e01b815260040160405180910390fd5b505195945050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561216a57505f905060036121e9565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156121bb573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166121e3575f600192509250506121e9565b91505f90505b94509492505050565b5080546121fe90612884565b5f825580601f1061220d575050565b601f0160209004905f5260205f209081019061222991906122e8565b50565b604051806040016040528061223f612300565b815260200161224c612300565b905290565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b5b808211156122fc575f81556001016122e9565b5090565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156123555761235561231e565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156123845761238461231e565b604052919050565b6001600160a01b0381168114612229575f5ffd5b5f604082840312156123b0575f5ffd5b6123b8612332565b905081356123c58161238c565b8152602082013563ffffffff811681146123dd575f5ffd5b602082015292915050565b5f5f606083850312156123f9575f5ffd5b61240384846123a0565b915060408301356124138161238c565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610f8b602083018461241e565b5f5f83601f84011261246e575f5ffd5b50813567ffffffffffffffff811115612485575f5ffd5b602083019150836020828501011115610a54575f5ffd5b5f5f5f5f608085870312156124af575f5ffd5b84356124ba8161238c565b93506124c986602087016123a0565b9250606085013567ffffffffffffffff8111156124e4575f5ffd5b6124f08782880161245e565b95989497509550505050565b5f6040828403121561250c575f5ffd5b610f8b83836123a0565b634e487b7160e01b5f52602160045260245ffd5b6003811061254657634e487b7160e01b5f52602160045260245ffd5b9052565b6020810161048b828461252a565b5f5f60608385031215612569575f5ffd5b82356125748161238c565b915061258384602085016123a0565b90509250929050565b805f5b6002811015611db257815184526020938401939091019060010161258f565b5f60c08201905083518252602084015160208301526125d160408301845161258c565b60208301516125e3608084018261258c565b509392505050565b5f604082840312156125fb575f5ffd5b612603612332565b823581526020928301359281019290925250919050565b5f82601f830112612629575f5ffd5b612633604061235b565b806040840185811115612644575f5ffd5b845b8181101561265e578035845260209384019301612646565b509095945050505050565b5f60808284031215612679575f5ffd5b612681612332565b905061268d838361261a565b81526123dd836040840161261a565b5f5f5f5f61012085870312156126b0575f5ffd5b6126ba86866125eb565b9350604085013567ffffffffffffffff8111156126d5575f5ffd5b8501601f810187136126e5575f5ffd5b803567ffffffffffffffff8111156126ff576126ff61231e565b612712601f8201601f191660200161235b565b818152886020838501011115612726575f5ffd5b816020840160208301375f6020838301015280955050505061274b86606087016125eb565b915061275a8660a08701612669565b905092959194509250565b5f5f5f5f5f5f60a0878903121561277a575f5ffd5b86356127858161238c565b955061279488602089016123a0565b9450606087013567ffffffffffffffff8111156127af575f5ffd5b6127bb89828a0161245e565b909550935050608087013567ffffffffffffffff8111156127da575f5ffd5b6127e689828a0161245e565b979a9699509497509295939492505050565b5f5f5f6080848603121561280a575f5ffd5b83356128158161238c565b925061282485602086016123a0565b915060608401356128348161238c565b809150509250925092565b5f6020828403121561284f575f5ffd5b5035919050565b5f5f60608385031215612867575f5ffd5b61287184846123a0565b9150604083013560038110612413575f5ffd5b600181811c9082168061289857607f821691505b6020821081036128b657634e487b7160e01b5f52602260045260245ffd5b50919050565b805160208201516001600160601b03198116919060148210156128f9576001600160601b03196001600160601b03198360140360031b1b82161692505b5050919050565b818382375f9101908152919050565b5f6020828403121561291f575f5ffd5b8151610f8b8161238c565b82516001600160a01b0316815260208084015163ffffffff169082015260608101610f8b604083018461252a565b5f82601f830112612967575f5ffd5b612971604061235b565b806040840185811115612982575f5ffd5b845b8181101561265e578051845260209384019301612984565b5f5f5f5f60c085870312156129af575f5ffd5b8451602086015190945092506129c88660408701612958565b915061275a8660808701612958565b5f5f604083850312156129e8575f5ffd5b505080516020909101519092909150565b634e487b7160e01b5f52603260045260245ffd5b5f82612a2757634e487b7160e01b5f52601260045260245ffd5b500690565b84516001600160a01b0316815260208086015163ffffffff1690820152612a56604082018561252a565b60806060820152816080820152818360a08301375f81830160a090810191909152601f909201601f191601019392505050565b805160208083015191908110156128b6575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761048b5761048b612aac565b8082018082111561048b5761048b612aac565b5f60208284031215612afa575f5ffd5b81518015158114610f8b575f5ffd5b80356001600160601b03198116906014841015612b40576001600160601b03196001600160601b03198560140360031b1b82161691505b5092915050565b5f5f5f5f60c08587031215612b5a575f5ffd5b8435935060208501359250612b72866040870161261a565b915061275a866080870161261a565b601f821115612bc857805f5260205f20601f840160051c81016020851015612ba65750805b601f840160051c820191505b81811015612bc5575f8155600101612bb2565b50505b505050565b815167ffffffffffffffff811115612be757612be761231e565b612bfb81612bf58454612884565b84612b81565b6020601f821160018114612c2d575f8315612c165750848201515b5f19600385901b1c1916600184901b178455612bc5565b5f84815260208120601f198516915b82811015612c5c5787850151825560209485019460019092019101612c3c565b5084821015612c7957868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b828152604060208201525f612ca0604083018461241e565b949350505050565b5f82518060208501845e5f920191825250919050565b5f60208284031215612cce575f5ffd5b505191905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220c6d45bcb983a5cf79a1c528ffe62dca064d9652aa976e3cb9b4b5a880ffa899064736f6c634300081b0033", +} + +// KeyRegistrarABI is the input ABI used to generate the binding from. +// Deprecated: Use KeyRegistrarMetaData.ABI instead. +var KeyRegistrarABI = KeyRegistrarMetaData.ABI + +// KeyRegistrarBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use KeyRegistrarMetaData.Bin instead. +var KeyRegistrarBin = KeyRegistrarMetaData.Bin + +// DeployKeyRegistrar deploys a new Ethereum contract, binding an instance of KeyRegistrar to it. +func DeployKeyRegistrar(auth *bind.TransactOpts, backend bind.ContractBackend, _permissionController common.Address, _allocationManager common.Address, _version string) (common.Address, *types.Transaction, *KeyRegistrar, error) { + parsed, err := KeyRegistrarMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(KeyRegistrarBin), backend, _permissionController, _allocationManager, _version) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &KeyRegistrar{KeyRegistrarCaller: KeyRegistrarCaller{contract: contract}, KeyRegistrarTransactor: KeyRegistrarTransactor{contract: contract}, KeyRegistrarFilterer: KeyRegistrarFilterer{contract: contract}}, nil +} + +// KeyRegistrar is an auto generated Go binding around an Ethereum contract. +type KeyRegistrar struct { + KeyRegistrarCaller // Read-only binding to the contract + KeyRegistrarTransactor // Write-only binding to the contract + KeyRegistrarFilterer // Log filterer for contract events +} + +// KeyRegistrarCaller is an auto generated read-only Go binding around an Ethereum contract. +type KeyRegistrarCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// KeyRegistrarTransactor is an auto generated write-only Go binding around an Ethereum contract. +type KeyRegistrarTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// KeyRegistrarFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type KeyRegistrarFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// KeyRegistrarSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type KeyRegistrarSession struct { + Contract *KeyRegistrar // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// KeyRegistrarCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type KeyRegistrarCallerSession struct { + Contract *KeyRegistrarCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// KeyRegistrarTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type KeyRegistrarTransactorSession struct { + Contract *KeyRegistrarTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// KeyRegistrarRaw is an auto generated low-level Go binding around an Ethereum contract. +type KeyRegistrarRaw struct { + Contract *KeyRegistrar // Generic contract binding to access the raw methods on +} + +// KeyRegistrarCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type KeyRegistrarCallerRaw struct { + Contract *KeyRegistrarCaller // Generic read-only contract binding to access the raw methods on +} + +// KeyRegistrarTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type KeyRegistrarTransactorRaw struct { + Contract *KeyRegistrarTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewKeyRegistrar creates a new instance of KeyRegistrar, bound to a specific deployed contract. +func NewKeyRegistrar(address common.Address, backend bind.ContractBackend) (*KeyRegistrar, error) { + contract, err := bindKeyRegistrar(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &KeyRegistrar{KeyRegistrarCaller: KeyRegistrarCaller{contract: contract}, KeyRegistrarTransactor: KeyRegistrarTransactor{contract: contract}, KeyRegistrarFilterer: KeyRegistrarFilterer{contract: contract}}, nil +} + +// NewKeyRegistrarCaller creates a new read-only instance of KeyRegistrar, bound to a specific deployed contract. +func NewKeyRegistrarCaller(address common.Address, caller bind.ContractCaller) (*KeyRegistrarCaller, error) { + contract, err := bindKeyRegistrar(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &KeyRegistrarCaller{contract: contract}, nil +} + +// NewKeyRegistrarTransactor creates a new write-only instance of KeyRegistrar, bound to a specific deployed contract. +func NewKeyRegistrarTransactor(address common.Address, transactor bind.ContractTransactor) (*KeyRegistrarTransactor, error) { + contract, err := bindKeyRegistrar(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &KeyRegistrarTransactor{contract: contract}, nil +} + +// NewKeyRegistrarFilterer creates a new log filterer instance of KeyRegistrar, bound to a specific deployed contract. +func NewKeyRegistrarFilterer(address common.Address, filterer bind.ContractFilterer) (*KeyRegistrarFilterer, error) { + contract, err := bindKeyRegistrar(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &KeyRegistrarFilterer{contract: contract}, nil +} + +// bindKeyRegistrar binds a generic wrapper to an already deployed contract. +func bindKeyRegistrar(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := KeyRegistrarMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_KeyRegistrar *KeyRegistrarRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _KeyRegistrar.Contract.KeyRegistrarCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_KeyRegistrar *KeyRegistrarRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _KeyRegistrar.Contract.KeyRegistrarTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_KeyRegistrar *KeyRegistrarRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _KeyRegistrar.Contract.KeyRegistrarTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_KeyRegistrar *KeyRegistrarCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _KeyRegistrar.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_KeyRegistrar *KeyRegistrarTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _KeyRegistrar.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_KeyRegistrar *KeyRegistrarTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _KeyRegistrar.Contract.contract.Transact(opts, method, params...) +} + +// BN254KEYREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xb05c8f6d. +// +// Solidity: function BN254_KEY_REGISTRATION_TYPEHASH() view returns(bytes32) +func (_KeyRegistrar *KeyRegistrarCaller) BN254KEYREGISTRATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _KeyRegistrar.contract.Call(opts, &out, "BN254_KEY_REGISTRATION_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// BN254KEYREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xb05c8f6d. +// +// Solidity: function BN254_KEY_REGISTRATION_TYPEHASH() view returns(bytes32) +func (_KeyRegistrar *KeyRegistrarSession) BN254KEYREGISTRATIONTYPEHASH() ([32]byte, error) { + return _KeyRegistrar.Contract.BN254KEYREGISTRATIONTYPEHASH(&_KeyRegistrar.CallOpts) +} + +// BN254KEYREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xb05c8f6d. +// +// Solidity: function BN254_KEY_REGISTRATION_TYPEHASH() view returns(bytes32) +func (_KeyRegistrar *KeyRegistrarCallerSession) BN254KEYREGISTRATIONTYPEHASH() ([32]byte, error) { + return _KeyRegistrar.Contract.BN254KEYREGISTRATIONTYPEHASH(&_KeyRegistrar.CallOpts) +} + +// ECDSAKEYREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0x166aa127. +// +// Solidity: function ECDSA_KEY_REGISTRATION_TYPEHASH() view returns(bytes32) +func (_KeyRegistrar *KeyRegistrarCaller) ECDSAKEYREGISTRATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _KeyRegistrar.contract.Call(opts, &out, "ECDSA_KEY_REGISTRATION_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ECDSAKEYREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0x166aa127. +// +// Solidity: function ECDSA_KEY_REGISTRATION_TYPEHASH() view returns(bytes32) +func (_KeyRegistrar *KeyRegistrarSession) ECDSAKEYREGISTRATIONTYPEHASH() ([32]byte, error) { + return _KeyRegistrar.Contract.ECDSAKEYREGISTRATIONTYPEHASH(&_KeyRegistrar.CallOpts) +} + +// ECDSAKEYREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0x166aa127. +// +// Solidity: function ECDSA_KEY_REGISTRATION_TYPEHASH() view returns(bytes32) +func (_KeyRegistrar *KeyRegistrarCallerSession) ECDSAKEYREGISTRATIONTYPEHASH() ([32]byte, error) { + return _KeyRegistrar.Contract.ECDSAKEYREGISTRATIONTYPEHASH(&_KeyRegistrar.CallOpts) +} + +// VerifyBN254Signature is a free data retrieval call binding the contract method 0x9eb17251. +// +// Solidity: function _verifyBN254Signature((uint256,uint256) messagePoint, bytes signature, (uint256,uint256) pubkeyG1, (uint256[2],uint256[2]) pubkeyG2) view returns() +func (_KeyRegistrar *KeyRegistrarCaller) VerifyBN254Signature(opts *bind.CallOpts, messagePoint BN254G1Point, signature []byte, pubkeyG1 BN254G1Point, pubkeyG2 BN254G2Point) error { + var out []interface{} + err := _KeyRegistrar.contract.Call(opts, &out, "_verifyBN254Signature", messagePoint, signature, pubkeyG1, pubkeyG2) + + if err != nil { + return err + } + + return err + +} + +// VerifyBN254Signature is a free data retrieval call binding the contract method 0x9eb17251. +// +// Solidity: function _verifyBN254Signature((uint256,uint256) messagePoint, bytes signature, (uint256,uint256) pubkeyG1, (uint256[2],uint256[2]) pubkeyG2) view returns() +func (_KeyRegistrar *KeyRegistrarSession) VerifyBN254Signature(messagePoint BN254G1Point, signature []byte, pubkeyG1 BN254G1Point, pubkeyG2 BN254G2Point) error { + return _KeyRegistrar.Contract.VerifyBN254Signature(&_KeyRegistrar.CallOpts, messagePoint, signature, pubkeyG1, pubkeyG2) +} + +// VerifyBN254Signature is a free data retrieval call binding the contract method 0x9eb17251. +// +// Solidity: function _verifyBN254Signature((uint256,uint256) messagePoint, bytes signature, (uint256,uint256) pubkeyG1, (uint256[2],uint256[2]) pubkeyG2) view returns() +func (_KeyRegistrar *KeyRegistrarCallerSession) VerifyBN254Signature(messagePoint BN254G1Point, signature []byte, pubkeyG1 BN254G1Point, pubkeyG2 BN254G2Point) error { + return _KeyRegistrar.Contract.VerifyBN254Signature(&_KeyRegistrar.CallOpts, messagePoint, signature, pubkeyG1, pubkeyG2) +} + +// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. +// +// Solidity: function allocationManager() view returns(address) +func (_KeyRegistrar *KeyRegistrarCaller) AllocationManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _KeyRegistrar.contract.Call(opts, &out, "allocationManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. +// +// Solidity: function allocationManager() view returns(address) +func (_KeyRegistrar *KeyRegistrarSession) AllocationManager() (common.Address, error) { + return _KeyRegistrar.Contract.AllocationManager(&_KeyRegistrar.CallOpts) +} + +// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. +// +// Solidity: function allocationManager() view returns(address) +func (_KeyRegistrar *KeyRegistrarCallerSession) AllocationManager() (common.Address, error) { + return _KeyRegistrar.Contract.AllocationManager(&_KeyRegistrar.CallOpts) +} + +// CheckKey is a free data retrieval call binding the contract method 0x0a6ac264. +// +// Solidity: function checkKey((address,uint32) operatorSet, address operator) view returns(bool) +func (_KeyRegistrar *KeyRegistrarCaller) CheckKey(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) (bool, error) { + var out []interface{} + err := _KeyRegistrar.contract.Call(opts, &out, "checkKey", operatorSet, operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// CheckKey is a free data retrieval call binding the contract method 0x0a6ac264. +// +// Solidity: function checkKey((address,uint32) operatorSet, address operator) view returns(bool) +func (_KeyRegistrar *KeyRegistrarSession) CheckKey(operatorSet OperatorSet, operator common.Address) (bool, error) { + return _KeyRegistrar.Contract.CheckKey(&_KeyRegistrar.CallOpts, operatorSet, operator) +} + +// CheckKey is a free data retrieval call binding the contract method 0x0a6ac264. +// +// Solidity: function checkKey((address,uint32) operatorSet, address operator) view returns(bool) +func (_KeyRegistrar *KeyRegistrarCallerSession) CheckKey(operatorSet OperatorSet, operator common.Address) (bool, error) { + return _KeyRegistrar.Contract.CheckKey(&_KeyRegistrar.CallOpts, operatorSet, operator) +} + +// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25. +// +// Solidity: function domainSeparator() view returns(bytes32) +func (_KeyRegistrar *KeyRegistrarCaller) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _KeyRegistrar.contract.Call(opts, &out, "domainSeparator") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25. +// +// Solidity: function domainSeparator() view returns(bytes32) +func (_KeyRegistrar *KeyRegistrarSession) DomainSeparator() ([32]byte, error) { + return _KeyRegistrar.Contract.DomainSeparator(&_KeyRegistrar.CallOpts) +} + +// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25. +// +// Solidity: function domainSeparator() view returns(bytes32) +func (_KeyRegistrar *KeyRegistrarCallerSession) DomainSeparator() ([32]byte, error) { + return _KeyRegistrar.Contract.DomainSeparator(&_KeyRegistrar.CallOpts) +} + +// GetBN254Key is a free data retrieval call binding the contract method 0x9a43e3fb. +// +// Solidity: function getBN254Key((address,uint32) operatorSet, address operator) view returns((uint256,uint256) g1Point, (uint256[2],uint256[2]) g2Point) +func (_KeyRegistrar *KeyRegistrarCaller) GetBN254Key(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) (struct { + G1Point BN254G1Point + G2Point BN254G2Point +}, error) { + var out []interface{} + err := _KeyRegistrar.contract.Call(opts, &out, "getBN254Key", operatorSet, operator) + + outstruct := new(struct { + G1Point BN254G1Point + G2Point BN254G2Point + }) + if err != nil { + return *outstruct, err + } + + outstruct.G1Point = *abi.ConvertType(out[0], new(BN254G1Point)).(*BN254G1Point) + outstruct.G2Point = *abi.ConvertType(out[1], new(BN254G2Point)).(*BN254G2Point) + + return *outstruct, err + +} + +// GetBN254Key is a free data retrieval call binding the contract method 0x9a43e3fb. +// +// Solidity: function getBN254Key((address,uint32) operatorSet, address operator) view returns((uint256,uint256) g1Point, (uint256[2],uint256[2]) g2Point) +func (_KeyRegistrar *KeyRegistrarSession) GetBN254Key(operatorSet OperatorSet, operator common.Address) (struct { + G1Point BN254G1Point + G2Point BN254G2Point +}, error) { + return _KeyRegistrar.Contract.GetBN254Key(&_KeyRegistrar.CallOpts, operatorSet, operator) +} + +// GetBN254Key is a free data retrieval call binding the contract method 0x9a43e3fb. +// +// Solidity: function getBN254Key((address,uint32) operatorSet, address operator) view returns((uint256,uint256) g1Point, (uint256[2],uint256[2]) g2Point) +func (_KeyRegistrar *KeyRegistrarCallerSession) GetBN254Key(operatorSet OperatorSet, operator common.Address) (struct { + G1Point BN254G1Point + G2Point BN254G2Point +}, error) { + return _KeyRegistrar.Contract.GetBN254Key(&_KeyRegistrar.CallOpts, operatorSet, operator) +} + +// GetBN254KeyRegistrationMessageHash is a free data retrieval call binding the contract method 0x7690e395. +// +// Solidity: function getBN254KeyRegistrationMessageHash(address operator, (address,uint32) operatorSet, bytes keyData) view returns(bytes32) +func (_KeyRegistrar *KeyRegistrarCaller) GetBN254KeyRegistrationMessageHash(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet, keyData []byte) ([32]byte, error) { + var out []interface{} + err := _KeyRegistrar.contract.Call(opts, &out, "getBN254KeyRegistrationMessageHash", operator, operatorSet, keyData) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetBN254KeyRegistrationMessageHash is a free data retrieval call binding the contract method 0x7690e395. +// +// Solidity: function getBN254KeyRegistrationMessageHash(address operator, (address,uint32) operatorSet, bytes keyData) view returns(bytes32) +func (_KeyRegistrar *KeyRegistrarSession) GetBN254KeyRegistrationMessageHash(operator common.Address, operatorSet OperatorSet, keyData []byte) ([32]byte, error) { + return _KeyRegistrar.Contract.GetBN254KeyRegistrationMessageHash(&_KeyRegistrar.CallOpts, operator, operatorSet, keyData) +} + +// GetBN254KeyRegistrationMessageHash is a free data retrieval call binding the contract method 0x7690e395. +// +// Solidity: function getBN254KeyRegistrationMessageHash(address operator, (address,uint32) operatorSet, bytes keyData) view returns(bytes32) +func (_KeyRegistrar *KeyRegistrarCallerSession) GetBN254KeyRegistrationMessageHash(operator common.Address, operatorSet OperatorSet, keyData []byte) ([32]byte, error) { + return _KeyRegistrar.Contract.GetBN254KeyRegistrationMessageHash(&_KeyRegistrar.CallOpts, operator, operatorSet, keyData) +} + +// GetECDSAAddress is a free data retrieval call binding the contract method 0x3b32a7bd. +// +// Solidity: function getECDSAAddress((address,uint32) operatorSet, address operator) view returns(address) +func (_KeyRegistrar *KeyRegistrarCaller) GetECDSAAddress(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) (common.Address, error) { + var out []interface{} + err := _KeyRegistrar.contract.Call(opts, &out, "getECDSAAddress", operatorSet, operator) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetECDSAAddress is a free data retrieval call binding the contract method 0x3b32a7bd. +// +// Solidity: function getECDSAAddress((address,uint32) operatorSet, address operator) view returns(address) +func (_KeyRegistrar *KeyRegistrarSession) GetECDSAAddress(operatorSet OperatorSet, operator common.Address) (common.Address, error) { + return _KeyRegistrar.Contract.GetECDSAAddress(&_KeyRegistrar.CallOpts, operatorSet, operator) +} + +// GetECDSAAddress is a free data retrieval call binding the contract method 0x3b32a7bd. +// +// Solidity: function getECDSAAddress((address,uint32) operatorSet, address operator) view returns(address) +func (_KeyRegistrar *KeyRegistrarCallerSession) GetECDSAAddress(operatorSet OperatorSet, operator common.Address) (common.Address, error) { + return _KeyRegistrar.Contract.GetECDSAAddress(&_KeyRegistrar.CallOpts, operatorSet, operator) +} + +// GetECDSAKey is a free data retrieval call binding the contract method 0xaa165c30. +// +// Solidity: function getECDSAKey((address,uint32) operatorSet, address operator) view returns(bytes) +func (_KeyRegistrar *KeyRegistrarCaller) GetECDSAKey(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) ([]byte, error) { + var out []interface{} + err := _KeyRegistrar.contract.Call(opts, &out, "getECDSAKey", operatorSet, operator) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// GetECDSAKey is a free data retrieval call binding the contract method 0xaa165c30. +// +// Solidity: function getECDSAKey((address,uint32) operatorSet, address operator) view returns(bytes) +func (_KeyRegistrar *KeyRegistrarSession) GetECDSAKey(operatorSet OperatorSet, operator common.Address) ([]byte, error) { + return _KeyRegistrar.Contract.GetECDSAKey(&_KeyRegistrar.CallOpts, operatorSet, operator) +} + +// GetECDSAKey is a free data retrieval call binding the contract method 0xaa165c30. +// +// Solidity: function getECDSAKey((address,uint32) operatorSet, address operator) view returns(bytes) +func (_KeyRegistrar *KeyRegistrarCallerSession) GetECDSAKey(operatorSet OperatorSet, operator common.Address) ([]byte, error) { + return _KeyRegistrar.Contract.GetECDSAKey(&_KeyRegistrar.CallOpts, operatorSet, operator) +} + +// GetECDSAKeyRegistrationMessageHash is a free data retrieval call binding the contract method 0xd9f12db2. +// +// Solidity: function getECDSAKeyRegistrationMessageHash(address operator, (address,uint32) operatorSet, address keyAddress) view returns(bytes32) +func (_KeyRegistrar *KeyRegistrarCaller) GetECDSAKeyRegistrationMessageHash(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet, keyAddress common.Address) ([32]byte, error) { + var out []interface{} + err := _KeyRegistrar.contract.Call(opts, &out, "getECDSAKeyRegistrationMessageHash", operator, operatorSet, keyAddress) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetECDSAKeyRegistrationMessageHash is a free data retrieval call binding the contract method 0xd9f12db2. +// +// Solidity: function getECDSAKeyRegistrationMessageHash(address operator, (address,uint32) operatorSet, address keyAddress) view returns(bytes32) +func (_KeyRegistrar *KeyRegistrarSession) GetECDSAKeyRegistrationMessageHash(operator common.Address, operatorSet OperatorSet, keyAddress common.Address) ([32]byte, error) { + return _KeyRegistrar.Contract.GetECDSAKeyRegistrationMessageHash(&_KeyRegistrar.CallOpts, operator, operatorSet, keyAddress) +} + +// GetECDSAKeyRegistrationMessageHash is a free data retrieval call binding the contract method 0xd9f12db2. +// +// Solidity: function getECDSAKeyRegistrationMessageHash(address operator, (address,uint32) operatorSet, address keyAddress) view returns(bytes32) +func (_KeyRegistrar *KeyRegistrarCallerSession) GetECDSAKeyRegistrationMessageHash(operator common.Address, operatorSet OperatorSet, keyAddress common.Address) ([32]byte, error) { + return _KeyRegistrar.Contract.GetECDSAKeyRegistrationMessageHash(&_KeyRegistrar.CallOpts, operator, operatorSet, keyAddress) +} + +// GetKeyHash is a free data retrieval call binding the contract method 0xea194e2e. +// +// Solidity: function getKeyHash((address,uint32) operatorSet, address operator) view returns(bytes32) +func (_KeyRegistrar *KeyRegistrarCaller) GetKeyHash(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) ([32]byte, error) { + var out []interface{} + err := _KeyRegistrar.contract.Call(opts, &out, "getKeyHash", operatorSet, operator) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetKeyHash is a free data retrieval call binding the contract method 0xea194e2e. +// +// Solidity: function getKeyHash((address,uint32) operatorSet, address operator) view returns(bytes32) +func (_KeyRegistrar *KeyRegistrarSession) GetKeyHash(operatorSet OperatorSet, operator common.Address) ([32]byte, error) { + return _KeyRegistrar.Contract.GetKeyHash(&_KeyRegistrar.CallOpts, operatorSet, operator) +} + +// GetKeyHash is a free data retrieval call binding the contract method 0xea194e2e. +// +// Solidity: function getKeyHash((address,uint32) operatorSet, address operator) view returns(bytes32) +func (_KeyRegistrar *KeyRegistrarCallerSession) GetKeyHash(operatorSet OperatorSet, operator common.Address) ([32]byte, error) { + return _KeyRegistrar.Contract.GetKeyHash(&_KeyRegistrar.CallOpts, operatorSet, operator) +} + +// GetOperatorSetCurveType is a free data retrieval call binding the contract method 0x7cffe48c. +// +// Solidity: function getOperatorSetCurveType((address,uint32) operatorSet) view returns(uint8) +func (_KeyRegistrar *KeyRegistrarCaller) GetOperatorSetCurveType(opts *bind.CallOpts, operatorSet OperatorSet) (uint8, error) { + var out []interface{} + err := _KeyRegistrar.contract.Call(opts, &out, "getOperatorSetCurveType", operatorSet) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// GetOperatorSetCurveType is a free data retrieval call binding the contract method 0x7cffe48c. +// +// Solidity: function getOperatorSetCurveType((address,uint32) operatorSet) view returns(uint8) +func (_KeyRegistrar *KeyRegistrarSession) GetOperatorSetCurveType(operatorSet OperatorSet) (uint8, error) { + return _KeyRegistrar.Contract.GetOperatorSetCurveType(&_KeyRegistrar.CallOpts, operatorSet) +} + +// GetOperatorSetCurveType is a free data retrieval call binding the contract method 0x7cffe48c. +// +// Solidity: function getOperatorSetCurveType((address,uint32) operatorSet) view returns(uint8) +func (_KeyRegistrar *KeyRegistrarCallerSession) GetOperatorSetCurveType(operatorSet OperatorSet) (uint8, error) { + return _KeyRegistrar.Contract.GetOperatorSetCurveType(&_KeyRegistrar.CallOpts, operatorSet) +} + +// IsKeyGloballyRegistered is a free data retrieval call binding the contract method 0xdab42d7e. +// +// Solidity: function isKeyGloballyRegistered(bytes32 keyHash) view returns(bool) +func (_KeyRegistrar *KeyRegistrarCaller) IsKeyGloballyRegistered(opts *bind.CallOpts, keyHash [32]byte) (bool, error) { + var out []interface{} + err := _KeyRegistrar.contract.Call(opts, &out, "isKeyGloballyRegistered", keyHash) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsKeyGloballyRegistered is a free data retrieval call binding the contract method 0xdab42d7e. +// +// Solidity: function isKeyGloballyRegistered(bytes32 keyHash) view returns(bool) +func (_KeyRegistrar *KeyRegistrarSession) IsKeyGloballyRegistered(keyHash [32]byte) (bool, error) { + return _KeyRegistrar.Contract.IsKeyGloballyRegistered(&_KeyRegistrar.CallOpts, keyHash) +} + +// IsKeyGloballyRegistered is a free data retrieval call binding the contract method 0xdab42d7e. +// +// Solidity: function isKeyGloballyRegistered(bytes32 keyHash) view returns(bool) +func (_KeyRegistrar *KeyRegistrarCallerSession) IsKeyGloballyRegistered(keyHash [32]byte) (bool, error) { + return _KeyRegistrar.Contract.IsKeyGloballyRegistered(&_KeyRegistrar.CallOpts, keyHash) +} + +// IsRegistered is a free data retrieval call binding the contract method 0xbd30a0b9. +// +// Solidity: function isRegistered((address,uint32) operatorSet, address operator) view returns(bool) +func (_KeyRegistrar *KeyRegistrarCaller) IsRegistered(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) (bool, error) { + var out []interface{} + err := _KeyRegistrar.contract.Call(opts, &out, "isRegistered", operatorSet, operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsRegistered is a free data retrieval call binding the contract method 0xbd30a0b9. +// +// Solidity: function isRegistered((address,uint32) operatorSet, address operator) view returns(bool) +func (_KeyRegistrar *KeyRegistrarSession) IsRegistered(operatorSet OperatorSet, operator common.Address) (bool, error) { + return _KeyRegistrar.Contract.IsRegistered(&_KeyRegistrar.CallOpts, operatorSet, operator) +} + +// IsRegistered is a free data retrieval call binding the contract method 0xbd30a0b9. +// +// Solidity: function isRegistered((address,uint32) operatorSet, address operator) view returns(bool) +func (_KeyRegistrar *KeyRegistrarCallerSession) IsRegistered(operatorSet OperatorSet, operator common.Address) (bool, error) { + return _KeyRegistrar.Contract.IsRegistered(&_KeyRegistrar.CallOpts, operatorSet, operator) +} + +// PermissionController is a free data retrieval call binding the contract method 0x4657e26a. +// +// Solidity: function permissionController() view returns(address) +func (_KeyRegistrar *KeyRegistrarCaller) PermissionController(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _KeyRegistrar.contract.Call(opts, &out, "permissionController") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PermissionController is a free data retrieval call binding the contract method 0x4657e26a. +// +// Solidity: function permissionController() view returns(address) +func (_KeyRegistrar *KeyRegistrarSession) PermissionController() (common.Address, error) { + return _KeyRegistrar.Contract.PermissionController(&_KeyRegistrar.CallOpts) +} + +// PermissionController is a free data retrieval call binding the contract method 0x4657e26a. +// +// Solidity: function permissionController() view returns(address) +func (_KeyRegistrar *KeyRegistrarCallerSession) PermissionController() (common.Address, error) { + return _KeyRegistrar.Contract.PermissionController(&_KeyRegistrar.CallOpts) +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_KeyRegistrar *KeyRegistrarCaller) Version(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _KeyRegistrar.contract.Call(opts, &out, "version") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_KeyRegistrar *KeyRegistrarSession) Version() (string, error) { + return _KeyRegistrar.Contract.Version(&_KeyRegistrar.CallOpts) +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_KeyRegistrar *KeyRegistrarCallerSession) Version() (string, error) { + return _KeyRegistrar.Contract.Version(&_KeyRegistrar.CallOpts) +} + +// ConfigureOperatorSet is a paid mutator transaction binding the contract method 0xea0d8149. +// +// Solidity: function configureOperatorSet((address,uint32) operatorSet, uint8 curveType) returns() +func (_KeyRegistrar *KeyRegistrarTransactor) ConfigureOperatorSet(opts *bind.TransactOpts, operatorSet OperatorSet, curveType uint8) (*types.Transaction, error) { + return _KeyRegistrar.contract.Transact(opts, "configureOperatorSet", operatorSet, curveType) +} + +// ConfigureOperatorSet is a paid mutator transaction binding the contract method 0xea0d8149. +// +// Solidity: function configureOperatorSet((address,uint32) operatorSet, uint8 curveType) returns() +func (_KeyRegistrar *KeyRegistrarSession) ConfigureOperatorSet(operatorSet OperatorSet, curveType uint8) (*types.Transaction, error) { + return _KeyRegistrar.Contract.ConfigureOperatorSet(&_KeyRegistrar.TransactOpts, operatorSet, curveType) +} + +// ConfigureOperatorSet is a paid mutator transaction binding the contract method 0xea0d8149. +// +// Solidity: function configureOperatorSet((address,uint32) operatorSet, uint8 curveType) returns() +func (_KeyRegistrar *KeyRegistrarTransactorSession) ConfigureOperatorSet(operatorSet OperatorSet, curveType uint8) (*types.Transaction, error) { + return _KeyRegistrar.Contract.ConfigureOperatorSet(&_KeyRegistrar.TransactOpts, operatorSet, curveType) +} + +// DeregisterKey is a paid mutator transaction binding the contract method 0x87ab86f4. +// +// Solidity: function deregisterKey(address operator, (address,uint32) operatorSet) returns() +func (_KeyRegistrar *KeyRegistrarTransactor) DeregisterKey(opts *bind.TransactOpts, operator common.Address, operatorSet OperatorSet) (*types.Transaction, error) { + return _KeyRegistrar.contract.Transact(opts, "deregisterKey", operator, operatorSet) +} + +// DeregisterKey is a paid mutator transaction binding the contract method 0x87ab86f4. +// +// Solidity: function deregisterKey(address operator, (address,uint32) operatorSet) returns() +func (_KeyRegistrar *KeyRegistrarSession) DeregisterKey(operator common.Address, operatorSet OperatorSet) (*types.Transaction, error) { + return _KeyRegistrar.Contract.DeregisterKey(&_KeyRegistrar.TransactOpts, operator, operatorSet) +} + +// DeregisterKey is a paid mutator transaction binding the contract method 0x87ab86f4. +// +// Solidity: function deregisterKey(address operator, (address,uint32) operatorSet) returns() +func (_KeyRegistrar *KeyRegistrarTransactorSession) DeregisterKey(operator common.Address, operatorSet OperatorSet) (*types.Transaction, error) { + return _KeyRegistrar.Contract.DeregisterKey(&_KeyRegistrar.TransactOpts, operator, operatorSet) +} + +// RegisterKey is a paid mutator transaction binding the contract method 0xd40cda16. +// +// Solidity: function registerKey(address operator, (address,uint32) operatorSet, bytes keyData, bytes signature) returns() +func (_KeyRegistrar *KeyRegistrarTransactor) RegisterKey(opts *bind.TransactOpts, operator common.Address, operatorSet OperatorSet, keyData []byte, signature []byte) (*types.Transaction, error) { + return _KeyRegistrar.contract.Transact(opts, "registerKey", operator, operatorSet, keyData, signature) +} + +// RegisterKey is a paid mutator transaction binding the contract method 0xd40cda16. +// +// Solidity: function registerKey(address operator, (address,uint32) operatorSet, bytes keyData, bytes signature) returns() +func (_KeyRegistrar *KeyRegistrarSession) RegisterKey(operator common.Address, operatorSet OperatorSet, keyData []byte, signature []byte) (*types.Transaction, error) { + return _KeyRegistrar.Contract.RegisterKey(&_KeyRegistrar.TransactOpts, operator, operatorSet, keyData, signature) +} + +// RegisterKey is a paid mutator transaction binding the contract method 0xd40cda16. +// +// Solidity: function registerKey(address operator, (address,uint32) operatorSet, bytes keyData, bytes signature) returns() +func (_KeyRegistrar *KeyRegistrarTransactorSession) RegisterKey(operator common.Address, operatorSet OperatorSet, keyData []byte, signature []byte) (*types.Transaction, error) { + return _KeyRegistrar.Contract.RegisterKey(&_KeyRegistrar.TransactOpts, operator, operatorSet, keyData, signature) +} + +// KeyRegistrarAggregateBN254KeyUpdatedIterator is returned from FilterAggregateBN254KeyUpdated and is used to iterate over the raw logs and unpacked data for AggregateBN254KeyUpdated events raised by the KeyRegistrar contract. +type KeyRegistrarAggregateBN254KeyUpdatedIterator struct { + Event *KeyRegistrarAggregateBN254KeyUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *KeyRegistrarAggregateBN254KeyUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(KeyRegistrarAggregateBN254KeyUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(KeyRegistrarAggregateBN254KeyUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *KeyRegistrarAggregateBN254KeyUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *KeyRegistrarAggregateBN254KeyUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// KeyRegistrarAggregateBN254KeyUpdated represents a AggregateBN254KeyUpdated event raised by the KeyRegistrar contract. +type KeyRegistrarAggregateBN254KeyUpdated struct { + OperatorSet OperatorSet + NewAggregateKey BN254G1Point + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAggregateBN254KeyUpdated is a free log retrieval operation binding the contract event 0xdfa2f59e55747ba641fbdff4eb78577de8789d605920d5be4a74ee3a6470d1d1. +// +// Solidity: event AggregateBN254KeyUpdated((address,uint32) operatorSet, (uint256,uint256) newAggregateKey) +func (_KeyRegistrar *KeyRegistrarFilterer) FilterAggregateBN254KeyUpdated(opts *bind.FilterOpts) (*KeyRegistrarAggregateBN254KeyUpdatedIterator, error) { + + logs, sub, err := _KeyRegistrar.contract.FilterLogs(opts, "AggregateBN254KeyUpdated") + if err != nil { + return nil, err + } + return &KeyRegistrarAggregateBN254KeyUpdatedIterator{contract: _KeyRegistrar.contract, event: "AggregateBN254KeyUpdated", logs: logs, sub: sub}, nil +} + +// WatchAggregateBN254KeyUpdated is a free log subscription operation binding the contract event 0xdfa2f59e55747ba641fbdff4eb78577de8789d605920d5be4a74ee3a6470d1d1. +// +// Solidity: event AggregateBN254KeyUpdated((address,uint32) operatorSet, (uint256,uint256) newAggregateKey) +func (_KeyRegistrar *KeyRegistrarFilterer) WatchAggregateBN254KeyUpdated(opts *bind.WatchOpts, sink chan<- *KeyRegistrarAggregateBN254KeyUpdated) (event.Subscription, error) { + + logs, sub, err := _KeyRegistrar.contract.WatchLogs(opts, "AggregateBN254KeyUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(KeyRegistrarAggregateBN254KeyUpdated) + if err := _KeyRegistrar.contract.UnpackLog(event, "AggregateBN254KeyUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAggregateBN254KeyUpdated is a log parse operation binding the contract event 0xdfa2f59e55747ba641fbdff4eb78577de8789d605920d5be4a74ee3a6470d1d1. +// +// Solidity: event AggregateBN254KeyUpdated((address,uint32) operatorSet, (uint256,uint256) newAggregateKey) +func (_KeyRegistrar *KeyRegistrarFilterer) ParseAggregateBN254KeyUpdated(log types.Log) (*KeyRegistrarAggregateBN254KeyUpdated, error) { + event := new(KeyRegistrarAggregateBN254KeyUpdated) + if err := _KeyRegistrar.contract.UnpackLog(event, "AggregateBN254KeyUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// KeyRegistrarKeyDeregisteredIterator is returned from FilterKeyDeregistered and is used to iterate over the raw logs and unpacked data for KeyDeregistered events raised by the KeyRegistrar contract. +type KeyRegistrarKeyDeregisteredIterator struct { + Event *KeyRegistrarKeyDeregistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *KeyRegistrarKeyDeregisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(KeyRegistrarKeyDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(KeyRegistrarKeyDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *KeyRegistrarKeyDeregisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *KeyRegistrarKeyDeregisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// KeyRegistrarKeyDeregistered represents a KeyDeregistered event raised by the KeyRegistrar contract. +type KeyRegistrarKeyDeregistered struct { + OperatorSet OperatorSet + Operator common.Address + CurveType uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterKeyDeregistered is a free log retrieval operation binding the contract event 0x28d3c3cee49478ec6fd219cfd685cd15cd01d95cabf69b4b7b57f9eaa3eb6442. +// +// Solidity: event KeyDeregistered((address,uint32) operatorSet, address indexed operator, uint8 curveType) +func (_KeyRegistrar *KeyRegistrarFilterer) FilterKeyDeregistered(opts *bind.FilterOpts, operator []common.Address) (*KeyRegistrarKeyDeregisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _KeyRegistrar.contract.FilterLogs(opts, "KeyDeregistered", operatorRule) + if err != nil { + return nil, err + } + return &KeyRegistrarKeyDeregisteredIterator{contract: _KeyRegistrar.contract, event: "KeyDeregistered", logs: logs, sub: sub}, nil +} + +// WatchKeyDeregistered is a free log subscription operation binding the contract event 0x28d3c3cee49478ec6fd219cfd685cd15cd01d95cabf69b4b7b57f9eaa3eb6442. +// +// Solidity: event KeyDeregistered((address,uint32) operatorSet, address indexed operator, uint8 curveType) +func (_KeyRegistrar *KeyRegistrarFilterer) WatchKeyDeregistered(opts *bind.WatchOpts, sink chan<- *KeyRegistrarKeyDeregistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _KeyRegistrar.contract.WatchLogs(opts, "KeyDeregistered", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(KeyRegistrarKeyDeregistered) + if err := _KeyRegistrar.contract.UnpackLog(event, "KeyDeregistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseKeyDeregistered is a log parse operation binding the contract event 0x28d3c3cee49478ec6fd219cfd685cd15cd01d95cabf69b4b7b57f9eaa3eb6442. +// +// Solidity: event KeyDeregistered((address,uint32) operatorSet, address indexed operator, uint8 curveType) +func (_KeyRegistrar *KeyRegistrarFilterer) ParseKeyDeregistered(log types.Log) (*KeyRegistrarKeyDeregistered, error) { + event := new(KeyRegistrarKeyDeregistered) + if err := _KeyRegistrar.contract.UnpackLog(event, "KeyDeregistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// KeyRegistrarKeyRegisteredIterator is returned from FilterKeyRegistered and is used to iterate over the raw logs and unpacked data for KeyRegistered events raised by the KeyRegistrar contract. +type KeyRegistrarKeyRegisteredIterator struct { + Event *KeyRegistrarKeyRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *KeyRegistrarKeyRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(KeyRegistrarKeyRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(KeyRegistrarKeyRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *KeyRegistrarKeyRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *KeyRegistrarKeyRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// KeyRegistrarKeyRegistered represents a KeyRegistered event raised by the KeyRegistrar contract. +type KeyRegistrarKeyRegistered struct { + OperatorSet OperatorSet + Operator common.Address + CurveType uint8 + Pubkey []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterKeyRegistered is a free log retrieval operation binding the contract event 0x1201ce0c5e577111bce91e907fd99cb183da5edc1e3fb650ca40769e4e9176dd. +// +// Solidity: event KeyRegistered((address,uint32) operatorSet, address indexed operator, uint8 curveType, bytes pubkey) +func (_KeyRegistrar *KeyRegistrarFilterer) FilterKeyRegistered(opts *bind.FilterOpts, operator []common.Address) (*KeyRegistrarKeyRegisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _KeyRegistrar.contract.FilterLogs(opts, "KeyRegistered", operatorRule) + if err != nil { + return nil, err + } + return &KeyRegistrarKeyRegisteredIterator{contract: _KeyRegistrar.contract, event: "KeyRegistered", logs: logs, sub: sub}, nil +} + +// WatchKeyRegistered is a free log subscription operation binding the contract event 0x1201ce0c5e577111bce91e907fd99cb183da5edc1e3fb650ca40769e4e9176dd. +// +// Solidity: event KeyRegistered((address,uint32) operatorSet, address indexed operator, uint8 curveType, bytes pubkey) +func (_KeyRegistrar *KeyRegistrarFilterer) WatchKeyRegistered(opts *bind.WatchOpts, sink chan<- *KeyRegistrarKeyRegistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _KeyRegistrar.contract.WatchLogs(opts, "KeyRegistered", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(KeyRegistrarKeyRegistered) + if err := _KeyRegistrar.contract.UnpackLog(event, "KeyRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseKeyRegistered is a log parse operation binding the contract event 0x1201ce0c5e577111bce91e907fd99cb183da5edc1e3fb650ca40769e4e9176dd. +// +// Solidity: event KeyRegistered((address,uint32) operatorSet, address indexed operator, uint8 curveType, bytes pubkey) +func (_KeyRegistrar *KeyRegistrarFilterer) ParseKeyRegistered(log types.Log) (*KeyRegistrarKeyRegistered, error) { + event := new(KeyRegistrarKeyRegistered) + if err := _KeyRegistrar.contract.UnpackLog(event, "KeyRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// KeyRegistrarOperatorSetConfiguredIterator is returned from FilterOperatorSetConfigured and is used to iterate over the raw logs and unpacked data for OperatorSetConfigured events raised by the KeyRegistrar contract. +type KeyRegistrarOperatorSetConfiguredIterator struct { + Event *KeyRegistrarOperatorSetConfigured // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *KeyRegistrarOperatorSetConfiguredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(KeyRegistrarOperatorSetConfigured) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(KeyRegistrarOperatorSetConfigured) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *KeyRegistrarOperatorSetConfiguredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *KeyRegistrarOperatorSetConfiguredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// KeyRegistrarOperatorSetConfigured represents a OperatorSetConfigured event raised by the KeyRegistrar contract. +type KeyRegistrarOperatorSetConfigured struct { + OperatorSet OperatorSet + CurveType uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSetConfigured is a free log retrieval operation binding the contract event 0xb2266cb118e57095fcdbedb24dabd9fc9f5127e2dbedf62ce6ee71696fb8b6e7. +// +// Solidity: event OperatorSetConfigured((address,uint32) operatorSet, uint8 curveType) +func (_KeyRegistrar *KeyRegistrarFilterer) FilterOperatorSetConfigured(opts *bind.FilterOpts) (*KeyRegistrarOperatorSetConfiguredIterator, error) { + + logs, sub, err := _KeyRegistrar.contract.FilterLogs(opts, "OperatorSetConfigured") + if err != nil { + return nil, err + } + return &KeyRegistrarOperatorSetConfiguredIterator{contract: _KeyRegistrar.contract, event: "OperatorSetConfigured", logs: logs, sub: sub}, nil +} + +// WatchOperatorSetConfigured is a free log subscription operation binding the contract event 0xb2266cb118e57095fcdbedb24dabd9fc9f5127e2dbedf62ce6ee71696fb8b6e7. +// +// Solidity: event OperatorSetConfigured((address,uint32) operatorSet, uint8 curveType) +func (_KeyRegistrar *KeyRegistrarFilterer) WatchOperatorSetConfigured(opts *bind.WatchOpts, sink chan<- *KeyRegistrarOperatorSetConfigured) (event.Subscription, error) { + + logs, sub, err := _KeyRegistrar.contract.WatchLogs(opts, "OperatorSetConfigured") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(KeyRegistrarOperatorSetConfigured) + if err := _KeyRegistrar.contract.UnpackLog(event, "OperatorSetConfigured", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorSetConfigured is a log parse operation binding the contract event 0xb2266cb118e57095fcdbedb24dabd9fc9f5127e2dbedf62ce6ee71696fb8b6e7. +// +// Solidity: event OperatorSetConfigured((address,uint32) operatorSet, uint8 curveType) +func (_KeyRegistrar *KeyRegistrarFilterer) ParseOperatorSetConfigured(log types.Log) (*KeyRegistrarOperatorSetConfigured, error) { + event := new(KeyRegistrarOperatorSetConfigured) + if err := _KeyRegistrar.contract.UnpackLog(event, "OperatorSetConfigured", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/KeyRegistrarStorage/binding.go b/pkg/bindings/KeyRegistrarStorage/binding.go new file mode 100644 index 0000000000..acab535f80 --- /dev/null +++ b/pkg/bindings/KeyRegistrarStorage/binding.go @@ -0,0 +1,1149 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package KeyRegistrarStorage + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// BN254G1Point is an auto generated low-level Go binding around an user-defined struct. +type BN254G1Point struct { + X *big.Int + Y *big.Int +} + +// BN254G2Point is an auto generated low-level Go binding around an user-defined struct. +type BN254G2Point struct { + X [2]*big.Int + Y [2]*big.Int +} + +// OperatorSet is an auto generated low-level Go binding around an user-defined struct. +type OperatorSet struct { + Avs common.Address + Id uint32 +} + +// KeyRegistrarStorageMetaData contains all meta data concerning the KeyRegistrarStorage contract. +var KeyRegistrarStorageMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkKey\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"configureOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterKey\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBN254Key\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"g1Point\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"g2Point\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getECDSAAddress\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getECDSAKey\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getKeyHash\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetCurveType\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isKeyGloballyRegistered\",\"inputs\":[{\"name\":\"keyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRegistered\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerKey\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"AggregateBN254KeyUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"newAggregateKey\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"KeyDeregistered\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"curveType\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"KeyRegistered\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"curveType\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"},{\"name\":\"pubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetConfigured\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"curveType\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ConfigurationAlreadySet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidKeyFormat\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidKeypair\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"KeyAlreadyRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"KeyNotFound\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OperatorSetNotConfigured\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroPubkey\",\"inputs\":[]}]", +} + +// KeyRegistrarStorageABI is the input ABI used to generate the binding from. +// Deprecated: Use KeyRegistrarStorageMetaData.ABI instead. +var KeyRegistrarStorageABI = KeyRegistrarStorageMetaData.ABI + +// KeyRegistrarStorage is an auto generated Go binding around an Ethereum contract. +type KeyRegistrarStorage struct { + KeyRegistrarStorageCaller // Read-only binding to the contract + KeyRegistrarStorageTransactor // Write-only binding to the contract + KeyRegistrarStorageFilterer // Log filterer for contract events +} + +// KeyRegistrarStorageCaller is an auto generated read-only Go binding around an Ethereum contract. +type KeyRegistrarStorageCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// KeyRegistrarStorageTransactor is an auto generated write-only Go binding around an Ethereum contract. +type KeyRegistrarStorageTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// KeyRegistrarStorageFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type KeyRegistrarStorageFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// KeyRegistrarStorageSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type KeyRegistrarStorageSession struct { + Contract *KeyRegistrarStorage // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// KeyRegistrarStorageCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type KeyRegistrarStorageCallerSession struct { + Contract *KeyRegistrarStorageCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// KeyRegistrarStorageTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type KeyRegistrarStorageTransactorSession struct { + Contract *KeyRegistrarStorageTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// KeyRegistrarStorageRaw is an auto generated low-level Go binding around an Ethereum contract. +type KeyRegistrarStorageRaw struct { + Contract *KeyRegistrarStorage // Generic contract binding to access the raw methods on +} + +// KeyRegistrarStorageCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type KeyRegistrarStorageCallerRaw struct { + Contract *KeyRegistrarStorageCaller // Generic read-only contract binding to access the raw methods on +} + +// KeyRegistrarStorageTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type KeyRegistrarStorageTransactorRaw struct { + Contract *KeyRegistrarStorageTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewKeyRegistrarStorage creates a new instance of KeyRegistrarStorage, bound to a specific deployed contract. +func NewKeyRegistrarStorage(address common.Address, backend bind.ContractBackend) (*KeyRegistrarStorage, error) { + contract, err := bindKeyRegistrarStorage(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &KeyRegistrarStorage{KeyRegistrarStorageCaller: KeyRegistrarStorageCaller{contract: contract}, KeyRegistrarStorageTransactor: KeyRegistrarStorageTransactor{contract: contract}, KeyRegistrarStorageFilterer: KeyRegistrarStorageFilterer{contract: contract}}, nil +} + +// NewKeyRegistrarStorageCaller creates a new read-only instance of KeyRegistrarStorage, bound to a specific deployed contract. +func NewKeyRegistrarStorageCaller(address common.Address, caller bind.ContractCaller) (*KeyRegistrarStorageCaller, error) { + contract, err := bindKeyRegistrarStorage(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &KeyRegistrarStorageCaller{contract: contract}, nil +} + +// NewKeyRegistrarStorageTransactor creates a new write-only instance of KeyRegistrarStorage, bound to a specific deployed contract. +func NewKeyRegistrarStorageTransactor(address common.Address, transactor bind.ContractTransactor) (*KeyRegistrarStorageTransactor, error) { + contract, err := bindKeyRegistrarStorage(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &KeyRegistrarStorageTransactor{contract: contract}, nil +} + +// NewKeyRegistrarStorageFilterer creates a new log filterer instance of KeyRegistrarStorage, bound to a specific deployed contract. +func NewKeyRegistrarStorageFilterer(address common.Address, filterer bind.ContractFilterer) (*KeyRegistrarStorageFilterer, error) { + contract, err := bindKeyRegistrarStorage(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &KeyRegistrarStorageFilterer{contract: contract}, nil +} + +// bindKeyRegistrarStorage binds a generic wrapper to an already deployed contract. +func bindKeyRegistrarStorage(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := KeyRegistrarStorageMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_KeyRegistrarStorage *KeyRegistrarStorageRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _KeyRegistrarStorage.Contract.KeyRegistrarStorageCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_KeyRegistrarStorage *KeyRegistrarStorageRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _KeyRegistrarStorage.Contract.KeyRegistrarStorageTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_KeyRegistrarStorage *KeyRegistrarStorageRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _KeyRegistrarStorage.Contract.KeyRegistrarStorageTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_KeyRegistrarStorage *KeyRegistrarStorageCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _KeyRegistrarStorage.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_KeyRegistrarStorage *KeyRegistrarStorageTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _KeyRegistrarStorage.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_KeyRegistrarStorage *KeyRegistrarStorageTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _KeyRegistrarStorage.Contract.contract.Transact(opts, method, params...) +} + +// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. +// +// Solidity: function allocationManager() view returns(address) +func (_KeyRegistrarStorage *KeyRegistrarStorageCaller) AllocationManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _KeyRegistrarStorage.contract.Call(opts, &out, "allocationManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. +// +// Solidity: function allocationManager() view returns(address) +func (_KeyRegistrarStorage *KeyRegistrarStorageSession) AllocationManager() (common.Address, error) { + return _KeyRegistrarStorage.Contract.AllocationManager(&_KeyRegistrarStorage.CallOpts) +} + +// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7. +// +// Solidity: function allocationManager() view returns(address) +func (_KeyRegistrarStorage *KeyRegistrarStorageCallerSession) AllocationManager() (common.Address, error) { + return _KeyRegistrarStorage.Contract.AllocationManager(&_KeyRegistrarStorage.CallOpts) +} + +// CheckKey is a free data retrieval call binding the contract method 0x0a6ac264. +// +// Solidity: function checkKey((address,uint32) operatorSet, address operator) view returns(bool) +func (_KeyRegistrarStorage *KeyRegistrarStorageCaller) CheckKey(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) (bool, error) { + var out []interface{} + err := _KeyRegistrarStorage.contract.Call(opts, &out, "checkKey", operatorSet, operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// CheckKey is a free data retrieval call binding the contract method 0x0a6ac264. +// +// Solidity: function checkKey((address,uint32) operatorSet, address operator) view returns(bool) +func (_KeyRegistrarStorage *KeyRegistrarStorageSession) CheckKey(operatorSet OperatorSet, operator common.Address) (bool, error) { + return _KeyRegistrarStorage.Contract.CheckKey(&_KeyRegistrarStorage.CallOpts, operatorSet, operator) +} + +// CheckKey is a free data retrieval call binding the contract method 0x0a6ac264. +// +// Solidity: function checkKey((address,uint32) operatorSet, address operator) view returns(bool) +func (_KeyRegistrarStorage *KeyRegistrarStorageCallerSession) CheckKey(operatorSet OperatorSet, operator common.Address) (bool, error) { + return _KeyRegistrarStorage.Contract.CheckKey(&_KeyRegistrarStorage.CallOpts, operatorSet, operator) +} + +// GetBN254Key is a free data retrieval call binding the contract method 0x9a43e3fb. +// +// Solidity: function getBN254Key((address,uint32) operatorSet, address operator) view returns((uint256,uint256) g1Point, (uint256[2],uint256[2]) g2Point) +func (_KeyRegistrarStorage *KeyRegistrarStorageCaller) GetBN254Key(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) (struct { + G1Point BN254G1Point + G2Point BN254G2Point +}, error) { + var out []interface{} + err := _KeyRegistrarStorage.contract.Call(opts, &out, "getBN254Key", operatorSet, operator) + + outstruct := new(struct { + G1Point BN254G1Point + G2Point BN254G2Point + }) + if err != nil { + return *outstruct, err + } + + outstruct.G1Point = *abi.ConvertType(out[0], new(BN254G1Point)).(*BN254G1Point) + outstruct.G2Point = *abi.ConvertType(out[1], new(BN254G2Point)).(*BN254G2Point) + + return *outstruct, err + +} + +// GetBN254Key is a free data retrieval call binding the contract method 0x9a43e3fb. +// +// Solidity: function getBN254Key((address,uint32) operatorSet, address operator) view returns((uint256,uint256) g1Point, (uint256[2],uint256[2]) g2Point) +func (_KeyRegistrarStorage *KeyRegistrarStorageSession) GetBN254Key(operatorSet OperatorSet, operator common.Address) (struct { + G1Point BN254G1Point + G2Point BN254G2Point +}, error) { + return _KeyRegistrarStorage.Contract.GetBN254Key(&_KeyRegistrarStorage.CallOpts, operatorSet, operator) +} + +// GetBN254Key is a free data retrieval call binding the contract method 0x9a43e3fb. +// +// Solidity: function getBN254Key((address,uint32) operatorSet, address operator) view returns((uint256,uint256) g1Point, (uint256[2],uint256[2]) g2Point) +func (_KeyRegistrarStorage *KeyRegistrarStorageCallerSession) GetBN254Key(operatorSet OperatorSet, operator common.Address) (struct { + G1Point BN254G1Point + G2Point BN254G2Point +}, error) { + return _KeyRegistrarStorage.Contract.GetBN254Key(&_KeyRegistrarStorage.CallOpts, operatorSet, operator) +} + +// GetECDSAAddress is a free data retrieval call binding the contract method 0x3b32a7bd. +// +// Solidity: function getECDSAAddress((address,uint32) operatorSet, address operator) view returns(address) +func (_KeyRegistrarStorage *KeyRegistrarStorageCaller) GetECDSAAddress(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) (common.Address, error) { + var out []interface{} + err := _KeyRegistrarStorage.contract.Call(opts, &out, "getECDSAAddress", operatorSet, operator) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetECDSAAddress is a free data retrieval call binding the contract method 0x3b32a7bd. +// +// Solidity: function getECDSAAddress((address,uint32) operatorSet, address operator) view returns(address) +func (_KeyRegistrarStorage *KeyRegistrarStorageSession) GetECDSAAddress(operatorSet OperatorSet, operator common.Address) (common.Address, error) { + return _KeyRegistrarStorage.Contract.GetECDSAAddress(&_KeyRegistrarStorage.CallOpts, operatorSet, operator) +} + +// GetECDSAAddress is a free data retrieval call binding the contract method 0x3b32a7bd. +// +// Solidity: function getECDSAAddress((address,uint32) operatorSet, address operator) view returns(address) +func (_KeyRegistrarStorage *KeyRegistrarStorageCallerSession) GetECDSAAddress(operatorSet OperatorSet, operator common.Address) (common.Address, error) { + return _KeyRegistrarStorage.Contract.GetECDSAAddress(&_KeyRegistrarStorage.CallOpts, operatorSet, operator) +} + +// GetECDSAKey is a free data retrieval call binding the contract method 0xaa165c30. +// +// Solidity: function getECDSAKey((address,uint32) operatorSet, address operator) view returns(bytes) +func (_KeyRegistrarStorage *KeyRegistrarStorageCaller) GetECDSAKey(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) ([]byte, error) { + var out []interface{} + err := _KeyRegistrarStorage.contract.Call(opts, &out, "getECDSAKey", operatorSet, operator) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// GetECDSAKey is a free data retrieval call binding the contract method 0xaa165c30. +// +// Solidity: function getECDSAKey((address,uint32) operatorSet, address operator) view returns(bytes) +func (_KeyRegistrarStorage *KeyRegistrarStorageSession) GetECDSAKey(operatorSet OperatorSet, operator common.Address) ([]byte, error) { + return _KeyRegistrarStorage.Contract.GetECDSAKey(&_KeyRegistrarStorage.CallOpts, operatorSet, operator) +} + +// GetECDSAKey is a free data retrieval call binding the contract method 0xaa165c30. +// +// Solidity: function getECDSAKey((address,uint32) operatorSet, address operator) view returns(bytes) +func (_KeyRegistrarStorage *KeyRegistrarStorageCallerSession) GetECDSAKey(operatorSet OperatorSet, operator common.Address) ([]byte, error) { + return _KeyRegistrarStorage.Contract.GetECDSAKey(&_KeyRegistrarStorage.CallOpts, operatorSet, operator) +} + +// GetKeyHash is a free data retrieval call binding the contract method 0xea194e2e. +// +// Solidity: function getKeyHash((address,uint32) operatorSet, address operator) view returns(bytes32) +func (_KeyRegistrarStorage *KeyRegistrarStorageCaller) GetKeyHash(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) ([32]byte, error) { + var out []interface{} + err := _KeyRegistrarStorage.contract.Call(opts, &out, "getKeyHash", operatorSet, operator) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetKeyHash is a free data retrieval call binding the contract method 0xea194e2e. +// +// Solidity: function getKeyHash((address,uint32) operatorSet, address operator) view returns(bytes32) +func (_KeyRegistrarStorage *KeyRegistrarStorageSession) GetKeyHash(operatorSet OperatorSet, operator common.Address) ([32]byte, error) { + return _KeyRegistrarStorage.Contract.GetKeyHash(&_KeyRegistrarStorage.CallOpts, operatorSet, operator) +} + +// GetKeyHash is a free data retrieval call binding the contract method 0xea194e2e. +// +// Solidity: function getKeyHash((address,uint32) operatorSet, address operator) view returns(bytes32) +func (_KeyRegistrarStorage *KeyRegistrarStorageCallerSession) GetKeyHash(operatorSet OperatorSet, operator common.Address) ([32]byte, error) { + return _KeyRegistrarStorage.Contract.GetKeyHash(&_KeyRegistrarStorage.CallOpts, operatorSet, operator) +} + +// GetOperatorSetCurveType is a free data retrieval call binding the contract method 0x7cffe48c. +// +// Solidity: function getOperatorSetCurveType((address,uint32) operatorSet) view returns(uint8) +func (_KeyRegistrarStorage *KeyRegistrarStorageCaller) GetOperatorSetCurveType(opts *bind.CallOpts, operatorSet OperatorSet) (uint8, error) { + var out []interface{} + err := _KeyRegistrarStorage.contract.Call(opts, &out, "getOperatorSetCurveType", operatorSet) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// GetOperatorSetCurveType is a free data retrieval call binding the contract method 0x7cffe48c. +// +// Solidity: function getOperatorSetCurveType((address,uint32) operatorSet) view returns(uint8) +func (_KeyRegistrarStorage *KeyRegistrarStorageSession) GetOperatorSetCurveType(operatorSet OperatorSet) (uint8, error) { + return _KeyRegistrarStorage.Contract.GetOperatorSetCurveType(&_KeyRegistrarStorage.CallOpts, operatorSet) +} + +// GetOperatorSetCurveType is a free data retrieval call binding the contract method 0x7cffe48c. +// +// Solidity: function getOperatorSetCurveType((address,uint32) operatorSet) view returns(uint8) +func (_KeyRegistrarStorage *KeyRegistrarStorageCallerSession) GetOperatorSetCurveType(operatorSet OperatorSet) (uint8, error) { + return _KeyRegistrarStorage.Contract.GetOperatorSetCurveType(&_KeyRegistrarStorage.CallOpts, operatorSet) +} + +// IsKeyGloballyRegistered is a free data retrieval call binding the contract method 0xdab42d7e. +// +// Solidity: function isKeyGloballyRegistered(bytes32 keyHash) view returns(bool) +func (_KeyRegistrarStorage *KeyRegistrarStorageCaller) IsKeyGloballyRegistered(opts *bind.CallOpts, keyHash [32]byte) (bool, error) { + var out []interface{} + err := _KeyRegistrarStorage.contract.Call(opts, &out, "isKeyGloballyRegistered", keyHash) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsKeyGloballyRegistered is a free data retrieval call binding the contract method 0xdab42d7e. +// +// Solidity: function isKeyGloballyRegistered(bytes32 keyHash) view returns(bool) +func (_KeyRegistrarStorage *KeyRegistrarStorageSession) IsKeyGloballyRegistered(keyHash [32]byte) (bool, error) { + return _KeyRegistrarStorage.Contract.IsKeyGloballyRegistered(&_KeyRegistrarStorage.CallOpts, keyHash) +} + +// IsKeyGloballyRegistered is a free data retrieval call binding the contract method 0xdab42d7e. +// +// Solidity: function isKeyGloballyRegistered(bytes32 keyHash) view returns(bool) +func (_KeyRegistrarStorage *KeyRegistrarStorageCallerSession) IsKeyGloballyRegistered(keyHash [32]byte) (bool, error) { + return _KeyRegistrarStorage.Contract.IsKeyGloballyRegistered(&_KeyRegistrarStorage.CallOpts, keyHash) +} + +// IsRegistered is a free data retrieval call binding the contract method 0xbd30a0b9. +// +// Solidity: function isRegistered((address,uint32) operatorSet, address operator) view returns(bool) +func (_KeyRegistrarStorage *KeyRegistrarStorageCaller) IsRegistered(opts *bind.CallOpts, operatorSet OperatorSet, operator common.Address) (bool, error) { + var out []interface{} + err := _KeyRegistrarStorage.contract.Call(opts, &out, "isRegistered", operatorSet, operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsRegistered is a free data retrieval call binding the contract method 0xbd30a0b9. +// +// Solidity: function isRegistered((address,uint32) operatorSet, address operator) view returns(bool) +func (_KeyRegistrarStorage *KeyRegistrarStorageSession) IsRegistered(operatorSet OperatorSet, operator common.Address) (bool, error) { + return _KeyRegistrarStorage.Contract.IsRegistered(&_KeyRegistrarStorage.CallOpts, operatorSet, operator) +} + +// IsRegistered is a free data retrieval call binding the contract method 0xbd30a0b9. +// +// Solidity: function isRegistered((address,uint32) operatorSet, address operator) view returns(bool) +func (_KeyRegistrarStorage *KeyRegistrarStorageCallerSession) IsRegistered(operatorSet OperatorSet, operator common.Address) (bool, error) { + return _KeyRegistrarStorage.Contract.IsRegistered(&_KeyRegistrarStorage.CallOpts, operatorSet, operator) +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_KeyRegistrarStorage *KeyRegistrarStorageCaller) Version(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _KeyRegistrarStorage.contract.Call(opts, &out, "version") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_KeyRegistrarStorage *KeyRegistrarStorageSession) Version() (string, error) { + return _KeyRegistrarStorage.Contract.Version(&_KeyRegistrarStorage.CallOpts) +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_KeyRegistrarStorage *KeyRegistrarStorageCallerSession) Version() (string, error) { + return _KeyRegistrarStorage.Contract.Version(&_KeyRegistrarStorage.CallOpts) +} + +// ConfigureOperatorSet is a paid mutator transaction binding the contract method 0xea0d8149. +// +// Solidity: function configureOperatorSet((address,uint32) operatorSet, uint8 curveType) returns() +func (_KeyRegistrarStorage *KeyRegistrarStorageTransactor) ConfigureOperatorSet(opts *bind.TransactOpts, operatorSet OperatorSet, curveType uint8) (*types.Transaction, error) { + return _KeyRegistrarStorage.contract.Transact(opts, "configureOperatorSet", operatorSet, curveType) +} + +// ConfigureOperatorSet is a paid mutator transaction binding the contract method 0xea0d8149. +// +// Solidity: function configureOperatorSet((address,uint32) operatorSet, uint8 curveType) returns() +func (_KeyRegistrarStorage *KeyRegistrarStorageSession) ConfigureOperatorSet(operatorSet OperatorSet, curveType uint8) (*types.Transaction, error) { + return _KeyRegistrarStorage.Contract.ConfigureOperatorSet(&_KeyRegistrarStorage.TransactOpts, operatorSet, curveType) +} + +// ConfigureOperatorSet is a paid mutator transaction binding the contract method 0xea0d8149. +// +// Solidity: function configureOperatorSet((address,uint32) operatorSet, uint8 curveType) returns() +func (_KeyRegistrarStorage *KeyRegistrarStorageTransactorSession) ConfigureOperatorSet(operatorSet OperatorSet, curveType uint8) (*types.Transaction, error) { + return _KeyRegistrarStorage.Contract.ConfigureOperatorSet(&_KeyRegistrarStorage.TransactOpts, operatorSet, curveType) +} + +// DeregisterKey is a paid mutator transaction binding the contract method 0x87ab86f4. +// +// Solidity: function deregisterKey(address operator, (address,uint32) operatorSet) returns() +func (_KeyRegistrarStorage *KeyRegistrarStorageTransactor) DeregisterKey(opts *bind.TransactOpts, operator common.Address, operatorSet OperatorSet) (*types.Transaction, error) { + return _KeyRegistrarStorage.contract.Transact(opts, "deregisterKey", operator, operatorSet) +} + +// DeregisterKey is a paid mutator transaction binding the contract method 0x87ab86f4. +// +// Solidity: function deregisterKey(address operator, (address,uint32) operatorSet) returns() +func (_KeyRegistrarStorage *KeyRegistrarStorageSession) DeregisterKey(operator common.Address, operatorSet OperatorSet) (*types.Transaction, error) { + return _KeyRegistrarStorage.Contract.DeregisterKey(&_KeyRegistrarStorage.TransactOpts, operator, operatorSet) +} + +// DeregisterKey is a paid mutator transaction binding the contract method 0x87ab86f4. +// +// Solidity: function deregisterKey(address operator, (address,uint32) operatorSet) returns() +func (_KeyRegistrarStorage *KeyRegistrarStorageTransactorSession) DeregisterKey(operator common.Address, operatorSet OperatorSet) (*types.Transaction, error) { + return _KeyRegistrarStorage.Contract.DeregisterKey(&_KeyRegistrarStorage.TransactOpts, operator, operatorSet) +} + +// RegisterKey is a paid mutator transaction binding the contract method 0xd40cda16. +// +// Solidity: function registerKey(address operator, (address,uint32) operatorSet, bytes pubkey, bytes signature) returns() +func (_KeyRegistrarStorage *KeyRegistrarStorageTransactor) RegisterKey(opts *bind.TransactOpts, operator common.Address, operatorSet OperatorSet, pubkey []byte, signature []byte) (*types.Transaction, error) { + return _KeyRegistrarStorage.contract.Transact(opts, "registerKey", operator, operatorSet, pubkey, signature) +} + +// RegisterKey is a paid mutator transaction binding the contract method 0xd40cda16. +// +// Solidity: function registerKey(address operator, (address,uint32) operatorSet, bytes pubkey, bytes signature) returns() +func (_KeyRegistrarStorage *KeyRegistrarStorageSession) RegisterKey(operator common.Address, operatorSet OperatorSet, pubkey []byte, signature []byte) (*types.Transaction, error) { + return _KeyRegistrarStorage.Contract.RegisterKey(&_KeyRegistrarStorage.TransactOpts, operator, operatorSet, pubkey, signature) +} + +// RegisterKey is a paid mutator transaction binding the contract method 0xd40cda16. +// +// Solidity: function registerKey(address operator, (address,uint32) operatorSet, bytes pubkey, bytes signature) returns() +func (_KeyRegistrarStorage *KeyRegistrarStorageTransactorSession) RegisterKey(operator common.Address, operatorSet OperatorSet, pubkey []byte, signature []byte) (*types.Transaction, error) { + return _KeyRegistrarStorage.Contract.RegisterKey(&_KeyRegistrarStorage.TransactOpts, operator, operatorSet, pubkey, signature) +} + +// KeyRegistrarStorageAggregateBN254KeyUpdatedIterator is returned from FilterAggregateBN254KeyUpdated and is used to iterate over the raw logs and unpacked data for AggregateBN254KeyUpdated events raised by the KeyRegistrarStorage contract. +type KeyRegistrarStorageAggregateBN254KeyUpdatedIterator struct { + Event *KeyRegistrarStorageAggregateBN254KeyUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *KeyRegistrarStorageAggregateBN254KeyUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(KeyRegistrarStorageAggregateBN254KeyUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(KeyRegistrarStorageAggregateBN254KeyUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *KeyRegistrarStorageAggregateBN254KeyUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *KeyRegistrarStorageAggregateBN254KeyUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// KeyRegistrarStorageAggregateBN254KeyUpdated represents a AggregateBN254KeyUpdated event raised by the KeyRegistrarStorage contract. +type KeyRegistrarStorageAggregateBN254KeyUpdated struct { + OperatorSet OperatorSet + NewAggregateKey BN254G1Point + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAggregateBN254KeyUpdated is a free log retrieval operation binding the contract event 0xdfa2f59e55747ba641fbdff4eb78577de8789d605920d5be4a74ee3a6470d1d1. +// +// Solidity: event AggregateBN254KeyUpdated((address,uint32) operatorSet, (uint256,uint256) newAggregateKey) +func (_KeyRegistrarStorage *KeyRegistrarStorageFilterer) FilterAggregateBN254KeyUpdated(opts *bind.FilterOpts) (*KeyRegistrarStorageAggregateBN254KeyUpdatedIterator, error) { + + logs, sub, err := _KeyRegistrarStorage.contract.FilterLogs(opts, "AggregateBN254KeyUpdated") + if err != nil { + return nil, err + } + return &KeyRegistrarStorageAggregateBN254KeyUpdatedIterator{contract: _KeyRegistrarStorage.contract, event: "AggregateBN254KeyUpdated", logs: logs, sub: sub}, nil +} + +// WatchAggregateBN254KeyUpdated is a free log subscription operation binding the contract event 0xdfa2f59e55747ba641fbdff4eb78577de8789d605920d5be4a74ee3a6470d1d1. +// +// Solidity: event AggregateBN254KeyUpdated((address,uint32) operatorSet, (uint256,uint256) newAggregateKey) +func (_KeyRegistrarStorage *KeyRegistrarStorageFilterer) WatchAggregateBN254KeyUpdated(opts *bind.WatchOpts, sink chan<- *KeyRegistrarStorageAggregateBN254KeyUpdated) (event.Subscription, error) { + + logs, sub, err := _KeyRegistrarStorage.contract.WatchLogs(opts, "AggregateBN254KeyUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(KeyRegistrarStorageAggregateBN254KeyUpdated) + if err := _KeyRegistrarStorage.contract.UnpackLog(event, "AggregateBN254KeyUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAggregateBN254KeyUpdated is a log parse operation binding the contract event 0xdfa2f59e55747ba641fbdff4eb78577de8789d605920d5be4a74ee3a6470d1d1. +// +// Solidity: event AggregateBN254KeyUpdated((address,uint32) operatorSet, (uint256,uint256) newAggregateKey) +func (_KeyRegistrarStorage *KeyRegistrarStorageFilterer) ParseAggregateBN254KeyUpdated(log types.Log) (*KeyRegistrarStorageAggregateBN254KeyUpdated, error) { + event := new(KeyRegistrarStorageAggregateBN254KeyUpdated) + if err := _KeyRegistrarStorage.contract.UnpackLog(event, "AggregateBN254KeyUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// KeyRegistrarStorageKeyDeregisteredIterator is returned from FilterKeyDeregistered and is used to iterate over the raw logs and unpacked data for KeyDeregistered events raised by the KeyRegistrarStorage contract. +type KeyRegistrarStorageKeyDeregisteredIterator struct { + Event *KeyRegistrarStorageKeyDeregistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *KeyRegistrarStorageKeyDeregisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(KeyRegistrarStorageKeyDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(KeyRegistrarStorageKeyDeregistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *KeyRegistrarStorageKeyDeregisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *KeyRegistrarStorageKeyDeregisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// KeyRegistrarStorageKeyDeregistered represents a KeyDeregistered event raised by the KeyRegistrarStorage contract. +type KeyRegistrarStorageKeyDeregistered struct { + OperatorSet OperatorSet + Operator common.Address + CurveType uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterKeyDeregistered is a free log retrieval operation binding the contract event 0x28d3c3cee49478ec6fd219cfd685cd15cd01d95cabf69b4b7b57f9eaa3eb6442. +// +// Solidity: event KeyDeregistered((address,uint32) operatorSet, address indexed operator, uint8 curveType) +func (_KeyRegistrarStorage *KeyRegistrarStorageFilterer) FilterKeyDeregistered(opts *bind.FilterOpts, operator []common.Address) (*KeyRegistrarStorageKeyDeregisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _KeyRegistrarStorage.contract.FilterLogs(opts, "KeyDeregistered", operatorRule) + if err != nil { + return nil, err + } + return &KeyRegistrarStorageKeyDeregisteredIterator{contract: _KeyRegistrarStorage.contract, event: "KeyDeregistered", logs: logs, sub: sub}, nil +} + +// WatchKeyDeregistered is a free log subscription operation binding the contract event 0x28d3c3cee49478ec6fd219cfd685cd15cd01d95cabf69b4b7b57f9eaa3eb6442. +// +// Solidity: event KeyDeregistered((address,uint32) operatorSet, address indexed operator, uint8 curveType) +func (_KeyRegistrarStorage *KeyRegistrarStorageFilterer) WatchKeyDeregistered(opts *bind.WatchOpts, sink chan<- *KeyRegistrarStorageKeyDeregistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _KeyRegistrarStorage.contract.WatchLogs(opts, "KeyDeregistered", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(KeyRegistrarStorageKeyDeregistered) + if err := _KeyRegistrarStorage.contract.UnpackLog(event, "KeyDeregistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseKeyDeregistered is a log parse operation binding the contract event 0x28d3c3cee49478ec6fd219cfd685cd15cd01d95cabf69b4b7b57f9eaa3eb6442. +// +// Solidity: event KeyDeregistered((address,uint32) operatorSet, address indexed operator, uint8 curveType) +func (_KeyRegistrarStorage *KeyRegistrarStorageFilterer) ParseKeyDeregistered(log types.Log) (*KeyRegistrarStorageKeyDeregistered, error) { + event := new(KeyRegistrarStorageKeyDeregistered) + if err := _KeyRegistrarStorage.contract.UnpackLog(event, "KeyDeregistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// KeyRegistrarStorageKeyRegisteredIterator is returned from FilterKeyRegistered and is used to iterate over the raw logs and unpacked data for KeyRegistered events raised by the KeyRegistrarStorage contract. +type KeyRegistrarStorageKeyRegisteredIterator struct { + Event *KeyRegistrarStorageKeyRegistered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *KeyRegistrarStorageKeyRegisteredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(KeyRegistrarStorageKeyRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(KeyRegistrarStorageKeyRegistered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *KeyRegistrarStorageKeyRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *KeyRegistrarStorageKeyRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// KeyRegistrarStorageKeyRegistered represents a KeyRegistered event raised by the KeyRegistrarStorage contract. +type KeyRegistrarStorageKeyRegistered struct { + OperatorSet OperatorSet + Operator common.Address + CurveType uint8 + Pubkey []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterKeyRegistered is a free log retrieval operation binding the contract event 0x1201ce0c5e577111bce91e907fd99cb183da5edc1e3fb650ca40769e4e9176dd. +// +// Solidity: event KeyRegistered((address,uint32) operatorSet, address indexed operator, uint8 curveType, bytes pubkey) +func (_KeyRegistrarStorage *KeyRegistrarStorageFilterer) FilterKeyRegistered(opts *bind.FilterOpts, operator []common.Address) (*KeyRegistrarStorageKeyRegisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _KeyRegistrarStorage.contract.FilterLogs(opts, "KeyRegistered", operatorRule) + if err != nil { + return nil, err + } + return &KeyRegistrarStorageKeyRegisteredIterator{contract: _KeyRegistrarStorage.contract, event: "KeyRegistered", logs: logs, sub: sub}, nil +} + +// WatchKeyRegistered is a free log subscription operation binding the contract event 0x1201ce0c5e577111bce91e907fd99cb183da5edc1e3fb650ca40769e4e9176dd. +// +// Solidity: event KeyRegistered((address,uint32) operatorSet, address indexed operator, uint8 curveType, bytes pubkey) +func (_KeyRegistrarStorage *KeyRegistrarStorageFilterer) WatchKeyRegistered(opts *bind.WatchOpts, sink chan<- *KeyRegistrarStorageKeyRegistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _KeyRegistrarStorage.contract.WatchLogs(opts, "KeyRegistered", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(KeyRegistrarStorageKeyRegistered) + if err := _KeyRegistrarStorage.contract.UnpackLog(event, "KeyRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseKeyRegistered is a log parse operation binding the contract event 0x1201ce0c5e577111bce91e907fd99cb183da5edc1e3fb650ca40769e4e9176dd. +// +// Solidity: event KeyRegistered((address,uint32) operatorSet, address indexed operator, uint8 curveType, bytes pubkey) +func (_KeyRegistrarStorage *KeyRegistrarStorageFilterer) ParseKeyRegistered(log types.Log) (*KeyRegistrarStorageKeyRegistered, error) { + event := new(KeyRegistrarStorageKeyRegistered) + if err := _KeyRegistrarStorage.contract.UnpackLog(event, "KeyRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// KeyRegistrarStorageOperatorSetConfiguredIterator is returned from FilterOperatorSetConfigured and is used to iterate over the raw logs and unpacked data for OperatorSetConfigured events raised by the KeyRegistrarStorage contract. +type KeyRegistrarStorageOperatorSetConfiguredIterator struct { + Event *KeyRegistrarStorageOperatorSetConfigured // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *KeyRegistrarStorageOperatorSetConfiguredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(KeyRegistrarStorageOperatorSetConfigured) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(KeyRegistrarStorageOperatorSetConfigured) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *KeyRegistrarStorageOperatorSetConfiguredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *KeyRegistrarStorageOperatorSetConfiguredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// KeyRegistrarStorageOperatorSetConfigured represents a OperatorSetConfigured event raised by the KeyRegistrarStorage contract. +type KeyRegistrarStorageOperatorSetConfigured struct { + OperatorSet OperatorSet + CurveType uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSetConfigured is a free log retrieval operation binding the contract event 0xb2266cb118e57095fcdbedb24dabd9fc9f5127e2dbedf62ce6ee71696fb8b6e7. +// +// Solidity: event OperatorSetConfigured((address,uint32) operatorSet, uint8 curveType) +func (_KeyRegistrarStorage *KeyRegistrarStorageFilterer) FilterOperatorSetConfigured(opts *bind.FilterOpts) (*KeyRegistrarStorageOperatorSetConfiguredIterator, error) { + + logs, sub, err := _KeyRegistrarStorage.contract.FilterLogs(opts, "OperatorSetConfigured") + if err != nil { + return nil, err + } + return &KeyRegistrarStorageOperatorSetConfiguredIterator{contract: _KeyRegistrarStorage.contract, event: "OperatorSetConfigured", logs: logs, sub: sub}, nil +} + +// WatchOperatorSetConfigured is a free log subscription operation binding the contract event 0xb2266cb118e57095fcdbedb24dabd9fc9f5127e2dbedf62ce6ee71696fb8b6e7. +// +// Solidity: event OperatorSetConfigured((address,uint32) operatorSet, uint8 curveType) +func (_KeyRegistrarStorage *KeyRegistrarStorageFilterer) WatchOperatorSetConfigured(opts *bind.WatchOpts, sink chan<- *KeyRegistrarStorageOperatorSetConfigured) (event.Subscription, error) { + + logs, sub, err := _KeyRegistrarStorage.contract.WatchLogs(opts, "OperatorSetConfigured") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(KeyRegistrarStorageOperatorSetConfigured) + if err := _KeyRegistrarStorage.contract.UnpackLog(event, "OperatorSetConfigured", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorSetConfigured is a log parse operation binding the contract event 0xb2266cb118e57095fcdbedb24dabd9fc9f5127e2dbedf62ce6ee71696fb8b6e7. +// +// Solidity: event OperatorSetConfigured((address,uint32) operatorSet, uint8 curveType) +func (_KeyRegistrarStorage *KeyRegistrarStorageFilterer) ParseOperatorSetConfigured(log types.Log) (*KeyRegistrarStorageOperatorSetConfigured, error) { + event := new(KeyRegistrarStorageOperatorSetConfigured) + if err := _KeyRegistrarStorage.contract.UnpackLog(event, "OperatorSetConfigured", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/Merkle/binding.go b/pkg/bindings/Merkle/binding.go index 8e8f135acc..ad1b05e705 100644 --- a/pkg/bindings/Merkle/binding.go +++ b/pkg/bindings/Merkle/binding.go @@ -32,7 +32,7 @@ var ( // MerkleMetaData contains all meta data concerning the Merkle contract. var MerkleMetaData = &bind.MetaData{ ABI: "[{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]}]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212206e7fb0f8833612793591bf6b2f7ef063dab93db699ada40ea9eddd4072941d8364736f6c634300081b0033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220ac02d71f21046fb4ce0d8823b5de6caba10696525d544a50b9f75a937de7996264736f6c634300081b0033", } // MerkleABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/OperatorTableUpdater/binding.go b/pkg/bindings/OperatorTableUpdater/binding.go new file mode 100644 index 0000000000..3fd2b47c38 --- /dev/null +++ b/pkg/bindings/OperatorTableUpdater/binding.go @@ -0,0 +1,1453 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package OperatorTableUpdater + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// BN254G1Point is an auto generated low-level Go binding around an user-defined struct. +type BN254G1Point struct { + X *big.Int + Y *big.Int +} + +// BN254G2Point is an auto generated low-level Go binding around an user-defined struct. +type BN254G2Point struct { + X [2]*big.Int + Y [2]*big.Int +} + +// IBN254CertificateVerifierTypesBN254Certificate is an auto generated low-level Go binding around an user-defined struct. +type IBN254CertificateVerifierTypesBN254Certificate struct { + ReferenceTimestamp uint32 + MessageHash [32]byte + Signature BN254G1Point + Apk BN254G2Point + NonSignerWitnesses []IBN254CertificateVerifierTypesBN254OperatorInfoWitness +} + +// IBN254CertificateVerifierTypesBN254OperatorInfoWitness is an auto generated low-level Go binding around an user-defined struct. +type IBN254CertificateVerifierTypesBN254OperatorInfoWitness struct { + OperatorIndex uint32 + OperatorInfoProof []byte + OperatorInfo IBN254TableCalculatorTypesBN254OperatorInfo +} + +// IBN254TableCalculatorTypesBN254OperatorInfo is an auto generated low-level Go binding around an user-defined struct. +type IBN254TableCalculatorTypesBN254OperatorInfo struct { + Pubkey BN254G1Point + Weights []*big.Int +} + +// IBN254TableCalculatorTypesBN254OperatorSetInfo is an auto generated low-level Go binding around an user-defined struct. +type IBN254TableCalculatorTypesBN254OperatorSetInfo struct { + OperatorInfoTreeRoot [32]byte + NumOperators *big.Int + AggregatePubkey BN254G1Point + TotalWeights []*big.Int +} + +// ICrossChainRegistryTypesOperatorSetConfig is an auto generated low-level Go binding around an user-defined struct. +type ICrossChainRegistryTypesOperatorSetConfig struct { + Owner common.Address + MaxStalenessPeriod uint32 +} + +// OperatorSet is an auto generated low-level Go binding around an user-defined struct. +type OperatorSet struct { + Avs common.Address + Id uint32 +} + +// OperatorTableUpdaterMetaData contains all meta data concerning the OperatorTableUpdater contract. +var OperatorTableUpdaterMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_bn254CertificateVerifier\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"},{\"name\":\"_ecdsaCertificateVerifier\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"MAX_BPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bn254CertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmGlobalTableRoot\",\"inputs\":[{\"name\":\"globalTableRootCert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ecdsaCertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCertificateVerifier\",\"inputs\":[{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentGlobalTableRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalRootConfirmerSet\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableRootByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalRootConfirmationThreshold\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_globalRootConfirmerSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"_globalRootConfirmationThreshold\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalRootConfirmerSetInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorSetInfo\",\"components\":[{\"name\":\"operatorInfoTreeRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"numOperators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"aggregatePubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"totalWeights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"globalRootConfirmerSetConfig\",\"type\":\"tuple\",\"internalType\":\"structICrossChainRegistryTypes.OperatorSetConfig\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxStalenessPeriod\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"latestReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmationThreshold\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmerSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"GlobalRootConfirmationThresholdUpdated\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootConfirmerSetUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewGlobalTableRoot\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"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\":\"error\",\"name\":\"CertificateInvalid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidConfirmationThreshold\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGlobalTableRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSetProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"TableRootNotInCertificate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateForPastTimestamp\",\"inputs\":[]}]", + Bin: "0x60e060405234801561000f575f5ffd5b50604051611db0380380611db083398101604081905261002e91610188565b6001600160a01b03808416608052821660a0528061004b8161005f565b60c052506100576100a5565b5050506102b9565b5f5f829050601f81511115610092578260405163305a27a960e01b8152600401610089919061025e565b60405180910390fd5b805161009d82610293565b179392505050565b5f54610100900460ff161561010c5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610089565b5f5460ff9081161461015b575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610171575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f6060848603121561019a575f5ffd5b83516101a58161015d565b60208501519093506101b68161015d565b60408501519092506001600160401b038111156101d1575f5ffd5b8401601f810186136101e1575f5ffd5b80516001600160401b038111156101fa576101fa610174565b604051601f8201601f19908116603f011681016001600160401b038111828210171561022857610228610174565b60405281815282820160200188101561023f575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102b3575f198160200360031b1b821691505b50919050565b60805160a05160c051611aa361030d5f395f6104f701525f81816102780152818161075b015261094801525f818161029f01528181610415015281816106030152818161071b01526108a20152611aa35ff3fe608060405234801561000f575f5ffd5b5060043610610111575f3560e01c80638da5cb5b1161009e578063b8c143061161006e578063b8c143061461029a578063c252aa22146102c1578063c5916a39146102e2578063f2fde38b14610307578063fd967f471461031a575f5ffd5b80638da5cb5b146102245780639ea9477814610235578063a6ff593614610248578063ad0f958214610273575f5ffd5b806346282889116100e4578063462828891461018157806354fd4d50146101c95780636ab40904146101de5780636f728c50146101f1578063715018a61461021c575f5ffd5b8063021ab442146101155780630371406e1461012a5780632370356c1461013d57806328522d7914610150575b5f5ffd5b610128610123366004610e32565b610323565b005b610128610138366004610ec6565b6104cb565b61012861014b366004610ee7565b6104df565b60655462010000900463ffffffff165f908152606760205260409020545b6040519081526020015b60405180910390f35b6040805180820182525f80825260209182015281518083019092526066546001600160a01b0381168352600160a01b900463ffffffff16908201526040516101789190610f1e565b6101d16104f0565b6040516101789190610f2c565b6101286101ec366004610f61565b610520565b6102046101ff366004610fca565b6106fe565b6040516001600160a01b039091168152602001610178565b61012861079d565b6033546001600160a01b0316610204565b610128610243366004611027565b6107b0565b60655461025e9062010000900463ffffffff1681565b60405163ffffffff9091168152602001610178565b6102047f000000000000000000000000000000000000000000000000000000000000000081565b6102047f000000000000000000000000000000000000000000000000000000000000000081565b6065546102cf9061ffff1681565b60405161ffff9091168152602001610178565b61016e6102f03660046110c2565b63ffffffff165f9081526067602052604090205490565b6101286103153660046110dd565b6109ad565b6102cf61271081565b5f54610100900460ff161580801561034157505f54600160ff909116105b8061035a5750303b15801561035a57505f5460ff166001145b6103c25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156103e3575f805461ff0019166101001790555b6103ec87610a1f565b6103f586610a70565b6103fe85610aba565b604051636738c40b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636738c40b906104509089908890889088906004016111a1565b5f604051808303815f87803b158015610467575f5ffd5b505af1158015610479573d5f5f3e3d5ffd5b5050505080156104c2575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6104d3610b25565b6104dc81610a70565b50565b6104e7610b25565b6104dc81610aba565b606061051b7f0000000000000000000000000000000000000000000000000000000000000000610b7f565b905090565b428163ffffffff16111561054757604051635a119db560e11b815260040160405180910390fd5b60655463ffffffff620100009091048116908216116105795760405163037fa86b60e31b815260040160405180910390fd5b8260200135821461059d5760405163327f9d0760e21b815260040160405180910390fd5b6040805160018082528183019092525f91602080830190803683375050606554825192935061ffff16918391505f906105d8576105d861123e565b61ffff90921660209283029190910190910152604051625f5e5d60e21b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063017d79749061063d9060669089908790600401611306565b6020604051808303815f875af1158015610659573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067d9190611482565b90508061069d57604051633042041f60e21b815260040160405180910390fd5b6065805465ffffffff000019166201000063ffffffff8616908102919091179091555f81815260676020526040808220879055518692917f010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d36991a35050505050565b5f6002826002811115610713576107136114a1565b0361073f57507f0000000000000000000000000000000000000000000000000000000000000000919050565b6001826002811115610753576107536114a1565b0361077f57507f0000000000000000000000000000000000000000000000000000000000000000919050565b60405163fdea7c0960e01b815260040160405180910390fd5b919050565b6107a5610b25565b6107ae5f610a1f565b565b5f5f5f6107bd8585610bbc565b9250925092506107cc826106fe565b6001600160a01b0316635ddb9b5b846040518263ffffffff1660e01b81526004016107f79190610f1e565b6020604051808303815f875af1158015610813573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083791906114b5565b63ffffffff168a63ffffffff16116108625760405163207617df60e01b815260040160405180910390fd5b6108878a8a8a8a8a8a8a60405161087a9291906114d0565b6040518091039020610bff565b600282600281111561089b5761089b6114a1565b0361092d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636738c40b848c6108db8989610ca0565b856040518563ffffffff1660e01b81526004016108fb949392919061150f565b5f604051808303815f87803b158015610912575f5ffd5b505af1158015610924573d5f5f3e3d5ffd5b505050506109a1565b6001826002811115610941576109416114a1565b0361077f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166356d482f5848c6109818989610cbe565b856040518563ffffffff1660e01b81526004016108fb9493929190611582565b50505050505050505050565b6109b5610b25565b6001600160a01b038116610a1a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b6104dc815b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b806066610a7d8282611627565b9050507f20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b3781604051610aaf9190611683565b60405180910390a150565b61271061ffff82161115610ae1576040516307336f0360e11b815260040160405180910390fd5b6065805461ffff191661ffff83169081179091556040519081527ff5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f2259290602001610aaf565b6033546001600160a01b031633146107ae5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103b9565b60605f610b8b83610ccc565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b604080518082019091525f8082526020820152604080518082019091525f8082526020820181905290610bf18486018661174b565b919790965090945092505050565b63ffffffff86165f908152606760205260409020548514610c335760405163639d09b560e11b815260040160405180910390fd5b610c7b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992508591505063ffffffff8816610cf9565b610c985760405163afa42ca760e01b815260040160405180910390fd5b505050505050565b610ca8610da7565b610cb482840184611819565b9695505050505050565b6060610cb4828401846118fb565b5f60ff8216601f811115610cf357604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f83610d06868585610d10565b1495945050505050565b5f60208451610d1f9190611a2f565b15610d3d576040516313717da960e21b815260040160405180910390fd5b8260205b85518111610d9e57610d54600285611a2f565b5f03610d7557815f528086015160205260405f209150600284049350610d8c565b808601515f528160205260405f2091506002840493505b610d97602082611a4e565b9050610d41565b50949350505050565b60405180608001604052805f81526020015f8152602001610dd960405180604001604052805f81526020015f81525090565b8152602001606081525090565b6001600160a01b03811681146104dc575f5ffd5b5f60408284031215610e0a575f5ffd5b50919050565b803561ffff81168114610798575f5ffd5b63ffffffff811681146104dc575f5ffd5b5f5f5f5f5f5f6101008789031215610e48575f5ffd5b8635610e5381610de6565b9550610e628860208901610dfa565b9450610e7060608801610e10565b93506080870135610e8081610e21565b925060a08701356001600160401b03811115610e9a575f5ffd5b870160a0818a031215610eab575f5ffd5b9150610eba8860c08901610dfa565b90509295509295509295565b5f60408284031215610ed6575f5ffd5b610ee08383610dfa565b9392505050565b5f60208284031215610ef7575f5ffd5b610ee082610e10565b80516001600160a01b0316825260209081015163ffffffff16910152565b60408101610cf38284610f00565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f60608486031215610f73575f5ffd5b83356001600160401b03811115610f88575f5ffd5b84016101208187031215610f9a575f5ffd5b9250602084013591506040840135610fb181610e21565b809150509250925092565b803560038110610798575f5ffd5b5f60208284031215610fda575f5ffd5b610ee082610fbc565b5f5f83601f840112610ff3575f5ffd5b5081356001600160401b03811115611009575f5ffd5b602083019150836020828501011115611020575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a03121561103d575f5ffd5b873561104881610e21565b965060208801359550604088013561105f81610e21565b945060608801356001600160401b03811115611079575f5ffd5b6110858a828b01610fe3565b90955093505060808801356001600160401b038111156110a3575f5ffd5b6110af8a828b01610fe3565b989b979a50959850939692959293505050565b5f602082840312156110d2575f5ffd5b8135610ee081610e21565b5f602082840312156110ed575f5ffd5b8135610ee081610de6565b803561110381610de6565b6001600160a01b03168252602081013561111c81610e21565b63ffffffff81166020840152505050565b5f5f8335601e19843603018112611142575f5ffd5b83016020810192503590506001600160401b03811115611160575f5ffd5b8060051b3603821315611020575f5ffd5b8183525f6001600160fb1b03831115611188575f5ffd5b8260051b80836020870137939093016020019392505050565b6111ab81866110f8565b63ffffffff841660408281019190915260c06060808401829052853591840191909152602085013560e0840152908401356101008301528301356101208201525f6111f9608085018561112d565b60a061014085015261121061016085018284611171565b9250505061122160808301846110f8565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8235605e1983360301811261128e575f5ffd5b90910192915050565b80358252602080820135908301525f6112b3604083018361112d565b60606040860152611221606086018284611171565b5f8151808452602084019350602083015f5b828110156112fc57815161ffff168652602095860195909101906001016112da565b5093949350505050565b83546001600160a01b038116825260a01c63ffffffff166020820152608060408201525f6101a08201843561133a81610e21565b63ffffffff166080840152602085013560a0840152604085013560c0840152606085013560e0840152604060808601610100850137604060c0860161014085013761138961010086018661112d565b610120610180860152828184526101c0860190506101c08260051b8701019350825f5b8381101561146b578786036101bf190183526113c8828661127a565b80356113d381610e21565b63ffffffff168752602081013536829003601e190181126113f2575f5ffd5b81016020810190356001600160401b0381111561140d575f5ffd5b80360382131561141b575f5ffd5b606060208a015261143060608a018284611252565b915050611440604083018361127a565b915087810360408901526114548183611297565b9750505060209283019291909101906001016113ac565b50505050508281036060840152610cb481856112c8565b5f60208284031215611492575f5ffd5b81518015158114610ee0575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b5f602082840312156114c5575f5ffd5b8151610ee081610e21565b818382375f9101908152919050565b5f8151808452602084019350602083015f5b828110156112fc5781518652602095860195909101906001016114f1565b6115198186610f00565b63ffffffff8416604082015260c06060820152825160c0820152602083015160e08201525f60408401518051610100840152602081015161012084015250606084015160a06101408401526115726101608401826114df565b9150506112216080830184610f00565b5f60c082016115918388610f00565b63ffffffff8616604084015260c0606084015280855180835260e08501915060e08160051b8601019250602087015f5b828110156116125786850360df19018452815180516001600160a01b031686526020908101516040918701829052906115fc908701826114df565b95505060209384019391909101906001016115c1565b50505050809150506112216080830184610f00565b813561163281610de6565b81546001600160a01b031981166001600160a01b03929092169182178355602084013561165e81610e21565b6001600160c01b03199190911690911760a09190911b63ffffffff60a01b1617905550565b60408101610cf382846110f8565b604080519081016001600160401b03811182821017156116b3576116b361122a565b60405290565b604051608081016001600160401b03811182821017156116b3576116b361122a565b604051601f8201601f191681016001600160401b03811182821017156117035761170361122a565b604052919050565b5f6040828403121561171b575f5ffd5b611723611691565b9050813561173081610de6565b8152602082013561174081610e21565b602082015292915050565b5f5f5f60a0848603121561175d575f5ffd5b611767858561170b565b925061177560408501610fbc565b9150611784856060860161170b565b90509250925092565b5f6001600160401b038211156117a5576117a561122a565b5060051b60200190565b5f82601f8301126117be575f5ffd5b81356117d16117cc8261178d565b6116db565b8082825260208201915060208360051b8601019250858311156117f2575f5ffd5b602085015b8381101561180f5780358352602092830192016117f7565b5095945050505050565b5f5f5f5f60c0858703121561182c575f5ffd5b611836868661170b565b935061184460408601610fbc565b9250611853866060870161170b565b915060a08501356001600160401b0381111561186d575f5ffd5b850180870360a081121561187f575f5ffd5b6118876116b9565b82358152602080840135908201526040603f19830112156118a6575f5ffd5b6118ae611691565b604084810135825260608501356020830152820152608083013591506001600160401b038211156118dd575f5ffd5b6118e9898385016117af565b60608201529598949750929550505050565b5f5f5f5f60c0858703121561190e575f5ffd5b611918868661170b565b935061192660408601610fbc565b9250611935866060870161170b565b915060a08501356001600160401b0381111561194f575f5ffd5b8501601f8101871361195f575f5ffd5b803561196d6117cc8261178d565b8082825260208201915060208360051b85010192508983111561198e575f5ffd5b602084015b83811015611a205780356001600160401b038111156119b0575f5ffd5b85016040818d03601f190112156119c5575f5ffd5b6119cd611691565b60208201356119db81610de6565b815260408201356001600160401b038111156119f5575f5ffd5b611a048e6020838601016117af565b6020830152508085525050602083019250602081019050611993565b50969995985093965050505050565b5f82611a4957634e487b7160e01b5f52601260045260245ffd5b500690565b80820180821115610cf357634e487b7160e01b5f52601160045260245ffdfea264697066735822122096b48a8e0583fdc110a186875764082d56a1f9dfe4b4bf6ced87f12458f5782d64736f6c634300081b0033", +} + +// OperatorTableUpdaterABI is the input ABI used to generate the binding from. +// Deprecated: Use OperatorTableUpdaterMetaData.ABI instead. +var OperatorTableUpdaterABI = OperatorTableUpdaterMetaData.ABI + +// OperatorTableUpdaterBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use OperatorTableUpdaterMetaData.Bin instead. +var OperatorTableUpdaterBin = OperatorTableUpdaterMetaData.Bin + +// DeployOperatorTableUpdater deploys a new Ethereum contract, binding an instance of OperatorTableUpdater to it. +func DeployOperatorTableUpdater(auth *bind.TransactOpts, backend bind.ContractBackend, _bn254CertificateVerifier common.Address, _ecdsaCertificateVerifier common.Address, _version string) (common.Address, *types.Transaction, *OperatorTableUpdater, error) { + parsed, err := OperatorTableUpdaterMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(OperatorTableUpdaterBin), backend, _bn254CertificateVerifier, _ecdsaCertificateVerifier, _version) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &OperatorTableUpdater{OperatorTableUpdaterCaller: OperatorTableUpdaterCaller{contract: contract}, OperatorTableUpdaterTransactor: OperatorTableUpdaterTransactor{contract: contract}, OperatorTableUpdaterFilterer: OperatorTableUpdaterFilterer{contract: contract}}, nil +} + +// OperatorTableUpdater is an auto generated Go binding around an Ethereum contract. +type OperatorTableUpdater struct { + OperatorTableUpdaterCaller // Read-only binding to the contract + OperatorTableUpdaterTransactor // Write-only binding to the contract + OperatorTableUpdaterFilterer // Log filterer for contract events +} + +// OperatorTableUpdaterCaller is an auto generated read-only Go binding around an Ethereum contract. +type OperatorTableUpdaterCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OperatorTableUpdaterTransactor is an auto generated write-only Go binding around an Ethereum contract. +type OperatorTableUpdaterTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OperatorTableUpdaterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type OperatorTableUpdaterFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OperatorTableUpdaterSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type OperatorTableUpdaterSession struct { + Contract *OperatorTableUpdater // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OperatorTableUpdaterCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type OperatorTableUpdaterCallerSession struct { + Contract *OperatorTableUpdaterCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// OperatorTableUpdaterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type OperatorTableUpdaterTransactorSession struct { + Contract *OperatorTableUpdaterTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OperatorTableUpdaterRaw is an auto generated low-level Go binding around an Ethereum contract. +type OperatorTableUpdaterRaw struct { + Contract *OperatorTableUpdater // Generic contract binding to access the raw methods on +} + +// OperatorTableUpdaterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type OperatorTableUpdaterCallerRaw struct { + Contract *OperatorTableUpdaterCaller // Generic read-only contract binding to access the raw methods on +} + +// OperatorTableUpdaterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type OperatorTableUpdaterTransactorRaw struct { + Contract *OperatorTableUpdaterTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewOperatorTableUpdater creates a new instance of OperatorTableUpdater, bound to a specific deployed contract. +func NewOperatorTableUpdater(address common.Address, backend bind.ContractBackend) (*OperatorTableUpdater, error) { + contract, err := bindOperatorTableUpdater(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &OperatorTableUpdater{OperatorTableUpdaterCaller: OperatorTableUpdaterCaller{contract: contract}, OperatorTableUpdaterTransactor: OperatorTableUpdaterTransactor{contract: contract}, OperatorTableUpdaterFilterer: OperatorTableUpdaterFilterer{contract: contract}}, nil +} + +// NewOperatorTableUpdaterCaller creates a new read-only instance of OperatorTableUpdater, bound to a specific deployed contract. +func NewOperatorTableUpdaterCaller(address common.Address, caller bind.ContractCaller) (*OperatorTableUpdaterCaller, error) { + contract, err := bindOperatorTableUpdater(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &OperatorTableUpdaterCaller{contract: contract}, nil +} + +// NewOperatorTableUpdaterTransactor creates a new write-only instance of OperatorTableUpdater, bound to a specific deployed contract. +func NewOperatorTableUpdaterTransactor(address common.Address, transactor bind.ContractTransactor) (*OperatorTableUpdaterTransactor, error) { + contract, err := bindOperatorTableUpdater(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &OperatorTableUpdaterTransactor{contract: contract}, nil +} + +// NewOperatorTableUpdaterFilterer creates a new log filterer instance of OperatorTableUpdater, bound to a specific deployed contract. +func NewOperatorTableUpdaterFilterer(address common.Address, filterer bind.ContractFilterer) (*OperatorTableUpdaterFilterer, error) { + contract, err := bindOperatorTableUpdater(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &OperatorTableUpdaterFilterer{contract: contract}, nil +} + +// bindOperatorTableUpdater binds a generic wrapper to an already deployed contract. +func bindOperatorTableUpdater(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := OperatorTableUpdaterMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_OperatorTableUpdater *OperatorTableUpdaterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _OperatorTableUpdater.Contract.OperatorTableUpdaterCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_OperatorTableUpdater *OperatorTableUpdaterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.OperatorTableUpdaterTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_OperatorTableUpdater *OperatorTableUpdaterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.OperatorTableUpdaterTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_OperatorTableUpdater *OperatorTableUpdaterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _OperatorTableUpdater.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_OperatorTableUpdater *OperatorTableUpdaterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_OperatorTableUpdater *OperatorTableUpdaterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.contract.Transact(opts, method, params...) +} + +// MAXBPS is a free data retrieval call binding the contract method 0xfd967f47. +// +// Solidity: function MAX_BPS() view returns(uint16) +func (_OperatorTableUpdater *OperatorTableUpdaterCaller) MAXBPS(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _OperatorTableUpdater.contract.Call(opts, &out, "MAX_BPS") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// MAXBPS is a free data retrieval call binding the contract method 0xfd967f47. +// +// Solidity: function MAX_BPS() view returns(uint16) +func (_OperatorTableUpdater *OperatorTableUpdaterSession) MAXBPS() (uint16, error) { + return _OperatorTableUpdater.Contract.MAXBPS(&_OperatorTableUpdater.CallOpts) +} + +// MAXBPS is a free data retrieval call binding the contract method 0xfd967f47. +// +// Solidity: function MAX_BPS() view returns(uint16) +func (_OperatorTableUpdater *OperatorTableUpdaterCallerSession) MAXBPS() (uint16, error) { + return _OperatorTableUpdater.Contract.MAXBPS(&_OperatorTableUpdater.CallOpts) +} + +// Bn254CertificateVerifier is a free data retrieval call binding the contract method 0xb8c14306. +// +// Solidity: function bn254CertificateVerifier() view returns(address) +func (_OperatorTableUpdater *OperatorTableUpdaterCaller) Bn254CertificateVerifier(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _OperatorTableUpdater.contract.Call(opts, &out, "bn254CertificateVerifier") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Bn254CertificateVerifier is a free data retrieval call binding the contract method 0xb8c14306. +// +// Solidity: function bn254CertificateVerifier() view returns(address) +func (_OperatorTableUpdater *OperatorTableUpdaterSession) Bn254CertificateVerifier() (common.Address, error) { + return _OperatorTableUpdater.Contract.Bn254CertificateVerifier(&_OperatorTableUpdater.CallOpts) +} + +// Bn254CertificateVerifier is a free data retrieval call binding the contract method 0xb8c14306. +// +// Solidity: function bn254CertificateVerifier() view returns(address) +func (_OperatorTableUpdater *OperatorTableUpdaterCallerSession) Bn254CertificateVerifier() (common.Address, error) { + return _OperatorTableUpdater.Contract.Bn254CertificateVerifier(&_OperatorTableUpdater.CallOpts) +} + +// EcdsaCertificateVerifier is a free data retrieval call binding the contract method 0xad0f9582. +// +// Solidity: function ecdsaCertificateVerifier() view returns(address) +func (_OperatorTableUpdater *OperatorTableUpdaterCaller) EcdsaCertificateVerifier(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _OperatorTableUpdater.contract.Call(opts, &out, "ecdsaCertificateVerifier") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EcdsaCertificateVerifier is a free data retrieval call binding the contract method 0xad0f9582. +// +// Solidity: function ecdsaCertificateVerifier() view returns(address) +func (_OperatorTableUpdater *OperatorTableUpdaterSession) EcdsaCertificateVerifier() (common.Address, error) { + return _OperatorTableUpdater.Contract.EcdsaCertificateVerifier(&_OperatorTableUpdater.CallOpts) +} + +// EcdsaCertificateVerifier is a free data retrieval call binding the contract method 0xad0f9582. +// +// Solidity: function ecdsaCertificateVerifier() view returns(address) +func (_OperatorTableUpdater *OperatorTableUpdaterCallerSession) EcdsaCertificateVerifier() (common.Address, error) { + return _OperatorTableUpdater.Contract.EcdsaCertificateVerifier(&_OperatorTableUpdater.CallOpts) +} + +// GetCertificateVerifier is a free data retrieval call binding the contract method 0x6f728c50. +// +// Solidity: function getCertificateVerifier(uint8 curveType) view returns(address) +func (_OperatorTableUpdater *OperatorTableUpdaterCaller) GetCertificateVerifier(opts *bind.CallOpts, curveType uint8) (common.Address, error) { + var out []interface{} + err := _OperatorTableUpdater.contract.Call(opts, &out, "getCertificateVerifier", curveType) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetCertificateVerifier is a free data retrieval call binding the contract method 0x6f728c50. +// +// Solidity: function getCertificateVerifier(uint8 curveType) view returns(address) +func (_OperatorTableUpdater *OperatorTableUpdaterSession) GetCertificateVerifier(curveType uint8) (common.Address, error) { + return _OperatorTableUpdater.Contract.GetCertificateVerifier(&_OperatorTableUpdater.CallOpts, curveType) +} + +// GetCertificateVerifier is a free data retrieval call binding the contract method 0x6f728c50. +// +// Solidity: function getCertificateVerifier(uint8 curveType) view returns(address) +func (_OperatorTableUpdater *OperatorTableUpdaterCallerSession) GetCertificateVerifier(curveType uint8) (common.Address, error) { + return _OperatorTableUpdater.Contract.GetCertificateVerifier(&_OperatorTableUpdater.CallOpts, curveType) +} + +// GetCurrentGlobalTableRoot is a free data retrieval call binding the contract method 0x28522d79. +// +// Solidity: function getCurrentGlobalTableRoot() view returns(bytes32) +func (_OperatorTableUpdater *OperatorTableUpdaterCaller) GetCurrentGlobalTableRoot(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _OperatorTableUpdater.contract.Call(opts, &out, "getCurrentGlobalTableRoot") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetCurrentGlobalTableRoot is a free data retrieval call binding the contract method 0x28522d79. +// +// Solidity: function getCurrentGlobalTableRoot() view returns(bytes32) +func (_OperatorTableUpdater *OperatorTableUpdaterSession) GetCurrentGlobalTableRoot() ([32]byte, error) { + return _OperatorTableUpdater.Contract.GetCurrentGlobalTableRoot(&_OperatorTableUpdater.CallOpts) +} + +// GetCurrentGlobalTableRoot is a free data retrieval call binding the contract method 0x28522d79. +// +// Solidity: function getCurrentGlobalTableRoot() view returns(bytes32) +func (_OperatorTableUpdater *OperatorTableUpdaterCallerSession) GetCurrentGlobalTableRoot() ([32]byte, error) { + return _OperatorTableUpdater.Contract.GetCurrentGlobalTableRoot(&_OperatorTableUpdater.CallOpts) +} + +// GetGlobalRootConfirmerSet is a free data retrieval call binding the contract method 0x46282889. +// +// Solidity: function getGlobalRootConfirmerSet() view returns((address,uint32)) +func (_OperatorTableUpdater *OperatorTableUpdaterCaller) GetGlobalRootConfirmerSet(opts *bind.CallOpts) (OperatorSet, error) { + var out []interface{} + err := _OperatorTableUpdater.contract.Call(opts, &out, "getGlobalRootConfirmerSet") + + if err != nil { + return *new(OperatorSet), err + } + + out0 := *abi.ConvertType(out[0], new(OperatorSet)).(*OperatorSet) + + return out0, err + +} + +// GetGlobalRootConfirmerSet is a free data retrieval call binding the contract method 0x46282889. +// +// Solidity: function getGlobalRootConfirmerSet() view returns((address,uint32)) +func (_OperatorTableUpdater *OperatorTableUpdaterSession) GetGlobalRootConfirmerSet() (OperatorSet, error) { + return _OperatorTableUpdater.Contract.GetGlobalRootConfirmerSet(&_OperatorTableUpdater.CallOpts) +} + +// GetGlobalRootConfirmerSet is a free data retrieval call binding the contract method 0x46282889. +// +// Solidity: function getGlobalRootConfirmerSet() view returns((address,uint32)) +func (_OperatorTableUpdater *OperatorTableUpdaterCallerSession) GetGlobalRootConfirmerSet() (OperatorSet, error) { + return _OperatorTableUpdater.Contract.GetGlobalRootConfirmerSet(&_OperatorTableUpdater.CallOpts) +} + +// GetGlobalTableRootByTimestamp is a free data retrieval call binding the contract method 0xc5916a39. +// +// Solidity: function getGlobalTableRootByTimestamp(uint32 referenceTimestamp) view returns(bytes32) +func (_OperatorTableUpdater *OperatorTableUpdaterCaller) GetGlobalTableRootByTimestamp(opts *bind.CallOpts, referenceTimestamp uint32) ([32]byte, error) { + var out []interface{} + err := _OperatorTableUpdater.contract.Call(opts, &out, "getGlobalTableRootByTimestamp", referenceTimestamp) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetGlobalTableRootByTimestamp is a free data retrieval call binding the contract method 0xc5916a39. +// +// Solidity: function getGlobalTableRootByTimestamp(uint32 referenceTimestamp) view returns(bytes32) +func (_OperatorTableUpdater *OperatorTableUpdaterSession) GetGlobalTableRootByTimestamp(referenceTimestamp uint32) ([32]byte, error) { + return _OperatorTableUpdater.Contract.GetGlobalTableRootByTimestamp(&_OperatorTableUpdater.CallOpts, referenceTimestamp) +} + +// GetGlobalTableRootByTimestamp is a free data retrieval call binding the contract method 0xc5916a39. +// +// Solidity: function getGlobalTableRootByTimestamp(uint32 referenceTimestamp) view returns(bytes32) +func (_OperatorTableUpdater *OperatorTableUpdaterCallerSession) GetGlobalTableRootByTimestamp(referenceTimestamp uint32) ([32]byte, error) { + return _OperatorTableUpdater.Contract.GetGlobalTableRootByTimestamp(&_OperatorTableUpdater.CallOpts, referenceTimestamp) +} + +// GlobalRootConfirmationThreshold is a free data retrieval call binding the contract method 0xc252aa22. +// +// Solidity: function globalRootConfirmationThreshold() view returns(uint16) +func (_OperatorTableUpdater *OperatorTableUpdaterCaller) GlobalRootConfirmationThreshold(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _OperatorTableUpdater.contract.Call(opts, &out, "globalRootConfirmationThreshold") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// GlobalRootConfirmationThreshold is a free data retrieval call binding the contract method 0xc252aa22. +// +// Solidity: function globalRootConfirmationThreshold() view returns(uint16) +func (_OperatorTableUpdater *OperatorTableUpdaterSession) GlobalRootConfirmationThreshold() (uint16, error) { + return _OperatorTableUpdater.Contract.GlobalRootConfirmationThreshold(&_OperatorTableUpdater.CallOpts) +} + +// GlobalRootConfirmationThreshold is a free data retrieval call binding the contract method 0xc252aa22. +// +// Solidity: function globalRootConfirmationThreshold() view returns(uint16) +func (_OperatorTableUpdater *OperatorTableUpdaterCallerSession) GlobalRootConfirmationThreshold() (uint16, error) { + return _OperatorTableUpdater.Contract.GlobalRootConfirmationThreshold(&_OperatorTableUpdater.CallOpts) +} + +// LatestReferenceTimestamp is a free data retrieval call binding the contract method 0xa6ff5936. +// +// Solidity: function latestReferenceTimestamp() view returns(uint32) +func (_OperatorTableUpdater *OperatorTableUpdaterCaller) LatestReferenceTimestamp(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _OperatorTableUpdater.contract.Call(opts, &out, "latestReferenceTimestamp") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// LatestReferenceTimestamp is a free data retrieval call binding the contract method 0xa6ff5936. +// +// Solidity: function latestReferenceTimestamp() view returns(uint32) +func (_OperatorTableUpdater *OperatorTableUpdaterSession) LatestReferenceTimestamp() (uint32, error) { + return _OperatorTableUpdater.Contract.LatestReferenceTimestamp(&_OperatorTableUpdater.CallOpts) +} + +// LatestReferenceTimestamp is a free data retrieval call binding the contract method 0xa6ff5936. +// +// Solidity: function latestReferenceTimestamp() view returns(uint32) +func (_OperatorTableUpdater *OperatorTableUpdaterCallerSession) LatestReferenceTimestamp() (uint32, error) { + return _OperatorTableUpdater.Contract.LatestReferenceTimestamp(&_OperatorTableUpdater.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_OperatorTableUpdater *OperatorTableUpdaterCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _OperatorTableUpdater.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_OperatorTableUpdater *OperatorTableUpdaterSession) Owner() (common.Address, error) { + return _OperatorTableUpdater.Contract.Owner(&_OperatorTableUpdater.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_OperatorTableUpdater *OperatorTableUpdaterCallerSession) Owner() (common.Address, error) { + return _OperatorTableUpdater.Contract.Owner(&_OperatorTableUpdater.CallOpts) +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_OperatorTableUpdater *OperatorTableUpdaterCaller) Version(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _OperatorTableUpdater.contract.Call(opts, &out, "version") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_OperatorTableUpdater *OperatorTableUpdaterSession) Version() (string, error) { + return _OperatorTableUpdater.Contract.Version(&_OperatorTableUpdater.CallOpts) +} + +// Version is a free data retrieval call binding the contract method 0x54fd4d50. +// +// Solidity: function version() view returns(string) +func (_OperatorTableUpdater *OperatorTableUpdaterCallerSession) Version() (string, error) { + return _OperatorTableUpdater.Contract.Version(&_OperatorTableUpdater.CallOpts) +} + +// ConfirmGlobalTableRoot is a paid mutator transaction binding the contract method 0x6ab40904. +// +// Solidity: function confirmGlobalTableRoot((uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) globalTableRootCert, bytes32 globalTableRoot, uint32 referenceTimestamp) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactor) ConfirmGlobalTableRoot(opts *bind.TransactOpts, globalTableRootCert IBN254CertificateVerifierTypesBN254Certificate, globalTableRoot [32]byte, referenceTimestamp uint32) (*types.Transaction, error) { + return _OperatorTableUpdater.contract.Transact(opts, "confirmGlobalTableRoot", globalTableRootCert, globalTableRoot, referenceTimestamp) +} + +// ConfirmGlobalTableRoot is a paid mutator transaction binding the contract method 0x6ab40904. +// +// Solidity: function confirmGlobalTableRoot((uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) globalTableRootCert, bytes32 globalTableRoot, uint32 referenceTimestamp) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterSession) ConfirmGlobalTableRoot(globalTableRootCert IBN254CertificateVerifierTypesBN254Certificate, globalTableRoot [32]byte, referenceTimestamp uint32) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.ConfirmGlobalTableRoot(&_OperatorTableUpdater.TransactOpts, globalTableRootCert, globalTableRoot, referenceTimestamp) +} + +// ConfirmGlobalTableRoot is a paid mutator transaction binding the contract method 0x6ab40904. +// +// Solidity: function confirmGlobalTableRoot((uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) globalTableRootCert, bytes32 globalTableRoot, uint32 referenceTimestamp) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) ConfirmGlobalTableRoot(globalTableRootCert IBN254CertificateVerifierTypesBN254Certificate, globalTableRoot [32]byte, referenceTimestamp uint32) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.ConfirmGlobalTableRoot(&_OperatorTableUpdater.TransactOpts, globalTableRootCert, globalTableRoot, referenceTimestamp) +} + +// Initialize is a paid mutator transaction binding the contract method 0x021ab442. +// +// Solidity: function initialize(address owner, (address,uint32) _globalRootConfirmerSet, uint16 _globalRootConfirmationThreshold, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) globalRootConfirmerSetInfo, (address,uint32) globalRootConfirmerSetConfig) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactor) Initialize(opts *bind.TransactOpts, owner common.Address, _globalRootConfirmerSet OperatorSet, _globalRootConfirmationThreshold uint16, referenceTimestamp uint32, globalRootConfirmerSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _OperatorTableUpdater.contract.Transact(opts, "initialize", owner, _globalRootConfirmerSet, _globalRootConfirmationThreshold, referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig) +} + +// Initialize is a paid mutator transaction binding the contract method 0x021ab442. +// +// Solidity: function initialize(address owner, (address,uint32) _globalRootConfirmerSet, uint16 _globalRootConfirmationThreshold, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) globalRootConfirmerSetInfo, (address,uint32) globalRootConfirmerSetConfig) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterSession) Initialize(owner common.Address, _globalRootConfirmerSet OperatorSet, _globalRootConfirmationThreshold uint16, referenceTimestamp uint32, globalRootConfirmerSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.Initialize(&_OperatorTableUpdater.TransactOpts, owner, _globalRootConfirmerSet, _globalRootConfirmationThreshold, referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig) +} + +// Initialize is a paid mutator transaction binding the contract method 0x021ab442. +// +// Solidity: function initialize(address owner, (address,uint32) _globalRootConfirmerSet, uint16 _globalRootConfirmationThreshold, uint32 referenceTimestamp, (bytes32,uint256,(uint256,uint256),uint256[]) globalRootConfirmerSetInfo, (address,uint32) globalRootConfirmerSetConfig) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) Initialize(owner common.Address, _globalRootConfirmerSet OperatorSet, _globalRootConfirmationThreshold uint16, referenceTimestamp uint32, globalRootConfirmerSetInfo IBN254TableCalculatorTypesBN254OperatorSetInfo, globalRootConfirmerSetConfig ICrossChainRegistryTypesOperatorSetConfig) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.Initialize(&_OperatorTableUpdater.TransactOpts, owner, _globalRootConfirmerSet, _globalRootConfirmationThreshold, referenceTimestamp, globalRootConfirmerSetInfo, globalRootConfirmerSetConfig) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _OperatorTableUpdater.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_OperatorTableUpdater *OperatorTableUpdaterSession) RenounceOwnership() (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.RenounceOwnership(&_OperatorTableUpdater.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.RenounceOwnership(&_OperatorTableUpdater.TransactOpts) +} + +// SetGlobalRootConfirmationThreshold is a paid mutator transaction binding the contract method 0x2370356c. +// +// Solidity: function setGlobalRootConfirmationThreshold(uint16 bps) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactor) SetGlobalRootConfirmationThreshold(opts *bind.TransactOpts, bps uint16) (*types.Transaction, error) { + return _OperatorTableUpdater.contract.Transact(opts, "setGlobalRootConfirmationThreshold", bps) +} + +// SetGlobalRootConfirmationThreshold is a paid mutator transaction binding the contract method 0x2370356c. +// +// Solidity: function setGlobalRootConfirmationThreshold(uint16 bps) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterSession) SetGlobalRootConfirmationThreshold(bps uint16) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.SetGlobalRootConfirmationThreshold(&_OperatorTableUpdater.TransactOpts, bps) +} + +// SetGlobalRootConfirmationThreshold is a paid mutator transaction binding the contract method 0x2370356c. +// +// Solidity: function setGlobalRootConfirmationThreshold(uint16 bps) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) SetGlobalRootConfirmationThreshold(bps uint16) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.SetGlobalRootConfirmationThreshold(&_OperatorTableUpdater.TransactOpts, bps) +} + +// SetGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x0371406e. +// +// Solidity: function setGlobalRootConfirmerSet((address,uint32) operatorSet) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactor) SetGlobalRootConfirmerSet(opts *bind.TransactOpts, operatorSet OperatorSet) (*types.Transaction, error) { + return _OperatorTableUpdater.contract.Transact(opts, "setGlobalRootConfirmerSet", operatorSet) +} + +// SetGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x0371406e. +// +// Solidity: function setGlobalRootConfirmerSet((address,uint32) operatorSet) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterSession) SetGlobalRootConfirmerSet(operatorSet OperatorSet) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.SetGlobalRootConfirmerSet(&_OperatorTableUpdater.TransactOpts, operatorSet) +} + +// SetGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x0371406e. +// +// Solidity: function setGlobalRootConfirmerSet((address,uint32) operatorSet) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) SetGlobalRootConfirmerSet(operatorSet OperatorSet) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.SetGlobalRootConfirmerSet(&_OperatorTableUpdater.TransactOpts, operatorSet) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _OperatorTableUpdater.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.TransferOwnership(&_OperatorTableUpdater.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.TransferOwnership(&_OperatorTableUpdater.TransactOpts, newOwner) +} + +// UpdateOperatorTable is a paid mutator transaction binding the contract method 0x9ea94778. +// +// Solidity: function updateOperatorTable(uint32 referenceTimestamp, bytes32 globalTableRoot, uint32 operatorSetIndex, bytes proof, bytes operatorTableBytes) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactor) UpdateOperatorTable(opts *bind.TransactOpts, referenceTimestamp uint32, globalTableRoot [32]byte, operatorSetIndex uint32, proof []byte, operatorTableBytes []byte) (*types.Transaction, error) { + return _OperatorTableUpdater.contract.Transact(opts, "updateOperatorTable", referenceTimestamp, globalTableRoot, operatorSetIndex, proof, operatorTableBytes) +} + +// UpdateOperatorTable is a paid mutator transaction binding the contract method 0x9ea94778. +// +// Solidity: function updateOperatorTable(uint32 referenceTimestamp, bytes32 globalTableRoot, uint32 operatorSetIndex, bytes proof, bytes operatorTableBytes) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterSession) UpdateOperatorTable(referenceTimestamp uint32, globalTableRoot [32]byte, operatorSetIndex uint32, proof []byte, operatorTableBytes []byte) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.UpdateOperatorTable(&_OperatorTableUpdater.TransactOpts, referenceTimestamp, globalTableRoot, operatorSetIndex, proof, operatorTableBytes) +} + +// UpdateOperatorTable is a paid mutator transaction binding the contract method 0x9ea94778. +// +// Solidity: function updateOperatorTable(uint32 referenceTimestamp, bytes32 globalTableRoot, uint32 operatorSetIndex, bytes proof, bytes operatorTableBytes) returns() +func (_OperatorTableUpdater *OperatorTableUpdaterTransactorSession) UpdateOperatorTable(referenceTimestamp uint32, globalTableRoot [32]byte, operatorSetIndex uint32, proof []byte, operatorTableBytes []byte) (*types.Transaction, error) { + return _OperatorTableUpdater.Contract.UpdateOperatorTable(&_OperatorTableUpdater.TransactOpts, referenceTimestamp, globalTableRoot, operatorSetIndex, proof, operatorTableBytes) +} + +// OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator is returned from FilterGlobalRootConfirmationThresholdUpdated and is used to iterate over the raw logs and unpacked data for GlobalRootConfirmationThresholdUpdated events raised by the OperatorTableUpdater contract. +type OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator struct { + Event *OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated represents a GlobalRootConfirmationThresholdUpdated event raised by the OperatorTableUpdater contract. +type OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated struct { + Bps uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGlobalRootConfirmationThresholdUpdated is a free log retrieval operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. +// +// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) FilterGlobalRootConfirmationThresholdUpdated(opts *bind.FilterOpts) (*OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator, error) { + + logs, sub, err := _OperatorTableUpdater.contract.FilterLogs(opts, "GlobalRootConfirmationThresholdUpdated") + if err != nil { + return nil, err + } + return &OperatorTableUpdaterGlobalRootConfirmationThresholdUpdatedIterator{contract: _OperatorTableUpdater.contract, event: "GlobalRootConfirmationThresholdUpdated", logs: logs, sub: sub}, nil +} + +// WatchGlobalRootConfirmationThresholdUpdated is a free log subscription operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. +// +// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) WatchGlobalRootConfirmationThresholdUpdated(opts *bind.WatchOpts, sink chan<- *OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) (event.Subscription, error) { + + logs, sub, err := _OperatorTableUpdater.contract.WatchLogs(opts, "GlobalRootConfirmationThresholdUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) + if err := _OperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmationThresholdUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseGlobalRootConfirmationThresholdUpdated is a log parse operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. +// +// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) ParseGlobalRootConfirmationThresholdUpdated(log types.Log) (*OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated, error) { + event := new(OperatorTableUpdaterGlobalRootConfirmationThresholdUpdated) + if err := _OperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmationThresholdUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator is returned from FilterGlobalRootConfirmerSetUpdated and is used to iterate over the raw logs and unpacked data for GlobalRootConfirmerSetUpdated events raised by the OperatorTableUpdater contract. +type OperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator struct { + Event *OperatorTableUpdaterGlobalRootConfirmerSetUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OperatorTableUpdaterGlobalRootConfirmerSetUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OperatorTableUpdaterGlobalRootConfirmerSetUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OperatorTableUpdaterGlobalRootConfirmerSetUpdated represents a GlobalRootConfirmerSetUpdated event raised by the OperatorTableUpdater contract. +type OperatorTableUpdaterGlobalRootConfirmerSetUpdated struct { + OperatorSet OperatorSet + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGlobalRootConfirmerSetUpdated is a free log retrieval operation binding the contract event 0x20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b37. +// +// Solidity: event GlobalRootConfirmerSetUpdated((address,uint32) operatorSet) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) FilterGlobalRootConfirmerSetUpdated(opts *bind.FilterOpts) (*OperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator, error) { + + logs, sub, err := _OperatorTableUpdater.contract.FilterLogs(opts, "GlobalRootConfirmerSetUpdated") + if err != nil { + return nil, err + } + return &OperatorTableUpdaterGlobalRootConfirmerSetUpdatedIterator{contract: _OperatorTableUpdater.contract, event: "GlobalRootConfirmerSetUpdated", logs: logs, sub: sub}, nil +} + +// WatchGlobalRootConfirmerSetUpdated is a free log subscription operation binding the contract event 0x20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b37. +// +// Solidity: event GlobalRootConfirmerSetUpdated((address,uint32) operatorSet) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) WatchGlobalRootConfirmerSetUpdated(opts *bind.WatchOpts, sink chan<- *OperatorTableUpdaterGlobalRootConfirmerSetUpdated) (event.Subscription, error) { + + logs, sub, err := _OperatorTableUpdater.contract.WatchLogs(opts, "GlobalRootConfirmerSetUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OperatorTableUpdaterGlobalRootConfirmerSetUpdated) + if err := _OperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmerSetUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseGlobalRootConfirmerSetUpdated is a log parse operation binding the contract event 0x20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b37. +// +// Solidity: event GlobalRootConfirmerSetUpdated((address,uint32) operatorSet) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) ParseGlobalRootConfirmerSetUpdated(log types.Log) (*OperatorTableUpdaterGlobalRootConfirmerSetUpdated, error) { + event := new(OperatorTableUpdaterGlobalRootConfirmerSetUpdated) + if err := _OperatorTableUpdater.contract.UnpackLog(event, "GlobalRootConfirmerSetUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OperatorTableUpdaterInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the OperatorTableUpdater contract. +type OperatorTableUpdaterInitializedIterator struct { + Event *OperatorTableUpdaterInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OperatorTableUpdaterInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OperatorTableUpdaterInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OperatorTableUpdaterInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OperatorTableUpdaterInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OperatorTableUpdaterInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OperatorTableUpdaterInitialized represents a Initialized event raised by the OperatorTableUpdater contract. +type OperatorTableUpdaterInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) FilterInitialized(opts *bind.FilterOpts) (*OperatorTableUpdaterInitializedIterator, error) { + + logs, sub, err := _OperatorTableUpdater.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &OperatorTableUpdaterInitializedIterator{contract: _OperatorTableUpdater.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *OperatorTableUpdaterInitialized) (event.Subscription, error) { + + logs, sub, err := _OperatorTableUpdater.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OperatorTableUpdaterInitialized) + if err := _OperatorTableUpdater.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) ParseInitialized(log types.Log) (*OperatorTableUpdaterInitialized, error) { + event := new(OperatorTableUpdaterInitialized) + if err := _OperatorTableUpdater.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OperatorTableUpdaterNewGlobalTableRootIterator is returned from FilterNewGlobalTableRoot and is used to iterate over the raw logs and unpacked data for NewGlobalTableRoot events raised by the OperatorTableUpdater contract. +type OperatorTableUpdaterNewGlobalTableRootIterator struct { + Event *OperatorTableUpdaterNewGlobalTableRoot // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OperatorTableUpdaterNewGlobalTableRootIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OperatorTableUpdaterNewGlobalTableRoot) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OperatorTableUpdaterNewGlobalTableRoot) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OperatorTableUpdaterNewGlobalTableRootIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OperatorTableUpdaterNewGlobalTableRootIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OperatorTableUpdaterNewGlobalTableRoot represents a NewGlobalTableRoot event raised by the OperatorTableUpdater contract. +type OperatorTableUpdaterNewGlobalTableRoot struct { + ReferenceTimestamp uint32 + GlobalTableRoot [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewGlobalTableRoot is a free log retrieval operation binding the contract event 0x010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d369. +// +// Solidity: event NewGlobalTableRoot(uint32 indexed referenceTimestamp, bytes32 indexed globalTableRoot) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) FilterNewGlobalTableRoot(opts *bind.FilterOpts, referenceTimestamp []uint32, globalTableRoot [][32]byte) (*OperatorTableUpdaterNewGlobalTableRootIterator, error) { + + var referenceTimestampRule []interface{} + for _, referenceTimestampItem := range referenceTimestamp { + referenceTimestampRule = append(referenceTimestampRule, referenceTimestampItem) + } + var globalTableRootRule []interface{} + for _, globalTableRootItem := range globalTableRoot { + globalTableRootRule = append(globalTableRootRule, globalTableRootItem) + } + + logs, sub, err := _OperatorTableUpdater.contract.FilterLogs(opts, "NewGlobalTableRoot", referenceTimestampRule, globalTableRootRule) + if err != nil { + return nil, err + } + return &OperatorTableUpdaterNewGlobalTableRootIterator{contract: _OperatorTableUpdater.contract, event: "NewGlobalTableRoot", logs: logs, sub: sub}, nil +} + +// WatchNewGlobalTableRoot is a free log subscription operation binding the contract event 0x010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d369. +// +// Solidity: event NewGlobalTableRoot(uint32 indexed referenceTimestamp, bytes32 indexed globalTableRoot) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) WatchNewGlobalTableRoot(opts *bind.WatchOpts, sink chan<- *OperatorTableUpdaterNewGlobalTableRoot, referenceTimestamp []uint32, globalTableRoot [][32]byte) (event.Subscription, error) { + + var referenceTimestampRule []interface{} + for _, referenceTimestampItem := range referenceTimestamp { + referenceTimestampRule = append(referenceTimestampRule, referenceTimestampItem) + } + var globalTableRootRule []interface{} + for _, globalTableRootItem := range globalTableRoot { + globalTableRootRule = append(globalTableRootRule, globalTableRootItem) + } + + logs, sub, err := _OperatorTableUpdater.contract.WatchLogs(opts, "NewGlobalTableRoot", referenceTimestampRule, globalTableRootRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OperatorTableUpdaterNewGlobalTableRoot) + if err := _OperatorTableUpdater.contract.UnpackLog(event, "NewGlobalTableRoot", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseNewGlobalTableRoot is a log parse operation binding the contract event 0x010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d369. +// +// Solidity: event NewGlobalTableRoot(uint32 indexed referenceTimestamp, bytes32 indexed globalTableRoot) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) ParseNewGlobalTableRoot(log types.Log) (*OperatorTableUpdaterNewGlobalTableRoot, error) { + event := new(OperatorTableUpdaterNewGlobalTableRoot) + if err := _OperatorTableUpdater.contract.UnpackLog(event, "NewGlobalTableRoot", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OperatorTableUpdaterOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the OperatorTableUpdater contract. +type OperatorTableUpdaterOwnershipTransferredIterator struct { + Event *OperatorTableUpdaterOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OperatorTableUpdaterOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OperatorTableUpdaterOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OperatorTableUpdaterOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OperatorTableUpdaterOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OperatorTableUpdaterOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OperatorTableUpdaterOwnershipTransferred represents a OwnershipTransferred event raised by the OperatorTableUpdater contract. +type OperatorTableUpdaterOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OperatorTableUpdaterOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _OperatorTableUpdater.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &OperatorTableUpdaterOwnershipTransferredIterator{contract: _OperatorTableUpdater.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OperatorTableUpdaterOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _OperatorTableUpdater.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OperatorTableUpdaterOwnershipTransferred) + if err := _OperatorTableUpdater.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_OperatorTableUpdater *OperatorTableUpdaterFilterer) ParseOwnershipTransferred(log types.Log) (*OperatorTableUpdaterOwnershipTransferred, error) { + event := new(OperatorTableUpdaterOwnershipTransferred) + if err := _OperatorTableUpdater.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/OperatorTableUpdaterStorage/binding.go b/pkg/bindings/OperatorTableUpdaterStorage/binding.go new file mode 100644 index 0000000000..d75771b854 --- /dev/null +++ b/pkg/bindings/OperatorTableUpdaterStorage/binding.go @@ -0,0 +1,1005 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package OperatorTableUpdaterStorage + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// BN254G1Point is an auto generated low-level Go binding around an user-defined struct. +type BN254G1Point struct { + X *big.Int + Y *big.Int +} + +// BN254G2Point is an auto generated low-level Go binding around an user-defined struct. +type BN254G2Point struct { + X [2]*big.Int + Y [2]*big.Int +} + +// IBN254CertificateVerifierTypesBN254Certificate is an auto generated low-level Go binding around an user-defined struct. +type IBN254CertificateVerifierTypesBN254Certificate struct { + ReferenceTimestamp uint32 + MessageHash [32]byte + Signature BN254G1Point + Apk BN254G2Point + NonSignerWitnesses []IBN254CertificateVerifierTypesBN254OperatorInfoWitness +} + +// IBN254CertificateVerifierTypesBN254OperatorInfoWitness is an auto generated low-level Go binding around an user-defined struct. +type IBN254CertificateVerifierTypesBN254OperatorInfoWitness struct { + OperatorIndex uint32 + OperatorInfoProof []byte + OperatorInfo IBN254TableCalculatorTypesBN254OperatorInfo +} + +// IBN254TableCalculatorTypesBN254OperatorInfo is an auto generated low-level Go binding around an user-defined struct. +type IBN254TableCalculatorTypesBN254OperatorInfo struct { + Pubkey BN254G1Point + Weights []*big.Int +} + +// OperatorSet is an auto generated low-level Go binding around an user-defined struct. +type OperatorSet struct { + Avs common.Address + Id uint32 +} + +// OperatorTableUpdaterStorageMetaData contains all meta data concerning the OperatorTableUpdaterStorage contract. +var OperatorTableUpdaterStorageMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"MAX_BPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bn254CertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBN254CertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmGlobalTableRoot\",\"inputs\":[{\"name\":\"globalTableRootCert\",\"type\":\"tuple\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254Certificate\",\"components\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"nonSignerWitnesses\",\"type\":\"tuple[]\",\"internalType\":\"structIBN254CertificateVerifierTypes.BN254OperatorInfoWitness[]\",\"components\":[{\"name\":\"operatorIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorInfoProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorInfo\",\"type\":\"tuple\",\"internalType\":\"structIBN254TableCalculatorTypes.BN254OperatorInfo\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weights\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}]}]},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ecdsaCertificateVerifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIECDSACertificateVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCertificateVerifier\",\"inputs\":[{\"name\":\"curveType\",\"type\":\"uint8\",\"internalType\":\"enumIKeyRegistrarTypes.CurveType\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentGlobalTableRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalRootConfirmerSet\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalTableRootByTimestamp\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"tableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalRootConfirmationThreshold\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestReferenceTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmationThreshold\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalRootConfirmerSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorTable\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operatorTableBytes\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"GlobalRootConfirmationThresholdUpdated\",\"inputs\":[{\"name\":\"bps\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalRootConfirmerSetUpdated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewGlobalTableRoot\",\"inputs\":[{\"name\":\"referenceTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"globalTableRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CertificateInvalid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GlobalTableRootStale\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidConfirmationThreshold\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCurveType\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGlobalTableRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSetProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableRootNotInCertificate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TableUpdateForPastTimestamp\",\"inputs\":[]}]", +} + +// OperatorTableUpdaterStorageABI is the input ABI used to generate the binding from. +// Deprecated: Use OperatorTableUpdaterStorageMetaData.ABI instead. +var OperatorTableUpdaterStorageABI = OperatorTableUpdaterStorageMetaData.ABI + +// OperatorTableUpdaterStorage is an auto generated Go binding around an Ethereum contract. +type OperatorTableUpdaterStorage struct { + OperatorTableUpdaterStorageCaller // Read-only binding to the contract + OperatorTableUpdaterStorageTransactor // Write-only binding to the contract + OperatorTableUpdaterStorageFilterer // Log filterer for contract events +} + +// OperatorTableUpdaterStorageCaller is an auto generated read-only Go binding around an Ethereum contract. +type OperatorTableUpdaterStorageCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OperatorTableUpdaterStorageTransactor is an auto generated write-only Go binding around an Ethereum contract. +type OperatorTableUpdaterStorageTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OperatorTableUpdaterStorageFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type OperatorTableUpdaterStorageFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// OperatorTableUpdaterStorageSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type OperatorTableUpdaterStorageSession struct { + Contract *OperatorTableUpdaterStorage // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OperatorTableUpdaterStorageCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type OperatorTableUpdaterStorageCallerSession struct { + Contract *OperatorTableUpdaterStorageCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// OperatorTableUpdaterStorageTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type OperatorTableUpdaterStorageTransactorSession struct { + Contract *OperatorTableUpdaterStorageTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// OperatorTableUpdaterStorageRaw is an auto generated low-level Go binding around an Ethereum contract. +type OperatorTableUpdaterStorageRaw struct { + Contract *OperatorTableUpdaterStorage // Generic contract binding to access the raw methods on +} + +// OperatorTableUpdaterStorageCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type OperatorTableUpdaterStorageCallerRaw struct { + Contract *OperatorTableUpdaterStorageCaller // Generic read-only contract binding to access the raw methods on +} + +// OperatorTableUpdaterStorageTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type OperatorTableUpdaterStorageTransactorRaw struct { + Contract *OperatorTableUpdaterStorageTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewOperatorTableUpdaterStorage creates a new instance of OperatorTableUpdaterStorage, bound to a specific deployed contract. +func NewOperatorTableUpdaterStorage(address common.Address, backend bind.ContractBackend) (*OperatorTableUpdaterStorage, error) { + contract, err := bindOperatorTableUpdaterStorage(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &OperatorTableUpdaterStorage{OperatorTableUpdaterStorageCaller: OperatorTableUpdaterStorageCaller{contract: contract}, OperatorTableUpdaterStorageTransactor: OperatorTableUpdaterStorageTransactor{contract: contract}, OperatorTableUpdaterStorageFilterer: OperatorTableUpdaterStorageFilterer{contract: contract}}, nil +} + +// NewOperatorTableUpdaterStorageCaller creates a new read-only instance of OperatorTableUpdaterStorage, bound to a specific deployed contract. +func NewOperatorTableUpdaterStorageCaller(address common.Address, caller bind.ContractCaller) (*OperatorTableUpdaterStorageCaller, error) { + contract, err := bindOperatorTableUpdaterStorage(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &OperatorTableUpdaterStorageCaller{contract: contract}, nil +} + +// NewOperatorTableUpdaterStorageTransactor creates a new write-only instance of OperatorTableUpdaterStorage, bound to a specific deployed contract. +func NewOperatorTableUpdaterStorageTransactor(address common.Address, transactor bind.ContractTransactor) (*OperatorTableUpdaterStorageTransactor, error) { + contract, err := bindOperatorTableUpdaterStorage(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &OperatorTableUpdaterStorageTransactor{contract: contract}, nil +} + +// NewOperatorTableUpdaterStorageFilterer creates a new log filterer instance of OperatorTableUpdaterStorage, bound to a specific deployed contract. +func NewOperatorTableUpdaterStorageFilterer(address common.Address, filterer bind.ContractFilterer) (*OperatorTableUpdaterStorageFilterer, error) { + contract, err := bindOperatorTableUpdaterStorage(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &OperatorTableUpdaterStorageFilterer{contract: contract}, nil +} + +// bindOperatorTableUpdaterStorage binds a generic wrapper to an already deployed contract. +func bindOperatorTableUpdaterStorage(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := OperatorTableUpdaterStorageMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _OperatorTableUpdaterStorage.Contract.OperatorTableUpdaterStorageCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.Contract.OperatorTableUpdaterStorageTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.Contract.OperatorTableUpdaterStorageTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _OperatorTableUpdaterStorage.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.Contract.contract.Transact(opts, method, params...) +} + +// MAXBPS is a free data retrieval call binding the contract method 0xfd967f47. +// +// Solidity: function MAX_BPS() view returns(uint16) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCaller) MAXBPS(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _OperatorTableUpdaterStorage.contract.Call(opts, &out, "MAX_BPS") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// MAXBPS is a free data retrieval call binding the contract method 0xfd967f47. +// +// Solidity: function MAX_BPS() view returns(uint16) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) MAXBPS() (uint16, error) { + return _OperatorTableUpdaterStorage.Contract.MAXBPS(&_OperatorTableUpdaterStorage.CallOpts) +} + +// MAXBPS is a free data retrieval call binding the contract method 0xfd967f47. +// +// Solidity: function MAX_BPS() view returns(uint16) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCallerSession) MAXBPS() (uint16, error) { + return _OperatorTableUpdaterStorage.Contract.MAXBPS(&_OperatorTableUpdaterStorage.CallOpts) +} + +// Bn254CertificateVerifier is a free data retrieval call binding the contract method 0xb8c14306. +// +// Solidity: function bn254CertificateVerifier() view returns(address) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCaller) Bn254CertificateVerifier(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _OperatorTableUpdaterStorage.contract.Call(opts, &out, "bn254CertificateVerifier") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Bn254CertificateVerifier is a free data retrieval call binding the contract method 0xb8c14306. +// +// Solidity: function bn254CertificateVerifier() view returns(address) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) Bn254CertificateVerifier() (common.Address, error) { + return _OperatorTableUpdaterStorage.Contract.Bn254CertificateVerifier(&_OperatorTableUpdaterStorage.CallOpts) +} + +// Bn254CertificateVerifier is a free data retrieval call binding the contract method 0xb8c14306. +// +// Solidity: function bn254CertificateVerifier() view returns(address) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCallerSession) Bn254CertificateVerifier() (common.Address, error) { + return _OperatorTableUpdaterStorage.Contract.Bn254CertificateVerifier(&_OperatorTableUpdaterStorage.CallOpts) +} + +// EcdsaCertificateVerifier is a free data retrieval call binding the contract method 0xad0f9582. +// +// Solidity: function ecdsaCertificateVerifier() view returns(address) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCaller) EcdsaCertificateVerifier(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _OperatorTableUpdaterStorage.contract.Call(opts, &out, "ecdsaCertificateVerifier") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EcdsaCertificateVerifier is a free data retrieval call binding the contract method 0xad0f9582. +// +// Solidity: function ecdsaCertificateVerifier() view returns(address) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) EcdsaCertificateVerifier() (common.Address, error) { + return _OperatorTableUpdaterStorage.Contract.EcdsaCertificateVerifier(&_OperatorTableUpdaterStorage.CallOpts) +} + +// EcdsaCertificateVerifier is a free data retrieval call binding the contract method 0xad0f9582. +// +// Solidity: function ecdsaCertificateVerifier() view returns(address) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCallerSession) EcdsaCertificateVerifier() (common.Address, error) { + return _OperatorTableUpdaterStorage.Contract.EcdsaCertificateVerifier(&_OperatorTableUpdaterStorage.CallOpts) +} + +// GetCertificateVerifier is a free data retrieval call binding the contract method 0x6f728c50. +// +// Solidity: function getCertificateVerifier(uint8 curveType) view returns(address) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCaller) GetCertificateVerifier(opts *bind.CallOpts, curveType uint8) (common.Address, error) { + var out []interface{} + err := _OperatorTableUpdaterStorage.contract.Call(opts, &out, "getCertificateVerifier", curveType) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetCertificateVerifier is a free data retrieval call binding the contract method 0x6f728c50. +// +// Solidity: function getCertificateVerifier(uint8 curveType) view returns(address) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) GetCertificateVerifier(curveType uint8) (common.Address, error) { + return _OperatorTableUpdaterStorage.Contract.GetCertificateVerifier(&_OperatorTableUpdaterStorage.CallOpts, curveType) +} + +// GetCertificateVerifier is a free data retrieval call binding the contract method 0x6f728c50. +// +// Solidity: function getCertificateVerifier(uint8 curveType) view returns(address) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCallerSession) GetCertificateVerifier(curveType uint8) (common.Address, error) { + return _OperatorTableUpdaterStorage.Contract.GetCertificateVerifier(&_OperatorTableUpdaterStorage.CallOpts, curveType) +} + +// GetCurrentGlobalTableRoot is a free data retrieval call binding the contract method 0x28522d79. +// +// Solidity: function getCurrentGlobalTableRoot() view returns(bytes32 globalTableRoot) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCaller) GetCurrentGlobalTableRoot(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _OperatorTableUpdaterStorage.contract.Call(opts, &out, "getCurrentGlobalTableRoot") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetCurrentGlobalTableRoot is a free data retrieval call binding the contract method 0x28522d79. +// +// Solidity: function getCurrentGlobalTableRoot() view returns(bytes32 globalTableRoot) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) GetCurrentGlobalTableRoot() ([32]byte, error) { + return _OperatorTableUpdaterStorage.Contract.GetCurrentGlobalTableRoot(&_OperatorTableUpdaterStorage.CallOpts) +} + +// GetCurrentGlobalTableRoot is a free data retrieval call binding the contract method 0x28522d79. +// +// Solidity: function getCurrentGlobalTableRoot() view returns(bytes32 globalTableRoot) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCallerSession) GetCurrentGlobalTableRoot() ([32]byte, error) { + return _OperatorTableUpdaterStorage.Contract.GetCurrentGlobalTableRoot(&_OperatorTableUpdaterStorage.CallOpts) +} + +// GetGlobalRootConfirmerSet is a free data retrieval call binding the contract method 0x46282889. +// +// Solidity: function getGlobalRootConfirmerSet() view returns((address,uint32)) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCaller) GetGlobalRootConfirmerSet(opts *bind.CallOpts) (OperatorSet, error) { + var out []interface{} + err := _OperatorTableUpdaterStorage.contract.Call(opts, &out, "getGlobalRootConfirmerSet") + + if err != nil { + return *new(OperatorSet), err + } + + out0 := *abi.ConvertType(out[0], new(OperatorSet)).(*OperatorSet) + + return out0, err + +} + +// GetGlobalRootConfirmerSet is a free data retrieval call binding the contract method 0x46282889. +// +// Solidity: function getGlobalRootConfirmerSet() view returns((address,uint32)) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) GetGlobalRootConfirmerSet() (OperatorSet, error) { + return _OperatorTableUpdaterStorage.Contract.GetGlobalRootConfirmerSet(&_OperatorTableUpdaterStorage.CallOpts) +} + +// GetGlobalRootConfirmerSet is a free data retrieval call binding the contract method 0x46282889. +// +// Solidity: function getGlobalRootConfirmerSet() view returns((address,uint32)) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCallerSession) GetGlobalRootConfirmerSet() (OperatorSet, error) { + return _OperatorTableUpdaterStorage.Contract.GetGlobalRootConfirmerSet(&_OperatorTableUpdaterStorage.CallOpts) +} + +// GetGlobalTableRootByTimestamp is a free data retrieval call binding the contract method 0xc5916a39. +// +// Solidity: function getGlobalTableRootByTimestamp(uint32 referenceTimestamp) view returns(bytes32 tableRoot) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCaller) GetGlobalTableRootByTimestamp(opts *bind.CallOpts, referenceTimestamp uint32) ([32]byte, error) { + var out []interface{} + err := _OperatorTableUpdaterStorage.contract.Call(opts, &out, "getGlobalTableRootByTimestamp", referenceTimestamp) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetGlobalTableRootByTimestamp is a free data retrieval call binding the contract method 0xc5916a39. +// +// Solidity: function getGlobalTableRootByTimestamp(uint32 referenceTimestamp) view returns(bytes32 tableRoot) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) GetGlobalTableRootByTimestamp(referenceTimestamp uint32) ([32]byte, error) { + return _OperatorTableUpdaterStorage.Contract.GetGlobalTableRootByTimestamp(&_OperatorTableUpdaterStorage.CallOpts, referenceTimestamp) +} + +// GetGlobalTableRootByTimestamp is a free data retrieval call binding the contract method 0xc5916a39. +// +// Solidity: function getGlobalTableRootByTimestamp(uint32 referenceTimestamp) view returns(bytes32 tableRoot) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCallerSession) GetGlobalTableRootByTimestamp(referenceTimestamp uint32) ([32]byte, error) { + return _OperatorTableUpdaterStorage.Contract.GetGlobalTableRootByTimestamp(&_OperatorTableUpdaterStorage.CallOpts, referenceTimestamp) +} + +// GlobalRootConfirmationThreshold is a free data retrieval call binding the contract method 0xc252aa22. +// +// Solidity: function globalRootConfirmationThreshold() view returns(uint16) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCaller) GlobalRootConfirmationThreshold(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _OperatorTableUpdaterStorage.contract.Call(opts, &out, "globalRootConfirmationThreshold") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// GlobalRootConfirmationThreshold is a free data retrieval call binding the contract method 0xc252aa22. +// +// Solidity: function globalRootConfirmationThreshold() view returns(uint16) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) GlobalRootConfirmationThreshold() (uint16, error) { + return _OperatorTableUpdaterStorage.Contract.GlobalRootConfirmationThreshold(&_OperatorTableUpdaterStorage.CallOpts) +} + +// GlobalRootConfirmationThreshold is a free data retrieval call binding the contract method 0xc252aa22. +// +// Solidity: function globalRootConfirmationThreshold() view returns(uint16) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCallerSession) GlobalRootConfirmationThreshold() (uint16, error) { + return _OperatorTableUpdaterStorage.Contract.GlobalRootConfirmationThreshold(&_OperatorTableUpdaterStorage.CallOpts) +} + +// LatestReferenceTimestamp is a free data retrieval call binding the contract method 0xa6ff5936. +// +// Solidity: function latestReferenceTimestamp() view returns(uint32) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCaller) LatestReferenceTimestamp(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _OperatorTableUpdaterStorage.contract.Call(opts, &out, "latestReferenceTimestamp") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// LatestReferenceTimestamp is a free data retrieval call binding the contract method 0xa6ff5936. +// +// Solidity: function latestReferenceTimestamp() view returns(uint32) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) LatestReferenceTimestamp() (uint32, error) { + return _OperatorTableUpdaterStorage.Contract.LatestReferenceTimestamp(&_OperatorTableUpdaterStorage.CallOpts) +} + +// LatestReferenceTimestamp is a free data retrieval call binding the contract method 0xa6ff5936. +// +// Solidity: function latestReferenceTimestamp() view returns(uint32) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageCallerSession) LatestReferenceTimestamp() (uint32, error) { + return _OperatorTableUpdaterStorage.Contract.LatestReferenceTimestamp(&_OperatorTableUpdaterStorage.CallOpts) +} + +// ConfirmGlobalTableRoot is a paid mutator transaction binding the contract method 0x6ab40904. +// +// Solidity: function confirmGlobalTableRoot((uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) globalTableRootCert, bytes32 globalTableRoot, uint32 referenceTimestamp) returns() +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactor) ConfirmGlobalTableRoot(opts *bind.TransactOpts, globalTableRootCert IBN254CertificateVerifierTypesBN254Certificate, globalTableRoot [32]byte, referenceTimestamp uint32) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.contract.Transact(opts, "confirmGlobalTableRoot", globalTableRootCert, globalTableRoot, referenceTimestamp) +} + +// ConfirmGlobalTableRoot is a paid mutator transaction binding the contract method 0x6ab40904. +// +// Solidity: function confirmGlobalTableRoot((uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) globalTableRootCert, bytes32 globalTableRoot, uint32 referenceTimestamp) returns() +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) ConfirmGlobalTableRoot(globalTableRootCert IBN254CertificateVerifierTypesBN254Certificate, globalTableRoot [32]byte, referenceTimestamp uint32) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.Contract.ConfirmGlobalTableRoot(&_OperatorTableUpdaterStorage.TransactOpts, globalTableRootCert, globalTableRoot, referenceTimestamp) +} + +// ConfirmGlobalTableRoot is a paid mutator transaction binding the contract method 0x6ab40904. +// +// Solidity: function confirmGlobalTableRoot((uint32,bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint32,bytes,((uint256,uint256),uint256[]))[]) globalTableRootCert, bytes32 globalTableRoot, uint32 referenceTimestamp) returns() +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactorSession) ConfirmGlobalTableRoot(globalTableRootCert IBN254CertificateVerifierTypesBN254Certificate, globalTableRoot [32]byte, referenceTimestamp uint32) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.Contract.ConfirmGlobalTableRoot(&_OperatorTableUpdaterStorage.TransactOpts, globalTableRootCert, globalTableRoot, referenceTimestamp) +} + +// SetGlobalRootConfirmationThreshold is a paid mutator transaction binding the contract method 0x2370356c. +// +// Solidity: function setGlobalRootConfirmationThreshold(uint16 bps) returns() +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactor) SetGlobalRootConfirmationThreshold(opts *bind.TransactOpts, bps uint16) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.contract.Transact(opts, "setGlobalRootConfirmationThreshold", bps) +} + +// SetGlobalRootConfirmationThreshold is a paid mutator transaction binding the contract method 0x2370356c. +// +// Solidity: function setGlobalRootConfirmationThreshold(uint16 bps) returns() +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) SetGlobalRootConfirmationThreshold(bps uint16) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.Contract.SetGlobalRootConfirmationThreshold(&_OperatorTableUpdaterStorage.TransactOpts, bps) +} + +// SetGlobalRootConfirmationThreshold is a paid mutator transaction binding the contract method 0x2370356c. +// +// Solidity: function setGlobalRootConfirmationThreshold(uint16 bps) returns() +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactorSession) SetGlobalRootConfirmationThreshold(bps uint16) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.Contract.SetGlobalRootConfirmationThreshold(&_OperatorTableUpdaterStorage.TransactOpts, bps) +} + +// SetGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x0371406e. +// +// Solidity: function setGlobalRootConfirmerSet((address,uint32) operatorSet) returns() +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactor) SetGlobalRootConfirmerSet(opts *bind.TransactOpts, operatorSet OperatorSet) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.contract.Transact(opts, "setGlobalRootConfirmerSet", operatorSet) +} + +// SetGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x0371406e. +// +// Solidity: function setGlobalRootConfirmerSet((address,uint32) operatorSet) returns() +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) SetGlobalRootConfirmerSet(operatorSet OperatorSet) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.Contract.SetGlobalRootConfirmerSet(&_OperatorTableUpdaterStorage.TransactOpts, operatorSet) +} + +// SetGlobalRootConfirmerSet is a paid mutator transaction binding the contract method 0x0371406e. +// +// Solidity: function setGlobalRootConfirmerSet((address,uint32) operatorSet) returns() +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactorSession) SetGlobalRootConfirmerSet(operatorSet OperatorSet) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.Contract.SetGlobalRootConfirmerSet(&_OperatorTableUpdaterStorage.TransactOpts, operatorSet) +} + +// UpdateOperatorTable is a paid mutator transaction binding the contract method 0x9ea94778. +// +// Solidity: function updateOperatorTable(uint32 referenceTimestamp, bytes32 globalTableRoot, uint32 operatorSetIndex, bytes proof, bytes operatorTableBytes) returns() +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactor) UpdateOperatorTable(opts *bind.TransactOpts, referenceTimestamp uint32, globalTableRoot [32]byte, operatorSetIndex uint32, proof []byte, operatorTableBytes []byte) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.contract.Transact(opts, "updateOperatorTable", referenceTimestamp, globalTableRoot, operatorSetIndex, proof, operatorTableBytes) +} + +// UpdateOperatorTable is a paid mutator transaction binding the contract method 0x9ea94778. +// +// Solidity: function updateOperatorTable(uint32 referenceTimestamp, bytes32 globalTableRoot, uint32 operatorSetIndex, bytes proof, bytes operatorTableBytes) returns() +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageSession) UpdateOperatorTable(referenceTimestamp uint32, globalTableRoot [32]byte, operatorSetIndex uint32, proof []byte, operatorTableBytes []byte) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.Contract.UpdateOperatorTable(&_OperatorTableUpdaterStorage.TransactOpts, referenceTimestamp, globalTableRoot, operatorSetIndex, proof, operatorTableBytes) +} + +// UpdateOperatorTable is a paid mutator transaction binding the contract method 0x9ea94778. +// +// Solidity: function updateOperatorTable(uint32 referenceTimestamp, bytes32 globalTableRoot, uint32 operatorSetIndex, bytes proof, bytes operatorTableBytes) returns() +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageTransactorSession) UpdateOperatorTable(referenceTimestamp uint32, globalTableRoot [32]byte, operatorSetIndex uint32, proof []byte, operatorTableBytes []byte) (*types.Transaction, error) { + return _OperatorTableUpdaterStorage.Contract.UpdateOperatorTable(&_OperatorTableUpdaterStorage.TransactOpts, referenceTimestamp, globalTableRoot, operatorSetIndex, proof, operatorTableBytes) +} + +// OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator is returned from FilterGlobalRootConfirmationThresholdUpdated and is used to iterate over the raw logs and unpacked data for GlobalRootConfirmationThresholdUpdated events raised by the OperatorTableUpdaterStorage contract. +type OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator struct { + Event *OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated represents a GlobalRootConfirmationThresholdUpdated event raised by the OperatorTableUpdaterStorage contract. +type OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated struct { + Bps uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGlobalRootConfirmationThresholdUpdated is a free log retrieval operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. +// +// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) FilterGlobalRootConfirmationThresholdUpdated(opts *bind.FilterOpts) (*OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator, error) { + + logs, sub, err := _OperatorTableUpdaterStorage.contract.FilterLogs(opts, "GlobalRootConfirmationThresholdUpdated") + if err != nil { + return nil, err + } + return &OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdatedIterator{contract: _OperatorTableUpdaterStorage.contract, event: "GlobalRootConfirmationThresholdUpdated", logs: logs, sub: sub}, nil +} + +// WatchGlobalRootConfirmationThresholdUpdated is a free log subscription operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. +// +// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) WatchGlobalRootConfirmationThresholdUpdated(opts *bind.WatchOpts, sink chan<- *OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated) (event.Subscription, error) { + + logs, sub, err := _OperatorTableUpdaterStorage.contract.WatchLogs(opts, "GlobalRootConfirmationThresholdUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated) + if err := _OperatorTableUpdaterStorage.contract.UnpackLog(event, "GlobalRootConfirmationThresholdUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseGlobalRootConfirmationThresholdUpdated is a log parse operation binding the contract event 0xf5d1836df8fcd7c1e54047e94ac8773d2855395603e2ef9ba5f5f16905f22592. +// +// Solidity: event GlobalRootConfirmationThresholdUpdated(uint16 bps) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) ParseGlobalRootConfirmationThresholdUpdated(log types.Log) (*OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated, error) { + event := new(OperatorTableUpdaterStorageGlobalRootConfirmationThresholdUpdated) + if err := _OperatorTableUpdaterStorage.contract.UnpackLog(event, "GlobalRootConfirmationThresholdUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdatedIterator is returned from FilterGlobalRootConfirmerSetUpdated and is used to iterate over the raw logs and unpacked data for GlobalRootConfirmerSetUpdated events raised by the OperatorTableUpdaterStorage contract. +type OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdatedIterator struct { + Event *OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdated represents a GlobalRootConfirmerSetUpdated event raised by the OperatorTableUpdaterStorage contract. +type OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdated struct { + OperatorSet OperatorSet + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGlobalRootConfirmerSetUpdated is a free log retrieval operation binding the contract event 0x20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b37. +// +// Solidity: event GlobalRootConfirmerSetUpdated((address,uint32) operatorSet) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) FilterGlobalRootConfirmerSetUpdated(opts *bind.FilterOpts) (*OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdatedIterator, error) { + + logs, sub, err := _OperatorTableUpdaterStorage.contract.FilterLogs(opts, "GlobalRootConfirmerSetUpdated") + if err != nil { + return nil, err + } + return &OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdatedIterator{contract: _OperatorTableUpdaterStorage.contract, event: "GlobalRootConfirmerSetUpdated", logs: logs, sub: sub}, nil +} + +// WatchGlobalRootConfirmerSetUpdated is a free log subscription operation binding the contract event 0x20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b37. +// +// Solidity: event GlobalRootConfirmerSetUpdated((address,uint32) operatorSet) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) WatchGlobalRootConfirmerSetUpdated(opts *bind.WatchOpts, sink chan<- *OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdated) (event.Subscription, error) { + + logs, sub, err := _OperatorTableUpdaterStorage.contract.WatchLogs(opts, "GlobalRootConfirmerSetUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdated) + if err := _OperatorTableUpdaterStorage.contract.UnpackLog(event, "GlobalRootConfirmerSetUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseGlobalRootConfirmerSetUpdated is a log parse operation binding the contract event 0x20100394950e66014c25009b45d12b675210a6e7a002044a0e3de6544e3c4b37. +// +// Solidity: event GlobalRootConfirmerSetUpdated((address,uint32) operatorSet) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) ParseGlobalRootConfirmerSetUpdated(log types.Log) (*OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdated, error) { + event := new(OperatorTableUpdaterStorageGlobalRootConfirmerSetUpdated) + if err := _OperatorTableUpdaterStorage.contract.UnpackLog(event, "GlobalRootConfirmerSetUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// OperatorTableUpdaterStorageNewGlobalTableRootIterator is returned from FilterNewGlobalTableRoot and is used to iterate over the raw logs and unpacked data for NewGlobalTableRoot events raised by the OperatorTableUpdaterStorage contract. +type OperatorTableUpdaterStorageNewGlobalTableRootIterator struct { + Event *OperatorTableUpdaterStorageNewGlobalTableRoot // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *OperatorTableUpdaterStorageNewGlobalTableRootIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(OperatorTableUpdaterStorageNewGlobalTableRoot) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(OperatorTableUpdaterStorageNewGlobalTableRoot) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *OperatorTableUpdaterStorageNewGlobalTableRootIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *OperatorTableUpdaterStorageNewGlobalTableRootIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// OperatorTableUpdaterStorageNewGlobalTableRoot represents a NewGlobalTableRoot event raised by the OperatorTableUpdaterStorage contract. +type OperatorTableUpdaterStorageNewGlobalTableRoot struct { + ReferenceTimestamp uint32 + GlobalTableRoot [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewGlobalTableRoot is a free log retrieval operation binding the contract event 0x010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d369. +// +// Solidity: event NewGlobalTableRoot(uint32 indexed referenceTimestamp, bytes32 indexed globalTableRoot) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) FilterNewGlobalTableRoot(opts *bind.FilterOpts, referenceTimestamp []uint32, globalTableRoot [][32]byte) (*OperatorTableUpdaterStorageNewGlobalTableRootIterator, error) { + + var referenceTimestampRule []interface{} + for _, referenceTimestampItem := range referenceTimestamp { + referenceTimestampRule = append(referenceTimestampRule, referenceTimestampItem) + } + var globalTableRootRule []interface{} + for _, globalTableRootItem := range globalTableRoot { + globalTableRootRule = append(globalTableRootRule, globalTableRootItem) + } + + logs, sub, err := _OperatorTableUpdaterStorage.contract.FilterLogs(opts, "NewGlobalTableRoot", referenceTimestampRule, globalTableRootRule) + if err != nil { + return nil, err + } + return &OperatorTableUpdaterStorageNewGlobalTableRootIterator{contract: _OperatorTableUpdaterStorage.contract, event: "NewGlobalTableRoot", logs: logs, sub: sub}, nil +} + +// WatchNewGlobalTableRoot is a free log subscription operation binding the contract event 0x010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d369. +// +// Solidity: event NewGlobalTableRoot(uint32 indexed referenceTimestamp, bytes32 indexed globalTableRoot) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) WatchNewGlobalTableRoot(opts *bind.WatchOpts, sink chan<- *OperatorTableUpdaterStorageNewGlobalTableRoot, referenceTimestamp []uint32, globalTableRoot [][32]byte) (event.Subscription, error) { + + var referenceTimestampRule []interface{} + for _, referenceTimestampItem := range referenceTimestamp { + referenceTimestampRule = append(referenceTimestampRule, referenceTimestampItem) + } + var globalTableRootRule []interface{} + for _, globalTableRootItem := range globalTableRoot { + globalTableRootRule = append(globalTableRootRule, globalTableRootItem) + } + + logs, sub, err := _OperatorTableUpdaterStorage.contract.WatchLogs(opts, "NewGlobalTableRoot", referenceTimestampRule, globalTableRootRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(OperatorTableUpdaterStorageNewGlobalTableRoot) + if err := _OperatorTableUpdaterStorage.contract.UnpackLog(event, "NewGlobalTableRoot", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseNewGlobalTableRoot is a log parse operation binding the contract event 0x010dcbe0d1e019c93357711f7bb6287d543b7ff7de74f29df3fb5ecceec8d369. +// +// Solidity: event NewGlobalTableRoot(uint32 indexed referenceTimestamp, bytes32 indexed globalTableRoot) +func (_OperatorTableUpdaterStorage *OperatorTableUpdaterStorageFilterer) ParseNewGlobalTableRoot(log types.Log) (*OperatorTableUpdaterStorageNewGlobalTableRoot, error) { + event := new(OperatorTableUpdaterStorageNewGlobalTableRoot) + if err := _OperatorTableUpdaterStorage.contract.UnpackLog(event, "NewGlobalTableRoot", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/RewardsCoordinator/binding.go b/pkg/bindings/RewardsCoordinator/binding.go index a7b2259129..19701d3fe4 100644 --- a/pkg/bindings/RewardsCoordinator/binding.go +++ b/pkg/bindings/RewardsCoordinator/binding.go @@ -115,7 +115,7 @@ type OperatorSet struct { // RewardsCoordinatorMetaData contains all meta data concerning the RewardsCoordinator contract. var RewardsCoordinatorMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsCoordinatorConstructorParams\",\"components\":[{\"name\":\"delegationManager\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"allocationManager\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"},{\"name\":\"pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"permissionController\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"},{\"name\":\"CALCULATION_INTERVAL_SECONDS\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"MAX_REWARDS_DURATION\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"MAX_RETROACTIVE_LENGTH\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"MAX_FUTURE_LENGTH\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"GENESIS_REWARDS_TIMESTAMP\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"CALCULATION_INTERVAL_SECONDS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GENESIS_REWARDS_TIMESTAMP\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_FUTURE_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_RETROACTIVE_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_REWARDS_DURATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activationDelay\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateEarnerLeafHash\",\"inputs\":[{\"name\":\"leaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"calculateTokenLeafHash\",\"inputs\":[{\"name\":\"leaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"checkClaim\",\"inputs\":[{\"name\":\"claim\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimerFor\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createAVSRewardsSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorDirectedAVSRewardsSubmission\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorDirectedOperatorSetRewardsSubmission\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorDirectedRewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllEarners\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cumulativeClaimed\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"totalClaimed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currRewardsCalculationEndTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"defaultOperatorSplitBips\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getCurrentClaimableDistributionRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentDistributionRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDistributionRootAtIndex\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDistributionRootsLength\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRootIndexFromHash\",\"inputs\":[{\"name\":\"rootHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_defaultSplitBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isAVSRewardsSubmissionHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"valid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorDirectedAVSRewardsSubmissionHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"valid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorDirectedOperatorSetRewardsSubmissionHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"valid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsForAllSubmitter\",\"inputs\":[{\"name\":\"submitter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"valid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsSubmissionForAllEarnersHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"valid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsSubmissionForAllHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"valid\",\"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\":\"permissionController\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"processClaim\",\"inputs\":[{\"name\":\"claim\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"processClaims\",\"inputs\":[{\"name\":\"claims\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim[]\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rewardsUpdater\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setActivationDelay\",\"inputs\":[{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClaimerFor\",\"inputs\":[{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClaimerFor\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setDefaultOperatorSplit\",\"inputs\":[{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorSetSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsForAllSubmitter\",\"inputs\":[{\"name\":\"_submitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_newValue\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsUpdater\",\"inputs\":[{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"submissionNonce\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"submitRoot\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"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\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"AVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ActivationDelaySet\",\"inputs\":[{\"name\":\"oldActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"newActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ClaimerForSet\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldClaimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DefaultOperatorSplitBipsSet\",\"inputs\":[{\"name\":\"oldDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootDisabled\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootSubmitted\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAVSSplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDirectedAVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorDirectedRewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDirectedOperatorSetRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorDirectedRewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorPISplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetSplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorSetSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorSetSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"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\":\"RewardsClaimed\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"claimedAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsForAllSubmitterSet\",\"inputs\":[{\"name\":\"rewardsForAllSubmitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"},{\"name\":\"newValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsSubmissionForAllCreated\",\"inputs\":[{\"name\":\"submitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsSubmissionForAllEarnersCreated\",\"inputs\":[{\"name\":\"tokenHopper\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsUpdaterSet\",\"inputs\":[{\"name\":\"oldRewardsUpdater\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newRewardsUpdater\",\"type\":\"address\",\"indexed\":true,\"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\":\"error\",\"name\":\"AmountExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AmountIsZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DurationExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DurationIsZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EarningsNotGreaterThanClaimed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCalculationIntervalSecondsRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidClaimProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidDurationRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEarner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEarnerLeafIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGenesisRewardsTimestampRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPermissions\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRootIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStartTimestampRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTokenLeafIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewRootMustBeForNewCalculatedPeriod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorsNotInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreviousSplitPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RewardsEndTimestampNotElapsed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootAlreadyActivated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootNotActivated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SplitExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StartTimestampTooFarInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StartTimestampTooFarInPast\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategiesNotInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"SubmissionNotRetroactive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnauthorizedCaller\",\"inputs\":[]}]", - Bin: "0x6101e0604052348015610010575f5ffd5b50604051614b90380380614b9083398101604081905261002f9161034a565b610140810151608082015182516020840151604085015160a086015160c087015160e08801516101008901516101208a015160608b01516001600160a01b03811661008d576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03166080526100a38582610465565b63ffffffff16156100c757604051630e06bd3160e01b815260040160405180910390fd5b6100d46201518086610465565b63ffffffff16156100f85760405163223c7b3960e11b815260040160405180910390fd5b6001600160a01b0397881660a05295871660c05293861660e05263ffffffff9283166101005290821661012052811661014052908116610160521661018052166101a05261014581610158565b6101c0525061015261019e565b506104f3565b5f5f829050601f8151111561018b578260405163305a27a960e01b81526004016101829190610498565b60405180910390fd5b8051610196826104cd565b179392505050565b5f54610100900460ff16156102055760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610182565b5f5460ff90811614610254575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b038111828210171561028d5761028d610256565b60405290565b80516001600160a01b03811681146102a9575f5ffd5b919050565b805163ffffffff811681146102a9575f5ffd5b5f82601f8301126102d0575f5ffd5b81516001600160401b038111156102e9576102e9610256565b604051601f8201601f19908116603f011681016001600160401b038111828210171561031757610317610256565b60405281815283820160200185101561032e575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561035a575f5ffd5b81516001600160401b0381111561036f575f5ffd5b82016101608185031215610381575f5ffd5b61038961026a565b61039282610293565b81526103a060208301610293565b60208201526103b160408301610293565b60408201526103c260608301610293565b60608201526103d360808301610293565b60808201526103e460a083016102ae565b60a08201526103f560c083016102ae565b60c082015261040660e083016102ae565b60e082015261041861010083016102ae565b61010082015261042b61012083016102ae565b6101208201526101408201516001600160401b0381111561044a575f5ffd5b610456868285016102c1565b61014083015250949350505050565b5f63ffffffff83168061048657634e487b7160e01b5f52601260045260245ffd5b8063ffffffff84160691505092915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156104ed575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516145c26105ce5f395f61138701525f81816105f001526124b301525f81816104a4015261341101525f81816103f3015261299801525f818161055201526133cf01525f818161087e01526132b901525f81816107bf01528181613309015261337d01525f81816108d201528181610adc01528181611bff0152611e8c01525f818161057901526134ac01525f81816109450152611b6f01525f81816107510152818161283d01526131ea01526145c25ff3fe608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c53660046139ef565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613a67565b610a7f565b005b610447610d25565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613ac3565b610e25565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b61043d6104d4366004613afa565b610ea5565b6104ec6104e7366004613b11565b610edf565b6040519081526020016103e5565b6105226105083660046139ef565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613b2b565b610f54565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613b7a565b6110c5565b61043d6105d3366004613bd0565b6110ec565b61043d6105e6366004613bfa565b6112c2565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6106256106203660046139ef565b611325565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b610657611380565b6040516103e59190613c4c565b61043d610672366004613c81565b6113b0565b61043d6113c4565b6103d961068d366004613c9a565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613cba565b6113d8565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613ceb565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611463565b60ca546104ec565b61043d61071d3660046139ef565b611474565b6104ec610730366004613d15565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611485565b61043d6107b5366004613d41565b611521565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6106256107ef366004613d78565b61169c565b61043d6108023660046139ef565b61171f565b61043d610815366004613db4565b61172a565b6103d9610828366004613ceb565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613dcd565b61173b565b6104ec6108683660046139ef565b60ce6020525f908152604090205481565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6103d96108ae366004613ceb565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b61043d610902366004613df7565b611866565b610447610915366004613afa565b6119b3565b610625610928366004613d15565b611a43565b61041561093b366004613afa565b611aa8565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6103d9610975366004613ceb565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613d15565b611b29565b6103d96109b5366004613ceb565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e23660046139ef565b611c93565b61043d6109f5366004613e3b565b611d0e565b61043d610a08366004613e99565b611e43565b6104ec610a1b366004613b11565b61200a565b61043d610a2e366004613c81565b61201a565b61043d610a41366004613afa565b61214b565b60cb54610522906001600160a01b031681565b61043d610a67366004613b2b565b6121b8565b61043d610a7a366004613b2b565b6122e9565b6009610a8a8161244a565b610a9760208501856139ef565b610aa081612475565b610abd5760405163932d94f760e01b815260040160405180910390fd5b610ac561251f565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610b11908890600401613f04565b602060405180830381865afa158015610b2c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b509190613f12565b610b6d57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d135736858583818110610b8a57610b8a613f2d565b9050602002810190610b9c9190613f41565b90505f60ce81610baf60208b018b6139ef565b6001600160a01b031681526020808201929092526040015f90812054925090610bda908a018a6139ef565b8284604051602001610bee93929190614169565b6040516020818303038152906040528051906020012090505f610c1084612578565b9050600160d75f610c2460208e018e6139ef565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c638360016141ac565b60ce5f610c7360208e018e6139ef565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cd4939291906141bf565b60405180910390a3610d03333083610cf26040890160208a016139ef565b6001600160a01b0316929190612763565b505060019092019150610b6f9050565b50610d1e6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610dfd575f60ca610d606001846141e4565b81548110610d7057610d70613f2d565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610ddf5750806040015163ffffffff164210155b15610dea5792915050565b5080610df5816141f7565b915050610d4c565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e2d6127ce565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b610ead612828565b6066548181168114610ed25760405163c61dca5d60e01b815260040160405180910390fd5b610edb826128cb565b5050565b5f80610eee60208401846139ef565b8360200135604051602001610f379392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6001610f5f8161244a565b335f90815260d1602052604090205460ff16610f8e57604051635c427cd960e01b815260040160405180910390fd5b610f9661251f565b5f5b828110156110b55736848483818110610fb357610fb3613f2d565b9050602002810190610fc5919061420c565b335f81815260ce60209081526040808320549051949550939192610fef929091859187910161429e565b60405160208183030381529060405280519060200120905061101083612908565b335f90815260d0602090815260408083208484529091529020805460ff191660019081179091556110429083906141ac565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf270482906110899088906142c4565b60405180910390a46110aa333060408601803590610cf290602089016139ef565b505050600101610f98565b506110c06001609755565b505050565b60026110d08161244a565b6110d861251f565b6110e283836129f3565b6110c06001609755565b60036110f78161244a565b60cb546001600160a01b0316331461112257604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161115557604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061117b576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f9061119a90600160a01b900463ffffffff16426142d6565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b60026112cd8161244a565b6112d561251f565b5f5b838110156113145761130c8585838181106112f4576112f4613f2d565b905060200281019061130691906142f2565b846129f3565b6001016112d7565b5061131f6001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff169082015261137a90612c7b565b92915050565b60606113ab7f0000000000000000000000000000000000000000000000000000000000000000612ceb565b905090565b6113b86127ce565b6113c181612d28565b50565b6113cc612828565b6113d65f196128cb565b565b5f61145b8260ca6113ec6020830183613c81565b63ffffffff168154811061140257611402613f2d565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152612d99565b506001919050565b61146b6127ce565b6113d65f612f3c565b61147c6127ce565b6113c181612f8d565b604080516080810182525f80825260208201819052918101829052606081019190915260ca80546114b8906001906141e4565b815481106114c8576114c8613f2d565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b600561152c8161244a565b8361153681612475565b6115535760405163932d94f760e01b815260040160405180910390fd5b61155b61251f565b5f5b83811015610d13573685858381811061157857611578613f2d565b905060200281019061158a9190613f41565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926115bb918b918591879101614169565b6040516020818303038152906040528051906020012090505f6115dd84612578565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff1916600190811790915590915061161b9084906141ac565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e09061166e9088908a90614306565b60405180910390a461168c333083610cf26040890160208a016139ef565b50506001909201915061155d9050565b6001600160a01b0382165f90815260d66020526040812061171890826116cf6116ca3687900387018761431e565b612fe8565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612c7b565b9392505050565b33610edb818361304b565b6117326127ce565b6113c1816130ae565b60076117468161244a565b8261175081612475565b61176d5760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061178990600160a01b900463ffffffff16426142d6565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906117e290612c7b565b6001600160a01b0387165f90815260d560205260409020909150611807908684613119565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b60066118718161244a565b8361187b81612475565b6118985760405163932d94f760e01b815260040160405180910390fd5b60cb545f906118b490600160a01b900463ffffffff16426142d6565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff169281019290925291925061191b90612c7b565b6001600160a01b038089165f90815260d460209081526040808320938b1683529290522090915061194d908684613119565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca82815481106119e9576119e9613f2d565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061171890612c7b565b60ca545f905b63ffffffff811615611b0f578260ca611ac8600184614386565b63ffffffff1681548110611ade57611ade613f2d565b905f5260205f2090600202015f015403611afd57611718600182614386565b80611b07816143a2565b915050611aae565b5060405163504570e360e01b815260040160405180910390fd5b81611b3381612475565b611b505760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611bb4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bd89190613f12565b80611c6c575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063ba1a84e590602401602060405180830381865afa158015611c46573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c6a91906143c0565b115b611c895760405163fb494ea160e01b815260040160405180910390fd5b6110c0838361304b565b611c9b6127ce565b6001600160a01b038116611d055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6113c181612f3c565b5f54610100900460ff1615808015611d2c57505f54600160ff909116105b80611d455750303b158015611d4557505f5460ff166001145b611da85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611cfc565b5f805460ff191660011790558015611dc9575f805461ff0019166101001790555b611dd2856128cb565b611ddb86612f3c565b611de484612f8d565b611ded83612d28565b611df6826130ae565b8015611e3b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6008611e4e8161244a565b83611e5881612475565b611e755760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890611ec1908790600401613f04565b602060405180830381865afa158015611edc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f009190613f12565b611f1d57604051631fb1705560e21b815260040160405180910390fd5b60cb545f90611f3990600160a01b900463ffffffff16426142d6565b6001600160a01b0387165f90815260d66020526040812091925090611f6b90826116cf6116ca368b90038b018b61431e565b6001600160a01b0388165f90815260d660205260408120919250611fb09190611f9c6116ca368b90038b018b61431e565b81526020019081526020015f208684613119565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a604051611ff994939291906143d7565b60405180910390a350505050505050565b5f6001610eee60208401846139ef565b60036120258161244a565b60cb546001600160a01b0316331461205057604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff831610612078576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff168154811061209257612092613f2d565b905f5260205f20906002020190508060010160089054906101000a900460ff16156120d057604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061210157604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b6121536131e8565b6066548019821981161461217a5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6121c28161244a565b6121ca61251f565b5f5b828110156110b557368484838181106121e7576121e7613f2d565b90506020028101906121f9919061420c565b335f81815260ce60209081526040808320549051949550939192612223929091859187910161429e565b60405160208183030381529060405280519060200120905061224483612908565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556122769083906141ac565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906122bd9088906142c4565b60405180910390a46122de333060408601803590610cf290602089016139ef565b5050506001016121cc565b60046122f48161244a565b335f90815260d1602052604090205460ff1661232357604051635c427cd960e01b815260040160405180910390fd5b61232b61251f565b5f5b828110156110b5573684848381811061234857612348613f2d565b905060200281019061235a919061420c565b335f81815260ce60209081526040808320549051949550939192612384929091859187910161429e565b6040516020818303038152906040528051906020012090506123a583612908565b335f90815260d2602090815260408083208484529091529020805460ff191660019081179091556123d79083906141ac565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061241e9088906142c4565b60405180910390a461243f333060408601803590610cf290602089016139ef565b50505060010161232d565b606654600160ff83161b908116036113c15760405163840a48d560e01b815260040160405180910390fd5b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af11580156124fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137a9190613f12565b6002609754036125715760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611cfc565b6002609755565b5f6125ab612586838061440b565b6125966080860160608701613c81565b6125a660a0870160808801613c81565b613299565b5f6125b9604084018461440b565b9050116125d95760405163796cc52560e01b815260040160405180910390fd5b426125ea60a0840160808501613c81565b6125fa6080850160608601613c81565b61260491906142d6565b63ffffffff16106126285760405163150358a160e21b815260040160405180910390fd5b5f80805b612639604086018661440b565b905081101561272a5736612650604087018761440b565b8381811061266057612660613f2d565b6040029190910191505f905061267960208301836139ef565b6001600160a01b0316036126a057604051630863a45360e11b815260040160405180910390fd5b6126ad60208201826139ef565b6001600160a01b0316836001600160a01b0316106126de576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612702576040516310eb483f60e21b815260040160405180910390fd5b61270f60208201826139ef565b925061271f6020820135856141ac565b93505060010161262c565b506f4b3b4ca85a86c47a098a223fffffffff82111561275c5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b038085166024830152831660448201526064810182905261131f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613597565b6033546001600160a01b031633146113d65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611cfc565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561288a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128ae9190613f12565b6113d657604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612935612915828061440b565b6129256080850160608601613c81565b6125a660a0860160808701613c81565b5f816040013511612959576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff8160400135111561298e5760405163070b5a6f60e21b815260040160405180910390fd5b6129be63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016426141ac565b6129ce6080830160608401613c81565b63ffffffff1611156113c157604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612a036020850185613c81565b63ffffffff1681548110612a1957612a19613f2d565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612a798382612d99565b5f612a8a60808501606086016139ef565b6001600160a01b038082165f90815260cc60205260409020549192501680612aaf5750805b336001600160a01b03821614612ad857604051635c427cd960e01b815260040160405180910390fd5b5f5b612ae760a0870187614450565b9050811015611e3b5736612afe60e088018861440b565b83818110612b0e57612b0e613f2d565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612b42908501856139ef565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612b885760405163aa385e8160e01b815260040160405180910390fd5b5f612b978260208501356141e4565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612bc490876139ef565b6001600160a01b031681526020808201929092526040015f2091909155612c059089908390612bf5908701876139ef565b6001600160a01b0316919061366a565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612c4960208901896139ef565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612ada565b5f816040015163ffffffff165f1480612cad5750815161ffff908116148015612cad5750816040015163ffffffff1642105b15612cc557505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612cde57815161137a565b506020015190565b919050565b60605f612cf78361369a565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b806060015115612dbc57604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff16421015612de757604051631437a2bb60e31b815260040160405180910390fd5b612df460c0830183614450565b9050612e0360a0840184614450565b905014612e23576040516343714afd60e01b815260040160405180910390fd5b612e3060e083018361440b565b9050612e3f60c0840184614450565b905014612e5f576040516343714afd60e01b815260040160405180910390fd5b8051612e8b90612e756040850160208601613c81565b612e826040860186614495565b866060016136c1565b5f5b612e9a60a0840184614450565b90508110156110c057612f346080840135612eb860a0860186614450565b84818110612ec857612ec8613f2d565b9050602002016020810190612edd9190613c81565b612eea60c0870187614450565b85818110612efa57612efa613f2d565b9050602002810190612f0c9190614495565b612f1960e089018961440b565b87818110612f2957612f29613f2d565b905060400201613765565b600101612e8d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff1660405160200161303392919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261137a906144d7565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156131405760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff16421161316e57604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361319557825461ffff191661ffff1783556131ac565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613244573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061326891906144fa565b6001600160a01b0316336001600160a01b0316146113d65760405163794821ff60e01b815260040160405180910390fd5b826132b75760405163796cc52560e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff16111561330457604051630dd0b9f560e21b815260040160405180910390fd5b61332e7f000000000000000000000000000000000000000000000000000000000000000082614529565b63ffffffff16156133525760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116133785760405163cb3f434d60e01b815260040160405180910390fd5b6133a27f000000000000000000000000000000000000000000000000000000000000000083614529565b63ffffffff16156133c657604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16426133ff91906141e4565b1115801561343957508163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b6134565760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015611e3b575f86868381811061347457613474613f2d565b61348a92602060409092020190810191506139ef565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa1580156134f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135179190613f12565b8061353e57506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61355b57604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03161061358d5760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613459565b5f6135eb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166137a39092919063ffffffff16565b905080515f148061360b57508080602001905181019061360b9190613f12565b6110c05760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611cfc565b6040516001600160a01b0383166024820152604481018290526110c090849063a9059cbb60e01b90606401612797565b5f60ff8216601f81111561137a57604051632cd44ac360e21b815260040160405180910390fd5b6136cc602083614550565b6001901b8463ffffffff16106136f45760405162c6c39d60e71b815260040160405180910390fd5b5f6136fe82610edf565b905061374884848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff89166137b9565b611e3b576040516369ca16c960e01b815260040160405180910390fd5b613770602083614550565b6001901b8463ffffffff16106137995760405163054ff4df60e51b815260040160405180910390fd5b5f6136fe8261200a565b60606137b184845f856137d0565b949350505050565b5f836137c68685856138a7565b1495945050505050565b6060824710156138315760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611cfc565b5f5f866001600160a01b0316858760405161384c9190614563565b5f6040518083038185875af1925050503d805f8114613886576040519150601f19603f3d011682016040523d82523d5f602084013e61388b565b606091505b509150915061389c8783838761393e565b979650505050505050565b5f602084516138b69190614579565b156138d4576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613935576138eb600285614579565b5f0361390c57815f528086015160205260405f209150600284049350613923565b808601515f528160205260405f2091506002840493505b61392e6020826141ac565b90506138d8565b50949350505050565b606083156139ac5782515f036139a5576001600160a01b0385163b6139a55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611cfc565b50816137b1565b6137b183838151156139c15781518083602001fd5b8060405162461bcd60e51b8152600401611cfc9190613c4c565b6001600160a01b03811681146113c1575f5ffd5b5f602082840312156139ff575f5ffd5b8135611718816139db565b5f60408284031215613a1a575f5ffd5b50919050565b5f5f83601f840112613a30575f5ffd5b5081356001600160401b03811115613a46575f5ffd5b6020830191508360208260051b8501011115613a60575f5ffd5b9250929050565b5f5f5f60608486031215613a79575f5ffd5b613a838585613a0a565b925060408401356001600160401b03811115613a9d575f5ffd5b613aa986828701613a20565b9497909650939450505050565b80151581146113c1575f5ffd5b5f5f60408385031215613ad4575f5ffd5b8235613adf816139db565b91506020830135613aef81613ab6565b809150509250929050565b5f60208284031215613b0a575f5ffd5b5035919050565b5f60408284031215613b21575f5ffd5b6117188383613a0a565b5f5f60208385031215613b3c575f5ffd5b82356001600160401b03811115613b51575f5ffd5b613b5d85828601613a20565b90969095509350505050565b5f6101008284031215613a1a575f5ffd5b5f5f60408385031215613b8b575f5ffd5b82356001600160401b03811115613ba0575f5ffd5b613bac85828601613b69565b9250506020830135613aef816139db565b803563ffffffff81168114612ce6575f5ffd5b5f5f60408385031215613be1575f5ffd5b82359150613bf160208401613bbd565b90509250929050565b5f5f5f60408486031215613c0c575f5ffd5b83356001600160401b03811115613c21575f5ffd5b613c2d86828701613a20565b9094509250506020840135613c41816139db565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613c91575f5ffd5b61171882613bbd565b5f60208284031215613caa575f5ffd5b813560ff81168114611718575f5ffd5b5f60208284031215613cca575f5ffd5b81356001600160401b03811115613cdf575f5ffd5b6137b184828501613b69565b5f5f60408385031215613cfc575f5ffd5b8235613d07816139db565b946020939093013593505050565b5f5f60408385031215613d26575f5ffd5b8235613d31816139db565b91506020830135613aef816139db565b5f5f5f60408486031215613d53575f5ffd5b8335613d5e816139db565b925060208401356001600160401b03811115613a9d575f5ffd5b5f5f60608385031215613d89575f5ffd5b8235613d94816139db565b9150613bf18460208501613a0a565b803561ffff81168114612ce6575f5ffd5b5f60208284031215613dc4575f5ffd5b61171882613da3565b5f5f60408385031215613dde575f5ffd5b8235613de9816139db565b9150613bf160208401613da3565b5f5f5f60608486031215613e09575f5ffd5b8335613e14816139db565b92506020840135613e24816139db565b9150613e3260408501613da3565b90509250925092565b5f5f5f5f5f60a08688031215613e4f575f5ffd5b8535613e5a816139db565b9450602086013593506040860135613e71816139db565b9250613e7f60608701613bbd565b9150613e8d60808701613da3565b90509295509295909350565b5f5f5f60808486031215613eab575f5ffd5b8335613eb6816139db565b9250613ec58560208601613a0a565b9150613e3260608501613da3565b8035613ede816139db565b6001600160a01b0316825263ffffffff613efa60208301613bbd565b1660208301525050565b6040810161137a8284613ed3565b5f60208284031215613f22575f5ffd5b815161171881613ab6565b634e487b7160e01b5f52603260045260245ffd5b5f823560be19833603018112613f55575f5ffd5b9190910192915050565b5f5f8335601e19843603018112613f74575f5ffd5b83016020810192503590506001600160401b03811115613f92575f5ffd5b8060061b3603821315613a60575f5ffd5b8183526020830192505f815f5b84811015614006578135613fc3816139db565b6001600160a01b0316865260208201356bffffffffffffffffffffffff8116808214613fed575f5ffd5b6020880152506040958601959190910190600101613fb0565b5093949350505050565b5f5f8335601e19843603018112614025575f5ffd5b83016020810192503590506001600160401b03811115614043575f5ffd5b803603821315613a60575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f6140848283613f5f565b60c0855261409660c086018284613fa3565b91505060208301356140a7816139db565b6001600160a01b031660208501526140c26040840184613f5f565b858303604087015280835290915f91906020015b818310156141115783356140e9816139db565b6001600160a01b031681526020848101359082015260409384019360019390930192016140d6565b61411d60608701613bbd565b63ffffffff81166060890152935061413760808701613bbd565b63ffffffff81166080890152935061415260a0870187614010565b9450925086810360a088015261389c818585614051565b60018060a01b0384168152826020820152606060408201525f61418f6060830184614079565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561137a5761137a614198565b6141c98185613ed3565b826040820152608060608201525f61418f6080830184614079565b8181038181111561137a5761137a614198565b5f8161420557614205614198565b505f190190565b5f8235609e19833603018112613f55575f5ffd5b5f61422b8283613f5f565b60a0855261423d60a086018284613fa3565b915050602083013561424e816139db565b6001600160a01b031660208501526040838101359085015263ffffffff61427760608501613bbd565b16606085015263ffffffff61428e60808501613bbd565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61418f6060830184614220565b602081525f6117186020830184614220565b63ffffffff818116838216019081111561137a5761137a614198565b5f823560fe19833603018112613f55575f5ffd5b828152604060208201525f6137b16040830184614079565b5f604082840312801561432f575f5ffd5b50604080519081016001600160401b038111828210171561435e57634e487b7160e01b5f52604160045260245ffd5b604052823561436c816139db565b815261437a60208401613bbd565b60208201529392505050565b63ffffffff828116828216039081111561137a5761137a614198565b5f63ffffffff8216806143b7576143b7614198565b5f190192915050565b5f602082840312156143d0575f5ffd5b5051919050565b60a081016143e58287613ed3565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f5f8335601e19843603018112614420575f5ffd5b8301803591506001600160401b03821115614439575f5ffd5b6020019150600681901b3603821315613a60575f5ffd5b5f5f8335601e19843603018112614465575f5ffd5b8301803591506001600160401b0382111561447e575f5ffd5b6020019150600581901b3603821315613a60575f5ffd5b5f5f8335601e198436030181126144aa575f5ffd5b8301803591506001600160401b038211156144c3575f5ffd5b602001915036819003821315613a60575f5ffd5b80516020808301519190811015613a1a575f1960209190910360031b1b16919050565b5f6020828403121561450a575f5ffd5b8151611718816139db565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff83168061453e5761453e614515565b8063ffffffff84160691505092915050565b5f8261455e5761455e614515565b500490565b5f82518060208501845e5f920191825250919050565b5f8261458757614587614515565b50069056fea26469706673582212205789cafb7c1d8f2c8f592c749b1dfc50c93fe81caa94e4d41efd74ba70a201ed64736f6c634300081b0033", + Bin: "0x6101e0604052348015610010575f5ffd5b50604051614b90380380614b9083398101604081905261002f9161034a565b610140810151608082015182516020840151604085015160a086015160c087015160e08801516101008901516101208a015160608b01516001600160a01b03811661008d576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03166080526100a38582610465565b63ffffffff16156100c757604051630e06bd3160e01b815260040160405180910390fd5b6100d46201518086610465565b63ffffffff16156100f85760405163223c7b3960e11b815260040160405180910390fd5b6001600160a01b0397881660a05295871660c05293861660e05263ffffffff9283166101005290821661012052811661014052908116610160521661018052166101a05261014581610158565b6101c0525061015261019e565b506104f3565b5f5f829050601f8151111561018b578260405163305a27a960e01b81526004016101829190610498565b60405180910390fd5b8051610196826104cd565b179392505050565b5f54610100900460ff16156102055760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610182565b5f5460ff90811614610254575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b038111828210171561028d5761028d610256565b60405290565b80516001600160a01b03811681146102a9575f5ffd5b919050565b805163ffffffff811681146102a9575f5ffd5b5f82601f8301126102d0575f5ffd5b81516001600160401b038111156102e9576102e9610256565b604051601f8201601f19908116603f011681016001600160401b038111828210171561031757610317610256565b60405281815283820160200185101561032e575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561035a575f5ffd5b81516001600160401b0381111561036f575f5ffd5b82016101608185031215610381575f5ffd5b61038961026a565b61039282610293565b81526103a060208301610293565b60208201526103b160408301610293565b60408201526103c260608301610293565b60608201526103d360808301610293565b60808201526103e460a083016102ae565b60a08201526103f560c083016102ae565b60c082015261040660e083016102ae565b60e082015261041861010083016102ae565b61010082015261042b61012083016102ae565b6101208201526101408201516001600160401b0381111561044a575f5ffd5b610456868285016102c1565b61014083015250949350505050565b5f63ffffffff83168061048657634e487b7160e01b5f52601260045260245ffd5b8063ffffffff84160691505092915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156104ed575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516145c26105ce5f395f61138701525f81816105f001526124b301525f81816104a4015261341101525f81816103f3015261299801525f818161055201526133cf01525f818161087e01526132b901525f81816107bf01528181613309015261337d01525f81816108d201528181610adc01528181611bff0152611e8c01525f818161057901526134ac01525f81816109450152611b6f01525f81816107510152818161283d01526131ea01526145c25ff3fe608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c53660046139ef565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613a67565b610a7f565b005b610447610d25565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613ac3565b610e25565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b61043d6104d4366004613afa565b610ea5565b6104ec6104e7366004613b11565b610edf565b6040519081526020016103e5565b6105226105083660046139ef565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613b2b565b610f54565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613b7a565b6110c5565b61043d6105d3366004613bd0565b6110ec565b61043d6105e6366004613bfa565b6112c2565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6106256106203660046139ef565b611325565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b610657611380565b6040516103e59190613c4c565b61043d610672366004613c81565b6113b0565b61043d6113c4565b6103d961068d366004613c9a565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613cba565b6113d8565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613ceb565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611463565b60ca546104ec565b61043d61071d3660046139ef565b611474565b6104ec610730366004613d15565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611485565b61043d6107b5366004613d41565b611521565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6106256107ef366004613d78565b61169c565b61043d6108023660046139ef565b61171f565b61043d610815366004613db4565b61172a565b6103d9610828366004613ceb565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613dcd565b61173b565b6104ec6108683660046139ef565b60ce6020525f908152604090205481565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6103d96108ae366004613ceb565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b61043d610902366004613df7565b611866565b610447610915366004613afa565b6119b3565b610625610928366004613d15565b611a43565b61041561093b366004613afa565b611aa8565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6103d9610975366004613ceb565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613d15565b611b29565b6103d96109b5366004613ceb565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e23660046139ef565b611c93565b61043d6109f5366004613e3b565b611d0e565b61043d610a08366004613e99565b611e43565b6104ec610a1b366004613b11565b61200a565b61043d610a2e366004613c81565b61201a565b61043d610a41366004613afa565b61214b565b60cb54610522906001600160a01b031681565b61043d610a67366004613b2b565b6121b8565b61043d610a7a366004613b2b565b6122e9565b6009610a8a8161244a565b610a9760208501856139ef565b610aa081612475565b610abd5760405163932d94f760e01b815260040160405180910390fd5b610ac561251f565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610b11908890600401613f04565b602060405180830381865afa158015610b2c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b509190613f12565b610b6d57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d135736858583818110610b8a57610b8a613f2d565b9050602002810190610b9c9190613f41565b90505f60ce81610baf60208b018b6139ef565b6001600160a01b031681526020808201929092526040015f90812054925090610bda908a018a6139ef565b8284604051602001610bee93929190614169565b6040516020818303038152906040528051906020012090505f610c1084612578565b9050600160d75f610c2460208e018e6139ef565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c638360016141ac565b60ce5f610c7360208e018e6139ef565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cd4939291906141bf565b60405180910390a3610d03333083610cf26040890160208a016139ef565b6001600160a01b0316929190612763565b505060019092019150610b6f9050565b50610d1e6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610dfd575f60ca610d606001846141e4565b81548110610d7057610d70613f2d565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610ddf5750806040015163ffffffff164210155b15610dea5792915050565b5080610df5816141f7565b915050610d4c565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e2d6127ce565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b610ead612828565b6066548181168114610ed25760405163c61dca5d60e01b815260040160405180910390fd5b610edb826128cb565b5050565b5f80610eee60208401846139ef565b8360200135604051602001610f379392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6001610f5f8161244a565b335f90815260d1602052604090205460ff16610f8e57604051635c427cd960e01b815260040160405180910390fd5b610f9661251f565b5f5b828110156110b55736848483818110610fb357610fb3613f2d565b9050602002810190610fc5919061420c565b335f81815260ce60209081526040808320549051949550939192610fef929091859187910161429e565b60405160208183030381529060405280519060200120905061101083612908565b335f90815260d0602090815260408083208484529091529020805460ff191660019081179091556110429083906141ac565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf270482906110899088906142c4565b60405180910390a46110aa333060408601803590610cf290602089016139ef565b505050600101610f98565b506110c06001609755565b505050565b60026110d08161244a565b6110d861251f565b6110e283836129f3565b6110c06001609755565b60036110f78161244a565b60cb546001600160a01b0316331461112257604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161115557604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061117b576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f9061119a90600160a01b900463ffffffff16426142d6565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b60026112cd8161244a565b6112d561251f565b5f5b838110156113145761130c8585838181106112f4576112f4613f2d565b905060200281019061130691906142f2565b846129f3565b6001016112d7565b5061131f6001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff169082015261137a90612c7b565b92915050565b60606113ab7f0000000000000000000000000000000000000000000000000000000000000000612ceb565b905090565b6113b86127ce565b6113c181612d28565b50565b6113cc612828565b6113d65f196128cb565b565b5f61145b8260ca6113ec6020830183613c81565b63ffffffff168154811061140257611402613f2d565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152612d99565b506001919050565b61146b6127ce565b6113d65f612f3c565b61147c6127ce565b6113c181612f8d565b604080516080810182525f80825260208201819052918101829052606081019190915260ca80546114b8906001906141e4565b815481106114c8576114c8613f2d565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b600561152c8161244a565b8361153681612475565b6115535760405163932d94f760e01b815260040160405180910390fd5b61155b61251f565b5f5b83811015610d13573685858381811061157857611578613f2d565b905060200281019061158a9190613f41565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926115bb918b918591879101614169565b6040516020818303038152906040528051906020012090505f6115dd84612578565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff1916600190811790915590915061161b9084906141ac565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e09061166e9088908a90614306565b60405180910390a461168c333083610cf26040890160208a016139ef565b50506001909201915061155d9050565b6001600160a01b0382165f90815260d66020526040812061171890826116cf6116ca3687900387018761431e565b612fe8565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612c7b565b9392505050565b33610edb818361304b565b6117326127ce565b6113c1816130ae565b60076117468161244a565b8261175081612475565b61176d5760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061178990600160a01b900463ffffffff16426142d6565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906117e290612c7b565b6001600160a01b0387165f90815260d560205260409020909150611807908684613119565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b60066118718161244a565b8361187b81612475565b6118985760405163932d94f760e01b815260040160405180910390fd5b60cb545f906118b490600160a01b900463ffffffff16426142d6565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff169281019290925291925061191b90612c7b565b6001600160a01b038089165f90815260d460209081526040808320938b1683529290522090915061194d908684613119565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca82815481106119e9576119e9613f2d565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061171890612c7b565b60ca545f905b63ffffffff811615611b0f578260ca611ac8600184614386565b63ffffffff1681548110611ade57611ade613f2d565b905f5260205f2090600202015f015403611afd57611718600182614386565b80611b07816143a2565b915050611aae565b5060405163504570e360e01b815260040160405180910390fd5b81611b3381612475565b611b505760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611bb4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bd89190613f12565b80611c6c575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063ba1a84e590602401602060405180830381865afa158015611c46573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c6a91906143c0565b115b611c895760405163fb494ea160e01b815260040160405180910390fd5b6110c0838361304b565b611c9b6127ce565b6001600160a01b038116611d055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6113c181612f3c565b5f54610100900460ff1615808015611d2c57505f54600160ff909116105b80611d455750303b158015611d4557505f5460ff166001145b611da85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611cfc565b5f805460ff191660011790558015611dc9575f805461ff0019166101001790555b611dd2856128cb565b611ddb86612f3c565b611de484612f8d565b611ded83612d28565b611df6826130ae565b8015611e3b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6008611e4e8161244a565b83611e5881612475565b611e755760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890611ec1908790600401613f04565b602060405180830381865afa158015611edc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f009190613f12565b611f1d57604051631fb1705560e21b815260040160405180910390fd5b60cb545f90611f3990600160a01b900463ffffffff16426142d6565b6001600160a01b0387165f90815260d66020526040812091925090611f6b90826116cf6116ca368b90038b018b61431e565b6001600160a01b0388165f90815260d660205260408120919250611fb09190611f9c6116ca368b90038b018b61431e565b81526020019081526020015f208684613119565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a604051611ff994939291906143d7565b60405180910390a350505050505050565b5f6001610eee60208401846139ef565b60036120258161244a565b60cb546001600160a01b0316331461205057604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff831610612078576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff168154811061209257612092613f2d565b905f5260205f20906002020190508060010160089054906101000a900460ff16156120d057604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061210157604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b6121536131e8565b6066548019821981161461217a5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6121c28161244a565b6121ca61251f565b5f5b828110156110b557368484838181106121e7576121e7613f2d565b90506020028101906121f9919061420c565b335f81815260ce60209081526040808320549051949550939192612223929091859187910161429e565b60405160208183030381529060405280519060200120905061224483612908565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556122769083906141ac565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906122bd9088906142c4565b60405180910390a46122de333060408601803590610cf290602089016139ef565b5050506001016121cc565b60046122f48161244a565b335f90815260d1602052604090205460ff1661232357604051635c427cd960e01b815260040160405180910390fd5b61232b61251f565b5f5b828110156110b5573684848381811061234857612348613f2d565b905060200281019061235a919061420c565b335f81815260ce60209081526040808320549051949550939192612384929091859187910161429e565b6040516020818303038152906040528051906020012090506123a583612908565b335f90815260d2602090815260408083208484529091529020805460ff191660019081179091556123d79083906141ac565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061241e9088906142c4565b60405180910390a461243f333060408601803590610cf290602089016139ef565b50505060010161232d565b606654600160ff83161b908116036113c15760405163840a48d560e01b815260040160405180910390fd5b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af11580156124fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137a9190613f12565b6002609754036125715760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611cfc565b6002609755565b5f6125ab612586838061440b565b6125966080860160608701613c81565b6125a660a0870160808801613c81565b613299565b5f6125b9604084018461440b565b9050116125d95760405163796cc52560e01b815260040160405180910390fd5b426125ea60a0840160808501613c81565b6125fa6080850160608601613c81565b61260491906142d6565b63ffffffff16106126285760405163150358a160e21b815260040160405180910390fd5b5f80805b612639604086018661440b565b905081101561272a5736612650604087018761440b565b8381811061266057612660613f2d565b6040029190910191505f905061267960208301836139ef565b6001600160a01b0316036126a057604051630863a45360e11b815260040160405180910390fd5b6126ad60208201826139ef565b6001600160a01b0316836001600160a01b0316106126de576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612702576040516310eb483f60e21b815260040160405180910390fd5b61270f60208201826139ef565b925061271f6020820135856141ac565b93505060010161262c565b506f4b3b4ca85a86c47a098a223fffffffff82111561275c5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b038085166024830152831660448201526064810182905261131f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613597565b6033546001600160a01b031633146113d65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611cfc565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561288a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128ae9190613f12565b6113d657604051631d77d47760e21b815260040160405180910390fd5b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612935612915828061440b565b6129256080850160608601613c81565b6125a660a0860160808701613c81565b5f816040013511612959576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff8160400135111561298e5760405163070b5a6f60e21b815260040160405180910390fd5b6129be63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016426141ac565b6129ce6080830160608401613c81565b63ffffffff1611156113c157604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612a036020850185613c81565b63ffffffff1681548110612a1957612a19613f2d565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612a798382612d99565b5f612a8a60808501606086016139ef565b6001600160a01b038082165f90815260cc60205260409020549192501680612aaf5750805b336001600160a01b03821614612ad857604051635c427cd960e01b815260040160405180910390fd5b5f5b612ae760a0870187614450565b9050811015611e3b5736612afe60e088018861440b565b83818110612b0e57612b0e613f2d565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612b42908501856139ef565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612b885760405163aa385e8160e01b815260040160405180910390fd5b5f612b978260208501356141e4565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612bc490876139ef565b6001600160a01b031681526020808201929092526040015f2091909155612c059089908390612bf5908701876139ef565b6001600160a01b0316919061366a565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612c4960208901896139ef565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612ada565b5f816040015163ffffffff165f1480612cad5750815161ffff908116148015612cad5750816040015163ffffffff1642105b15612cc557505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612cde57815161137a565b506020015190565b919050565b60605f612cf78361369a565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b806060015115612dbc57604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff16421015612de757604051631437a2bb60e31b815260040160405180910390fd5b612df460c0830183614450565b9050612e0360a0840184614450565b905014612e23576040516343714afd60e01b815260040160405180910390fd5b612e3060e083018361440b565b9050612e3f60c0840184614450565b905014612e5f576040516343714afd60e01b815260040160405180910390fd5b8051612e8b90612e756040850160208601613c81565b612e826040860186614495565b866060016136c1565b5f5b612e9a60a0840184614450565b90508110156110c057612f346080840135612eb860a0860186614450565b84818110612ec857612ec8613f2d565b9050602002016020810190612edd9190613c81565b612eea60c0870187614450565b85818110612efa57612efa613f2d565b9050602002810190612f0c9190614495565b612f1960e089018961440b565b87818110612f2957612f29613f2d565b905060400201613765565b600101612e8d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff1660405160200161303392919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261137a906144d7565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156131405760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff16421161316e57604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361319557825461ffff191661ffff1783556131ac565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613244573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061326891906144fa565b6001600160a01b0316336001600160a01b0316146113d65760405163794821ff60e01b815260040160405180910390fd5b826132b75760405163796cc52560e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff16111561330457604051630dd0b9f560e21b815260040160405180910390fd5b61332e7f000000000000000000000000000000000000000000000000000000000000000082614529565b63ffffffff16156133525760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116133785760405163cb3f434d60e01b815260040160405180910390fd5b6133a27f000000000000000000000000000000000000000000000000000000000000000083614529565b63ffffffff16156133c657604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16426133ff91906141e4565b1115801561343957508163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b6134565760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015611e3b575f86868381811061347457613474613f2d565b61348a92602060409092020190810191506139ef565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa1580156134f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135179190613f12565b8061353e57506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61355b57604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03161061358d5760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613459565b5f6135eb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166137a39092919063ffffffff16565b905080515f148061360b57508080602001905181019061360b9190613f12565b6110c05760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611cfc565b6040516001600160a01b0383166024820152604481018290526110c090849063a9059cbb60e01b90606401612797565b5f60ff8216601f81111561137a57604051632cd44ac360e21b815260040160405180910390fd5b6136cc602083614550565b6001901b8463ffffffff16106136f45760405162c6c39d60e71b815260040160405180910390fd5b5f6136fe82610edf565b905061374884848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff89166137b9565b611e3b576040516369ca16c960e01b815260040160405180910390fd5b613770602083614550565b6001901b8463ffffffff16106137995760405163054ff4df60e51b815260040160405180910390fd5b5f6136fe8261200a565b60606137b184845f856137d0565b949350505050565b5f836137c68685856138a7565b1495945050505050565b6060824710156138315760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611cfc565b5f5f866001600160a01b0316858760405161384c9190614563565b5f6040518083038185875af1925050503d805f8114613886576040519150601f19603f3d011682016040523d82523d5f602084013e61388b565b606091505b509150915061389c8783838761393e565b979650505050505050565b5f602084516138b69190614579565b156138d4576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613935576138eb600285614579565b5f0361390c57815f528086015160205260405f209150600284049350613923565b808601515f528160205260405f2091506002840493505b61392e6020826141ac565b90506138d8565b50949350505050565b606083156139ac5782515f036139a5576001600160a01b0385163b6139a55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611cfc565b50816137b1565b6137b183838151156139c15781518083602001fd5b8060405162461bcd60e51b8152600401611cfc9190613c4c565b6001600160a01b03811681146113c1575f5ffd5b5f602082840312156139ff575f5ffd5b8135611718816139db565b5f60408284031215613a1a575f5ffd5b50919050565b5f5f83601f840112613a30575f5ffd5b5081356001600160401b03811115613a46575f5ffd5b6020830191508360208260051b8501011115613a60575f5ffd5b9250929050565b5f5f5f60608486031215613a79575f5ffd5b613a838585613a0a565b925060408401356001600160401b03811115613a9d575f5ffd5b613aa986828701613a20565b9497909650939450505050565b80151581146113c1575f5ffd5b5f5f60408385031215613ad4575f5ffd5b8235613adf816139db565b91506020830135613aef81613ab6565b809150509250929050565b5f60208284031215613b0a575f5ffd5b5035919050565b5f60408284031215613b21575f5ffd5b6117188383613a0a565b5f5f60208385031215613b3c575f5ffd5b82356001600160401b03811115613b51575f5ffd5b613b5d85828601613a20565b90969095509350505050565b5f6101008284031215613a1a575f5ffd5b5f5f60408385031215613b8b575f5ffd5b82356001600160401b03811115613ba0575f5ffd5b613bac85828601613b69565b9250506020830135613aef816139db565b803563ffffffff81168114612ce6575f5ffd5b5f5f60408385031215613be1575f5ffd5b82359150613bf160208401613bbd565b90509250929050565b5f5f5f60408486031215613c0c575f5ffd5b83356001600160401b03811115613c21575f5ffd5b613c2d86828701613a20565b9094509250506020840135613c41816139db565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613c91575f5ffd5b61171882613bbd565b5f60208284031215613caa575f5ffd5b813560ff81168114611718575f5ffd5b5f60208284031215613cca575f5ffd5b81356001600160401b03811115613cdf575f5ffd5b6137b184828501613b69565b5f5f60408385031215613cfc575f5ffd5b8235613d07816139db565b946020939093013593505050565b5f5f60408385031215613d26575f5ffd5b8235613d31816139db565b91506020830135613aef816139db565b5f5f5f60408486031215613d53575f5ffd5b8335613d5e816139db565b925060208401356001600160401b03811115613a9d575f5ffd5b5f5f60608385031215613d89575f5ffd5b8235613d94816139db565b9150613bf18460208501613a0a565b803561ffff81168114612ce6575f5ffd5b5f60208284031215613dc4575f5ffd5b61171882613da3565b5f5f60408385031215613dde575f5ffd5b8235613de9816139db565b9150613bf160208401613da3565b5f5f5f60608486031215613e09575f5ffd5b8335613e14816139db565b92506020840135613e24816139db565b9150613e3260408501613da3565b90509250925092565b5f5f5f5f5f60a08688031215613e4f575f5ffd5b8535613e5a816139db565b9450602086013593506040860135613e71816139db565b9250613e7f60608701613bbd565b9150613e8d60808701613da3565b90509295509295909350565b5f5f5f60808486031215613eab575f5ffd5b8335613eb6816139db565b9250613ec58560208601613a0a565b9150613e3260608501613da3565b8035613ede816139db565b6001600160a01b0316825263ffffffff613efa60208301613bbd565b1660208301525050565b6040810161137a8284613ed3565b5f60208284031215613f22575f5ffd5b815161171881613ab6565b634e487b7160e01b5f52603260045260245ffd5b5f823560be19833603018112613f55575f5ffd5b9190910192915050565b5f5f8335601e19843603018112613f74575f5ffd5b83016020810192503590506001600160401b03811115613f92575f5ffd5b8060061b3603821315613a60575f5ffd5b8183526020830192505f815f5b84811015614006578135613fc3816139db565b6001600160a01b0316865260208201356bffffffffffffffffffffffff8116808214613fed575f5ffd5b6020880152506040958601959190910190600101613fb0565b5093949350505050565b5f5f8335601e19843603018112614025575f5ffd5b83016020810192503590506001600160401b03811115614043575f5ffd5b803603821315613a60575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f6140848283613f5f565b60c0855261409660c086018284613fa3565b91505060208301356140a7816139db565b6001600160a01b031660208501526140c26040840184613f5f565b858303604087015280835290915f91906020015b818310156141115783356140e9816139db565b6001600160a01b031681526020848101359082015260409384019360019390930192016140d6565b61411d60608701613bbd565b63ffffffff81166060890152935061413760808701613bbd565b63ffffffff81166080890152935061415260a0870187614010565b9450925086810360a088015261389c818585614051565b60018060a01b0384168152826020820152606060408201525f61418f6060830184614079565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561137a5761137a614198565b6141c98185613ed3565b826040820152608060608201525f61418f6080830184614079565b8181038181111561137a5761137a614198565b5f8161420557614205614198565b505f190190565b5f8235609e19833603018112613f55575f5ffd5b5f61422b8283613f5f565b60a0855261423d60a086018284613fa3565b915050602083013561424e816139db565b6001600160a01b031660208501526040838101359085015263ffffffff61427760608501613bbd565b16606085015263ffffffff61428e60808501613bbd565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61418f6060830184614220565b602081525f6117186020830184614220565b63ffffffff818116838216019081111561137a5761137a614198565b5f823560fe19833603018112613f55575f5ffd5b828152604060208201525f6137b16040830184614079565b5f604082840312801561432f575f5ffd5b50604080519081016001600160401b038111828210171561435e57634e487b7160e01b5f52604160045260245ffd5b604052823561436c816139db565b815261437a60208401613bbd565b60208201529392505050565b63ffffffff828116828216039081111561137a5761137a614198565b5f63ffffffff8216806143b7576143b7614198565b5f190192915050565b5f602082840312156143d0575f5ffd5b5051919050565b60a081016143e58287613ed3565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f5f8335601e19843603018112614420575f5ffd5b8301803591506001600160401b03821115614439575f5ffd5b6020019150600681901b3603821315613a60575f5ffd5b5f5f8335601e19843603018112614465575f5ffd5b8301803591506001600160401b0382111561447e575f5ffd5b6020019150600581901b3603821315613a60575f5ffd5b5f5f8335601e198436030181126144aa575f5ffd5b8301803591506001600160401b038211156144c3575f5ffd5b602001915036819003821315613a60575f5ffd5b80516020808301519190811015613a1a575f1960209190910360031b1b16919050565b5f6020828403121561450a575f5ffd5b8151611718816139db565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff83168061453e5761453e614515565b8063ffffffff84160691505092915050565b5f8261455e5761455e614515565b500490565b5f82518060208501845e5f920191825250919050565b5f8261458757614587614515565b50069056fea2646970667358221220c7cc10c21b0e0d9588404d089abccb99f1bc0081cd1ce377dc851325a99b6f6664736f6c634300081b0033", } // RewardsCoordinatorABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/SlashEscrowFactory/binding.go b/pkg/bindings/SlashEscrowFactory/binding.go index 6f926cf0b4..2fd5cf55fc 100644 --- a/pkg/bindings/SlashEscrowFactory/binding.go +++ b/pkg/bindings/SlashEscrowFactory/binding.go @@ -38,7 +38,7 @@ type OperatorSet struct { // SlashEscrowFactoryMetaData contains all meta data concerning the SlashEscrowFactory contract. var SlashEscrowFactoryMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_allocationManager\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"},{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_slashEscrowImplementation\",\"type\":\"address\",\"internalType\":\"contractISlashEscrow\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"computeSlashEscrowSalt\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getEscrowCompleteBlock\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getEscrowStartBlock\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getGlobalEscrowDelay\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPendingEscrows\",\"inputs\":[],\"outputs\":[{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"isRedistributing\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"},{\"name\":\"slashIds\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"},{\"name\":\"completeBlocks\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPendingOperatorSets\",\"inputs\":[],\"outputs\":[{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPendingSlashIds\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPendingStrategiesForSlashId\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPendingStrategiesForSlashIds\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"strategies\",\"type\":\"address[][]\",\"internalType\":\"contractIStrategy[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPendingUnderlyingAmountForStrategy\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSlashEscrow\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISlashEscrow\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategyEscrowDelay\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTotalPendingOperatorSets\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTotalPendingSlashIds\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTotalPendingStrategiesForSlashId\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"initialGlobalDelayBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initiateSlashEscrow\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isDeployedSlashEscrow\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isDeployedSlashEscrow\",\"inputs\":[{\"name\":\"slashEscrow\",\"type\":\"address\",\"internalType\":\"contractISlashEscrow\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isEscrowPaused\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isPendingOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isPendingSlashId\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"pauseEscrow\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"releaseSlashEscrow\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"releaseSlashEscrowByStrategy\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalEscrowDelay\",\"inputs\":[{\"name\":\"delay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStrategyEscrowDelay\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"delay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slashEscrowImplementation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISlashEscrow\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"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\":\"unpauseEscrow\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"EscrowComplete\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EscrowPaused\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EscrowUnpaused\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalEscrowDelaySet\",\"inputs\":[{\"name\":\"delay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"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\":\"StartEscrow\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyEscrowDelaySet\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"delay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"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\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EscrowDelayNotElapsed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EscrowNotMature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyRedistributionRecipient\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]}]", - Bin: "0x610120604052348015610010575f5ffd5b50604051612e89380380612e8983398101604081905261002f916101c1565b6001600160a01b0380861660805280851660a05280831660c05281908490811661006c576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660e05261008181610098565b610100525061008e6100de565b5050505050610319565b5f5f829050601f815111156100cb578260405163305a27a960e01b81526004016100c291906102be565b60405180910390fd5b80516100d6826102f3565b179392505050565b5f54610100900460ff16156101455760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100c2565b5f5460ff90811614610194575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101aa575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f60a086880312156101d5575f5ffd5b85516101e081610196565b60208701519095506101f181610196565b604087015190945061020281610196565b606087015190935061021381610196565b60808701519092506001600160401b0381111561022e575f5ffd5b8601601f8101881361023e575f5ffd5b80516001600160401b03811115610257576102576101ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610285576102856101ad565b6040528181528282016020018a101561029c575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295909350565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610313575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051612ae66103a35f395f610a5601525f818161049601528181611c980152611f2e01525f8181610515015281816108f501528181611ad30152611ee701525f818161032a0152818161079701528181610b620152610f1701525f81816105b7015281816106ff01528181610aca01526115500152612ae65ff3fe608060405234801561000f575f5ffd5b506004361061024a575f3560e01c806378748459116101405780639b122356116100bf578063c50f4e4811610084578063c50f4e481461057d578063c8b5330c14610595578063ca8aa7c7146105b2578063e7ed076b146105d9578063f2fde38b146105ec578063fabc1cbc146105ff575f5ffd5b80639b122356146104fd578063a3c6564114610510578063a56b21e414610537578063b23ff83b14610557578063c2de70961461056a575f5ffd5b8063886f119511610105578063886f1195146104915780638a65d2d2146104b85780638d5d4036146104c65780638da5cb5b146104d95780638fc46be5146104ea575f5ffd5b8063787484591461043057806378cb9600146104435780637a9676111461044b5780637def15641461045e57806387420b071461047e575f5ffd5b8063595c6a67116101cc5780636729b5db116101915780636729b5db146103cf5780636c5ac81e146103e25780637130c423146103f5578063715018a61461041557806371e166e71461041d575f5ffd5b8063595c6a67146103765780635ac86ab71461037e5780635c975abb146103a15780635e0a64c5146103a95780635ffa5a81146103bc575f5ffd5b8063277a9f0e11610212578063277a9f0e146102e75780633453b234146102fa57806339b70e38146103255780633f292b081461034c57806354fd4d5014610361575f5ffd5b80630310f3e61461024e57806305a4dfbb1461027b5780630e475b171461029c578063136439dd146102b157806319f3db26146102c4575b5f5ffd5b61026161025c36600461233a565b610612565b60405163ffffffff90911681526020015b60405180910390f35b61028e61028936600461233a565b6106a4565b604051908152602001610272565b6102af6102aa366004612379565b6106dc565b005b6102af6102bf3660046123b7565b610838565b6102d76102d23660046123ce565b610872565b6040519015158152602001610272565b61028e6102f53660046123ce565b610887565b61030d6103083660046123ce565b6108c6565b6040516001600160a01b039091168152602001610272565b61030d7f000000000000000000000000000000000000000000000000000000000000000081565b610354610958565b6040516102729190612447565b610369610a4f565b6040516102729190612459565b6102af610a7f565b6102d761038c36600461248e565b609854600160ff9092169190911b9081161490565b60985461028e565b6102af6103b73660046124ae565b610a93565b6102af6103ca3660046123ce565b610aa7565b61028e6103dd3660046124c7565b610c65565b6102af6103f03660046124e1565b610c90565b61040861040336600461233a565b610db6565b6040516102729190612555565b6102af610e88565b6102d761042b3660046124c7565b610e99565b6102d761043e3660046123ce565b610eb7565b61028e610f01565b6102af610459366004612379565b610f0c565b61047161046c366004612567565b611090565b60405161027291906125b1565b6102d761048c3660046123ce565b6110b3565b61030d7f000000000000000000000000000000000000000000000000000000000000000081565b60075463ffffffff16610261565b6102616104d43660046125c3565b6110e8565b6065546001600160a01b031661030d565b6102af6104f83660046125de565b611126565b6102af61050b3660046123ce565b611198565b61030d7f000000000000000000000000000000000000000000000000000000000000000081565b61054a610545366004612567565b61126b565b6040516102729190612611565b61028e610565366004612379565b611329565b61028e6105783660046123ce565b611408565b61058561144d565b60405161027294939291906126fc565b6102d76105a33660046125c3565b6001600160a01b03163b151590565b61030d7f000000000000000000000000000000000000000000000000000000000000000081565b6102af6105e73660046123ce565b6117a0565b6102af6105fa3660046125c3565b611875565b6102af61060d3660046123b7565b6118eb565b5f5f61061e8484610db6565b90505f805b8251811015610672575f61064f848381518110610642576106426127ca565b60200260200101516110e8565b90508263ffffffff168163ffffffff161115610669578092505b50600101610623565b508063ffffffff1661068486866106a4565b61068e91906127f2565b6106999060016127f2565b925050505b92915050565b5f60055f6106b185611958565b815260208082019290925260409081015f90812085825290925290205463ffffffff16905092915050565b5f6106e6816119bb565b60405163079efa8760e11b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630f3df50e90610734908890600401612836565b602060405180830381865afa15801561074f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107739190612844565b90506107808585836119e6565b6040516316a26f7b60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632d44def6906107d09088908890889060040161285f565b6020604051808303815f875af11580156107ec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610810919061288c565b50610827858561082088886108c6565b8487611a8d565b6108318585611b9d565b5050505050565b610840611c83565b60985481811681146108655760405163c61dca5d60e01b815260040160405180910390fd5b61086e82611d26565b5050565b5f6108806105a384846108c6565b9392505050565b5f6108806004826108a56108a036889003880188612567565b611958565b81526020019081526020015f205f8481526020019081526020015f20611d63565b5f6108806108d48484611408565b6040513060388201526f5af43d82803e903d91602b57fd5bf3ff60248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166014820152733d602d80600a3d3981f3363d3d373d3d3d363d73815260588101919091526037600c8201206078820152605560439091012090565b60605f6109656001611d6c565b9050805167ffffffffffffffff8111156109815761098161226b565b6040519080825280602002602001820160405280156109c557816020015b604080518082019091525f808252602082015281526020019060019003908161099f5790505b5091505f5b8151811015610a4a57610a258282815181106109e8576109e86127ca565b6020026020010151604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b838281518110610a3757610a376127ca565b60209081029190910101526001016109ca565b505090565b6060610a7a7f0000000000000000000000000000000000000000000000000000000000000000611d78565b905090565b610a87611c83565b610a915f19611d26565b565b610a9b611db5565b610aa481611e0f565b50565b5f610ab1816119bb565b60405163079efa8760e11b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630f3df50e90610aff908790600401612836565b602060405180830381865afa158015610b1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3e9190612844565b9050610b4b8484836119e6565b6040516388c1029960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906388c1029990610b9990879087906004016128a3565b5f604051808303815f875af1158015610bb4573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610bdb91908101906128be565b505f610c16600482610bf56108a0368a90038a018a612567565b81526020019081526020015f205f8681526020019081526020015f20611d6c565b90505f5b8151811015610c5a57610c528686610c3289896108c6565b86868681518110610c4557610c456127ca565b6020026020010151611a8d565b600101610c1a565b506108318585611b9d565b5f61069e600382610c7e6108a036879003870187612567565b81526020019081526020015f20611d63565b5f54610100900460ff1615808015610cae57505f54600160ff909116105b80610cc75750303b158015610cc757505f5460ff166001145b610d2f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610d50575f805461ff0019166101001790555b610d5984611e5d565b610d6283611d26565b610d6b82611e0f565b8015610db0575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60605f60045f610dc586611958565b81526020019081526020015f205f8481526020019081526020015f2090505f610ded82611d63565b90508067ffffffffffffffff811115610e0857610e0861226b565b604051908082528060200260200182016040528015610e31578160200160208202803683370190505b5092505f5b81811015610e7f575f610e498483611eae565b905080858381518110610e5e57610e5e6127ca565b6001600160a01b039092166020928302919091019091015250600101610e36565b50505092915050565b610e90611db5565b610a915f611e5d565b5f61069e610eaf6108a036859003850185612567565b600190611eb9565b5f600681610ecd6108a036879003870187612567565b815260208082019290925260409081015f90812085825290925290205460ff16806108805750609854600190811614610880565b5f610a7a6001611d63565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f55576040516348da714f60e01b815260040160405180910390fd5b5f600381610f6b6108a036889003880188612567565b81526020019081526020015f2090505f60045f610f92878036038101906108a09190612567565b81526020019081526020015f205f8581526020019081526020015f209050610fba8585610872565b61104157610fc88585611ed0565b610fe5610fdd6108a036889003880188612567565b600190611f0d565b50610ff08285611f0d565b504360055f6110076108a0368a90038a018a612567565b81526020019081526020015f205f8681526020019081526020015f205f6101000a81548163ffffffff021916908363ffffffff1602179055505b61104b8184611f18565b507f3afae24c1d3dd2ce3649054ad82458a8c9967ebd9ce10a9a5a3d059f55bfaedb85858543604051611081949392919061296a565b60405180910390a15050505050565b606061069e60035f6110a185611958565b81526020019081526020015f20611d6c565b5f610880826003836110cd6108a036899003890189612567565b81526020019081526020015f20611eb990919063ffffffff16565b6007546001600160a01b0382165f90815260086020526040812054909163ffffffff908116911681811161111c578161111e565b805b949350505050565b61112e611db5565b6001600160a01b0382165f81815260086020908152604091829020805463ffffffff191663ffffffff86169081179091558251938452908301527f5d2b33f07ae22a809e79005f96ffac70c3715df85a3b011b025e0a86a23a007b91015b60405180910390a15050565b6111a0611f2c565b60065f6111b56108a036869003860186612567565b815260208082019290925260409081015f90812084825290925290205460ff166111f25760405163c61dca5d60e01b815260040160405180910390fd5b5f6006816112086108a036879003870187612567565b81526020019081526020015f205f8381526020019081526020015f205f6101000a81548160ff0219169083151502179055507fb8877c6bf02d5f6603188eb653c9269271836b75b2012a5d7f5f233e7cf2f241828260405161118c9291906128a3565b60605f60035f61127a85611958565b81526020019081526020015f2090505f61129382611d63565b90508067ffffffffffffffff8111156112ae576112ae61226b565b6040519080825280602002602001820160405280156112e157816020015b60608152602001906001900390816112cc5790505b5092505f5b81811015611321576112fc856104038584611eae565b84828151811061130e5761130e6127ca565b60209081029190910101526001016112e6565b505050919050565b5f816001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015611366573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061138a9190612844565b6001600160a01b03166370a082316113a286866108c6565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156113e4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111e919061288c565b5f61141b6108a036859003850185612567565b604080516020810192909252810183905260600160405160208183030381529060405280519060200120905092915050565b60608060608061145b610958565b9350835167ffffffffffffffff8111156114775761147761226b565b6040519080825280602002602001820160405280156114a0578160200160208202803683370190505b509250835167ffffffffffffffff8111156114bd576114bd61226b565b6040519080825280602002602001820160405280156114f057816020015b60608152602001906001900390816114db5790505b509150835167ffffffffffffffff81111561150d5761150d61226b565b60405190808252806020026020018201604052801561154057816020015b606081526020019060019003908161152b5790505b5090505f5b8451811015611799577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f231bd0886838151811061158f5761158f6127ca565b60200260200101516040518263ffffffff1660e01b81526004016115b391906129a2565b602060405180830381865afa1580156115ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115f291906129c8565b848281518110611604576116046127ca565b60200260200101901515908115158152505061163885828151811061162b5761162b6127ca565b6020026020010151611090565b83828151811061164a5761164a6127ca565b6020026020010181905250828181518110611667576116676127ca565b60200260200101515167ffffffffffffffff8111156116885761168861226b565b6040519080825280602002602001820160405280156116b1578160200160208202803683370190505b508282815181106116c4576116c46127ca565b60209081029190910101525f5b8382815181106116e3576116e36127ca565b60200260200101515181101561179057611748868381518110611708576117086127ca565b6020026020010151858481518110611722576117226127ca565b6020026020010151838151811061173b5761173b6127ca565b6020026020010151610612565b83838151811061175a5761175a6127ca565b60200260200101518281518110611773576117736127ca565b63ffffffff909216602092830291909101909101526001016116d1565b50600101611545565b5090919293565b6117a8611c83565b60065f6117bd6108a036869003860186612567565b815260208082019290925260409081015f90812084825290925290205460ff16156117fb5760405163c61dca5d60e01b815260040160405180910390fd5b600160065f6118126108a036879003870187612567565b81526020019081526020015f205f8381526020019081526020015f205f6101000a81548160ff0219169083151502179055507f050add19b1a78a4240cdebc8747899275f2dd070c88e83904a37ff7d1a539744828260405161118c9291906128a3565b61187d611db5565b6001600160a01b0381166118e25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d26565b610aa481611e5d565b6118f3611f2c565b6098548019821981161461191a5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff166040516020016119a392919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261069e906129e7565b609854600160ff83161b90811603610aa45760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038116620e16e414611a2257336001600160a01b03821614611a225760405163720116ad60e11b815260040160405180910390fd5b611a2c8383610eb7565b15611a4a5760405163840a48d560e01b815260040160405180910390fd5b611a62611a5c36859003850185612567565b83610612565b63ffffffff16431015611a88576040516331caa72160e01b815260040160405180910390fd5b505050565b5f600481611aa36108a0368a90038a018a612567565b81526020019081526020015f205f8681526020019081526020015f209050836001600160a01b031663ff491e65307f0000000000000000000000000000000000000000000000000000000000000000898988886040518763ffffffff1660e01b8152600401611b1796959493929190612a0a565b5f604051808303815f87803b158015611b2e575f5ffd5b505af1158015611b40573d5f5f3e3d5ffd5b50505050611b578282611fdd90919063ffffffff16565b507f32be306ad5a833e756b7cb9724d5312afe0feda6163bfc2dd98ee713346a9abc86868486604051611b8d9493929190612a56565b60405180910390a1505050505050565b60015f600381611bb56108a036889003880188612567565b81526020019081526020015f2090505f611c0060045f611bdf888036038101906108a09190612567565b81526020019081526020015f205f8681526020019081526020015f20611d63565b9050805f0361083157611c138285611ff1565b5060055f611c296108a036899003890189612567565b815260208082019290925260409081015f9081208782529092529020805463ffffffff19169055611c5982611d63565b5f0361083157611c7b611c746108a036889003880188612567565b8490611ff1565b505050505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611ce5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0991906129c8565b610a9157604051631d77d47760e21b815260040160405180910390fd5b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61069e825490565b60605f61088083611ffc565b60605f611d8483612055565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6065546001600160a01b03163314610a915760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d26565b6007805463ffffffff191663ffffffff83169081179091556040519081527f67d0077d22e4e06f761dd87f6c9f2310ac879c9ce17de50d381e05b72f45fbf69060200160405180910390a150565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f610880838361207c565b5f8181526001830160205260408120541515610880565b611a88611edd8383611408565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906120a2565b5f610880838361213c565b5f610880836001600160a01b03841661213c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f88573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fac9190612844565b6001600160a01b0316336001600160a01b031614610a915760405163794821ff60e01b815260040160405180910390fd5b5f610880836001600160a01b038416612188565b5f6108808383612188565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561204957602002820191905f5260205f20905b815481526020019060010190808311612035575b50505050509050919050565b5f60ff8216601f81111561069e57604051632cd44ac360e21b815260040160405180910390fd5b5f825f018281548110612091576120916127ca565b905f5260205f200154905092915050565b5f763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c175f526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760095ff590506001600160a01b03811661069e5760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401610d26565b5f81815260018301602052604081205461218157508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561069e565b505f61069e565b5f8181526001830160205260408120548015612262575f6121aa600183612a89565b85549091505f906121bd90600190612a89565b905081811461221c575f865f0182815481106121db576121db6127ca565b905f5260205f200154905080875f0184815481106121fb576121fb6127ca565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061222d5761222d612a9c565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061069e565b5f91505061069e565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156122a8576122a861226b565b604052919050565b6001600160a01b0381168114610aa4575f5ffd5b803563ffffffff811681146122d7575f5ffd5b919050565b5f604082840312156122ec575f5ffd5b6040805190810167ffffffffffffffff8111828210171561230f5761230f61226b565b6040529050808235612320816122b0565b815261232e602084016122c4565b60208201525092915050565b5f5f6060838503121561234b575f5ffd5b61235584846122dc565b946040939093013593505050565b5f60408284031215612373575f5ffd5b50919050565b5f5f5f6080848603121561238b575f5ffd5b6123958585612363565b92506040840135915060608401356123ac816122b0565b809150509250925092565b5f602082840312156123c7575f5ffd5b5035919050565b5f5f606083850312156123df575f5ffd5b6123558484612363565b5f8151808452602084019350602083015f5b8281101561243d5761242786835180516001600160a01b0316825260209081015163ffffffff16910152565b60409590950194602091909101906001016123fb565b5093949350505050565b602081525f61088060208301846123e9565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561249e575f5ffd5b813560ff81168114610880575f5ffd5b5f602082840312156124be575f5ffd5b610880826122c4565b5f604082840312156124d7575f5ffd5b6108808383612363565b5f5f5f606084860312156124f3575f5ffd5b83356124fe816122b0565b925060208401359150612513604085016122c4565b90509250925092565b5f8151808452602084019350602083015f5b8281101561243d5781516001600160a01b031686526020958601959091019060010161252e565b602081525f610880602083018461251c565b5f60408284031215612577575f5ffd5b61088083836122dc565b5f8151808452602084019350602083015f5b8281101561243d578151865260209586019590910190600101612593565b602081525f6108806020830184612581565b5f602082840312156125d3575f5ffd5b8135610880816122b0565b5f5f604083850312156125ef575f5ffd5b82356125fa816122b0565b9150612608602084016122c4565b90509250929050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561266857603f1987860301845261265385835161251c565b94506020938401939190910190600101612637565b50929695505050505050565b5f82825180855260208501945060208160051b830101602085015f5b838110156126f057848303601f19018852815180518085526020918201918501905f5b818110156126d757835163ffffffff168352602093840193909201916001016126b3565b50506020998a0199909450929092019150600101612690565b50909695505050505050565b608081525f61270e60808301876123e9565b82810360208401528086518083526020830191506020880192505f5b8181101561274a578351151583526020938401939092019160010161272a565b505083810360408501528091505f865180835260208301935060208160051b840101602089015f5b838110156127a457601f1986840301875261278e838351612581565b6020978801979093509190910190600101612772565b505080925086810360608801526127bb8189612674565b9b9a5050505050505050505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561069e5761069e6127de565b8035612810816122b0565b6001600160a01b0316825263ffffffff61282c602083016122c4565b1660208301525050565b6040810161069e8284612805565b5f60208284031215612854575f5ffd5b8151610880816122b0565b6080810161286d8286612805565b60408201939093526001600160a01b0391909116606090910152919050565b5f6020828403121561289c575f5ffd5b5051919050565b606081016128b18285612805565b8260408301529392505050565b5f602082840312156128ce575f5ffd5b815167ffffffffffffffff8111156128e4575f5ffd5b8201601f810184136128f4575f5ffd5b805167ffffffffffffffff81111561290e5761290e61226b565b8060051b61291e6020820161227f565b91825260208184018101929081019087841115612939575f5ffd5b6020850194505b8385101561295f57845180835260209586019590935090910190612940565b979650505050505050565b60a081016129788287612805565b60408201949094526001600160a01b0392909216606083015263ffffffff16608090910152919050565b81516001600160a01b0316815260208083015163ffffffff16908201526040810161069e565b5f602082840312156129d8575f5ffd5b81518015158114610880575f5ffd5b80516020808301519190811015612373575f1960209190910360031b1b16919050565b6001600160a01b0387811682528616602082015260e08101612a2f6040830187612805565b60808201949094526001600160a01b0392831660a0820152911660c0909101529392505050565b60a08101612a648287612805565b60408201949094526001600160a01b0392831660608201529116608090910152919050565b8181038181111561069e5761069e6127de565b634e487b7160e01b5f52603160045260245ffdfea26469706673582212207217cb4087765640e0f75551498e65ab7942c6943b1e70b359e434aae5b214b064736f6c634300081b0033", + Bin: "0x610120604052348015610010575f5ffd5b50604051612e89380380612e8983398101604081905261002f916101c1565b6001600160a01b0380861660805280851660a05280831660c05281908490811661006c576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660e05261008181610098565b610100525061008e6100de565b5050505050610319565b5f5f829050601f815111156100cb578260405163305a27a960e01b81526004016100c291906102be565b60405180910390fd5b80516100d6826102f3565b179392505050565b5f54610100900460ff16156101455760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100c2565b5f5460ff90811614610194575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101aa575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f60a086880312156101d5575f5ffd5b85516101e081610196565b60208701519095506101f181610196565b604087015190945061020281610196565b606087015190935061021381610196565b60808701519092506001600160401b0381111561022e575f5ffd5b8601601f8101881361023e575f5ffd5b80516001600160401b03811115610257576102576101ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610285576102856101ad565b6040528181528282016020018a101561029c575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295909350565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610313575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051612ae66103a35f395f610a5601525f818161049601528181611c980152611f2e01525f8181610515015281816108f501528181611ad30152611ee701525f818161032a0152818161079701528181610b620152610f1701525f81816105b7015281816106ff01528181610aca01526115500152612ae65ff3fe608060405234801561000f575f5ffd5b506004361061024a575f3560e01c806378748459116101405780639b122356116100bf578063c50f4e4811610084578063c50f4e481461057d578063c8b5330c14610595578063ca8aa7c7146105b2578063e7ed076b146105d9578063f2fde38b146105ec578063fabc1cbc146105ff575f5ffd5b80639b122356146104fd578063a3c6564114610510578063a56b21e414610537578063b23ff83b14610557578063c2de70961461056a575f5ffd5b8063886f119511610105578063886f1195146104915780638a65d2d2146104b85780638d5d4036146104c65780638da5cb5b146104d95780638fc46be5146104ea575f5ffd5b8063787484591461043057806378cb9600146104435780637a9676111461044b5780637def15641461045e57806387420b071461047e575f5ffd5b8063595c6a67116101cc5780636729b5db116101915780636729b5db146103cf5780636c5ac81e146103e25780637130c423146103f5578063715018a61461041557806371e166e71461041d575f5ffd5b8063595c6a67146103765780635ac86ab71461037e5780635c975abb146103a15780635e0a64c5146103a95780635ffa5a81146103bc575f5ffd5b8063277a9f0e11610212578063277a9f0e146102e75780633453b234146102fa57806339b70e38146103255780633f292b081461034c57806354fd4d5014610361575f5ffd5b80630310f3e61461024e57806305a4dfbb1461027b5780630e475b171461029c578063136439dd146102b157806319f3db26146102c4575b5f5ffd5b61026161025c36600461233a565b610612565b60405163ffffffff90911681526020015b60405180910390f35b61028e61028936600461233a565b6106a4565b604051908152602001610272565b6102af6102aa366004612379565b6106dc565b005b6102af6102bf3660046123b7565b610838565b6102d76102d23660046123ce565b610872565b6040519015158152602001610272565b61028e6102f53660046123ce565b610887565b61030d6103083660046123ce565b6108c6565b6040516001600160a01b039091168152602001610272565b61030d7f000000000000000000000000000000000000000000000000000000000000000081565b610354610958565b6040516102729190612447565b610369610a4f565b6040516102729190612459565b6102af610a7f565b6102d761038c36600461248e565b609854600160ff9092169190911b9081161490565b60985461028e565b6102af6103b73660046124ae565b610a93565b6102af6103ca3660046123ce565b610aa7565b61028e6103dd3660046124c7565b610c65565b6102af6103f03660046124e1565b610c90565b61040861040336600461233a565b610db6565b6040516102729190612555565b6102af610e88565b6102d761042b3660046124c7565b610e99565b6102d761043e3660046123ce565b610eb7565b61028e610f01565b6102af610459366004612379565b610f0c565b61047161046c366004612567565b611090565b60405161027291906125b1565b6102d761048c3660046123ce565b6110b3565b61030d7f000000000000000000000000000000000000000000000000000000000000000081565b60075463ffffffff16610261565b6102616104d43660046125c3565b6110e8565b6065546001600160a01b031661030d565b6102af6104f83660046125de565b611126565b6102af61050b3660046123ce565b611198565b61030d7f000000000000000000000000000000000000000000000000000000000000000081565b61054a610545366004612567565b61126b565b6040516102729190612611565b61028e610565366004612379565b611329565b61028e6105783660046123ce565b611408565b61058561144d565b60405161027294939291906126fc565b6102d76105a33660046125c3565b6001600160a01b03163b151590565b61030d7f000000000000000000000000000000000000000000000000000000000000000081565b6102af6105e73660046123ce565b6117a0565b6102af6105fa3660046125c3565b611875565b6102af61060d3660046123b7565b6118eb565b5f5f61061e8484610db6565b90505f805b8251811015610672575f61064f848381518110610642576106426127ca565b60200260200101516110e8565b90508263ffffffff168163ffffffff161115610669578092505b50600101610623565b508063ffffffff1661068486866106a4565b61068e91906127f2565b6106999060016127f2565b925050505b92915050565b5f60055f6106b185611958565b815260208082019290925260409081015f90812085825290925290205463ffffffff16905092915050565b5f6106e6816119bb565b60405163079efa8760e11b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630f3df50e90610734908890600401612836565b602060405180830381865afa15801561074f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107739190612844565b90506107808585836119e6565b6040516316a26f7b60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632d44def6906107d09088908890889060040161285f565b6020604051808303815f875af11580156107ec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610810919061288c565b50610827858561082088886108c6565b8487611a8d565b6108318585611b9d565b5050505050565b610840611c83565b60985481811681146108655760405163c61dca5d60e01b815260040160405180910390fd5b61086e82611d26565b5050565b5f6108806105a384846108c6565b9392505050565b5f6108806004826108a56108a036889003880188612567565b611958565b81526020019081526020015f205f8481526020019081526020015f20611d63565b5f6108806108d48484611408565b6040513060388201526f5af43d82803e903d91602b57fd5bf3ff60248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166014820152733d602d80600a3d3981f3363d3d373d3d3d363d73815260588101919091526037600c8201206078820152605560439091012090565b60605f6109656001611d6c565b9050805167ffffffffffffffff8111156109815761098161226b565b6040519080825280602002602001820160405280156109c557816020015b604080518082019091525f808252602082015281526020019060019003908161099f5790505b5091505f5b8151811015610a4a57610a258282815181106109e8576109e86127ca565b6020026020010151604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b838281518110610a3757610a376127ca565b60209081029190910101526001016109ca565b505090565b6060610a7a7f0000000000000000000000000000000000000000000000000000000000000000611d78565b905090565b610a87611c83565b610a915f19611d26565b565b610a9b611db5565b610aa481611e0f565b50565b5f610ab1816119bb565b60405163079efa8760e11b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630f3df50e90610aff908790600401612836565b602060405180830381865afa158015610b1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3e9190612844565b9050610b4b8484836119e6565b6040516388c1029960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906388c1029990610b9990879087906004016128a3565b5f604051808303815f875af1158015610bb4573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610bdb91908101906128be565b505f610c16600482610bf56108a0368a90038a018a612567565b81526020019081526020015f205f8681526020019081526020015f20611d6c565b90505f5b8151811015610c5a57610c528686610c3289896108c6565b86868681518110610c4557610c456127ca565b6020026020010151611a8d565b600101610c1a565b506108318585611b9d565b5f61069e600382610c7e6108a036879003870187612567565b81526020019081526020015f20611d63565b5f54610100900460ff1615808015610cae57505f54600160ff909116105b80610cc75750303b158015610cc757505f5460ff166001145b610d2f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610d50575f805461ff0019166101001790555b610d5984611e5d565b610d6283611d26565b610d6b82611e0f565b8015610db0575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60605f60045f610dc586611958565b81526020019081526020015f205f8481526020019081526020015f2090505f610ded82611d63565b90508067ffffffffffffffff811115610e0857610e0861226b565b604051908082528060200260200182016040528015610e31578160200160208202803683370190505b5092505f5b81811015610e7f575f610e498483611eae565b905080858381518110610e5e57610e5e6127ca565b6001600160a01b039092166020928302919091019091015250600101610e36565b50505092915050565b610e90611db5565b610a915f611e5d565b5f61069e610eaf6108a036859003850185612567565b600190611eb9565b5f600681610ecd6108a036879003870187612567565b815260208082019290925260409081015f90812085825290925290205460ff16806108805750609854600190811614610880565b5f610a7a6001611d63565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f55576040516348da714f60e01b815260040160405180910390fd5b5f600381610f6b6108a036889003880188612567565b81526020019081526020015f2090505f60045f610f92878036038101906108a09190612567565b81526020019081526020015f205f8581526020019081526020015f209050610fba8585610872565b61104157610fc88585611ed0565b610fe5610fdd6108a036889003880188612567565b600190611f0d565b50610ff08285611f0d565b504360055f6110076108a0368a90038a018a612567565b81526020019081526020015f205f8681526020019081526020015f205f6101000a81548163ffffffff021916908363ffffffff1602179055505b61104b8184611f18565b507f3afae24c1d3dd2ce3649054ad82458a8c9967ebd9ce10a9a5a3d059f55bfaedb85858543604051611081949392919061296a565b60405180910390a15050505050565b606061069e60035f6110a185611958565b81526020019081526020015f20611d6c565b5f610880826003836110cd6108a036899003890189612567565b81526020019081526020015f20611eb990919063ffffffff16565b6007546001600160a01b0382165f90815260086020526040812054909163ffffffff908116911681811161111c578161111e565b805b949350505050565b61112e611db5565b6001600160a01b0382165f81815260086020908152604091829020805463ffffffff191663ffffffff86169081179091558251938452908301527f5d2b33f07ae22a809e79005f96ffac70c3715df85a3b011b025e0a86a23a007b91015b60405180910390a15050565b6111a0611f2c565b60065f6111b56108a036869003860186612567565b815260208082019290925260409081015f90812084825290925290205460ff166111f25760405163c61dca5d60e01b815260040160405180910390fd5b5f6006816112086108a036879003870187612567565b81526020019081526020015f205f8381526020019081526020015f205f6101000a81548160ff0219169083151502179055507fb8877c6bf02d5f6603188eb653c9269271836b75b2012a5d7f5f233e7cf2f241828260405161118c9291906128a3565b60605f60035f61127a85611958565b81526020019081526020015f2090505f61129382611d63565b90508067ffffffffffffffff8111156112ae576112ae61226b565b6040519080825280602002602001820160405280156112e157816020015b60608152602001906001900390816112cc5790505b5092505f5b81811015611321576112fc856104038584611eae565b84828151811061130e5761130e6127ca565b60209081029190910101526001016112e6565b505050919050565b5f816001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015611366573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061138a9190612844565b6001600160a01b03166370a082316113a286866108c6565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156113e4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111e919061288c565b5f61141b6108a036859003850185612567565b604080516020810192909252810183905260600160405160208183030381529060405280519060200120905092915050565b60608060608061145b610958565b9350835167ffffffffffffffff8111156114775761147761226b565b6040519080825280602002602001820160405280156114a0578160200160208202803683370190505b509250835167ffffffffffffffff8111156114bd576114bd61226b565b6040519080825280602002602001820160405280156114f057816020015b60608152602001906001900390816114db5790505b509150835167ffffffffffffffff81111561150d5761150d61226b565b60405190808252806020026020018201604052801561154057816020015b606081526020019060019003908161152b5790505b5090505f5b8451811015611799577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f231bd0886838151811061158f5761158f6127ca565b60200260200101516040518263ffffffff1660e01b81526004016115b391906129a2565b602060405180830381865afa1580156115ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115f291906129c8565b848281518110611604576116046127ca565b60200260200101901515908115158152505061163885828151811061162b5761162b6127ca565b6020026020010151611090565b83828151811061164a5761164a6127ca565b6020026020010181905250828181518110611667576116676127ca565b60200260200101515167ffffffffffffffff8111156116885761168861226b565b6040519080825280602002602001820160405280156116b1578160200160208202803683370190505b508282815181106116c4576116c46127ca565b60209081029190910101525f5b8382815181106116e3576116e36127ca565b60200260200101515181101561179057611748868381518110611708576117086127ca565b6020026020010151858481518110611722576117226127ca565b6020026020010151838151811061173b5761173b6127ca565b6020026020010151610612565b83838151811061175a5761175a6127ca565b60200260200101518281518110611773576117736127ca565b63ffffffff909216602092830291909101909101526001016116d1565b50600101611545565b5090919293565b6117a8611c83565b60065f6117bd6108a036869003860186612567565b815260208082019290925260409081015f90812084825290925290205460ff16156117fb5760405163c61dca5d60e01b815260040160405180910390fd5b600160065f6118126108a036879003870187612567565b81526020019081526020015f205f8381526020019081526020015f205f6101000a81548160ff0219169083151502179055507f050add19b1a78a4240cdebc8747899275f2dd070c88e83904a37ff7d1a539744828260405161118c9291906128a3565b61187d611db5565b6001600160a01b0381166118e25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d26565b610aa481611e5d565b6118f3611f2c565b6098548019821981161461191a5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff166040516020016119a392919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261069e906129e7565b609854600160ff83161b90811603610aa45760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038116620e16e414611a2257336001600160a01b03821614611a225760405163720116ad60e11b815260040160405180910390fd5b611a2c8383610eb7565b15611a4a5760405163840a48d560e01b815260040160405180910390fd5b611a62611a5c36859003850185612567565b83610612565b63ffffffff16431015611a88576040516331caa72160e01b815260040160405180910390fd5b505050565b5f600481611aa36108a0368a90038a018a612567565b81526020019081526020015f205f8681526020019081526020015f209050836001600160a01b031663ff491e65307f0000000000000000000000000000000000000000000000000000000000000000898988886040518763ffffffff1660e01b8152600401611b1796959493929190612a0a565b5f604051808303815f87803b158015611b2e575f5ffd5b505af1158015611b40573d5f5f3e3d5ffd5b50505050611b578282611fdd90919063ffffffff16565b507f32be306ad5a833e756b7cb9724d5312afe0feda6163bfc2dd98ee713346a9abc86868486604051611b8d9493929190612a56565b60405180910390a1505050505050565b60015f600381611bb56108a036889003880188612567565b81526020019081526020015f2090505f611c0060045f611bdf888036038101906108a09190612567565b81526020019081526020015f205f8681526020019081526020015f20611d63565b9050805f0361083157611c138285611ff1565b5060055f611c296108a036899003890189612567565b815260208082019290925260409081015f9081208782529092529020805463ffffffff19169055611c5982611d63565b5f0361083157611c7b611c746108a036889003880188612567565b8490611ff1565b505050505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611ce5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0991906129c8565b610a9157604051631d77d47760e21b815260040160405180910390fd5b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61069e825490565b60605f61088083611ffc565b60605f611d8483612055565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6065546001600160a01b03163314610a915760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d26565b6007805463ffffffff191663ffffffff83169081179091556040519081527f67d0077d22e4e06f761dd87f6c9f2310ac879c9ce17de50d381e05b72f45fbf69060200160405180910390a150565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f610880838361207c565b5f8181526001830160205260408120541515610880565b611a88611edd8383611408565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906120a2565b5f610880838361213c565b5f610880836001600160a01b03841661213c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f88573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fac9190612844565b6001600160a01b0316336001600160a01b031614610a915760405163794821ff60e01b815260040160405180910390fd5b5f610880836001600160a01b038416612188565b5f6108808383612188565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561204957602002820191905f5260205f20905b815481526020019060010190808311612035575b50505050509050919050565b5f60ff8216601f81111561069e57604051632cd44ac360e21b815260040160405180910390fd5b5f825f018281548110612091576120916127ca565b905f5260205f200154905092915050565b5f763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c175f526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760095ff590506001600160a01b03811661069e5760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401610d26565b5f81815260018301602052604081205461218157508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561069e565b505f61069e565b5f8181526001830160205260408120548015612262575f6121aa600183612a89565b85549091505f906121bd90600190612a89565b905081811461221c575f865f0182815481106121db576121db6127ca565b905f5260205f200154905080875f0184815481106121fb576121fb6127ca565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061222d5761222d612a9c565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061069e565b5f91505061069e565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156122a8576122a861226b565b604052919050565b6001600160a01b0381168114610aa4575f5ffd5b803563ffffffff811681146122d7575f5ffd5b919050565b5f604082840312156122ec575f5ffd5b6040805190810167ffffffffffffffff8111828210171561230f5761230f61226b565b6040529050808235612320816122b0565b815261232e602084016122c4565b60208201525092915050565b5f5f6060838503121561234b575f5ffd5b61235584846122dc565b946040939093013593505050565b5f60408284031215612373575f5ffd5b50919050565b5f5f5f6080848603121561238b575f5ffd5b6123958585612363565b92506040840135915060608401356123ac816122b0565b809150509250925092565b5f602082840312156123c7575f5ffd5b5035919050565b5f5f606083850312156123df575f5ffd5b6123558484612363565b5f8151808452602084019350602083015f5b8281101561243d5761242786835180516001600160a01b0316825260209081015163ffffffff16910152565b60409590950194602091909101906001016123fb565b5093949350505050565b602081525f61088060208301846123e9565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561249e575f5ffd5b813560ff81168114610880575f5ffd5b5f602082840312156124be575f5ffd5b610880826122c4565b5f604082840312156124d7575f5ffd5b6108808383612363565b5f5f5f606084860312156124f3575f5ffd5b83356124fe816122b0565b925060208401359150612513604085016122c4565b90509250925092565b5f8151808452602084019350602083015f5b8281101561243d5781516001600160a01b031686526020958601959091019060010161252e565b602081525f610880602083018461251c565b5f60408284031215612577575f5ffd5b61088083836122dc565b5f8151808452602084019350602083015f5b8281101561243d578151865260209586019590910190600101612593565b602081525f6108806020830184612581565b5f602082840312156125d3575f5ffd5b8135610880816122b0565b5f5f604083850312156125ef575f5ffd5b82356125fa816122b0565b9150612608602084016122c4565b90509250929050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561266857603f1987860301845261265385835161251c565b94506020938401939190910190600101612637565b50929695505050505050565b5f82825180855260208501945060208160051b830101602085015f5b838110156126f057848303601f19018852815180518085526020918201918501905f5b818110156126d757835163ffffffff168352602093840193909201916001016126b3565b50506020998a0199909450929092019150600101612690565b50909695505050505050565b608081525f61270e60808301876123e9565b82810360208401528086518083526020830191506020880192505f5b8181101561274a578351151583526020938401939092019160010161272a565b505083810360408501528091505f865180835260208301935060208160051b840101602089015f5b838110156127a457601f1986840301875261278e838351612581565b6020978801979093509190910190600101612772565b505080925086810360608801526127bb8189612674565b9b9a5050505050505050505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561069e5761069e6127de565b8035612810816122b0565b6001600160a01b0316825263ffffffff61282c602083016122c4565b1660208301525050565b6040810161069e8284612805565b5f60208284031215612854575f5ffd5b8151610880816122b0565b6080810161286d8286612805565b60408201939093526001600160a01b0391909116606090910152919050565b5f6020828403121561289c575f5ffd5b5051919050565b606081016128b18285612805565b8260408301529392505050565b5f602082840312156128ce575f5ffd5b815167ffffffffffffffff8111156128e4575f5ffd5b8201601f810184136128f4575f5ffd5b805167ffffffffffffffff81111561290e5761290e61226b565b8060051b61291e6020820161227f565b91825260208184018101929081019087841115612939575f5ffd5b6020850194505b8385101561295f57845180835260209586019590935090910190612940565b979650505050505050565b60a081016129788287612805565b60408201949094526001600160a01b0392909216606083015263ffffffff16608090910152919050565b81516001600160a01b0316815260208083015163ffffffff16908201526040810161069e565b5f602082840312156129d8575f5ffd5b81518015158114610880575f5ffd5b80516020808301519190811015612373575f1960209190910360031b1b16919050565b6001600160a01b0387811682528616602082015260e08101612a2f6040830187612805565b60808201949094526001600160a01b0392831660a0820152911660c0909101529392505050565b60a08101612a648287612805565b60408201949094526001600160a01b0392831660608201529116608090910152919050565b8181038181111561069e5761069e6127de565b634e487b7160e01b5f52603160045260245ffdfea264697066735822122085f18382a9cccab02b45cbea2a4a71d01a952b966cef7d435579ecc9e8485d7464736f6c634300081b0033", } // SlashEscrowFactoryABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/StrategyBase/binding.go b/pkg/bindings/StrategyBase/binding.go index 6329825f2f..fa796ef5a6 100644 --- a/pkg/bindings/StrategyBase/binding.go +++ b/pkg/bindings/StrategyBase/binding.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\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"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\"}],\"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\":\"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\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"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\":[{\"name\":\"amountOut\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ExchangeRateEmitted\",\"inputs\":[{\"name\":\"rate\",\"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\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyTokenSet\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"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\":\"error\",\"name\":\"BalanceExceedsMaxTotalDeposits\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxPerDepositExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewSharesZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnderlyingToken\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"TotalSharesExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalAmountExceedsTotalDeposits\",\"inputs\":[]}]", - Bin: "0x60e060405234801561000f575f5ffd5b5060405161152938038061152983398101604081905261002e916101b6565b80826001600160a01b038116610057576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660805261006c8161008d565b60a052506001600160a01b03831660c0526100856100d3565b5050506102e7565b5f5f829050601f815111156100c0578260405163305a27a960e01b81526004016100b7919061028c565b60405180910390fd5b80516100cb826102c1565b179392505050565b5f54610100900460ff161561013a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b7565b5f5460ff90811614610189575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019f575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c8575f5ffd5b83516101d38161018b565b60208501519093506101e48161018b565b60408501519092506001600160401b038111156101ff575f5ffd5b8401601f8101861361020f575f5ffd5b80516001600160401b03811115610228576102286101a2565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610256576102566101a2565b60405281815282820160200188101561026d575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e1575f198160200360031b1b821691505b50919050565b60805160a05160c0516111f56103345f395f81816101800152818161035d01528181610686015261070801525f61047d01525f818161024b015281816108b60152610c6c01526111f55ff3fe608060405234801561000f575f5ffd5b5060043610610132575f3560e01c80637a8b2637116100b4578063c4d66de811610079578063c4d66de81461029b578063ce7c2ac2146102ae578063d9caed12146102c1578063e3dae51c146102d4578063f3e73875146102e7578063fabc1cbc146102fa575f5ffd5b80637a8b263714610233578063886f1195146102465780638c8710191461026d5780638f6a624014610280578063ab5921e114610293575f5ffd5b806354fd4d50116100fa57806354fd4d50146101cc578063553ca5f8146101e1578063595c6a67146101f45780635ac86ab7146101fc5780635c975abb1461022b575f5ffd5b8063136439dd146101365780632495a5991461014b57806339b70e381461017b5780633a98ef39146101a257806347e7ef24146101b9575b5f5ffd5b610149610144366004610f6d565b61030d565b005b60325461015e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b6101ab60335481565b604051908152602001610172565b6101ab6101c7366004610f98565b610347565b6101d4610476565b6040516101729190610fc2565b6101ab6101ef366004610ff7565b6104a6565b6101496104b9565b61021b61020a366004611027565b6001805460ff9092161b9081161490565b6040519015158152602001610172565b6001546101ab565b6101ab610241366004610f6d565b6104cd565b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b6101ab61027b366004610f6d565b610516565b6101ab61028e366004610ff7565b610520565b6101d461052d565b6101496102a9366004610ff7565b61054d565b6101ab6102bc366004610ff7565b61065f565b6101ab6102cf366004611042565b6106f1565b6101ab6102e2366004610f6d565b6107f3565b6101ab6102f5366004610f6d565b61082a565b610149610308366004610f6d565b610834565b6103156108a1565b600154818116811461033a5760405163c61dca5d60e01b815260040160405180910390fd5b61034382610944565b5050565b5f5f61035281610981565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461039b576040516348da714f60e01b815260040160405180910390fd5b6103a584846109b7565b6033545f6103b56103e883611094565b90505f6103e86103c36109e5565b6103cd9190611094565b90505f6103da87836110a7565b9050806103e784896110ba565b6103f191906110d1565b9550855f0361041357604051630c392ed360e11b815260040160405180910390fd5b61041d8685611094565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561045257604051632f14e8a360e11b815260040160405180910390fd5b61046b826103e86033546104669190611094565b610a4f565b505050505092915050565b60606104a17f0000000000000000000000000000000000000000000000000000000000000000610a9b565b905090565b5f6104b36102418361065f565b92915050565b6104c16108a1565b6104cb5f19610944565b565b5f5f6103e86033546104df9190611094565b90505f6103e86104ed6109e5565b6104f79190611094565b90508161050485836110ba565b61050e91906110d1565b949350505050565b5f6104b3826107f3565b5f6104b36102f58361065f565b60606040518060800160405280604d8152602001611173604d9139905090565b5f54610100900460ff161580801561056b57505f54600160ff909116105b806105845750303b15801561058457505f5460ff166001145b6105ec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561060d575f805461ff0019166101001790555b61061682610ad8565b8015610343575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa1580156106cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104b391906110f0565b5f60016106fd81610981565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610746576040516348da714f60e01b815260040160405180910390fd5b610751858585610c23565b6033548084111561077557604051630b469df360e41b815260040160405180910390fd5b5f6107826103e883611094565b90505f6103e86107906109e5565b61079a9190611094565b9050816107a787836110ba565b6107b191906110d1565b94506107bd86846110a7565b6033556107dd6107cd86836110a7565b6103e86033546104669190611094565b6107e8888887610c56565b505050509392505050565b5f5f6103e86033546108059190611094565b90505f6103e86108136109e5565b61081d9190611094565b90508061050483866110ba565b5f6104b3826104cd565b61083c610c6a565b600154801982198116146108635760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610903573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109279190611107565b6104cb57604051631d77d47760e21b815260040160405180910390fd5b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b610996816001805460ff9092161b9081161490565b156109b45760405163840a48d560e01b815260040160405180910390fd5b50565b6032546001600160a01b0383811691161461034357604051630312abdd60e61b815260040160405180910390fd5b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a191906110f0565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610a8384670de0b6b3a76400006110ba565b610a8d91906110d1565b604051908152602001610653565b60605f610aa783610d1b565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610b425760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016105e3565b603280546001600160a01b0319166001600160a01b038316179055610b665f610944565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bd8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bfc9190611126565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b03838116911614610c5157604051630312abdd60e61b815260040160405180910390fd5b505050565b610c516001600160a01b0383168483610d42565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cea9190611141565b6001600160a01b0316336001600160a01b0316146104cb5760405163794821ff60e01b815260040160405180910390fd5b5f60ff8216601f8111156104b357604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610c51928692915f91610dd1918516908490610e50565b905080515f1480610df1575080806020019051810190610df19190611107565b610c515760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105e3565b606061050e84845f85855f5f866001600160a01b03168587604051610e75919061115c565b5f6040518083038185875af1925050503d805f8114610eaf576040519150601f19603f3d011682016040523d82523d5f602084013e610eb4565b606091505b5091509150610ec587838387610ed0565b979650505050505050565b60608315610f3e5782515f03610f37576001600160a01b0385163b610f375760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105e3565b508161050e565b61050e8383815115610f535781518083602001fd5b8060405162461bcd60e51b81526004016105e39190610fc2565b5f60208284031215610f7d575f5ffd5b5035919050565b6001600160a01b03811681146109b4575f5ffd5b5f5f60408385031215610fa9575f5ffd5b8235610fb481610f84565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611007575f5ffd5b813561101281610f84565b9392505050565b60ff811681146109b4575f5ffd5b5f60208284031215611037575f5ffd5b813561101281611019565b5f5f5f60608486031215611054575f5ffd5b833561105f81610f84565b9250602084013561106f81610f84565b929592945050506040919091013590565b634e487b7160e01b5f52601160045260245ffd5b808201808211156104b3576104b3611080565b818103818111156104b3576104b3611080565b80820281158282048414176104b3576104b3611080565b5f826110eb57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611100575f5ffd5b5051919050565b5f60208284031215611117575f5ffd5b81518015158114611012575f5ffd5b5f60208284031215611136575f5ffd5b815161101281611019565b5f60208284031215611151575f5ffd5b815161101281610f84565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220f5166522b111dcebf999fd08140289aa816cffea7947557d9dd5d7974d47985964736f6c634300081b0033", + Bin: "0x60e060405234801561000f575f5ffd5b5060405161152938038061152983398101604081905261002e916101b6565b80826001600160a01b038116610057576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660805261006c8161008d565b60a052506001600160a01b03831660c0526100856100d3565b5050506102e7565b5f5f829050601f815111156100c0578260405163305a27a960e01b81526004016100b7919061028c565b60405180910390fd5b80516100cb826102c1565b179392505050565b5f54610100900460ff161561013a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b7565b5f5460ff90811614610189575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019f575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c8575f5ffd5b83516101d38161018b565b60208501519093506101e48161018b565b60408501519092506001600160401b038111156101ff575f5ffd5b8401601f8101861361020f575f5ffd5b80516001600160401b03811115610228576102286101a2565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610256576102566101a2565b60405281815282820160200188101561026d575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e1575f198160200360031b1b821691505b50919050565b60805160a05160c0516111f56103345f395f81816101800152818161035d01528181610686015261070801525f61047d01525f818161024b015281816108b60152610c6c01526111f55ff3fe608060405234801561000f575f5ffd5b5060043610610132575f3560e01c80637a8b2637116100b4578063c4d66de811610079578063c4d66de81461029b578063ce7c2ac2146102ae578063d9caed12146102c1578063e3dae51c146102d4578063f3e73875146102e7578063fabc1cbc146102fa575f5ffd5b80637a8b263714610233578063886f1195146102465780638c8710191461026d5780638f6a624014610280578063ab5921e114610293575f5ffd5b806354fd4d50116100fa57806354fd4d50146101cc578063553ca5f8146101e1578063595c6a67146101f45780635ac86ab7146101fc5780635c975abb1461022b575f5ffd5b8063136439dd146101365780632495a5991461014b57806339b70e381461017b5780633a98ef39146101a257806347e7ef24146101b9575b5f5ffd5b610149610144366004610f6d565b61030d565b005b60325461015e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b6101ab60335481565b604051908152602001610172565b6101ab6101c7366004610f98565b610347565b6101d4610476565b6040516101729190610fc2565b6101ab6101ef366004610ff7565b6104a6565b6101496104b9565b61021b61020a366004611027565b6001805460ff9092161b9081161490565b6040519015158152602001610172565b6001546101ab565b6101ab610241366004610f6d565b6104cd565b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b6101ab61027b366004610f6d565b610516565b6101ab61028e366004610ff7565b610520565b6101d461052d565b6101496102a9366004610ff7565b61054d565b6101ab6102bc366004610ff7565b61065f565b6101ab6102cf366004611042565b6106f1565b6101ab6102e2366004610f6d565b6107f3565b6101ab6102f5366004610f6d565b61082a565b610149610308366004610f6d565b610834565b6103156108a1565b600154818116811461033a5760405163c61dca5d60e01b815260040160405180910390fd5b61034382610944565b5050565b5f5f61035281610981565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461039b576040516348da714f60e01b815260040160405180910390fd5b6103a584846109b7565b6033545f6103b56103e883611094565b90505f6103e86103c36109e5565b6103cd9190611094565b90505f6103da87836110a7565b9050806103e784896110ba565b6103f191906110d1565b9550855f0361041357604051630c392ed360e11b815260040160405180910390fd5b61041d8685611094565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561045257604051632f14e8a360e11b815260040160405180910390fd5b61046b826103e86033546104669190611094565b610a4f565b505050505092915050565b60606104a17f0000000000000000000000000000000000000000000000000000000000000000610a9b565b905090565b5f6104b36102418361065f565b92915050565b6104c16108a1565b6104cb5f19610944565b565b5f5f6103e86033546104df9190611094565b90505f6103e86104ed6109e5565b6104f79190611094565b90508161050485836110ba565b61050e91906110d1565b949350505050565b5f6104b3826107f3565b5f6104b36102f58361065f565b60606040518060800160405280604d8152602001611173604d9139905090565b5f54610100900460ff161580801561056b57505f54600160ff909116105b806105845750303b15801561058457505f5460ff166001145b6105ec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561060d575f805461ff0019166101001790555b61061682610ad8565b8015610343575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa1580156106cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104b391906110f0565b5f60016106fd81610981565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610746576040516348da714f60e01b815260040160405180910390fd5b610751858585610c23565b6033548084111561077557604051630b469df360e41b815260040160405180910390fd5b5f6107826103e883611094565b90505f6103e86107906109e5565b61079a9190611094565b9050816107a787836110ba565b6107b191906110d1565b94506107bd86846110a7565b6033556107dd6107cd86836110a7565b6103e86033546104669190611094565b6107e8888887610c56565b505050509392505050565b5f5f6103e86033546108059190611094565b90505f6103e86108136109e5565b61081d9190611094565b90508061050483866110ba565b5f6104b3826104cd565b61083c610c6a565b600154801982198116146108635760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610903573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109279190611107565b6104cb57604051631d77d47760e21b815260040160405180910390fd5b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b610996816001805460ff9092161b9081161490565b156109b45760405163840a48d560e01b815260040160405180910390fd5b50565b6032546001600160a01b0383811691161461034357604051630312abdd60e61b815260040160405180910390fd5b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a191906110f0565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610a8384670de0b6b3a76400006110ba565b610a8d91906110d1565b604051908152602001610653565b60605f610aa783610d1b565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610b425760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016105e3565b603280546001600160a01b0319166001600160a01b038316179055610b665f610944565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bd8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bfc9190611126565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b03838116911614610c5157604051630312abdd60e61b815260040160405180910390fd5b505050565b610c516001600160a01b0383168483610d42565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cea9190611141565b6001600160a01b0316336001600160a01b0316146104cb5760405163794821ff60e01b815260040160405180910390fd5b5f60ff8216601f8111156104b357604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610c51928692915f91610dd1918516908490610e50565b905080515f1480610df1575080806020019051810190610df19190611107565b610c515760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105e3565b606061050e84845f85855f5f866001600160a01b03168587604051610e75919061115c565b5f6040518083038185875af1925050503d805f8114610eaf576040519150601f19603f3d011682016040523d82523d5f602084013e610eb4565b606091505b5091509150610ec587838387610ed0565b979650505050505050565b60608315610f3e5782515f03610f37576001600160a01b0385163b610f375760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105e3565b508161050e565b61050e8383815115610f535781518083602001fd5b8060405162461bcd60e51b81526004016105e39190610fc2565b5f60208284031215610f7d575f5ffd5b5035919050565b6001600160a01b03811681146109b4575f5ffd5b5f5f60408385031215610fa9575f5ffd5b8235610fb481610f84565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611007575f5ffd5b813561101281610f84565b9392505050565b60ff811681146109b4575f5ffd5b5f60208284031215611037575f5ffd5b813561101281611019565b5f5f5f60608486031215611054575f5ffd5b833561105f81610f84565b9250602084013561106f81610f84565b929592945050506040919091013590565b634e487b7160e01b5f52601160045260245ffd5b808201808211156104b3576104b3611080565b818103818111156104b3576104b3611080565b80820281158282048414176104b3576104b3611080565b5f826110eb57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611100575f5ffd5b5051919050565b5f60208284031215611117575f5ffd5b81518015158114611012575f5ffd5b5f60208284031215611136575f5ffd5b815161101281611019565b5f60208284031215611151575f5ffd5b815161101281610f84565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212209070d3fd66aae00a79bad5d2c6c08584f2729c09f4bd6ab0871e822afdae36dc64736f6c634300081b0033", } // StrategyBaseABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/StrategyBaseTVLLimits/binding.go b/pkg/bindings/StrategyBaseTVLLimits/binding.go index 23b84d7a8f..508fe5fcee 100644 --- a/pkg/bindings/StrategyBaseTVLLimits/binding.go +++ b/pkg/bindings/StrategyBaseTVLLimits/binding.go @@ -32,7 +32,7 @@ var ( // StrategyBaseTVLLimitsMetaData contains all meta data concerning the StrategyBaseTVLLimits contract. var StrategyBaseTVLLimitsMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"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\":\"getTVLLimits\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_maxPerDeposit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_maxTotalDeposits\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_underlyingToken\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_underlyingToken\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"maxPerDeposit\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"maxTotalDeposits\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"setTVLLimits\",\"inputs\":[{\"name\":\"newMaxPerDeposit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"newMaxTotalDeposits\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"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\":[{\"name\":\"amountOut\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ExchangeRateEmitted\",\"inputs\":[{\"name\":\"rate\",\"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\":\"MaxPerDepositUpdated\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxTotalDepositsUpdated\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"StrategyTokenSet\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"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\":\"error\",\"name\":\"BalanceExceedsMaxTotalDeposits\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxPerDepositExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewSharesZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnderlyingToken\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"TotalSharesExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalAmountExceedsTotalDeposits\",\"inputs\":[]}]", - Bin: "0x60e060405234801561000f575f5ffd5b5060405161181738038061181783398101604081905261002e916101bc565b82828280826001600160a01b03811661005a576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660805261006f81610093565b60a052506001600160a01b03831660c0526100886100d9565b5050505050506102ed565b5f5f829050601f815111156100c6578260405163305a27a960e01b81526004016100bd9190610292565b60405180910390fd5b80516100d1826102c7565b179392505050565b5f54610100900460ff16156101405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bd565b5f5460ff9081161461018f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101a5575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101ce575f5ffd5b83516101d981610191565b60208501519093506101ea81610191565b60408501519092506001600160401b03811115610205575f5ffd5b8401601f81018613610215575f5ffd5b80516001600160401b0381111561022e5761022e6101a8565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025c5761025c6101a8565b604052818152828201602001881015610273575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e7575f198160200360031b1b821691505b50919050565b60805160a05160c0516114dd61033a5f395f81816101e801528181610417015281816107cf015261085101525f61053701525f81816102c5015281816109ec0152610b5401526114dd5ff3fe608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046111b1565b6103b5565b005b61019e6101ae3660046111d1565b6103cb565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b61021360335481565b6040519081526020016101da565b61021360645481565b6102136102383660046111fc565b610401565b610245610530565b6040516101da9190611226565b61021361026036600461125b565b610560565b61019e610573565b61028c61027b36600461128b565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb3660046111d1565b610587565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6102136102f53660046111d1565b6105d0565b61021361030836600461125b565b6105da565b61019e61031b3660046112a6565b6105e7565b6102456106c2565b61019e61033636600461125b565b6106e2565b61021361034936600461125b565b6107a8565b61021361035c3660046112dc565b61083a565b606454606554604080519283526020830191909152016101da565b61021361038a3660046111d1565b61093c565b61021361039d3660046111d1565b610973565b61019e6103b03660046111d1565b61097d565b6103bd6109ea565b6103c78282610a9b565b5050565b6103d3610b3f565b60015481811681146103f85760405163c61dca5d60e01b815260040160405180910390fd5b6103c782610be2565b5f5f61040c81610c1f565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610455576040516348da714f60e01b815260040160405180910390fd5b61045f8484610c55565b6033545f61046f6103e88361132e565b90505f6103e861047d610cac565b610487919061132e565b90505f6104948783611341565b9050806104a18489611354565b6104ab919061136b565b9550855f036104cd57604051630c392ed360e11b815260040160405180910390fd5b6104d7868561132e565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561050c57604051632f14e8a360e11b815260040160405180910390fd5b610525826103e8603354610520919061132e565b610d16565b505050505092915050565b606061055b7f0000000000000000000000000000000000000000000000000000000000000000610d62565b905090565b5f61056d6102bb836107a8565b92915050565b61057b610b3f565b6105855f19610be2565b565b5f5f6103e8603354610599919061132e565b90505f6103e86105a7610cac565b6105b1919061132e565b9050816105be8583611354565b6105c8919061136b565b949350505050565b5f61056d8261093c565b5f61056d61039d836107a8565b5f54610100900460ff161580801561060557505f54600160ff909116105b8061061e5750303b15801561061e57505f5460ff166001145b6106435760405162461bcd60e51b815260040161063a9061138a565b60405180910390fd5b5f805460ff191660011790558015610664575f805461ff0019166101001790555b61066e8484610a9b565b61067782610d9f565b80156106bc575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d815260200161145b604d9139905090565b5f54610100900460ff161580801561070057505f54600160ff909116105b806107195750303b15801561071957505f5460ff166001145b6107355760405162461bcd60e51b815260040161063a9061138a565b5f805460ff191660011790558015610756575f805461ff0019166101001790555b61075f82610d9f565b80156103c7575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa158015610816573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056d91906113d8565b5f600161084681610c1f565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461088f576040516348da714f60e01b815260040160405180910390fd5b61089a858585610eea565b603354808411156108be57604051630b469df360e41b815260040160405180910390fd5b5f6108cb6103e88361132e565b90505f6103e86108d9610cac565b6108e3919061132e565b9050816108f08783611354565b6108fa919061136b565b94506109068684611341565b6033556109266109168683611341565b6103e8603354610520919061132e565b610931888887610f1d565b505050509392505050565b5f5f6103e860335461094e919061132e565b90505f6103e861095c610cac565b610966919061132e565b9050806105be8386611354565b5f61056d82610587565b6109856109ea565b600154801982198116146109ac5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a46573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6a91906113ef565b6001600160a01b0316336001600160a01b0316146105855760405163794821ff60e01b815260040160405180910390fd5b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610b345760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc5919061140a565b61058557604051631d77d47760e21b815260040160405180910390fd5b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b610c34816001805460ff9092161b9081161490565b15610c525760405163840a48d560e01b815260040160405180910390fd5b50565b606454811115610c785760405163052b07b760e21b815260040160405180910390fd5b606554610c83610cac565b1115610ca25760405163d86bae6760e01b815260040160405180910390fd5b6103c78282610f31565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610cf2573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061055b91906113d8565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610d4a84670de0b6b3a7640000611354565b610d54919061136b565b60405190815260200161079c565b60605f610d6e83610f5f565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610e095760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161063a565b603280546001600160a01b0319166001600160a01b038316179055610e2d5f610be2565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e9f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec39190611429565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b03838116911614610f1857604051630312abdd60e61b815260040160405180910390fd5b505050565b610f186001600160a01b0383168483610f86565b6032546001600160a01b038381169116146103c757604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f81111561056d57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610f18928692915f91611015918516908490611094565b905080515f1480611035575080806020019051810190611035919061140a565b610f185760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161063a565b60606105c884845f85855f5f866001600160a01b031685876040516110b99190611444565b5f6040518083038185875af1925050503d805f81146110f3576040519150601f19603f3d011682016040523d82523d5f602084013e6110f8565b606091505b509150915061110987838387611114565b979650505050505050565b606083156111825782515f0361117b576001600160a01b0385163b61117b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161063a565b50816105c8565b6105c883838151156111975781518083602001fd5b8060405162461bcd60e51b815260040161063a9190611226565b5f5f604083850312156111c2575f5ffd5b50508035926020909101359150565b5f602082840312156111e1575f5ffd5b5035919050565b6001600160a01b0381168114610c52575f5ffd5b5f5f6040838503121561120d575f5ffd5b8235611218816111e8565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561126b575f5ffd5b8135611276816111e8565b9392505050565b60ff81168114610c52575f5ffd5b5f6020828403121561129b575f5ffd5b81356112768161127d565b5f5f5f606084860312156112b8575f5ffd5b833592506020840135915060408401356112d1816111e8565b809150509250925092565b5f5f5f606084860312156112ee575f5ffd5b83356112f9816111e8565b92506020840135611309816111e8565b929592945050506040919091013590565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561056d5761056d61131a565b8181038181111561056d5761056d61131a565b808202811582820484141761056d5761056d61131a565b5f8261138557634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f602082840312156113e8575f5ffd5b5051919050565b5f602082840312156113ff575f5ffd5b8151611276816111e8565b5f6020828403121561141a575f5ffd5b81518015158114611276575f5ffd5b5f60208284031215611439575f5ffd5b81516112768161127d565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220a4cdc1085ccd126138f1968f7dc27d1ad29065f45677807f4e06ffb990094fc064736f6c634300081b0033", + Bin: "0x60e060405234801561000f575f5ffd5b5060405161181738038061181783398101604081905261002e916101bc565b82828280826001600160a01b03811661005a576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660805261006f81610093565b60a052506001600160a01b03831660c0526100886100d9565b5050505050506102ed565b5f5f829050601f815111156100c6578260405163305a27a960e01b81526004016100bd9190610292565b60405180910390fd5b80516100d1826102c7565b179392505050565b5f54610100900460ff16156101405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bd565b5f5460ff9081161461018f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101a5575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101ce575f5ffd5b83516101d981610191565b60208501519093506101ea81610191565b60408501519092506001600160401b03811115610205575f5ffd5b8401601f81018613610215575f5ffd5b80516001600160401b0381111561022e5761022e6101a8565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025c5761025c6101a8565b604052818152828201602001881015610273575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e7575f198160200360031b1b821691505b50919050565b60805160a05160c0516114dd61033a5f395f81816101e801528181610417015281816107cf015261085101525f61053701525f81816102c5015281816109ec0152610b5401526114dd5ff3fe608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046111b1565b6103b5565b005b61019e6101ae3660046111d1565b6103cb565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b61021360335481565b6040519081526020016101da565b61021360645481565b6102136102383660046111fc565b610401565b610245610530565b6040516101da9190611226565b61021361026036600461125b565b610560565b61019e610573565b61028c61027b36600461128b565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb3660046111d1565b610587565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6102136102f53660046111d1565b6105d0565b61021361030836600461125b565b6105da565b61019e61031b3660046112a6565b6105e7565b6102456106c2565b61019e61033636600461125b565b6106e2565b61021361034936600461125b565b6107a8565b61021361035c3660046112dc565b61083a565b606454606554604080519283526020830191909152016101da565b61021361038a3660046111d1565b61093c565b61021361039d3660046111d1565b610973565b61019e6103b03660046111d1565b61097d565b6103bd6109ea565b6103c78282610a9b565b5050565b6103d3610b3f565b60015481811681146103f85760405163c61dca5d60e01b815260040160405180910390fd5b6103c782610be2565b5f5f61040c81610c1f565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610455576040516348da714f60e01b815260040160405180910390fd5b61045f8484610c55565b6033545f61046f6103e88361132e565b90505f6103e861047d610cac565b610487919061132e565b90505f6104948783611341565b9050806104a18489611354565b6104ab919061136b565b9550855f036104cd57604051630c392ed360e11b815260040160405180910390fd5b6104d7868561132e565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561050c57604051632f14e8a360e11b815260040160405180910390fd5b610525826103e8603354610520919061132e565b610d16565b505050505092915050565b606061055b7f0000000000000000000000000000000000000000000000000000000000000000610d62565b905090565b5f61056d6102bb836107a8565b92915050565b61057b610b3f565b6105855f19610be2565b565b5f5f6103e8603354610599919061132e565b90505f6103e86105a7610cac565b6105b1919061132e565b9050816105be8583611354565b6105c8919061136b565b949350505050565b5f61056d8261093c565b5f61056d61039d836107a8565b5f54610100900460ff161580801561060557505f54600160ff909116105b8061061e5750303b15801561061e57505f5460ff166001145b6106435760405162461bcd60e51b815260040161063a9061138a565b60405180910390fd5b5f805460ff191660011790558015610664575f805461ff0019166101001790555b61066e8484610a9b565b61067782610d9f565b80156106bc575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d815260200161145b604d9139905090565b5f54610100900460ff161580801561070057505f54600160ff909116105b806107195750303b15801561071957505f5460ff166001145b6107355760405162461bcd60e51b815260040161063a9061138a565b5f805460ff191660011790558015610756575f805461ff0019166101001790555b61075f82610d9f565b80156103c7575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa158015610816573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056d91906113d8565b5f600161084681610c1f565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461088f576040516348da714f60e01b815260040160405180910390fd5b61089a858585610eea565b603354808411156108be57604051630b469df360e41b815260040160405180910390fd5b5f6108cb6103e88361132e565b90505f6103e86108d9610cac565b6108e3919061132e565b9050816108f08783611354565b6108fa919061136b565b94506109068684611341565b6033556109266109168683611341565b6103e8603354610520919061132e565b610931888887610f1d565b505050509392505050565b5f5f6103e860335461094e919061132e565b90505f6103e861095c610cac565b610966919061132e565b9050806105be8386611354565b5f61056d82610587565b6109856109ea565b600154801982198116146109ac5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a46573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6a91906113ef565b6001600160a01b0316336001600160a01b0316146105855760405163794821ff60e01b815260040160405180910390fd5b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610b345760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc5919061140a565b61058557604051631d77d47760e21b815260040160405180910390fd5b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b610c34816001805460ff9092161b9081161490565b15610c525760405163840a48d560e01b815260040160405180910390fd5b50565b606454811115610c785760405163052b07b760e21b815260040160405180910390fd5b606554610c83610cac565b1115610ca25760405163d86bae6760e01b815260040160405180910390fd5b6103c78282610f31565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610cf2573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061055b91906113d8565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610d4a84670de0b6b3a7640000611354565b610d54919061136b565b60405190815260200161079c565b60605f610d6e83610f5f565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610e095760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161063a565b603280546001600160a01b0319166001600160a01b038316179055610e2d5f610be2565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e9f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec39190611429565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b03838116911614610f1857604051630312abdd60e61b815260040160405180910390fd5b505050565b610f186001600160a01b0383168483610f86565b6032546001600160a01b038381169116146103c757604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f81111561056d57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610f18928692915f91611015918516908490611094565b905080515f1480611035575080806020019051810190611035919061140a565b610f185760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161063a565b60606105c884845f85855f5f866001600160a01b031685876040516110b99190611444565b5f6040518083038185875af1925050503d805f81146110f3576040519150601f19603f3d011682016040523d82523d5f602084013e6110f8565b606091505b509150915061110987838387611114565b979650505050505050565b606083156111825782515f0361117b576001600160a01b0385163b61117b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161063a565b50816105c8565b6105c883838151156111975781518083602001fd5b8060405162461bcd60e51b815260040161063a9190611226565b5f5f604083850312156111c2575f5ffd5b50508035926020909101359150565b5f602082840312156111e1575f5ffd5b5035919050565b6001600160a01b0381168114610c52575f5ffd5b5f5f6040838503121561120d575f5ffd5b8235611218816111e8565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561126b575f5ffd5b8135611276816111e8565b9392505050565b60ff81168114610c52575f5ffd5b5f6020828403121561129b575f5ffd5b81356112768161127d565b5f5f5f606084860312156112b8575f5ffd5b833592506020840135915060408401356112d1816111e8565b809150509250925092565b5f5f5f606084860312156112ee575f5ffd5b83356112f9816111e8565b92506020840135611309816111e8565b929592945050506040919091013590565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561056d5761056d61131a565b8181038181111561056d5761056d61131a565b808202811582820484141761056d5761056d61131a565b5f8261138557634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f602082840312156113e8575f5ffd5b5051919050565b5f602082840312156113ff575f5ffd5b8151611276816111e8565b5f6020828403121561141a575f5ffd5b81518015158114611276575f5ffd5b5f60208284031215611439575f5ffd5b81516112768161127d565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220ebdbf480626389964b0be0ebec42dbcf1972b5f90f6ef5a0056663200b45b05264736f6c634300081b0033", } // StrategyBaseTVLLimitsABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/StrategyFactory/binding.go b/pkg/bindings/StrategyFactory/binding.go index bcb875667b..5067580fd9 100644 --- a/pkg/bindings/StrategyFactory/binding.go +++ b/pkg/bindings/StrategyFactory/binding.go @@ -32,7 +32,7 @@ var ( // StrategyFactoryMetaData contains all meta data concerning the StrategyFactory contract. var StrategyFactoryMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"blacklistTokens\",\"inputs\":[{\"name\":\"tokens\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deployNewStrategy\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"newStrategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deployedStrategies\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_strategyBeacon\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isBlacklisted\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"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\":\"removeStrategiesFromWhitelist\",\"inputs\":[{\"name\":\"strategiesToRemoveFromWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyBeacon\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"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\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"whitelistStrategies\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"StrategyBeaconModified\",\"inputs\":[{\"name\":\"previousBeacon\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIBeacon\"},{\"name\":\"newBeacon\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIBeacon\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategySetForToken\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenBlacklisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"}],\"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\":\"error\",\"name\":\"AlreadyBlacklisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BlacklistedToken\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]}]", - Bin: "0x60e060405234801561000f575f5ffd5b50604051611b26380380611b2683398101604081905261002e916101b9565b80826001600160a01b038116610057576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660805261006c8161008d565b60a052506001600160a01b03831660c0526100856100d3565b5050506102ea565b5f5f829050601f815111156100c0578260405163305a27a960e01b81526004016100b7919061028f565b60405180910390fd5b80516100cb826102c4565b179392505050565b603354610100900460ff161561013b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b7565b60335460ff9081161461018c576033805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101a2575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101cb575f5ffd5b83516101d68161018e565b60208501519093506101e78161018e565b60408501519092506001600160401b03811115610202575f5ffd5b8401601f81018613610212575f5ffd5b80516001600160401b0381111561022b5761022b6101a5565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610259576102596101a5565b604052818152828201602001881015610270575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e4575f198160200360031b1b821691505b50919050565b60805160a05160c0516117e861033e5f395f818161014d0152818161055a01528181610764015281816108010152610a9901525f6105ca01525f818161023501528181610ae50152610d9601526117e85ff3fe608060405234801561000f575f5ffd5b506004361061011c575f3560e01c8063715018a6116100a9578063f0062d9a1161006e578063f0062d9a1461028e578063f2fde38b146102a0578063fabc1cbc146102b3578063fe38b32d146102c6578063fe575a87146102d9575f5ffd5b8063715018a614610228578063886f1195146102305780638da5cb5b14610257578063b768ebc914610268578063c350a1b51461027b575f5ffd5b8063581dfd65116100ef578063581dfd65146101a1578063595c6a67146101c95780635ac86ab7146101d15780635c975abb146102045780636b9b622914610215575f5ffd5b8063136439dd1461012057806323103c411461013557806339b70e381461014857806354fd4d501461018c575b5f5ffd5b61013361012e366004610e7f565b6102fb565b005b610133610143366004610ede565b610335565b61016f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101946105c3565b6040516101839190610f4b565b61016f6101af366004610f78565b60016020525f90815260409020546001600160a01b031681565b6101336105f3565b6101f46101df366004610f93565b609954600160ff9092169190911b9081161490565b6040519015158152602001610183565b609954604051908152602001610183565b61016f610223366004610f78565b610607565b6101336107d1565b61016f7f000000000000000000000000000000000000000000000000000000000000000081565b6066546001600160a01b031661016f565b610133610276366004610ede565b6107e2565b610133610289366004610fb3565b610869565b5f5461016f906001600160a01b031681565b6101336102ae366004610f78565b610994565b6101336102c1366004610e7f565b610a0d565b6101336102d4366004610ede565b610a7a565b6101f46102e7366004610f78565b60026020525f908152604090205460ff1681565b610303610ad0565b60995481811681146103285760405163c61dca5d60e01b815260040160405180910390fd5b61033182610b73565b5050565b61033d610bb0565b5f8167ffffffffffffffff81111561035757610357610ff2565b604051908082528060200260200182016040528015610380578160200160208202803683370190505b5090505f805b838110156105395760025f8686848181106103a3576103a3611006565b90506020020160208101906103b89190610f78565b6001600160a01b0316815260208101919091526040015f205460ff16156103f25760405163f53de75f60e01b815260040160405180910390fd5b600160025f87878581811061040957610409611006565b905060200201602081019061041e9190610f78565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f75519c51f39873ec0e27dd3bbc09549e4865a113f505393fb9eab5898f6418b385858381811061047857610478611006565b905060200201602081019061048d9190610f78565b6040516001600160a01b03909116815260200160405180910390a15f60015f8787858181106104be576104be611006565b90506020020160208101906104d39190610f78565b6001600160a01b03908116825260208201929092526040015f20541690508015610530578084848151811061050a5761050a611006565b6001600160a01b03909216602092830291909101909101528261052c8161101a565b9350505b50600101610386565b5080825280156105bd576040516316bb16b760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b5d8b5b89061058f90859060040161103e565b5f604051808303815f87803b1580156105a6575f5ffd5b505af11580156105b8573d5f5f3e3d5ffd5b505050505b50505050565b60606105ee7f0000000000000000000000000000000000000000000000000000000000000000610c0a565b905090565b6105fb610ad0565b6106055f19610b73565b565b5f5f61061281610c47565b6001600160a01b0383165f9081526002602052604090205460ff161561064b5760405163091867bd60e11b815260040160405180910390fd5b6001600160a01b038381165f9081526001602052604090205416156106835760405163c45546f760e01b815260040160405180910390fd5b5f8054604080516001600160a01b0387811660248084019190915283518084039091018152604490920183526020820180516001600160e01b031663189acdbd60e31b17905291519190921691906106da90610e72565b6106e5929190611089565b604051809103905ff0801580156106fe573d5f5f3e3d5ffd5b50905061070b8482610c72565b6040805160018082528183019092525f916020808301908036833701905050905081815f8151811061073f5761073f611006565b6001600160a01b039283166020918202929092010152604051632ef047f960e11b81527f000000000000000000000000000000000000000000000000000000000000000090911690635de08ff29061079b90849060040161103e565b5f604051808303815f87803b1580156107b2575f5ffd5b505af11580156107c4573d5f5f3e3d5ffd5b5093979650505050505050565b6107d9610bb0565b6106055f610cdc565b6107ea610bb0565b604051632ef047f960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635de08ff29061083890859085906004016110b4565b5f604051808303815f87803b15801561084f575f5ffd5b505af1158015610861573d5f5f3e3d5ffd5b505050505050565b603354610100900460ff16158080156108895750603354600160ff909116105b806108a35750303b1580156108a3575060335460ff166001145b61090b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6033805460ff19166001179055801561092e576033805461ff0019166101001790555b61093784610cdc565b61094083610b73565b61094982610d2d565b80156105bd576033805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b61099c610bb0565b6001600160a01b038116610a015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610902565b610a0a81610cdc565b50565b610a15610d94565b60995480198219811614610a3c5760405163c61dca5d60e01b815260040160405180910390fd5b609982905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b610a82610bb0565b6040516316bb16b760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b5d8b5b89061083890859085906004016110b4565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610b32573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b569190611100565b61060557604051631d77d47760e21b815260040160405180910390fd5b609981905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6066546001600160a01b031633146106055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610902565b60605f610c1683610e45565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b609954600160ff83161b90811603610a0a5760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038281165f8181526001602090815260409182902080546001600160a01b031916948616948517905581519283528201929092527f6852a55230ef089d785bce7ffbf757985de34026df90a87d7b4a6e56f95d251f910160405180910390a15050565b606680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54604080516001600160a01b03928316815291831660208301527fe21755962a7d7e100b59b9c3e4d4b54085b146313719955efb6a7a25c5c7feee910160405180910390a15f80546001600160a01b0319166001600160a01b0392909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e14919061111f565b6001600160a01b0316336001600160a01b0316146106055760405163794821ff60e01b815260040160405180910390fd5b5f60ff8216601f811115610e6c57604051632cd44ac360e21b815260040160405180910390fd5b92915050565b6106788061113b83390190565b5f60208284031215610e8f575f5ffd5b5035919050565b5f5f83601f840112610ea6575f5ffd5b50813567ffffffffffffffff811115610ebd575f5ffd5b6020830191508360208260051b8501011115610ed7575f5ffd5b9250929050565b5f5f60208385031215610eef575f5ffd5b823567ffffffffffffffff811115610f05575f5ffd5b610f1185828601610e96565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610f5d6020830184610f1d565b9392505050565b6001600160a01b0381168114610a0a575f5ffd5b5f60208284031215610f88575f5ffd5b8135610f5d81610f64565b5f60208284031215610fa3575f5ffd5b813560ff81168114610f5d575f5ffd5b5f5f5f60608486031215610fc5575f5ffd5b8335610fd081610f64565b9250602084013591506040840135610fe781610f64565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f6001820161103757634e487b7160e01b5f52601160045260245ffd5b5060010190565b602080825282518282018190525f918401906040840190835b8181101561107e5783516001600160a01b0316835260209384019390920191600101611057565b509095945050505050565b6001600160a01b03831681526040602082018190525f906110ac90830184610f1d565b949350505050565b602080825281018290525f8360408301825b858110156110f65782356110d981610f64565b6001600160a01b03168252602092830192909101906001016110c6565b5095945050505050565b5f60208284031215611110575f5ffd5b81518015158114610f5d575f5ffd5b5f6020828403121561112f575f5ffd5b8151610f5d81610f6456fe6080604052604051610678380380610678833981016040819052610022916103ed565b61002d82825f610034565b5050610513565b61003d836100f1565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a25f8251118061007c5750805b156100ec576100ea836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e491906104af565b83610273565b505b505050565b6001600160a01b0381163b61015b5760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101cd816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561019a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101be91906104af565b6001600160a01b03163b151590565b6102325760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610152565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029883836040518060600160405280602781526020016106516027913961029f565b9392505050565b60605f5f856001600160a01b0316856040516102bb91906104c8565b5f60405180830381855af49150503d805f81146102f3576040519150601f19603f3d011682016040523d82523d5f602084013e6102f8565b606091505b50909250905061030a86838387610314565b9695505050505050565b606083156103825782515f0361037b576001600160a01b0385163b61037b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610152565b508161038c565b61038c8383610394565b949350505050565b8151156103a45781518083602001fd5b8060405162461bcd60e51b815260040161015291906104de565b80516001600160a01b03811681146103d4575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156103fe575f5ffd5b610407836103be565b60208401519092506001600160401b03811115610422575f5ffd5b8301601f81018513610432575f5ffd5b80516001600160401b0381111561044b5761044b6103d9565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610479576104796103d9565b604052818152828201602001871015610490575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f602082840312156104bf575f5ffd5b610298826103be565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610131806105205f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b60b3565b565b5f60527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015608c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019060ae919060d0565b905090565b365f5f375f5f365f845af43d5f5f3e80801560cc573d5ff35b3d5ffd5b5f6020828403121560df575f5ffd5b81516001600160a01b038116811460f4575f5ffd5b939250505056fea2646970667358221220dfae9c271955fd7893d6ff55c88376018b243516190a05d51300cbf3831caa5f64736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d52ea026d48a2fc9b42c41b45406974e462b861b235e0e217d72b1c42dbd646764736f6c634300081b0033", + Bin: "0x60e060405234801561000f575f5ffd5b50604051611b26380380611b2683398101604081905261002e916101b9565b80826001600160a01b038116610057576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660805261006c8161008d565b60a052506001600160a01b03831660c0526100856100d3565b5050506102ea565b5f5f829050601f815111156100c0578260405163305a27a960e01b81526004016100b7919061028f565b60405180910390fd5b80516100cb826102c4565b179392505050565b603354610100900460ff161561013b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b7565b60335460ff9081161461018c576033805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101a2575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101cb575f5ffd5b83516101d68161018e565b60208501519093506101e78161018e565b60408501519092506001600160401b03811115610202575f5ffd5b8401601f81018613610212575f5ffd5b80516001600160401b0381111561022b5761022b6101a5565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610259576102596101a5565b604052818152828201602001881015610270575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e4575f198160200360031b1b821691505b50919050565b60805160a05160c0516117e861033e5f395f818161014d0152818161055a01528181610764015281816108010152610a9901525f6105ca01525f818161023501528181610ae50152610d9601526117e85ff3fe608060405234801561000f575f5ffd5b506004361061011c575f3560e01c8063715018a6116100a9578063f0062d9a1161006e578063f0062d9a1461028e578063f2fde38b146102a0578063fabc1cbc146102b3578063fe38b32d146102c6578063fe575a87146102d9575f5ffd5b8063715018a614610228578063886f1195146102305780638da5cb5b14610257578063b768ebc914610268578063c350a1b51461027b575f5ffd5b8063581dfd65116100ef578063581dfd65146101a1578063595c6a67146101c95780635ac86ab7146101d15780635c975abb146102045780636b9b622914610215575f5ffd5b8063136439dd1461012057806323103c411461013557806339b70e381461014857806354fd4d501461018c575b5f5ffd5b61013361012e366004610e7f565b6102fb565b005b610133610143366004610ede565b610335565b61016f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101946105c3565b6040516101839190610f4b565b61016f6101af366004610f78565b60016020525f90815260409020546001600160a01b031681565b6101336105f3565b6101f46101df366004610f93565b609954600160ff9092169190911b9081161490565b6040519015158152602001610183565b609954604051908152602001610183565b61016f610223366004610f78565b610607565b6101336107d1565b61016f7f000000000000000000000000000000000000000000000000000000000000000081565b6066546001600160a01b031661016f565b610133610276366004610ede565b6107e2565b610133610289366004610fb3565b610869565b5f5461016f906001600160a01b031681565b6101336102ae366004610f78565b610994565b6101336102c1366004610e7f565b610a0d565b6101336102d4366004610ede565b610a7a565b6101f46102e7366004610f78565b60026020525f908152604090205460ff1681565b610303610ad0565b60995481811681146103285760405163c61dca5d60e01b815260040160405180910390fd5b61033182610b73565b5050565b61033d610bb0565b5f8167ffffffffffffffff81111561035757610357610ff2565b604051908082528060200260200182016040528015610380578160200160208202803683370190505b5090505f805b838110156105395760025f8686848181106103a3576103a3611006565b90506020020160208101906103b89190610f78565b6001600160a01b0316815260208101919091526040015f205460ff16156103f25760405163f53de75f60e01b815260040160405180910390fd5b600160025f87878581811061040957610409611006565b905060200201602081019061041e9190610f78565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f75519c51f39873ec0e27dd3bbc09549e4865a113f505393fb9eab5898f6418b385858381811061047857610478611006565b905060200201602081019061048d9190610f78565b6040516001600160a01b03909116815260200160405180910390a15f60015f8787858181106104be576104be611006565b90506020020160208101906104d39190610f78565b6001600160a01b03908116825260208201929092526040015f20541690508015610530578084848151811061050a5761050a611006565b6001600160a01b03909216602092830291909101909101528261052c8161101a565b9350505b50600101610386565b5080825280156105bd576040516316bb16b760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b5d8b5b89061058f90859060040161103e565b5f604051808303815f87803b1580156105a6575f5ffd5b505af11580156105b8573d5f5f3e3d5ffd5b505050505b50505050565b60606105ee7f0000000000000000000000000000000000000000000000000000000000000000610c0a565b905090565b6105fb610ad0565b6106055f19610b73565b565b5f5f61061281610c47565b6001600160a01b0383165f9081526002602052604090205460ff161561064b5760405163091867bd60e11b815260040160405180910390fd5b6001600160a01b038381165f9081526001602052604090205416156106835760405163c45546f760e01b815260040160405180910390fd5b5f8054604080516001600160a01b0387811660248084019190915283518084039091018152604490920183526020820180516001600160e01b031663189acdbd60e31b17905291519190921691906106da90610e72565b6106e5929190611089565b604051809103905ff0801580156106fe573d5f5f3e3d5ffd5b50905061070b8482610c72565b6040805160018082528183019092525f916020808301908036833701905050905081815f8151811061073f5761073f611006565b6001600160a01b039283166020918202929092010152604051632ef047f960e11b81527f000000000000000000000000000000000000000000000000000000000000000090911690635de08ff29061079b90849060040161103e565b5f604051808303815f87803b1580156107b2575f5ffd5b505af11580156107c4573d5f5f3e3d5ffd5b5093979650505050505050565b6107d9610bb0565b6106055f610cdc565b6107ea610bb0565b604051632ef047f960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635de08ff29061083890859085906004016110b4565b5f604051808303815f87803b15801561084f575f5ffd5b505af1158015610861573d5f5f3e3d5ffd5b505050505050565b603354610100900460ff16158080156108895750603354600160ff909116105b806108a35750303b1580156108a3575060335460ff166001145b61090b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6033805460ff19166001179055801561092e576033805461ff0019166101001790555b61093784610cdc565b61094083610b73565b61094982610d2d565b80156105bd576033805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b61099c610bb0565b6001600160a01b038116610a015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610902565b610a0a81610cdc565b50565b610a15610d94565b60995480198219811614610a3c5760405163c61dca5d60e01b815260040160405180910390fd5b609982905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b610a82610bb0565b6040516316bb16b760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b5d8b5b89061083890859085906004016110b4565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610b32573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b569190611100565b61060557604051631d77d47760e21b815260040160405180910390fd5b609981905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6066546001600160a01b031633146106055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610902565b60605f610c1683610e45565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b609954600160ff83161b90811603610a0a5760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038281165f8181526001602090815260409182902080546001600160a01b031916948616948517905581519283528201929092527f6852a55230ef089d785bce7ffbf757985de34026df90a87d7b4a6e56f95d251f910160405180910390a15050565b606680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54604080516001600160a01b03928316815291831660208301527fe21755962a7d7e100b59b9c3e4d4b54085b146313719955efb6a7a25c5c7feee910160405180910390a15f80546001600160a01b0319166001600160a01b0392909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e14919061111f565b6001600160a01b0316336001600160a01b0316146106055760405163794821ff60e01b815260040160405180910390fd5b5f60ff8216601f811115610e6c57604051632cd44ac360e21b815260040160405180910390fd5b92915050565b6106788061113b83390190565b5f60208284031215610e8f575f5ffd5b5035919050565b5f5f83601f840112610ea6575f5ffd5b50813567ffffffffffffffff811115610ebd575f5ffd5b6020830191508360208260051b8501011115610ed7575f5ffd5b9250929050565b5f5f60208385031215610eef575f5ffd5b823567ffffffffffffffff811115610f05575f5ffd5b610f1185828601610e96565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610f5d6020830184610f1d565b9392505050565b6001600160a01b0381168114610a0a575f5ffd5b5f60208284031215610f88575f5ffd5b8135610f5d81610f64565b5f60208284031215610fa3575f5ffd5b813560ff81168114610f5d575f5ffd5b5f5f5f60608486031215610fc5575f5ffd5b8335610fd081610f64565b9250602084013591506040840135610fe781610f64565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f6001820161103757634e487b7160e01b5f52601160045260245ffd5b5060010190565b602080825282518282018190525f918401906040840190835b8181101561107e5783516001600160a01b0316835260209384019390920191600101611057565b509095945050505050565b6001600160a01b03831681526040602082018190525f906110ac90830184610f1d565b949350505050565b602080825281018290525f8360408301825b858110156110f65782356110d981610f64565b6001600160a01b03168252602092830192909101906001016110c6565b5095945050505050565b5f60208284031215611110575f5ffd5b81518015158114610f5d575f5ffd5b5f6020828403121561112f575f5ffd5b8151610f5d81610f6456fe6080604052604051610678380380610678833981016040819052610022916103ed565b61002d82825f610034565b5050610513565b61003d836100f1565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a25f8251118061007c5750805b156100ec576100ea836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e491906104af565b83610273565b505b505050565b6001600160a01b0381163b61015b5760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101cd816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561019a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101be91906104af565b6001600160a01b03163b151590565b6102325760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610152565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029883836040518060600160405280602781526020016106516027913961029f565b9392505050565b60605f5f856001600160a01b0316856040516102bb91906104c8565b5f60405180830381855af49150503d805f81146102f3576040519150601f19603f3d011682016040523d82523d5f602084013e6102f8565b606091505b50909250905061030a86838387610314565b9695505050505050565b606083156103825782515f0361037b576001600160a01b0385163b61037b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610152565b508161038c565b61038c8383610394565b949350505050565b8151156103a45781518083602001fd5b8060405162461bcd60e51b815260040161015291906104de565b80516001600160a01b03811681146103d4575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156103fe575f5ffd5b610407836103be565b60208401519092506001600160401b03811115610422575f5ffd5b8301601f81018513610432575f5ffd5b80516001600160401b0381111561044b5761044b6103d9565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610479576104796103d9565b604052818152828201602001871015610490575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f602082840312156104bf575f5ffd5b610298826103be565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610131806105205f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b60b3565b565b5f60527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015608c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019060ae919060d0565b905090565b365f5f375f5f365f845af43d5f5f3e80801560cc573d5ff35b3d5ffd5b5f6020828403121560df575f5ffd5b81516001600160a01b038116811460f4575f5ffd5b939250505056fea2646970667358221220f37d2ffd80ec7d14cc9a0f17394e9d97446c1f630de382043b1ed4ccacf6a7d464736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200b5032f9c4cefaf81b1206924b150028682cb54597ba648f52e1a553396df81a64736f6c634300081b0033", } // StrategyFactoryABI is the input ABI used to generate the binding from. diff --git a/pkg/bindings/StrategyManager/binding.go b/pkg/bindings/StrategyManager/binding.go index 6b5da0f17a..4021a548b6 100644 --- a/pkg/bindings/StrategyManager/binding.go +++ b/pkg/bindings/StrategyManager/binding.go @@ -38,7 +38,7 @@ type OperatorSet struct { // StrategyManagerMetaData contains all meta data concerning the StrategyManager contract. var StrategyManagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_slashEscrowFactory\",\"type\":\"address\",\"internalType\":\"contractISlashEscrowFactory\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_version\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_BURN_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEPOSIT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addStrategiesToDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"burnShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"calculateStrategyDepositDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"clearBurnOrRedistributableShares\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"clearBurnOrRedistributableSharesByStrategy\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"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\":\"depositShares\",\"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\":\"depositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBurnOrRedistributableCount\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBurnOrRedistributableShares\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBurnOrRedistributableShares\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBurnableShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"getStakerStrategyList\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategiesWithBurnableShares\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseBurnOrRedistributableShares\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"sharesToBurn\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"signer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"nonce\",\"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\":\"removeDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"depositSharesToRemove\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"setStrategyWhitelister\",\"inputs\":[{\"name\":\"newStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slashEscrowFactory\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISlashEscrowFactory\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyList\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"strategies\",\"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\":\"strategyIsWhitelistedForDeposit\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"whitelisted\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyWhitelister\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"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\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawSharesAsTokens\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BurnOrRedistributableSharesDecreased\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BurnOrRedistributableSharesIncreased\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"slashId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BurnableSharesDecreased\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"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\":\"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\":\"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\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidShortString\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxStrategiesExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyWhitelister\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesAmountTooHigh\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesAmountZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StakerAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyAlreadyInSlash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotFound\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StringTooLong\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"}]}]", - Bin: "0x610100604052348015610010575f5ffd5b506040516137e33803806137e383398101604081905261002f916101bc565b80808585856001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805291821660a0521660c05261007c81610093565b60e0525061008a90506100d9565b50505050610301565b5f5f829050601f815111156100c6578260405163305a27a960e01b81526004016100bd91906102a6565b60405180910390fd5b80516100d1826102db565b179392505050565b5f54610100900460ff16156101405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bd565b5f5460ff9081161461018f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101a5575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f608085870312156101cf575f5ffd5b84516101da81610191565b60208601519094506101eb81610191565b60408601519093506101fc81610191565b60608601519092506001600160401b03811115610217575f5ffd5b8501601f81018713610227575f5ffd5b80516001600160401b03811115610240576102406101a8565b604051601f8201601f19908116603f011681016001600160401b038111828210171561026e5761026e6101a8565b604052818152828201602001891015610285575f5ffd5b8160208401602083015e5f6020838301015280935050505092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102fb575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161346961037a5f395f81816110fa015261222701525f81816103ce015281816108310152610e8401525f81816105bc015281816109d201528181610dcb0152818161108c015281816112a70152611e9b01525f81816104aa01528181611a90015261229601526134695ff3fe608060405234801561000f575f5ffd5b5060043610610255575f3560e01c80637ecebe0011610140578063c6656702116100bf578063f2fde38b11610084578063f2fde38b146105f1578063f3b4a00014610604578063f698da251461060e578063fabc1cbc14610616578063fd98042314610629578063fe243a171461063c575f5ffd5b8063c665670214610571578063cbc2bd6214610584578063de44acb614610597578063df5cf723146105b7578063e7a050aa146105de575f5ffd5b80638da5cb5b116101055780638da5cb5b1461051457806394f649dd14610525578063967fc0d2146105385780639ac01d611461054b578063b5d8b5b81461055e575f5ffd5b80637ecebe0014610473578063829fca7314610492578063886f1195146104a557806388c10299146104cc5780638b8aac3c146104ec575f5ffd5b806350ff7225116101d75780635c975abb1161019c5780635c975abb146104085780635de08ff214610410578063663c1de414610423578063715018a614610445578063724af4231461044d57806376fb162b14610460575f5ffd5b806350ff72251461035157806354fd4d5014610379578063595c6a671461038e5780635ac86ab7146103965780635b84087f146103c9575f5ffd5b806332e89ace1161021d57806332e89ace146102db57806336a8c500146102ee5780633fb99ca51461030457806348825e94146103175780634b6d5d6e1461033e575f5ffd5b8063136439dd146102595780631794bb3c1461026e5780632d44def6146102815780632eae418c146102a757806331f8fb4c146102ba575b5f5ffd5b61026c610267366004612c76565b610666565b005b61026c61027c366004612ca1565b6106a0565b61029461028f366004612cf5565b6107c6565b6040519081526020015b60405180910390f35b61026c6102b5366004612d33565b6109c7565b6102cd6102c8366004612d81565b610a93565b60405161029e929190612e1d565b6102946102e9366004612e8f565b610c1e565b6102f6610ca3565b60405161029e929190612f6b565b61026c610312366004612fc1565b610dc0565b6102947f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61026c61034c366004613005565b610f32565b61036461035f366004612ca1565b61107f565b6040805192835260208301919091520161029e565b6103816110f3565b60405161029e919061304e565b61026c611123565b6103b96103a4366004613060565b609854600160ff9092169190911b9081161490565b604051901515815260200161029e565b6103f07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161029e565b609854610294565b61026c61041e366004613080565b611137565b6103b9610431366004613005565b60d16020525f908152604090205460ff1681565b61026c61128a565b61029461045b366004612ca1565b61129b565b61029461046e366004612cf5565b611304565b610294610481366004613005565b60ca6020525f908152604090205481565b6102946104a0366004612d81565b611349565b6103f07f000000000000000000000000000000000000000000000000000000000000000081565b6104df6104da366004612d81565b61138c565b60405161029e91906130f1565b6102946104fa366004613005565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103f0565b6102cd610533366004613005565b61147d565b60cb546103f0906001600160a01b031681565b610294610559366004613103565b6115f5565b61026c61056c366004613080565b611686565b61026c61057f366004613005565b6117cd565b6103f0610592366004613164565b6117f0565b6105aa6105a5366004613005565b611824565b60405161029e919061318e565b6103f07f000000000000000000000000000000000000000000000000000000000000000081565b6102946105ec366004612ca1565b611897565b61026c6105ff366004613005565b6118ca565b6103f0620e16e481565b610294611940565b61026c610624366004612c76565b6119f9565b610294610637366004613005565b611a66565b61029461064a3660046131a0565b60cd60209081525f928352604080842090915290825290205481565b61066e611a7b565b60985481811681146106935760405163c61dca5d60e01b815260040160405180910390fd5b61069c82611b1e565b5050565b5f54610100900460ff16158080156106be57505f54600160ff909116105b806106d75750303b1580156106d757505f5460ff166001145b61073f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610760575f805461ff0019166101001790555b61076982611b1e565b61077284611b5b565b61077b83611bac565b80156107c0575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b5f8060d7816107e26107dd368990038901896131ef565b611c15565b815260208082019290925260409081015f9081208782529092528120915061080a8285611c78565b915061081890508285611c9c565b505f81156109bb57846001600160a01b031663d9caed127f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633453b2348a8a6040518363ffffffff1660e01b815260040161087d92919061327d565b602060405180830381865afa158015610898573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108bc9190613298565b876001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108f8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091c9190613298565b856040518463ffffffff1660e01b815260040161093b939291906132b3565b6020604051808303815f875af1158015610957573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097b91906132d7565b90507fe6413aa0c789e437b0a06bf64b20926584f066c79a2d8b80a759c85472f7b0af878787856040516109b294939291906132ee565b60405180910390a15b925050505b9392505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a105760405163f739589b60e01b815260040160405180910390fd5b610a18611cb0565b604051636ce5768960e11b81526001600160a01b0384169063d9caed1290610a48908790869086906004016132b3565b6020604051808303815f875af1158015610a64573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a8891906132d7565b506107c06001606555565b6060805f60d781610aac6107dd368990038901896131ef565b81526020019081526020015f205f8581526020019081526020015f2090505f610ad482611d09565b90505f815167ffffffffffffffff811115610af157610af1612e4a565b604051908082528060200260200182016040528015610b1a578160200160208202803683370190505b5090505f825167ffffffffffffffff811115610b3857610b38612e4a565b604051908082528060200260200182016040528015610b61578160200160208202803683370190505b5090505f5b8351811015610c0e57838181518110610b8157610b81613320565b6020026020010151838281518110610b9b57610b9b613320565b60200260200101906001600160a01b031690816001600160a01b031681525050610be7848281518110610bd057610bd0613320565b602002602001015186611c7890919063ffffffff16565b9050828281518110610bfb57610bfb613320565b6020908102919091010152600101610b66565b50909450925050505b9250929050565b5f5f610c2981611d15565b610c31611cb0565b6001600160a01b0385165f90815260ca6020526040902054610c6286610c5b818c8c8c878c6115f5565b8688611d40565b6001600160a01b0386165f90815260ca60205260409020600182019055610c8b868a8a8a611d92565b925050610c986001606555565b509695505050505050565b6060805f610cb160d4611eff565b90505f8167ffffffffffffffff811115610ccd57610ccd612e4a565b604051908082528060200260200182016040528015610cf6578160200160208202803683370190505b5090505f8267ffffffffffffffff811115610d1357610d13612e4a565b604051908082528060200260200182016040528015610d3c578160200160208202803683370190505b5090505f5b83811015610db5575f5f610d5660d484611f09565b9150915081858481518110610d6d57610d6d613320565b60200260200101906001600160a01b031690816001600160a01b03168152505080848481518110610da057610da0613320565b60209081029190910101525050600101610d41565b509094909350915050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e095760405163f739589b60e01b815260040160405180910390fd5b610e11611cb0565b5f60d781610e276107dd368990038901896131ef565b815260208082019290925260409081015f90812087825290925290209050610e50818484611f17565b610e6d5760405163ca354fa360e01b815260040160405180910390fd5b604051637a96761160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637a96761190610ebd90889088908890600401613334565b5f604051808303815f87803b158015610ed4575f5ffd5b505af1158015610ee6573d5f5f3e3d5ffd5b505050507f5f5209798bbac45a16d2dc3bc67319fab26ee00153916d6f07b69f8a134a1e8b85858585604051610f1f94939291906132ee565b60405180910390a1506107c06001606555565b610f3a611cb0565b5f610f4660d483611c78565b915050610f5460d483611c9c565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a1801561107157816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fec573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110109190613298565b846040518463ffffffff1660e01b815260040161102f939291906132b3565b6020604051808303815f875af115801561104b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106f91906132d7565b505b5061107c6001606555565b50565b5f80336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110ca5760405163f739589b60e01b815260040160405180910390fd5b6110d2611cb0565b6110dd858585611f2c565b915091506110eb6001606555565b935093915050565b606061111e7f0000000000000000000000000000000000000000000000000000000000000000612094565b905090565b61112b611a7b565b6111355f19611b1e565b565b60cb546001600160a01b03163314611162576040516320ba3ff960e21b815260040160405180910390fd5b61116a611cb0565b805f5b8181101561127e5760d15f85858481811061118a5761118a613320565b905060200201602081019061119f9190613005565b6001600160a01b0316815260208101919091526040015f205460ff1661127657600160d15f8686858181106111d6576111d6613320565b90506020020160208101906111eb9190613005565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe84848381811061124557611245613320565b905060200201602081019061125a9190613005565b6040516001600160a01b03909116815260200160405180910390a15b60010161116d565b505061069c6001606555565b6112926120d1565b6111355f611b5b565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112e55760405163f739589b60e01b815260040160405180910390fd5b6112ed611cb0565b6112f884848461212b565b90506109c06001606555565b5f806109bb8360d78361131f6107dd368b90038b018b6131ef565b81526020019081526020015f205f8781526020019081526020015f20611c7890919063ffffffff16565b5f61138360d7826113626107dd368890038801886131ef565b81526020019081526020015f205f8481526020019081526020015f20611eff565b90505b92915050565b6060611396611cb0565b5f6113d060d7826113af6107dd368990038901896131ef565b81526020019081526020015f205f8581526020019081526020015f20611d09565b80519091505f8167ffffffffffffffff8111156113ef576113ef612e4a565b604051908082528060200260200182016040528015611418578160200160208202803683370190505b5090505f5b8281101561146e57611449878786848151811061143c5761143c613320565b60200260200101516107c6565b82828151811061145b5761145b613320565b602090810291909101015260010161141d565b50925050506113866001606555565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff8111156114b4576114b4612e4a565b6040519080825280602002602001820160405280156114dd578160200160208202803683370190505b5090505f5b8281101561156b576001600160a01b0386165f90815260cd6020908152604080832060ce909252822080549192918490811061152057611520613320565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054825183908390811061155857611558613320565b60209081029190910101526001016114e2565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f2081818054806020026020016040519081016040528092919081815260200182805480156115e357602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116115c5575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f9061167b9061010001604051602081830303815290604052805190602001206121d9565b979650505050505050565b60cb546001600160a01b031633146116b1576040516320ba3ff960e21b815260040160405180910390fd5b6116b9611cb0565b805f5b8181101561127e5760d15f8585848181106116d9576116d9613320565b90506020020160208101906116ee9190613005565b6001600160a01b0316815260208101919091526040015f205460ff16156117c5575f60d15f86868581811061172557611725613320565b905060200201602081019061173a9190613005565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061179457611794613320565b90506020020160208101906117a99190613005565b6040516001600160a01b03909116815260200160405180910390a15b6001016116bc565b6117d56120d1565b6117dd611cb0565b6117e681611bac565b61107c6001606555565b60ce602052815f5260405f208181548110611809575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561188b57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161186d575b50505050509050919050565b5f5f6118a281611d15565b6118aa611cb0565b6118b633868686611d92565b91506118c26001606555565b509392505050565b6118d26120d1565b6001600160a01b0381166119375760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610736565b61107c81611b5b565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea6119ad61221f565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b611a01612294565b60985480198219811614611a285760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f611a7360d484611c78565b949350505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611add573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b019190613361565b61113557604051631d77d47760e21b815260040160405180910390fd5b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff16604051602001611c6092919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261138690613380565b5f808080611c8f866001600160a01b038716612345565b9097909650945050505050565b5f611383836001600160a01b03841661237d565b600260655403611d025760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610736565b6002606555565b60605f6109c083612399565b609854600160ff83161b9081160361107c5760405163840a48d560e01b815260040160405180910390fd5b42811015611d6157604051630819bdcd60e01b815260040160405180910390fd5b611d756001600160a01b03851684846123a4565b6107c057604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff16611dcc57604051632efd965160e11b815260040160405180910390fd5b611de16001600160a01b0385163387866123f8565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af1158015611e2d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e5191906132d7565b91505f5f611e60888886611f2c565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015611ede575f5ffd5b505af1158015611ef0573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61138682612450565b5f808080611c8f868661245a565b5f611a73846001600160a01b03851684612483565b5f806001600160a01b038516611f55576040516316f2ccc960e01b815260040160405180910390fd5b825f03611f75576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052908120549081900361201b576001600160a01b0386165f90815260ce602090815260409091205410611fdd576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b61202584826133b7565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290612081908890889088906132b3565b60405180910390a1959294509192505050565b60605f6120a08361249f565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146111355760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610736565b5f815f0361214c576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038085165f90815260cd60209081526040808320938716835292905220548083111561219257604051634b18b19360e01b815260040160405180910390fd5b61219c83826133ca565b6001600160a01b038087165f90815260cd602090815260408083209389168352929052908120829055909150819003611a7357611a7385856124c6565b5f6121e2611940565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f61224b7f0000000000000000000000000000000000000000000000000000000000000000612094565b9050805f8151811061225f5761225f613320565b016020908101516040516001600160f81b03199091169181019190915260210160405160208183030381529060405291505090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123149190613298565b6001600160a01b0316336001600160a01b0316146111355760405163794821ff60e01b815260040160405180910390fd5b5f818152600283016020526040812054819080612372576123668585612644565b92505f9150610c179050565b600192509050610c17565b5f8181526002830160205260408120819055611383838361264f565b60606113868261265a565b5f5f5f6123b18585612666565b90925090505f8160048111156123c9576123c96133dd565b1480156123e75750856001600160a01b0316826001600160a01b0316145b806109bb57506109bb8686866126a5565b6107c0846323b872dd60e01b858585604051602401612419939291906132b3565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261278c565b5f61138682612864565b5f8080612467858561286d565b5f81815260029690960160205260409095205494959350505050565b5f8281526002840160205260408120829055611a738484612878565b5f60ff8216601f81111561138657604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b818110156125d8576001600160a01b038481165f90815260ce602052604090208054918516918390811061251657612516613320565b5f918252602090912001546001600160a01b0316036125d0576001600160a01b0384165f90815260ce602052604090208054612554906001906133ca565b8154811061256457612564613320565b5f9182526020808320909101546001600160a01b03878116845260ce90925260409092208054919092169190839081106125a0576125a0613320565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506125d8565b6001016124e0565b8181036125f857604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce6020526040902080548061261e5761261e6133f1565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f6113838383612883565b5f611383838361289a565b60605f6109c08361297d565b5f5f825160410361269a576020830151604084015160608501515f1a61268e878285856129d5565b94509450505050610c17565b505f90506002610c17565b5f5f5f856001600160a01b0316631626ba7e60e01b86866040516024016126cd929190613405565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161270b919061341d565b5f60405180830381855afa9150503d805f8114612743576040519150601f19603f3d011682016040523d82523d5f602084013e612748565b606091505b509150915081801561275c57506020815110155b80156109bb57508051630b135d3f60e11b9061278190830160209081019084016132d7565b149695505050505050565b5f6127e0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612a929092919063ffffffff16565b905080515f14806128005750808060200190518101906128009190613361565b61285f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610736565b505050565b5f611386825490565b5f6113838383612aa0565b5f6113838383612ac6565b5f8181526001830160205260408120541515611383565b5f8181526001830160205260408120548015612974575f6128bc6001836133ca565b85549091505f906128cf906001906133ca565b905081811461292e575f865f0182815481106128ed576128ed613320565b905f5260205f200154905080875f01848154811061290d5761290d613320565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061293f5761293f6133f1565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611386565b5f915050611386565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561188b57602002820191905f5260205f20905b8154815260200190600101908083116129b65750505050509050919050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612a0a57505f90506003612a89565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612a5b573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116612a83575f60019250925050612a89565b91505f90505b94509492505050565b6060611a7384845f85612b12565b5f825f018281548110612ab557612ab5613320565b905f5260205f200154905092915050565b5f818152600183016020526040812054612b0b57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611386565b505f611386565b606082471015612b735760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610736565b5f5f866001600160a01b03168587604051612b8e919061341d565b5f6040518083038185875af1925050503d805f8114612bc8576040519150601f19603f3d011682016040523d82523d5f602084013e612bcd565b606091505b509150915061167b8783838760608315612c475782515f03612c40576001600160a01b0385163b612c405760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610736565b5081611a73565b611a738383815115612c5c5781518083602001fd5b8060405162461bcd60e51b8152600401610736919061304e565b5f60208284031215612c86575f5ffd5b5035919050565b6001600160a01b038116811461107c575f5ffd5b5f5f5f60608486031215612cb3575f5ffd5b8335612cbe81612c8d565b92506020840135612cce81612c8d565b929592945050506040919091013590565b5f60408284031215612cef575f5ffd5b50919050565b5f5f5f60808486031215612d07575f5ffd5b612d118585612cdf565b9250604084013591506060840135612d2881612c8d565b809150509250925092565b5f5f5f5f60808587031215612d46575f5ffd5b8435612d5181612c8d565b93506020850135612d6181612c8d565b92506040850135612d7181612c8d565b9396929550929360600135925050565b5f5f60608385031215612d92575f5ffd5b612d9c8484612cdf565b946040939093013593505050565b5f8151808452602084019350602083015f5b82811015612de35781516001600160a01b0316865260209586019590910190600101612dbc565b5093949350505050565b5f8151808452602084019350602083015f5b82811015612de3578151865260209586019590910190600101612dff565b604081525f612e2f6040830185612daa565b8281036020840152612e418185612ded565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612e8757612e87612e4a565b604052919050565b5f5f5f5f5f5f60c08789031215612ea4575f5ffd5b8635612eaf81612c8d565b95506020870135612ebf81612c8d565b9450604087013593506060870135612ed681612c8d565b92506080870135915060a087013567ffffffffffffffff811115612ef8575f5ffd5b8701601f81018913612f08575f5ffd5b803567ffffffffffffffff811115612f2257612f22612e4a565b612f35601f8201601f1916602001612e5e565b8181528a6020838501011115612f49575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b604080825283519082018190525f9060208501906060840190835b81811015612fad5783516001600160a01b0316835260209384019390920191600101612f86565b505083810360208501526109bb8186612ded565b5f5f5f5f60a08587031215612fd4575f5ffd5b612fde8686612cdf565b9350604085013592506060850135612ff581612c8d565b9396929550929360800135925050565b5f60208284031215613015575f5ffd5b81356109c081612c8d565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6113836020830184613020565b5f60208284031215613070575f5ffd5b813560ff811681146109c0575f5ffd5b5f5f60208385031215613091575f5ffd5b823567ffffffffffffffff8111156130a7575f5ffd5b8301601f810185136130b7575f5ffd5b803567ffffffffffffffff8111156130cd575f5ffd5b8560208260051b84010111156130e1575f5ffd5b6020919091019590945092505050565b602081525f6113836020830184612ded565b5f5f5f5f5f5f60c08789031215613118575f5ffd5b863561312381612c8d565b9550602087013561313381612c8d565b9450604087013561314381612c8d565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f60408385031215613175575f5ffd5b823561318081612c8d565b946020939093013593505050565b602081525f6113836020830184612daa565b5f5f604083850312156131b1575f5ffd5b82356131bc81612c8d565b915060208301356131cc81612c8d565b809150509250929050565b803563ffffffff811681146131ea575f5ffd5b919050565b5f6040828403128015613200575f5ffd5b506040805190810167ffffffffffffffff8111828210171561322457613224612e4a565b604052823561323281612c8d565b8152613240602084016131d7565b60208201529392505050565b803561325781612c8d565b6001600160a01b0316825263ffffffff613273602083016131d7565b1660208301525050565b6060810161328b828561324c565b8260408301529392505050565b5f602082840312156132a8575f5ffd5b81516109c081612c8d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f602082840312156132e7575f5ffd5b5051919050565b60a081016132fc828761324c565b60408201949094526001600160a01b03929092166060830152608090910152919050565b634e487b7160e01b5f52603260045260245ffd5b60808101613342828661324c565b60408201939093526001600160a01b0391909116606090910152919050565b5f60208284031215613371575f5ffd5b815180151581146109c0575f5ffd5b80516020808301519190811015612cef575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611386576113866133a3565b81810381811115611386576113866133a3565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a736040830184613020565b5f82518060208501845e5f92019182525091905056fea26469706673582212209f4a637e9517c1d6e9956426961495e150d80a3856affaf33ba48822b9df3ea464736f6c634300081b0033", + Bin: "0x610100604052348015610010575f5ffd5b506040516137e33803806137e383398101604081905261002f916101bc565b80808585856001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805291821660a0521660c05261007c81610093565b60e0525061008a90506100d9565b50505050610301565b5f5f829050601f815111156100c6578260405163305a27a960e01b81526004016100bd91906102a6565b60405180910390fd5b80516100d1826102db565b179392505050565b5f54610100900460ff16156101405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bd565b5f5460ff9081161461018f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101a5575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f608085870312156101cf575f5ffd5b84516101da81610191565b60208601519094506101eb81610191565b60408601519093506101fc81610191565b60608601519092506001600160401b03811115610217575f5ffd5b8501601f81018713610227575f5ffd5b80516001600160401b03811115610240576102406101a8565b604051601f8201601f19908116603f011681016001600160401b038111828210171561026e5761026e6101a8565b604052818152828201602001891015610285575f5ffd5b8160208401602083015e5f6020838301015280935050505092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102fb575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161346961037a5f395f81816110fa015261222701525f81816103ce015281816108310152610e8401525f81816105bc015281816109d201528181610dcb0152818161108c015281816112a70152611e9b01525f81816104aa01528181611a90015261229601526134695ff3fe608060405234801561000f575f5ffd5b5060043610610255575f3560e01c80637ecebe0011610140578063c6656702116100bf578063f2fde38b11610084578063f2fde38b146105f1578063f3b4a00014610604578063f698da251461060e578063fabc1cbc14610616578063fd98042314610629578063fe243a171461063c575f5ffd5b8063c665670214610571578063cbc2bd6214610584578063de44acb614610597578063df5cf723146105b7578063e7a050aa146105de575f5ffd5b80638da5cb5b116101055780638da5cb5b1461051457806394f649dd14610525578063967fc0d2146105385780639ac01d611461054b578063b5d8b5b81461055e575f5ffd5b80637ecebe0014610473578063829fca7314610492578063886f1195146104a557806388c10299146104cc5780638b8aac3c146104ec575f5ffd5b806350ff7225116101d75780635c975abb1161019c5780635c975abb146104085780635de08ff214610410578063663c1de414610423578063715018a614610445578063724af4231461044d57806376fb162b14610460575f5ffd5b806350ff72251461035157806354fd4d5014610379578063595c6a671461038e5780635ac86ab7146103965780635b84087f146103c9575f5ffd5b806332e89ace1161021d57806332e89ace146102db57806336a8c500146102ee5780633fb99ca51461030457806348825e94146103175780634b6d5d6e1461033e575f5ffd5b8063136439dd146102595780631794bb3c1461026e5780632d44def6146102815780632eae418c146102a757806331f8fb4c146102ba575b5f5ffd5b61026c610267366004612c76565b610666565b005b61026c61027c366004612ca1565b6106a0565b61029461028f366004612cf5565b6107c6565b6040519081526020015b60405180910390f35b61026c6102b5366004612d33565b6109c7565b6102cd6102c8366004612d81565b610a93565b60405161029e929190612e1d565b6102946102e9366004612e8f565b610c1e565b6102f6610ca3565b60405161029e929190612f6b565b61026c610312366004612fc1565b610dc0565b6102947f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61026c61034c366004613005565b610f32565b61036461035f366004612ca1565b61107f565b6040805192835260208301919091520161029e565b6103816110f3565b60405161029e919061304e565b61026c611123565b6103b96103a4366004613060565b609854600160ff9092169190911b9081161490565b604051901515815260200161029e565b6103f07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161029e565b609854610294565b61026c61041e366004613080565b611137565b6103b9610431366004613005565b60d16020525f908152604090205460ff1681565b61026c61128a565b61029461045b366004612ca1565b61129b565b61029461046e366004612cf5565b611304565b610294610481366004613005565b60ca6020525f908152604090205481565b6102946104a0366004612d81565b611349565b6103f07f000000000000000000000000000000000000000000000000000000000000000081565b6104df6104da366004612d81565b61138c565b60405161029e91906130f1565b6102946104fa366004613005565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103f0565b6102cd610533366004613005565b61147d565b60cb546103f0906001600160a01b031681565b610294610559366004613103565b6115f5565b61026c61056c366004613080565b611686565b61026c61057f366004613005565b6117cd565b6103f0610592366004613164565b6117f0565b6105aa6105a5366004613005565b611824565b60405161029e919061318e565b6103f07f000000000000000000000000000000000000000000000000000000000000000081565b6102946105ec366004612ca1565b611897565b61026c6105ff366004613005565b6118ca565b6103f0620e16e481565b610294611940565b61026c610624366004612c76565b6119f9565b610294610637366004613005565b611a66565b61029461064a3660046131a0565b60cd60209081525f928352604080842090915290825290205481565b61066e611a7b565b60985481811681146106935760405163c61dca5d60e01b815260040160405180910390fd5b61069c82611b1e565b5050565b5f54610100900460ff16158080156106be57505f54600160ff909116105b806106d75750303b1580156106d757505f5460ff166001145b61073f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610760575f805461ff0019166101001790555b61076982611b1e565b61077284611b5b565b61077b83611bac565b80156107c0575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b5f8060d7816107e26107dd368990038901896131ef565b611c15565b815260208082019290925260409081015f9081208782529092528120915061080a8285611c78565b915061081890508285611c9c565b505f81156109bb57846001600160a01b031663d9caed127f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633453b2348a8a6040518363ffffffff1660e01b815260040161087d92919061327d565b602060405180830381865afa158015610898573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108bc9190613298565b876001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108f8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091c9190613298565b856040518463ffffffff1660e01b815260040161093b939291906132b3565b6020604051808303815f875af1158015610957573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097b91906132d7565b90507fe6413aa0c789e437b0a06bf64b20926584f066c79a2d8b80a759c85472f7b0af878787856040516109b294939291906132ee565b60405180910390a15b925050505b9392505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a105760405163f739589b60e01b815260040160405180910390fd5b610a18611cb0565b604051636ce5768960e11b81526001600160a01b0384169063d9caed1290610a48908790869086906004016132b3565b6020604051808303815f875af1158015610a64573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a8891906132d7565b506107c06001606555565b6060805f60d781610aac6107dd368990038901896131ef565b81526020019081526020015f205f8581526020019081526020015f2090505f610ad482611d09565b90505f815167ffffffffffffffff811115610af157610af1612e4a565b604051908082528060200260200182016040528015610b1a578160200160208202803683370190505b5090505f825167ffffffffffffffff811115610b3857610b38612e4a565b604051908082528060200260200182016040528015610b61578160200160208202803683370190505b5090505f5b8351811015610c0e57838181518110610b8157610b81613320565b6020026020010151838281518110610b9b57610b9b613320565b60200260200101906001600160a01b031690816001600160a01b031681525050610be7848281518110610bd057610bd0613320565b602002602001015186611c7890919063ffffffff16565b9050828281518110610bfb57610bfb613320565b6020908102919091010152600101610b66565b50909450925050505b9250929050565b5f5f610c2981611d15565b610c31611cb0565b6001600160a01b0385165f90815260ca6020526040902054610c6286610c5b818c8c8c878c6115f5565b8688611d40565b6001600160a01b0386165f90815260ca60205260409020600182019055610c8b868a8a8a611d92565b925050610c986001606555565b509695505050505050565b6060805f610cb160d4611eff565b90505f8167ffffffffffffffff811115610ccd57610ccd612e4a565b604051908082528060200260200182016040528015610cf6578160200160208202803683370190505b5090505f8267ffffffffffffffff811115610d1357610d13612e4a565b604051908082528060200260200182016040528015610d3c578160200160208202803683370190505b5090505f5b83811015610db5575f5f610d5660d484611f09565b9150915081858481518110610d6d57610d6d613320565b60200260200101906001600160a01b031690816001600160a01b03168152505080848481518110610da057610da0613320565b60209081029190910101525050600101610d41565b509094909350915050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e095760405163f739589b60e01b815260040160405180910390fd5b610e11611cb0565b5f60d781610e276107dd368990038901896131ef565b815260208082019290925260409081015f90812087825290925290209050610e50818484611f17565b610e6d5760405163ca354fa360e01b815260040160405180910390fd5b604051637a96761160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637a96761190610ebd90889088908890600401613334565b5f604051808303815f87803b158015610ed4575f5ffd5b505af1158015610ee6573d5f5f3e3d5ffd5b505050507f5f5209798bbac45a16d2dc3bc67319fab26ee00153916d6f07b69f8a134a1e8b85858585604051610f1f94939291906132ee565b60405180910390a1506107c06001606555565b610f3a611cb0565b5f610f4660d483611c78565b915050610f5460d483611c9c565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a1801561107157816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fec573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110109190613298565b846040518463ffffffff1660e01b815260040161102f939291906132b3565b6020604051808303815f875af115801561104b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106f91906132d7565b505b5061107c6001606555565b50565b5f80336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110ca5760405163f739589b60e01b815260040160405180910390fd5b6110d2611cb0565b6110dd858585611f2c565b915091506110eb6001606555565b935093915050565b606061111e7f0000000000000000000000000000000000000000000000000000000000000000612094565b905090565b61112b611a7b565b6111355f19611b1e565b565b60cb546001600160a01b03163314611162576040516320ba3ff960e21b815260040160405180910390fd5b61116a611cb0565b805f5b8181101561127e5760d15f85858481811061118a5761118a613320565b905060200201602081019061119f9190613005565b6001600160a01b0316815260208101919091526040015f205460ff1661127657600160d15f8686858181106111d6576111d6613320565b90506020020160208101906111eb9190613005565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe84848381811061124557611245613320565b905060200201602081019061125a9190613005565b6040516001600160a01b03909116815260200160405180910390a15b60010161116d565b505061069c6001606555565b6112926120d1565b6111355f611b5b565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112e55760405163f739589b60e01b815260040160405180910390fd5b6112ed611cb0565b6112f884848461212b565b90506109c06001606555565b5f806109bb8360d78361131f6107dd368b90038b018b6131ef565b81526020019081526020015f205f8781526020019081526020015f20611c7890919063ffffffff16565b5f61138360d7826113626107dd368890038801886131ef565b81526020019081526020015f205f8481526020019081526020015f20611eff565b90505b92915050565b6060611396611cb0565b5f6113d060d7826113af6107dd368990038901896131ef565b81526020019081526020015f205f8581526020019081526020015f20611d09565b80519091505f8167ffffffffffffffff8111156113ef576113ef612e4a565b604051908082528060200260200182016040528015611418578160200160208202803683370190505b5090505f5b8281101561146e57611449878786848151811061143c5761143c613320565b60200260200101516107c6565b82828151811061145b5761145b613320565b602090810291909101015260010161141d565b50925050506113866001606555565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff8111156114b4576114b4612e4a565b6040519080825280602002602001820160405280156114dd578160200160208202803683370190505b5090505f5b8281101561156b576001600160a01b0386165f90815260cd6020908152604080832060ce909252822080549192918490811061152057611520613320565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054825183908390811061155857611558613320565b60209081029190910101526001016114e2565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f2081818054806020026020016040519081016040528092919081815260200182805480156115e357602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116115c5575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f9061167b9061010001604051602081830303815290604052805190602001206121d9565b979650505050505050565b60cb546001600160a01b031633146116b1576040516320ba3ff960e21b815260040160405180910390fd5b6116b9611cb0565b805f5b8181101561127e5760d15f8585848181106116d9576116d9613320565b90506020020160208101906116ee9190613005565b6001600160a01b0316815260208101919091526040015f205460ff16156117c5575f60d15f86868581811061172557611725613320565b905060200201602081019061173a9190613005565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061179457611794613320565b90506020020160208101906117a99190613005565b6040516001600160a01b03909116815260200160405180910390a15b6001016116bc565b6117d56120d1565b6117dd611cb0565b6117e681611bac565b61107c6001606555565b60ce602052815f5260405f208181548110611809575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561188b57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161186d575b50505050509050919050565b5f5f6118a281611d15565b6118aa611cb0565b6118b633868686611d92565b91506118c26001606555565b509392505050565b6118d26120d1565b6001600160a01b0381166119375760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610736565b61107c81611b5b565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea6119ad61221f565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b611a01612294565b60985480198219811614611a285760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f611a7360d484611c78565b949350505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611add573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b019190613361565b61113557604051631d77d47760e21b815260040160405180910390fd5b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff16604051602001611c6092919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261138690613380565b5f808080611c8f866001600160a01b038716612345565b9097909650945050505050565b5f611383836001600160a01b03841661237d565b600260655403611d025760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610736565b6002606555565b60605f6109c083612399565b609854600160ff83161b9081160361107c5760405163840a48d560e01b815260040160405180910390fd5b42811015611d6157604051630819bdcd60e01b815260040160405180910390fd5b611d756001600160a01b03851684846123a4565b6107c057604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff16611dcc57604051632efd965160e11b815260040160405180910390fd5b611de16001600160a01b0385163387866123f8565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af1158015611e2d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e5191906132d7565b91505f5f611e60888886611f2c565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015611ede575f5ffd5b505af1158015611ef0573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61138682612450565b5f808080611c8f868661245a565b5f611a73846001600160a01b03851684612483565b5f806001600160a01b038516611f55576040516316f2ccc960e01b815260040160405180910390fd5b825f03611f75576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052908120549081900361201b576001600160a01b0386165f90815260ce602090815260409091205410611fdd576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b61202584826133b7565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290612081908890889088906132b3565b60405180910390a1959294509192505050565b60605f6120a08361249f565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146111355760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610736565b5f815f0361214c576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038085165f90815260cd60209081526040808320938716835292905220548083111561219257604051634b18b19360e01b815260040160405180910390fd5b61219c83826133ca565b6001600160a01b038087165f90815260cd602090815260408083209389168352929052908120829055909150819003611a7357611a7385856124c6565b5f6121e2611940565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f61224b7f0000000000000000000000000000000000000000000000000000000000000000612094565b9050805f8151811061225f5761225f613320565b016020908101516040516001600160f81b03199091169181019190915260210160405160208183030381529060405291505090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123149190613298565b6001600160a01b0316336001600160a01b0316146111355760405163794821ff60e01b815260040160405180910390fd5b5f818152600283016020526040812054819080612372576123668585612644565b92505f9150610c179050565b600192509050610c17565b5f8181526002830160205260408120819055611383838361264f565b60606113868261265a565b5f5f5f6123b18585612666565b90925090505f8160048111156123c9576123c96133dd565b1480156123e75750856001600160a01b0316826001600160a01b0316145b806109bb57506109bb8686866126a5565b6107c0846323b872dd60e01b858585604051602401612419939291906132b3565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261278c565b5f61138682612864565b5f8080612467858561286d565b5f81815260029690960160205260409095205494959350505050565b5f8281526002840160205260408120829055611a738484612878565b5f60ff8216601f81111561138657604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b818110156125d8576001600160a01b038481165f90815260ce602052604090208054918516918390811061251657612516613320565b5f918252602090912001546001600160a01b0316036125d0576001600160a01b0384165f90815260ce602052604090208054612554906001906133ca565b8154811061256457612564613320565b5f9182526020808320909101546001600160a01b03878116845260ce90925260409092208054919092169190839081106125a0576125a0613320565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506125d8565b6001016124e0565b8181036125f857604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce6020526040902080548061261e5761261e6133f1565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f6113838383612883565b5f611383838361289a565b60605f6109c08361297d565b5f5f825160410361269a576020830151604084015160608501515f1a61268e878285856129d5565b94509450505050610c17565b505f90506002610c17565b5f5f5f856001600160a01b0316631626ba7e60e01b86866040516024016126cd929190613405565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161270b919061341d565b5f60405180830381855afa9150503d805f8114612743576040519150601f19603f3d011682016040523d82523d5f602084013e612748565b606091505b509150915081801561275c57506020815110155b80156109bb57508051630b135d3f60e11b9061278190830160209081019084016132d7565b149695505050505050565b5f6127e0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612a929092919063ffffffff16565b905080515f14806128005750808060200190518101906128009190613361565b61285f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610736565b505050565b5f611386825490565b5f6113838383612aa0565b5f6113838383612ac6565b5f8181526001830160205260408120541515611383565b5f8181526001830160205260408120548015612974575f6128bc6001836133ca565b85549091505f906128cf906001906133ca565b905081811461292e575f865f0182815481106128ed576128ed613320565b905f5260205f200154905080875f01848154811061290d5761290d613320565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061293f5761293f6133f1565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611386565b5f915050611386565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561188b57602002820191905f5260205f20905b8154815260200190600101908083116129b65750505050509050919050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612a0a57505f90506003612a89565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612a5b573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116612a83575f60019250925050612a89565b91505f90505b94509492505050565b6060611a7384845f85612b12565b5f825f018281548110612ab557612ab5613320565b905f5260205f200154905092915050565b5f818152600183016020526040812054612b0b57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611386565b505f611386565b606082471015612b735760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610736565b5f5f866001600160a01b03168587604051612b8e919061341d565b5f6040518083038185875af1925050503d805f8114612bc8576040519150601f19603f3d011682016040523d82523d5f602084013e612bcd565b606091505b509150915061167b8783838760608315612c475782515f03612c40576001600160a01b0385163b612c405760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610736565b5081611a73565b611a738383815115612c5c5781518083602001fd5b8060405162461bcd60e51b8152600401610736919061304e565b5f60208284031215612c86575f5ffd5b5035919050565b6001600160a01b038116811461107c575f5ffd5b5f5f5f60608486031215612cb3575f5ffd5b8335612cbe81612c8d565b92506020840135612cce81612c8d565b929592945050506040919091013590565b5f60408284031215612cef575f5ffd5b50919050565b5f5f5f60808486031215612d07575f5ffd5b612d118585612cdf565b9250604084013591506060840135612d2881612c8d565b809150509250925092565b5f5f5f5f60808587031215612d46575f5ffd5b8435612d5181612c8d565b93506020850135612d6181612c8d565b92506040850135612d7181612c8d565b9396929550929360600135925050565b5f5f60608385031215612d92575f5ffd5b612d9c8484612cdf565b946040939093013593505050565b5f8151808452602084019350602083015f5b82811015612de35781516001600160a01b0316865260209586019590910190600101612dbc565b5093949350505050565b5f8151808452602084019350602083015f5b82811015612de3578151865260209586019590910190600101612dff565b604081525f612e2f6040830185612daa565b8281036020840152612e418185612ded565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612e8757612e87612e4a565b604052919050565b5f5f5f5f5f5f60c08789031215612ea4575f5ffd5b8635612eaf81612c8d565b95506020870135612ebf81612c8d565b9450604087013593506060870135612ed681612c8d565b92506080870135915060a087013567ffffffffffffffff811115612ef8575f5ffd5b8701601f81018913612f08575f5ffd5b803567ffffffffffffffff811115612f2257612f22612e4a565b612f35601f8201601f1916602001612e5e565b8181528a6020838501011115612f49575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b604080825283519082018190525f9060208501906060840190835b81811015612fad5783516001600160a01b0316835260209384019390920191600101612f86565b505083810360208501526109bb8186612ded565b5f5f5f5f60a08587031215612fd4575f5ffd5b612fde8686612cdf565b9350604085013592506060850135612ff581612c8d565b9396929550929360800135925050565b5f60208284031215613015575f5ffd5b81356109c081612c8d565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6113836020830184613020565b5f60208284031215613070575f5ffd5b813560ff811681146109c0575f5ffd5b5f5f60208385031215613091575f5ffd5b823567ffffffffffffffff8111156130a7575f5ffd5b8301601f810185136130b7575f5ffd5b803567ffffffffffffffff8111156130cd575f5ffd5b8560208260051b84010111156130e1575f5ffd5b6020919091019590945092505050565b602081525f6113836020830184612ded565b5f5f5f5f5f5f60c08789031215613118575f5ffd5b863561312381612c8d565b9550602087013561313381612c8d565b9450604087013561314381612c8d565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f60408385031215613175575f5ffd5b823561318081612c8d565b946020939093013593505050565b602081525f6113836020830184612daa565b5f5f604083850312156131b1575f5ffd5b82356131bc81612c8d565b915060208301356131cc81612c8d565b809150509250929050565b803563ffffffff811681146131ea575f5ffd5b919050565b5f6040828403128015613200575f5ffd5b506040805190810167ffffffffffffffff8111828210171561322457613224612e4a565b604052823561323281612c8d565b8152613240602084016131d7565b60208201529392505050565b803561325781612c8d565b6001600160a01b0316825263ffffffff613273602083016131d7565b1660208301525050565b6060810161328b828561324c565b8260408301529392505050565b5f602082840312156132a8575f5ffd5b81516109c081612c8d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f602082840312156132e7575f5ffd5b5051919050565b60a081016132fc828761324c565b60408201949094526001600160a01b03929092166060830152608090910152919050565b634e487b7160e01b5f52603260045260245ffd5b60808101613342828661324c565b60408201939093526001600160a01b0391909116606090910152919050565b5f60208284031215613371575f5ffd5b815180151581146109c0575f5ffd5b80516020808301519190811015612cef575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611386576113866133a3565b81810381811115611386576113866133a3565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a736040830184613020565b5f82518060208501845e5f92019182525091905056fea26469706673582212205c8e5abff6d68d5ac1187fc29a56711511891cf9104f8b482594fee6b87e123864736f6c634300081b0033", } // StrategyManagerABI is the input ABI used to generate the binding from.