diff --git a/data/addresses.testnet.json b/data/addresses.testnet.json index 3457e46a6..2f27f0e7a 100644 --- a/data/addresses.testnet.json +++ b/data/addresses.testnet.json @@ -28,7 +28,7 @@ "type": "zetaToken" }, { - "address": "0x6b2fe12c605d64e14ca69f9aba51550593ba92ff43376d0a6cc26a5ca226f9bd,0x6fc08f682551e52c2cc34362a20f744ba6a3d8d17f6583fa2f774887c4079700", + "address": "0x28acc3a03af7658e52456617ac5ba6933ebf8dfb03469697b3673577a4262e24,0x6fc08f682551e52c2cc34362a20f744ba6a3d8d17f6583fa2f774887c4079700,0x01f724edef5461e280e533649b08c191a39af5f677025a226664a6626373b393,0x6b2fe12c605d64e14ca69f9aba51550593ba92ff43376d0a6cc26a5ca226f9bd,0x6b2fe12c605d64e14ca69f9aba51550593ba92ff43376d0a6cc26a5ca226f9bd", "category": "omnichain", "chain_id": 103, "chain_name": "sui_testnet", diff --git a/pkg/baseforktest.sol/baseforktest.go b/pkg/baseforktest.sol/baseforktest.go new file mode 100644 index 000000000..0fe90000a --- /dev/null +++ b/pkg/baseforktest.sol/baseforktest.go @@ -0,0 +1,3901 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package baseforktest + +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 +) + +// StdInvariantFuzzArtifactSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzArtifactSelector struct { + Artifact string + Selectors [][4]byte +} + +// StdInvariantFuzzInterface is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzInterface struct { + Addr common.Address + Artifacts []string +} + +// StdInvariantFuzzSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzSelector struct { + Addr common.Address + Selectors [][4]byte +} + +// BaseForkTestMetaData contains all meta data concerning the BaseForkTest contract. +var BaseForkTestMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"ARBITRUM_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"AVALANCHE_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BASE_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BSC_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ETHEREUM_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"POLYGON_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ZETACHAIN_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"chains\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"forkId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"contractAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"rpcUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCanSwitchForks\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForkIdDiffer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testUpgradeGatewayOnAllChains\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false}]", +} + +// BaseForkTestABI is the input ABI used to generate the binding from. +// Deprecated: Use BaseForkTestMetaData.ABI instead. +var BaseForkTestABI = BaseForkTestMetaData.ABI + +// BaseForkTest is an auto generated Go binding around an Ethereum contract. +type BaseForkTest struct { + BaseForkTestCaller // Read-only binding to the contract + BaseForkTestTransactor // Write-only binding to the contract + BaseForkTestFilterer // Log filterer for contract events +} + +// BaseForkTestCaller is an auto generated read-only Go binding around an Ethereum contract. +type BaseForkTestCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BaseForkTestTransactor is an auto generated write-only Go binding around an Ethereum contract. +type BaseForkTestTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BaseForkTestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type BaseForkTestFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BaseForkTestSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type BaseForkTestSession struct { + Contract *BaseForkTest // 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 +} + +// BaseForkTestCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type BaseForkTestCallerSession struct { + Contract *BaseForkTestCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// BaseForkTestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type BaseForkTestTransactorSession struct { + Contract *BaseForkTestTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BaseForkTestRaw is an auto generated low-level Go binding around an Ethereum contract. +type BaseForkTestRaw struct { + Contract *BaseForkTest // Generic contract binding to access the raw methods on +} + +// BaseForkTestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type BaseForkTestCallerRaw struct { + Contract *BaseForkTestCaller // Generic read-only contract binding to access the raw methods on +} + +// BaseForkTestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type BaseForkTestTransactorRaw struct { + Contract *BaseForkTestTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewBaseForkTest creates a new instance of BaseForkTest, bound to a specific deployed contract. +func NewBaseForkTest(address common.Address, backend bind.ContractBackend) (*BaseForkTest, error) { + contract, err := bindBaseForkTest(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &BaseForkTest{BaseForkTestCaller: BaseForkTestCaller{contract: contract}, BaseForkTestTransactor: BaseForkTestTransactor{contract: contract}, BaseForkTestFilterer: BaseForkTestFilterer{contract: contract}}, nil +} + +// NewBaseForkTestCaller creates a new read-only instance of BaseForkTest, bound to a specific deployed contract. +func NewBaseForkTestCaller(address common.Address, caller bind.ContractCaller) (*BaseForkTestCaller, error) { + contract, err := bindBaseForkTest(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &BaseForkTestCaller{contract: contract}, nil +} + +// NewBaseForkTestTransactor creates a new write-only instance of BaseForkTest, bound to a specific deployed contract. +func NewBaseForkTestTransactor(address common.Address, transactor bind.ContractTransactor) (*BaseForkTestTransactor, error) { + contract, err := bindBaseForkTest(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &BaseForkTestTransactor{contract: contract}, nil +} + +// NewBaseForkTestFilterer creates a new log filterer instance of BaseForkTest, bound to a specific deployed contract. +func NewBaseForkTestFilterer(address common.Address, filterer bind.ContractFilterer) (*BaseForkTestFilterer, error) { + contract, err := bindBaseForkTest(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &BaseForkTestFilterer{contract: contract}, nil +} + +// bindBaseForkTest binds a generic wrapper to an already deployed contract. +func bindBaseForkTest(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BaseForkTestMetaData.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 (_BaseForkTest *BaseForkTestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BaseForkTest.Contract.BaseForkTestCaller.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 (_BaseForkTest *BaseForkTestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BaseForkTest.Contract.BaseForkTestTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BaseForkTest *BaseForkTestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BaseForkTest.Contract.BaseForkTestTransactor.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 (_BaseForkTest *BaseForkTestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BaseForkTest.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 (_BaseForkTest *BaseForkTestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BaseForkTest.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BaseForkTest *BaseForkTestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BaseForkTest.Contract.contract.Transact(opts, method, params...) +} + +// ARBITRUMRPCURL is a free data retrieval call binding the contract method 0x699370b0. +// +// Solidity: function ARBITRUM_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestCaller) ARBITRUMRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "ARBITRUM_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ARBITRUMRPCURL is a free data retrieval call binding the contract method 0x699370b0. +// +// Solidity: function ARBITRUM_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestSession) ARBITRUMRPCURL() (string, error) { + return _BaseForkTest.Contract.ARBITRUMRPCURL(&_BaseForkTest.CallOpts) +} + +// ARBITRUMRPCURL is a free data retrieval call binding the contract method 0x699370b0. +// +// Solidity: function ARBITRUM_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestCallerSession) ARBITRUMRPCURL() (string, error) { + return _BaseForkTest.Contract.ARBITRUMRPCURL(&_BaseForkTest.CallOpts) +} + +// AVALANCHERPCURL is a free data retrieval call binding the contract method 0xca747493. +// +// Solidity: function AVALANCHE_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestCaller) AVALANCHERPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "AVALANCHE_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// AVALANCHERPCURL is a free data retrieval call binding the contract method 0xca747493. +// +// Solidity: function AVALANCHE_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestSession) AVALANCHERPCURL() (string, error) { + return _BaseForkTest.Contract.AVALANCHERPCURL(&_BaseForkTest.CallOpts) +} + +// AVALANCHERPCURL is a free data retrieval call binding the contract method 0xca747493. +// +// Solidity: function AVALANCHE_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestCallerSession) AVALANCHERPCURL() (string, error) { + return _BaseForkTest.Contract.AVALANCHERPCURL(&_BaseForkTest.CallOpts) +} + +// BASERPCURL is a free data retrieval call binding the contract method 0x2e8ade6e. +// +// Solidity: function BASE_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestCaller) BASERPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "BASE_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// BASERPCURL is a free data retrieval call binding the contract method 0x2e8ade6e. +// +// Solidity: function BASE_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestSession) BASERPCURL() (string, error) { + return _BaseForkTest.Contract.BASERPCURL(&_BaseForkTest.CallOpts) +} + +// BASERPCURL is a free data retrieval call binding the contract method 0x2e8ade6e. +// +// Solidity: function BASE_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestCallerSession) BASERPCURL() (string, error) { + return _BaseForkTest.Contract.BASERPCURL(&_BaseForkTest.CallOpts) +} + +// BSCRPCURL is a free data retrieval call binding the contract method 0x88de7b87. +// +// Solidity: function BSC_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestCaller) BSCRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "BSC_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// BSCRPCURL is a free data retrieval call binding the contract method 0x88de7b87. +// +// Solidity: function BSC_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestSession) BSCRPCURL() (string, error) { + return _BaseForkTest.Contract.BSCRPCURL(&_BaseForkTest.CallOpts) +} + +// BSCRPCURL is a free data retrieval call binding the contract method 0x88de7b87. +// +// Solidity: function BSC_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestCallerSession) BSCRPCURL() (string, error) { + return _BaseForkTest.Contract.BSCRPCURL(&_BaseForkTest.CallOpts) +} + +// ETHEREUMRPCURL is a free data retrieval call binding the contract method 0x9d3c5161. +// +// Solidity: function ETHEREUM_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestCaller) ETHEREUMRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "ETHEREUM_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ETHEREUMRPCURL is a free data retrieval call binding the contract method 0x9d3c5161. +// +// Solidity: function ETHEREUM_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestSession) ETHEREUMRPCURL() (string, error) { + return _BaseForkTest.Contract.ETHEREUMRPCURL(&_BaseForkTest.CallOpts) +} + +// ETHEREUMRPCURL is a free data retrieval call binding the contract method 0x9d3c5161. +// +// Solidity: function ETHEREUM_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestCallerSession) ETHEREUMRPCURL() (string, error) { + return _BaseForkTest.Contract.ETHEREUMRPCURL(&_BaseForkTest.CallOpts) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_BaseForkTest *BaseForkTestCaller) ISTEST(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "IS_TEST") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_BaseForkTest *BaseForkTestSession) ISTEST() (bool, error) { + return _BaseForkTest.Contract.ISTEST(&_BaseForkTest.CallOpts) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_BaseForkTest *BaseForkTestCallerSession) ISTEST() (bool, error) { + return _BaseForkTest.Contract.ISTEST(&_BaseForkTest.CallOpts) +} + +// POLYGONRPCURL is a free data retrieval call binding the contract method 0x94897fb1. +// +// Solidity: function POLYGON_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestCaller) POLYGONRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "POLYGON_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// POLYGONRPCURL is a free data retrieval call binding the contract method 0x94897fb1. +// +// Solidity: function POLYGON_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestSession) POLYGONRPCURL() (string, error) { + return _BaseForkTest.Contract.POLYGONRPCURL(&_BaseForkTest.CallOpts) +} + +// POLYGONRPCURL is a free data retrieval call binding the contract method 0x94897fb1. +// +// Solidity: function POLYGON_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestCallerSession) POLYGONRPCURL() (string, error) { + return _BaseForkTest.Contract.POLYGONRPCURL(&_BaseForkTest.CallOpts) +} + +// ZETACHAINRPCURL is a free data retrieval call binding the contract method 0x3f8f61dd. +// +// Solidity: function ZETACHAIN_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestCaller) ZETACHAINRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "ZETACHAIN_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ZETACHAINRPCURL is a free data retrieval call binding the contract method 0x3f8f61dd. +// +// Solidity: function ZETACHAIN_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestSession) ZETACHAINRPCURL() (string, error) { + return _BaseForkTest.Contract.ZETACHAINRPCURL(&_BaseForkTest.CallOpts) +} + +// ZETACHAINRPCURL is a free data retrieval call binding the contract method 0x3f8f61dd. +// +// Solidity: function ZETACHAIN_RPC_URL() view returns(string) +func (_BaseForkTest *BaseForkTestCallerSession) ZETACHAINRPCURL() (string, error) { + return _BaseForkTest.Contract.ZETACHAINRPCURL(&_BaseForkTest.CallOpts) +} + +// Chains is a free data retrieval call binding the contract method 0x550325b5. +// +// Solidity: function chains(uint256 ) view returns(uint256 forkId, address contractAddress, address admin, string rpcUrl, string name) +func (_BaseForkTest *BaseForkTestCaller) Chains(opts *bind.CallOpts, arg0 *big.Int) (struct { + ForkId *big.Int + ContractAddress common.Address + Admin common.Address + RpcUrl string + Name string +}, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "chains", arg0) + + outstruct := new(struct { + ForkId *big.Int + ContractAddress common.Address + Admin common.Address + RpcUrl string + Name string + }) + if err != nil { + return *outstruct, err + } + + outstruct.ForkId = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.ContractAddress = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) + outstruct.Admin = *abi.ConvertType(out[2], new(common.Address)).(*common.Address) + outstruct.RpcUrl = *abi.ConvertType(out[3], new(string)).(*string) + outstruct.Name = *abi.ConvertType(out[4], new(string)).(*string) + + return *outstruct, err + +} + +// Chains is a free data retrieval call binding the contract method 0x550325b5. +// +// Solidity: function chains(uint256 ) view returns(uint256 forkId, address contractAddress, address admin, string rpcUrl, string name) +func (_BaseForkTest *BaseForkTestSession) Chains(arg0 *big.Int) (struct { + ForkId *big.Int + ContractAddress common.Address + Admin common.Address + RpcUrl string + Name string +}, error) { + return _BaseForkTest.Contract.Chains(&_BaseForkTest.CallOpts, arg0) +} + +// Chains is a free data retrieval call binding the contract method 0x550325b5. +// +// Solidity: function chains(uint256 ) view returns(uint256 forkId, address contractAddress, address admin, string rpcUrl, string name) +func (_BaseForkTest *BaseForkTestCallerSession) Chains(arg0 *big.Int) (struct { + ForkId *big.Int + ContractAddress common.Address + Admin common.Address + RpcUrl string + Name string +}, error) { + return _BaseForkTest.Contract.Chains(&_BaseForkTest.CallOpts, arg0) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_BaseForkTest *BaseForkTestCaller) ExcludeArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "excludeArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_BaseForkTest *BaseForkTestSession) ExcludeArtifacts() ([]string, error) { + return _BaseForkTest.Contract.ExcludeArtifacts(&_BaseForkTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_BaseForkTest *BaseForkTestCallerSession) ExcludeArtifacts() ([]string, error) { + return _BaseForkTest.Contract.ExcludeArtifacts(&_BaseForkTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_BaseForkTest *BaseForkTestCaller) ExcludeContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "excludeContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_BaseForkTest *BaseForkTestSession) ExcludeContracts() ([]common.Address, error) { + return _BaseForkTest.Contract.ExcludeContracts(&_BaseForkTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_BaseForkTest *BaseForkTestCallerSession) ExcludeContracts() ([]common.Address, error) { + return _BaseForkTest.Contract.ExcludeContracts(&_BaseForkTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_BaseForkTest *BaseForkTestCaller) ExcludeSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "excludeSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_BaseForkTest *BaseForkTestSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _BaseForkTest.Contract.ExcludeSelectors(&_BaseForkTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_BaseForkTest *BaseForkTestCallerSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _BaseForkTest.Contract.ExcludeSelectors(&_BaseForkTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_BaseForkTest *BaseForkTestCaller) ExcludeSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "excludeSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_BaseForkTest *BaseForkTestSession) ExcludeSenders() ([]common.Address, error) { + return _BaseForkTest.Contract.ExcludeSenders(&_BaseForkTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_BaseForkTest *BaseForkTestCallerSession) ExcludeSenders() ([]common.Address, error) { + return _BaseForkTest.Contract.ExcludeSenders(&_BaseForkTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_BaseForkTest *BaseForkTestCaller) Failed(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "failed") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_BaseForkTest *BaseForkTestSession) Failed() (bool, error) { + return _BaseForkTest.Contract.Failed(&_BaseForkTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_BaseForkTest *BaseForkTestCallerSession) Failed() (bool, error) { + return _BaseForkTest.Contract.Failed(&_BaseForkTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_BaseForkTest *BaseForkTestCaller) TargetArtifactSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzArtifactSelector, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "targetArtifactSelectors") + + if err != nil { + return *new([]StdInvariantFuzzArtifactSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzArtifactSelector)).(*[]StdInvariantFuzzArtifactSelector) + + return out0, err + +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_BaseForkTest *BaseForkTestSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _BaseForkTest.Contract.TargetArtifactSelectors(&_BaseForkTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_BaseForkTest *BaseForkTestCallerSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _BaseForkTest.Contract.TargetArtifactSelectors(&_BaseForkTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_BaseForkTest *BaseForkTestCaller) TargetArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "targetArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_BaseForkTest *BaseForkTestSession) TargetArtifacts() ([]string, error) { + return _BaseForkTest.Contract.TargetArtifacts(&_BaseForkTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_BaseForkTest *BaseForkTestCallerSession) TargetArtifacts() ([]string, error) { + return _BaseForkTest.Contract.TargetArtifacts(&_BaseForkTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_BaseForkTest *BaseForkTestCaller) TargetContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "targetContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_BaseForkTest *BaseForkTestSession) TargetContracts() ([]common.Address, error) { + return _BaseForkTest.Contract.TargetContracts(&_BaseForkTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_BaseForkTest *BaseForkTestCallerSession) TargetContracts() ([]common.Address, error) { + return _BaseForkTest.Contract.TargetContracts(&_BaseForkTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_BaseForkTest *BaseForkTestCaller) TargetInterfaces(opts *bind.CallOpts) ([]StdInvariantFuzzInterface, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "targetInterfaces") + + if err != nil { + return *new([]StdInvariantFuzzInterface), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzInterface)).(*[]StdInvariantFuzzInterface) + + return out0, err + +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_BaseForkTest *BaseForkTestSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _BaseForkTest.Contract.TargetInterfaces(&_BaseForkTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_BaseForkTest *BaseForkTestCallerSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _BaseForkTest.Contract.TargetInterfaces(&_BaseForkTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_BaseForkTest *BaseForkTestCaller) TargetSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "targetSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_BaseForkTest *BaseForkTestSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _BaseForkTest.Contract.TargetSelectors(&_BaseForkTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_BaseForkTest *BaseForkTestCallerSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _BaseForkTest.Contract.TargetSelectors(&_BaseForkTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_BaseForkTest *BaseForkTestCaller) TargetSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "targetSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_BaseForkTest *BaseForkTestSession) TargetSenders() ([]common.Address, error) { + return _BaseForkTest.Contract.TargetSenders(&_BaseForkTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_BaseForkTest *BaseForkTestCallerSession) TargetSenders() ([]common.Address, error) { + return _BaseForkTest.Contract.TargetSenders(&_BaseForkTest.CallOpts) +} + +// TestForkIdDiffer is a free data retrieval call binding the contract method 0x6cf73eea. +// +// Solidity: function testForkIdDiffer() view returns() +func (_BaseForkTest *BaseForkTestCaller) TestForkIdDiffer(opts *bind.CallOpts) error { + var out []interface{} + err := _BaseForkTest.contract.Call(opts, &out, "testForkIdDiffer") + + if err != nil { + return err + } + + return err + +} + +// TestForkIdDiffer is a free data retrieval call binding the contract method 0x6cf73eea. +// +// Solidity: function testForkIdDiffer() view returns() +func (_BaseForkTest *BaseForkTestSession) TestForkIdDiffer() error { + return _BaseForkTest.Contract.TestForkIdDiffer(&_BaseForkTest.CallOpts) +} + +// TestForkIdDiffer is a free data retrieval call binding the contract method 0x6cf73eea. +// +// Solidity: function testForkIdDiffer() view returns() +func (_BaseForkTest *BaseForkTestCallerSession) TestForkIdDiffer() error { + return _BaseForkTest.Contract.TestForkIdDiffer(&_BaseForkTest.CallOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_BaseForkTest *BaseForkTestTransactor) SetUp(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BaseForkTest.contract.Transact(opts, "setUp") +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_BaseForkTest *BaseForkTestSession) SetUp() (*types.Transaction, error) { + return _BaseForkTest.Contract.SetUp(&_BaseForkTest.TransactOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_BaseForkTest *BaseForkTestTransactorSession) SetUp() (*types.Transaction, error) { + return _BaseForkTest.Contract.SetUp(&_BaseForkTest.TransactOpts) +} + +// TestCanSwitchForks is a paid mutator transaction binding the contract method 0x8cf03dbc. +// +// Solidity: function testCanSwitchForks() returns() +func (_BaseForkTest *BaseForkTestTransactor) TestCanSwitchForks(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BaseForkTest.contract.Transact(opts, "testCanSwitchForks") +} + +// TestCanSwitchForks is a paid mutator transaction binding the contract method 0x8cf03dbc. +// +// Solidity: function testCanSwitchForks() returns() +func (_BaseForkTest *BaseForkTestSession) TestCanSwitchForks() (*types.Transaction, error) { + return _BaseForkTest.Contract.TestCanSwitchForks(&_BaseForkTest.TransactOpts) +} + +// TestCanSwitchForks is a paid mutator transaction binding the contract method 0x8cf03dbc. +// +// Solidity: function testCanSwitchForks() returns() +func (_BaseForkTest *BaseForkTestTransactorSession) TestCanSwitchForks() (*types.Transaction, error) { + return _BaseForkTest.Contract.TestCanSwitchForks(&_BaseForkTest.TransactOpts) +} + +// TestUpgradeGatewayOnAllChains is a paid mutator transaction binding the contract method 0x03b965ec. +// +// Solidity: function testUpgradeGatewayOnAllChains() returns() +func (_BaseForkTest *BaseForkTestTransactor) TestUpgradeGatewayOnAllChains(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BaseForkTest.contract.Transact(opts, "testUpgradeGatewayOnAllChains") +} + +// TestUpgradeGatewayOnAllChains is a paid mutator transaction binding the contract method 0x03b965ec. +// +// Solidity: function testUpgradeGatewayOnAllChains() returns() +func (_BaseForkTest *BaseForkTestSession) TestUpgradeGatewayOnAllChains() (*types.Transaction, error) { + return _BaseForkTest.Contract.TestUpgradeGatewayOnAllChains(&_BaseForkTest.TransactOpts) +} + +// TestUpgradeGatewayOnAllChains is a paid mutator transaction binding the contract method 0x03b965ec. +// +// Solidity: function testUpgradeGatewayOnAllChains() returns() +func (_BaseForkTest *BaseForkTestTransactorSession) TestUpgradeGatewayOnAllChains() (*types.Transaction, error) { + return _BaseForkTest.Contract.TestUpgradeGatewayOnAllChains(&_BaseForkTest.TransactOpts) +} + +// BaseForkTestLogIterator is returned from FilterLog and is used to iterate over the raw logs and unpacked data for Log events raised by the BaseForkTest contract. +type BaseForkTestLogIterator struct { + Event *BaseForkTestLog // 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 *BaseForkTestLogIterator) 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(BaseForkTestLog) + 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(BaseForkTestLog) + 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 *BaseForkTestLogIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLog represents a Log event raised by the BaseForkTest contract. +type BaseForkTestLog struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLog is a free log retrieval operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_BaseForkTest *BaseForkTestFilterer) FilterLog(opts *bind.FilterOpts) (*BaseForkTestLogIterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log") + if err != nil { + return nil, err + } + return &BaseForkTestLogIterator{contract: _BaseForkTest.contract, event: "log", logs: logs, sub: sub}, nil +} + +// WatchLog is a free log subscription operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_BaseForkTest *BaseForkTestFilterer) WatchLog(opts *bind.WatchOpts, sink chan<- *BaseForkTestLog) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log") + 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(BaseForkTestLog) + if err := _BaseForkTest.contract.UnpackLog(event, "log", 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 +} + +// ParseLog is a log parse operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_BaseForkTest *BaseForkTestFilterer) ParseLog(log types.Log) (*BaseForkTestLog, error) { + event := new(BaseForkTestLog) + if err := _BaseForkTest.contract.UnpackLog(event, "log", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogAddressIterator is returned from FilterLogAddress and is used to iterate over the raw logs and unpacked data for LogAddress events raised by the BaseForkTest contract. +type BaseForkTestLogAddressIterator struct { + Event *BaseForkTestLogAddress // 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 *BaseForkTestLogAddressIterator) 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(BaseForkTestLogAddress) + 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(BaseForkTestLogAddress) + 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 *BaseForkTestLogAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogAddress represents a LogAddress event raised by the BaseForkTest contract. +type BaseForkTestLogAddress struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogAddress is a free log retrieval operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogAddress(opts *bind.FilterOpts) (*BaseForkTestLogAddressIterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_address") + if err != nil { + return nil, err + } + return &BaseForkTestLogAddressIterator{contract: _BaseForkTest.contract, event: "log_address", logs: logs, sub: sub}, nil +} + +// WatchLogAddress is a free log subscription operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogAddress(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogAddress) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_address") + 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(BaseForkTestLogAddress) + if err := _BaseForkTest.contract.UnpackLog(event, "log_address", 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 +} + +// ParseLogAddress is a log parse operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogAddress(log types.Log) (*BaseForkTestLogAddress, error) { + event := new(BaseForkTestLogAddress) + if err := _BaseForkTest.contract.UnpackLog(event, "log_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogArrayIterator is returned from FilterLogArray and is used to iterate over the raw logs and unpacked data for LogArray events raised by the BaseForkTest contract. +type BaseForkTestLogArrayIterator struct { + Event *BaseForkTestLogArray // 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 *BaseForkTestLogArrayIterator) 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(BaseForkTestLogArray) + 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(BaseForkTestLogArray) + 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 *BaseForkTestLogArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogArray represents a LogArray event raised by the BaseForkTest contract. +type BaseForkTestLogArray struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray is a free log retrieval operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogArray(opts *bind.FilterOpts) (*BaseForkTestLogArrayIterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_array") + if err != nil { + return nil, err + } + return &BaseForkTestLogArrayIterator{contract: _BaseForkTest.contract, event: "log_array", logs: logs, sub: sub}, nil +} + +// WatchLogArray is a free log subscription operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogArray(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogArray) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_array") + 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(BaseForkTestLogArray) + if err := _BaseForkTest.contract.UnpackLog(event, "log_array", 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 +} + +// ParseLogArray is a log parse operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogArray(log types.Log) (*BaseForkTestLogArray, error) { + event := new(BaseForkTestLogArray) + if err := _BaseForkTest.contract.UnpackLog(event, "log_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogArray0Iterator is returned from FilterLogArray0 and is used to iterate over the raw logs and unpacked data for LogArray0 events raised by the BaseForkTest contract. +type BaseForkTestLogArray0Iterator struct { + Event *BaseForkTestLogArray0 // 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 *BaseForkTestLogArray0Iterator) 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(BaseForkTestLogArray0) + 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(BaseForkTestLogArray0) + 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 *BaseForkTestLogArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogArray0 represents a LogArray0 event raised by the BaseForkTest contract. +type BaseForkTestLogArray0 struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray0 is a free log retrieval operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogArray0(opts *bind.FilterOpts) (*BaseForkTestLogArray0Iterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return &BaseForkTestLogArray0Iterator{contract: _BaseForkTest.contract, event: "log_array0", logs: logs, sub: sub}, nil +} + +// WatchLogArray0 is a free log subscription operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogArray0(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogArray0) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_array0") + 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(BaseForkTestLogArray0) + if err := _BaseForkTest.contract.UnpackLog(event, "log_array0", 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 +} + +// ParseLogArray0 is a log parse operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogArray0(log types.Log) (*BaseForkTestLogArray0, error) { + event := new(BaseForkTestLogArray0) + if err := _BaseForkTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogArray1Iterator is returned from FilterLogArray1 and is used to iterate over the raw logs and unpacked data for LogArray1 events raised by the BaseForkTest contract. +type BaseForkTestLogArray1Iterator struct { + Event *BaseForkTestLogArray1 // 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 *BaseForkTestLogArray1Iterator) 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(BaseForkTestLogArray1) + 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(BaseForkTestLogArray1) + 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 *BaseForkTestLogArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogArray1 represents a LogArray1 event raised by the BaseForkTest contract. +type BaseForkTestLogArray1 struct { + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray1 is a free log retrieval operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogArray1(opts *bind.FilterOpts) (*BaseForkTestLogArray1Iterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return &BaseForkTestLogArray1Iterator{contract: _BaseForkTest.contract, event: "log_array1", logs: logs, sub: sub}, nil +} + +// WatchLogArray1 is a free log subscription operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogArray1(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogArray1) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_array1") + 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(BaseForkTestLogArray1) + if err := _BaseForkTest.contract.UnpackLog(event, "log_array1", 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 +} + +// ParseLogArray1 is a log parse operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogArray1(log types.Log) (*BaseForkTestLogArray1, error) { + event := new(BaseForkTestLogArray1) + if err := _BaseForkTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogBytesIterator is returned from FilterLogBytes and is used to iterate over the raw logs and unpacked data for LogBytes events raised by the BaseForkTest contract. +type BaseForkTestLogBytesIterator struct { + Event *BaseForkTestLogBytes // 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 *BaseForkTestLogBytesIterator) 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(BaseForkTestLogBytes) + 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(BaseForkTestLogBytes) + 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 *BaseForkTestLogBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogBytes represents a LogBytes event raised by the BaseForkTest contract. +type BaseForkTestLogBytes struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes is a free log retrieval operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogBytes(opts *bind.FilterOpts) (*BaseForkTestLogBytesIterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return &BaseForkTestLogBytesIterator{contract: _BaseForkTest.contract, event: "log_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogBytes is a free log subscription operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogBytes(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogBytes) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_bytes") + 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(BaseForkTestLogBytes) + if err := _BaseForkTest.contract.UnpackLog(event, "log_bytes", 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 +} + +// ParseLogBytes is a log parse operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogBytes(log types.Log) (*BaseForkTestLogBytes, error) { + event := new(BaseForkTestLogBytes) + if err := _BaseForkTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogBytes32Iterator is returned from FilterLogBytes32 and is used to iterate over the raw logs and unpacked data for LogBytes32 events raised by the BaseForkTest contract. +type BaseForkTestLogBytes32Iterator struct { + Event *BaseForkTestLogBytes32 // 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 *BaseForkTestLogBytes32Iterator) 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(BaseForkTestLogBytes32) + 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(BaseForkTestLogBytes32) + 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 *BaseForkTestLogBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogBytes32 represents a LogBytes32 event raised by the BaseForkTest contract. +type BaseForkTestLogBytes32 struct { + Arg0 [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes32 is a free log retrieval operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogBytes32(opts *bind.FilterOpts) (*BaseForkTestLogBytes32Iterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return &BaseForkTestLogBytes32Iterator{contract: _BaseForkTest.contract, event: "log_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogBytes32 is a free log subscription operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogBytes32(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogBytes32) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_bytes32") + 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(BaseForkTestLogBytes32) + if err := _BaseForkTest.contract.UnpackLog(event, "log_bytes32", 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 +} + +// ParseLogBytes32 is a log parse operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogBytes32(log types.Log) (*BaseForkTestLogBytes32, error) { + event := new(BaseForkTestLogBytes32) + if err := _BaseForkTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogIntIterator is returned from FilterLogInt and is used to iterate over the raw logs and unpacked data for LogInt events raised by the BaseForkTest contract. +type BaseForkTestLogIntIterator struct { + Event *BaseForkTestLogInt // 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 *BaseForkTestLogIntIterator) 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(BaseForkTestLogInt) + 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(BaseForkTestLogInt) + 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 *BaseForkTestLogIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogInt represents a LogInt event raised by the BaseForkTest contract. +type BaseForkTestLogInt struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogInt is a free log retrieval operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogInt(opts *bind.FilterOpts) (*BaseForkTestLogIntIterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_int") + if err != nil { + return nil, err + } + return &BaseForkTestLogIntIterator{contract: _BaseForkTest.contract, event: "log_int", logs: logs, sub: sub}, nil +} + +// WatchLogInt is a free log subscription operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogInt(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogInt) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_int") + 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(BaseForkTestLogInt) + if err := _BaseForkTest.contract.UnpackLog(event, "log_int", 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 +} + +// ParseLogInt is a log parse operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogInt(log types.Log) (*BaseForkTestLogInt, error) { + event := new(BaseForkTestLogInt) + if err := _BaseForkTest.contract.UnpackLog(event, "log_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogNamedAddressIterator is returned from FilterLogNamedAddress and is used to iterate over the raw logs and unpacked data for LogNamedAddress events raised by the BaseForkTest contract. +type BaseForkTestLogNamedAddressIterator struct { + Event *BaseForkTestLogNamedAddress // 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 *BaseForkTestLogNamedAddressIterator) 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(BaseForkTestLogNamedAddress) + 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(BaseForkTestLogNamedAddress) + 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 *BaseForkTestLogNamedAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogNamedAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogNamedAddress represents a LogNamedAddress event raised by the BaseForkTest contract. +type BaseForkTestLogNamedAddress struct { + Key string + Val common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedAddress is a free log retrieval operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogNamedAddress(opts *bind.FilterOpts) (*BaseForkTestLogNamedAddressIterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return &BaseForkTestLogNamedAddressIterator{contract: _BaseForkTest.contract, event: "log_named_address", logs: logs, sub: sub}, nil +} + +// WatchLogNamedAddress is a free log subscription operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogNamedAddress(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogNamedAddress) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_named_address") + 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(BaseForkTestLogNamedAddress) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_address", 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 +} + +// ParseLogNamedAddress is a log parse operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogNamedAddress(log types.Log) (*BaseForkTestLogNamedAddress, error) { + event := new(BaseForkTestLogNamedAddress) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogNamedArrayIterator is returned from FilterLogNamedArray and is used to iterate over the raw logs and unpacked data for LogNamedArray events raised by the BaseForkTest contract. +type BaseForkTestLogNamedArrayIterator struct { + Event *BaseForkTestLogNamedArray // 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 *BaseForkTestLogNamedArrayIterator) 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(BaseForkTestLogNamedArray) + 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(BaseForkTestLogNamedArray) + 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 *BaseForkTestLogNamedArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogNamedArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogNamedArray represents a LogNamedArray event raised by the BaseForkTest contract. +type BaseForkTestLogNamedArray struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray is a free log retrieval operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogNamedArray(opts *bind.FilterOpts) (*BaseForkTestLogNamedArrayIterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return &BaseForkTestLogNamedArrayIterator{contract: _BaseForkTest.contract, event: "log_named_array", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray is a free log subscription operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogNamedArray(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogNamedArray) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_named_array") + 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(BaseForkTestLogNamedArray) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_array", 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 +} + +// ParseLogNamedArray is a log parse operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogNamedArray(log types.Log) (*BaseForkTestLogNamedArray, error) { + event := new(BaseForkTestLogNamedArray) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogNamedArray0Iterator is returned from FilterLogNamedArray0 and is used to iterate over the raw logs and unpacked data for LogNamedArray0 events raised by the BaseForkTest contract. +type BaseForkTestLogNamedArray0Iterator struct { + Event *BaseForkTestLogNamedArray0 // 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 *BaseForkTestLogNamedArray0Iterator) 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(BaseForkTestLogNamedArray0) + 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(BaseForkTestLogNamedArray0) + 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 *BaseForkTestLogNamedArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogNamedArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogNamedArray0 represents a LogNamedArray0 event raised by the BaseForkTest contract. +type BaseForkTestLogNamedArray0 struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray0 is a free log retrieval operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogNamedArray0(opts *bind.FilterOpts) (*BaseForkTestLogNamedArray0Iterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return &BaseForkTestLogNamedArray0Iterator{contract: _BaseForkTest.contract, event: "log_named_array0", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray0 is a free log subscription operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogNamedArray0(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogNamedArray0) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_named_array0") + 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(BaseForkTestLogNamedArray0) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_array0", 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 +} + +// ParseLogNamedArray0 is a log parse operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogNamedArray0(log types.Log) (*BaseForkTestLogNamedArray0, error) { + event := new(BaseForkTestLogNamedArray0) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogNamedArray1Iterator is returned from FilterLogNamedArray1 and is used to iterate over the raw logs and unpacked data for LogNamedArray1 events raised by the BaseForkTest contract. +type BaseForkTestLogNamedArray1Iterator struct { + Event *BaseForkTestLogNamedArray1 // 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 *BaseForkTestLogNamedArray1Iterator) 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(BaseForkTestLogNamedArray1) + 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(BaseForkTestLogNamedArray1) + 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 *BaseForkTestLogNamedArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogNamedArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogNamedArray1 represents a LogNamedArray1 event raised by the BaseForkTest contract. +type BaseForkTestLogNamedArray1 struct { + Key string + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray1 is a free log retrieval operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogNamedArray1(opts *bind.FilterOpts) (*BaseForkTestLogNamedArray1Iterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return &BaseForkTestLogNamedArray1Iterator{contract: _BaseForkTest.contract, event: "log_named_array1", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray1 is a free log subscription operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogNamedArray1(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogNamedArray1) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_named_array1") + 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(BaseForkTestLogNamedArray1) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_array1", 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 +} + +// ParseLogNamedArray1 is a log parse operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogNamedArray1(log types.Log) (*BaseForkTestLogNamedArray1, error) { + event := new(BaseForkTestLogNamedArray1) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogNamedBytesIterator is returned from FilterLogNamedBytes and is used to iterate over the raw logs and unpacked data for LogNamedBytes events raised by the BaseForkTest contract. +type BaseForkTestLogNamedBytesIterator struct { + Event *BaseForkTestLogNamedBytes // 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 *BaseForkTestLogNamedBytesIterator) 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(BaseForkTestLogNamedBytes) + 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(BaseForkTestLogNamedBytes) + 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 *BaseForkTestLogNamedBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogNamedBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogNamedBytes represents a LogNamedBytes event raised by the BaseForkTest contract. +type BaseForkTestLogNamedBytes struct { + Key string + Val []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes is a free log retrieval operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogNamedBytes(opts *bind.FilterOpts) (*BaseForkTestLogNamedBytesIterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return &BaseForkTestLogNamedBytesIterator{contract: _BaseForkTest.contract, event: "log_named_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes is a free log subscription operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogNamedBytes(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogNamedBytes) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_named_bytes") + 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(BaseForkTestLogNamedBytes) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_bytes", 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 +} + +// ParseLogNamedBytes is a log parse operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogNamedBytes(log types.Log) (*BaseForkTestLogNamedBytes, error) { + event := new(BaseForkTestLogNamedBytes) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogNamedBytes32Iterator is returned from FilterLogNamedBytes32 and is used to iterate over the raw logs and unpacked data for LogNamedBytes32 events raised by the BaseForkTest contract. +type BaseForkTestLogNamedBytes32Iterator struct { + Event *BaseForkTestLogNamedBytes32 // 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 *BaseForkTestLogNamedBytes32Iterator) 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(BaseForkTestLogNamedBytes32) + 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(BaseForkTestLogNamedBytes32) + 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 *BaseForkTestLogNamedBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogNamedBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogNamedBytes32 represents a LogNamedBytes32 event raised by the BaseForkTest contract. +type BaseForkTestLogNamedBytes32 struct { + Key string + Val [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes32 is a free log retrieval operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogNamedBytes32(opts *bind.FilterOpts) (*BaseForkTestLogNamedBytes32Iterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return &BaseForkTestLogNamedBytes32Iterator{contract: _BaseForkTest.contract, event: "log_named_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes32 is a free log subscription operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogNamedBytes32(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogNamedBytes32) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_named_bytes32") + 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(BaseForkTestLogNamedBytes32) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_bytes32", 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 +} + +// ParseLogNamedBytes32 is a log parse operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogNamedBytes32(log types.Log) (*BaseForkTestLogNamedBytes32, error) { + event := new(BaseForkTestLogNamedBytes32) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogNamedDecimalIntIterator is returned from FilterLogNamedDecimalInt and is used to iterate over the raw logs and unpacked data for LogNamedDecimalInt events raised by the BaseForkTest contract. +type BaseForkTestLogNamedDecimalIntIterator struct { + Event *BaseForkTestLogNamedDecimalInt // 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 *BaseForkTestLogNamedDecimalIntIterator) 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(BaseForkTestLogNamedDecimalInt) + 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(BaseForkTestLogNamedDecimalInt) + 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 *BaseForkTestLogNamedDecimalIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogNamedDecimalIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogNamedDecimalInt represents a LogNamedDecimalInt event raised by the BaseForkTest contract. +type BaseForkTestLogNamedDecimalInt struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalInt is a free log retrieval operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogNamedDecimalInt(opts *bind.FilterOpts) (*BaseForkTestLogNamedDecimalIntIterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return &BaseForkTestLogNamedDecimalIntIterator{contract: _BaseForkTest.contract, event: "log_named_decimal_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalInt is a free log subscription operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogNamedDecimalInt(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogNamedDecimalInt) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_named_decimal_int") + 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(BaseForkTestLogNamedDecimalInt) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_decimal_int", 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 +} + +// ParseLogNamedDecimalInt is a log parse operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogNamedDecimalInt(log types.Log) (*BaseForkTestLogNamedDecimalInt, error) { + event := new(BaseForkTestLogNamedDecimalInt) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogNamedDecimalUintIterator is returned from FilterLogNamedDecimalUint and is used to iterate over the raw logs and unpacked data for LogNamedDecimalUint events raised by the BaseForkTest contract. +type BaseForkTestLogNamedDecimalUintIterator struct { + Event *BaseForkTestLogNamedDecimalUint // 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 *BaseForkTestLogNamedDecimalUintIterator) 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(BaseForkTestLogNamedDecimalUint) + 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(BaseForkTestLogNamedDecimalUint) + 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 *BaseForkTestLogNamedDecimalUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogNamedDecimalUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogNamedDecimalUint represents a LogNamedDecimalUint event raised by the BaseForkTest contract. +type BaseForkTestLogNamedDecimalUint struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalUint is a free log retrieval operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogNamedDecimalUint(opts *bind.FilterOpts) (*BaseForkTestLogNamedDecimalUintIterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return &BaseForkTestLogNamedDecimalUintIterator{contract: _BaseForkTest.contract, event: "log_named_decimal_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalUint is a free log subscription operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogNamedDecimalUint(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogNamedDecimalUint) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_named_decimal_uint") + 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(BaseForkTestLogNamedDecimalUint) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_decimal_uint", 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 +} + +// ParseLogNamedDecimalUint is a log parse operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogNamedDecimalUint(log types.Log) (*BaseForkTestLogNamedDecimalUint, error) { + event := new(BaseForkTestLogNamedDecimalUint) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogNamedIntIterator is returned from FilterLogNamedInt and is used to iterate over the raw logs and unpacked data for LogNamedInt events raised by the BaseForkTest contract. +type BaseForkTestLogNamedIntIterator struct { + Event *BaseForkTestLogNamedInt // 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 *BaseForkTestLogNamedIntIterator) 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(BaseForkTestLogNamedInt) + 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(BaseForkTestLogNamedInt) + 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 *BaseForkTestLogNamedIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogNamedIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogNamedInt represents a LogNamedInt event raised by the BaseForkTest contract. +type BaseForkTestLogNamedInt struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedInt is a free log retrieval operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogNamedInt(opts *bind.FilterOpts) (*BaseForkTestLogNamedIntIterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return &BaseForkTestLogNamedIntIterator{contract: _BaseForkTest.contract, event: "log_named_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedInt is a free log subscription operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogNamedInt(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogNamedInt) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_named_int") + 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(BaseForkTestLogNamedInt) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_int", 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 +} + +// ParseLogNamedInt is a log parse operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogNamedInt(log types.Log) (*BaseForkTestLogNamedInt, error) { + event := new(BaseForkTestLogNamedInt) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogNamedStringIterator is returned from FilterLogNamedString and is used to iterate over the raw logs and unpacked data for LogNamedString events raised by the BaseForkTest contract. +type BaseForkTestLogNamedStringIterator struct { + Event *BaseForkTestLogNamedString // 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 *BaseForkTestLogNamedStringIterator) 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(BaseForkTestLogNamedString) + 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(BaseForkTestLogNamedString) + 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 *BaseForkTestLogNamedStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogNamedStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogNamedString represents a LogNamedString event raised by the BaseForkTest contract. +type BaseForkTestLogNamedString struct { + Key string + Val string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedString is a free log retrieval operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogNamedString(opts *bind.FilterOpts) (*BaseForkTestLogNamedStringIterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return &BaseForkTestLogNamedStringIterator{contract: _BaseForkTest.contract, event: "log_named_string", logs: logs, sub: sub}, nil +} + +// WatchLogNamedString is a free log subscription operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogNamedString(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogNamedString) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_named_string") + 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(BaseForkTestLogNamedString) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_string", 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 +} + +// ParseLogNamedString is a log parse operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogNamedString(log types.Log) (*BaseForkTestLogNamedString, error) { + event := new(BaseForkTestLogNamedString) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogNamedUintIterator is returned from FilterLogNamedUint and is used to iterate over the raw logs and unpacked data for LogNamedUint events raised by the BaseForkTest contract. +type BaseForkTestLogNamedUintIterator struct { + Event *BaseForkTestLogNamedUint // 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 *BaseForkTestLogNamedUintIterator) 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(BaseForkTestLogNamedUint) + 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(BaseForkTestLogNamedUint) + 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 *BaseForkTestLogNamedUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogNamedUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogNamedUint represents a LogNamedUint event raised by the BaseForkTest contract. +type BaseForkTestLogNamedUint struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedUint is a free log retrieval operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogNamedUint(opts *bind.FilterOpts) (*BaseForkTestLogNamedUintIterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return &BaseForkTestLogNamedUintIterator{contract: _BaseForkTest.contract, event: "log_named_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedUint is a free log subscription operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogNamedUint(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogNamedUint) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_named_uint") + 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(BaseForkTestLogNamedUint) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_uint", 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 +} + +// ParseLogNamedUint is a log parse operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogNamedUint(log types.Log) (*BaseForkTestLogNamedUint, error) { + event := new(BaseForkTestLogNamedUint) + if err := _BaseForkTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogStringIterator is returned from FilterLogString and is used to iterate over the raw logs and unpacked data for LogString events raised by the BaseForkTest contract. +type BaseForkTestLogStringIterator struct { + Event *BaseForkTestLogString // 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 *BaseForkTestLogStringIterator) 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(BaseForkTestLogString) + 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(BaseForkTestLogString) + 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 *BaseForkTestLogStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogString represents a LogString event raised by the BaseForkTest contract. +type BaseForkTestLogString struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogString is a free log retrieval operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogString(opts *bind.FilterOpts) (*BaseForkTestLogStringIterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_string") + if err != nil { + return nil, err + } + return &BaseForkTestLogStringIterator{contract: _BaseForkTest.contract, event: "log_string", logs: logs, sub: sub}, nil +} + +// WatchLogString is a free log subscription operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogString(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogString) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_string") + 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(BaseForkTestLogString) + if err := _BaseForkTest.contract.UnpackLog(event, "log_string", 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 +} + +// ParseLogString is a log parse operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogString(log types.Log) (*BaseForkTestLogString, error) { + event := new(BaseForkTestLogString) + if err := _BaseForkTest.contract.UnpackLog(event, "log_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogUintIterator is returned from FilterLogUint and is used to iterate over the raw logs and unpacked data for LogUint events raised by the BaseForkTest contract. +type BaseForkTestLogUintIterator struct { + Event *BaseForkTestLogUint // 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 *BaseForkTestLogUintIterator) 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(BaseForkTestLogUint) + 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(BaseForkTestLogUint) + 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 *BaseForkTestLogUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogUint represents a LogUint event raised by the BaseForkTest contract. +type BaseForkTestLogUint struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogUint is a free log retrieval operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogUint(opts *bind.FilterOpts) (*BaseForkTestLogUintIterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return &BaseForkTestLogUintIterator{contract: _BaseForkTest.contract, event: "log_uint", logs: logs, sub: sub}, nil +} + +// WatchLogUint is a free log subscription operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogUint(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogUint) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "log_uint") + 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(BaseForkTestLogUint) + if err := _BaseForkTest.contract.UnpackLog(event, "log_uint", 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 +} + +// ParseLogUint is a log parse operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogUint(log types.Log) (*BaseForkTestLogUint, error) { + event := new(BaseForkTestLogUint) + if err := _BaseForkTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// BaseForkTestLogsIterator is returned from FilterLogs and is used to iterate over the raw logs and unpacked data for Logs events raised by the BaseForkTest contract. +type BaseForkTestLogsIterator struct { + Event *BaseForkTestLogs // 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 *BaseForkTestLogsIterator) 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(BaseForkTestLogs) + 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(BaseForkTestLogs) + 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 *BaseForkTestLogsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BaseForkTestLogsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BaseForkTestLogs represents a Logs event raised by the BaseForkTest contract. +type BaseForkTestLogs struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogs is a free log retrieval operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_BaseForkTest *BaseForkTestFilterer) FilterLogs(opts *bind.FilterOpts) (*BaseForkTestLogsIterator, error) { + + logs, sub, err := _BaseForkTest.contract.FilterLogs(opts, "logs") + if err != nil { + return nil, err + } + return &BaseForkTestLogsIterator{contract: _BaseForkTest.contract, event: "logs", logs: logs, sub: sub}, nil +} + +// WatchLogs is a free log subscription operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_BaseForkTest *BaseForkTestFilterer) WatchLogs(opts *bind.WatchOpts, sink chan<- *BaseForkTestLogs) (event.Subscription, error) { + + logs, sub, err := _BaseForkTest.contract.WatchLogs(opts, "logs") + 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(BaseForkTestLogs) + if err := _BaseForkTest.contract.UnpackLog(event, "logs", 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 +} + +// ParseLogs is a log parse operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_BaseForkTest *BaseForkTestFilterer) ParseLogs(log types.Log) (*BaseForkTestLogs, error) { + event := new(BaseForkTestLogs) + if err := _BaseForkTest.contract.UnpackLog(event, "logs", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/erc20custodyfork.t.sol/erc20custodyforktest.go b/pkg/erc20custodyfork.t.sol/erc20custodyforktest.go new file mode 100644 index 000000000..a01288468 --- /dev/null +++ b/pkg/erc20custodyfork.t.sol/erc20custodyforktest.go @@ -0,0 +1,3923 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package erc20custodyfork + +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 +) + +// StdInvariantFuzzArtifactSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzArtifactSelector struct { + Artifact string + Selectors [][4]byte +} + +// StdInvariantFuzzInterface is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzInterface struct { + Addr common.Address + Artifacts []string +} + +// StdInvariantFuzzSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzSelector struct { + Addr common.Address + Selectors [][4]byte +} + +// ERC20CustodyForkTestMetaData contains all meta data concerning the ERC20CustodyForkTest contract. +var ERC20CustodyForkTestMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"ARBITRUM_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"AVALANCHE_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BASE_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BSC_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ETHEREUM_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"POLYGON_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ZETACHAIN_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"chains\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"forkId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"contractAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"rpcUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCanSwitchForks\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForkIdDiffer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testUpgradeGatewayOnAllChains\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false}]", + Bin: "0x60806040819052600c8054600160ff199182168117909255601f8054909116909117905563f877cb1960e01b90526020608452601060a4526f115512115491555357d49410d7d5549360821b60c4525f805160206163fc83398151915263f877cb1960e45f60405180830381865afa15801561007d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100a49190810190610471565b6020906100b190826105a5565b5060405163f877cb1960e01b815260206004820152600b60248201526a1094d0d7d49410d7d5549360aa1b60448201525f805160206163fc8339815191529063f877cb19906064015f60405180830381865afa158015610113573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261013a9190810190610471565b60219061014790826105a5565b5060405163f877cb1960e01b815260206004820152600f60248201526e1413d31651d3d397d49410d7d55493608a1b60448201525f805160206163fc8339815191529063f877cb19906064015f60405180830381865afa1580156101ad573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101d49190810190610471565b6022906101e190826105a5565b5060405163f877cb1960e01b815260206004820152600c60248201526b109054d157d49410d7d5549360a21b60448201525f805160206163fc8339815191529063f877cb19906064015f60405180830381865afa158015610244573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261026b9190810190610471565b60239061027890826105a5565b5060405163f877cb1960e01b815260206004820152601060248201526f105490925514955357d49410d7d5549360821b60448201525f805160206163fc8339815191529063f877cb19906064015f60405180830381865afa1580156102df573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526103069190810190610471565b60249061031390826105a5565b5060405163f877cb1960e01b815260206004820152601160248201527010559053105390d21157d49410d7d55493607a1b60448201525f805160206163fc8339815191529063f877cb19906064015f60405180830381865afa15801561037b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526103a29190810190610471565b6025906103af90826105a5565b5060405163f877cb1960e01b81526020600482015260116024820152701691551050d210525397d49410d7d55493607a1b60448201525f805160206163fc8339815191529063f877cb19906064015f60405180830381865afa158015610417573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261043e9190810190610471565b60269061044b90826105a5565b50348015610457575f80fd5b5061065f565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610481575f80fd5b81516001600160401b03811115610496575f80fd5b8201601f810184136104a6575f80fd5b80516001600160401b038111156104bf576104bf61045d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104ed576104ed61045d565b604052818152828201602001861015610504575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b600181811c9082168061053557607f821691505b60208210810361055357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156105a057805f5260205f20601f840160051c8101602085101561057e5750805b601f840160051c820191505b8181101561059d575f815560010161058a565b50505b505050565b81516001600160401b038111156105be576105be61045d565b6105d2816105cc8454610521565b84610559565b6020601f821160018114610604575f83156105ed5750848201515b5f19600385901b1c1916600184901b17845561059d565b5f84815260208120601f198516915b828110156106335787850151825560209485019460019092019101610613565b508482101561065057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b615d908061066c5f395ff3fe608060405234801561000f575f80fd5b506004361061018f575f3560e01c806385226c81116100dd578063b0464fdc11610088578063ca74749311610063578063ca747493146102c0578063e20c9f71146102c8578063fa7626d4146102d0575f80fd5b8063b0464fdc14610298578063b5508aa9146102a0578063ba414fa6146102a8575f80fd5b8063916a17c6116100b8578063916a17c61461027357806394897fb1146102885780639d3c516114610290575f80fd5b806385226c811461024e57806388de7b87146102635780638cf03dbc1461026b575f80fd5b80633f7286f41161013d57806366d9a9a01161011857806366d9a9a014610229578063699370b01461023e5780636cf73eea14610246575f80fd5b80633f7286f4146101f55780633f8f61dd146101fd578063550325b514610205575f80fd5b80632ade38801161016d5780632ade3880146101c35780632e8ade6e146101d85780633e5e3c23146101ed575f80fd5b806303b965ec146101935780630a9254e41461019d5780631ed7831c146101a5575b5f80fd5b61019b6102dd565b005b61019b610597565b6101ad6109ad565b6040516101ba9190612c09565b60405180910390f35b6101cb610a0d565b6040516101ba9190612ca0565b6101e0610b49565b6040516101ba9190612da5565b6101ad610bd5565b6101ad610c33565b6101e0610c91565b610218610213366004612db7565b610c9e565b6040516101ba959493929190612dce565b610231610df8565b6040516101ba9190612e7e565b6101e0610f71565b61019b610f7e565b610256610ff0565b6040516101ba9190612f1a565b6101e06110bb565b61019b6110c8565b61027b611212565b6040516101ba9190612f8f565b6101e0611308565b6101e0611315565b61027b611322565b610256611418565b6102b06114e3565b60405190151581526020016101ba565b6101e06115b3565b6101ad6115c0565b601f546102b09060ff1681565b5f5b602e54811015610594576104066040518060400160405280601781526020017f0a3d3d3d2054657374696e672075706772616465206f6e000000000000000000815250602e838154811061033557610335613024565b905f5260205f209060050201600401805461034f90613051565b80601f016020809104026020016040519081016040528092919081815260200182805461037b90613051565b80156103c65780601f1061039d576101008083540402835291602001916103c6565b820191905f5260205f20905b8154815290600101906020018083116103a957829003601f168201915b50505050506040518060400160405280600381526020017f3d3d3d000000000000000000000000000000000000000000000000000000000081525061161e565b61058c602e828154811061041c5761041c613024565b5f9182526020918290206040805160a08101825260059093029091018054835260018101546001600160a01b039081169484019490945260028101549093169082015260038201805491929160608401919061047790613051565b80601f01602080910402602001604051908101604052809291908181526020018280546104a390613051565b80156104ee5780601f106104c5576101008083540402835291602001916104ee565b820191905f5260205f20905b8154815290600101906020018083116104d157829003601f168201915b5050505050815260200160048201805461050790613051565b80601f016020809104026020016040519081016040528092919081815260200182805461053390613051565b801561057e5780601f106105555761010080835404028352916020019161057e565b820191905f5260205f20905b81548152906001019060200180831161056157829003601f168201915b5050505050815250506116b6565b6001016102df565b50565b6040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba3498906105e8906020906004016130a2565b6020604051808303815f875af1158015610604573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106289190613147565b6027556040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba34989061067c906021906004016130a2565b6020604051808303815f875af1158015610698573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc9190613147565b6028556040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba349890610710906022906004016130a2565b6020604051808303815f875af115801561072c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107509190613147565b6029556040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba3498906107a4906023906004016130a2565b6020604051808303815f875af11580156107c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e49190613147565b602a556040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba349890610838906024906004016130a2565b6020604051808303815f875af1158015610854573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108789190613147565b602b556040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba3498906108cc906025906004016130a2565b6020604051808303815f875af11580156108e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090c9190613147565b602c556040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba349890610960906026906004016130a2565b6020604051808303815f875af115801561097c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a09190613147565b602d556109ab611dcc565b565b60606016805480602002602001604051908101604052809291908181526020018280548015610a0357602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116109e5575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015610b40575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610b29578382905f5260205f20018054610a9e90613051565b80601f0160208091040260200160405190810160405280929190818152602001828054610aca90613051565b8015610b155780601f10610aec57610100808354040283529160200191610b15565b820191905f5260205f20905b815481529060010190602001808311610af857829003601f168201915b505050505081526020019060010190610a81565b505050508152505081526020019060010190610a30565b50505050905090565b60238054610b5690613051565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8290613051565b8015610bcd5780601f10610ba457610100808354040283529160200191610bcd565b820191905f5260205f20905b815481529060010190602001808311610bb057829003601f168201915b505050505081565b60606018805480602002602001604051908101604052809291908181526020018280548015610a0357602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116109e5575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610a0357602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116109e5575050505050905090565b60268054610b5690613051565b602e8181548110610cad575f80fd5b5f91825260209091206005909102018054600182015460028301546003840180549395506001600160a01b03928316949290911692610ceb90613051565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1790613051565b8015610d625780601f10610d3957610100808354040283529160200191610d62565b820191905f5260205f20905b815481529060010190602001808311610d4557829003601f168201915b505050505090806004018054610d7790613051565b80601f0160208091040260200160405190810160405280929190818152602001828054610da390613051565b8015610dee5780601f10610dc557610100808354040283529160200191610dee565b820191905f5260205f20905b815481529060010190602001808311610dd157829003601f168201915b5050505050905085565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015610b40578382905f5260205f2090600202016040518060400160405290815f82018054610e4b90613051565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7790613051565b8015610ec25780601f10610e9957610100808354040283529160200191610ec2565b820191905f5260205f20905b815481529060010190602001808311610ea557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610f5957602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610f065790505b50505050508152505081526020019060010190610e1b565b60248054610b5690613051565b60285460275403610f9157610f9161315e565b60295460285403610fa457610fa461315e565b602a5460295403610fb757610fb761315e565b602b54602a5403610fca57610fca61315e565b602c54602b5403610fdd57610fdd61315e565b602d54602c54036109ab576109ab61315e565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015610b40578382905f5260205f2001805461103090613051565b80601f016020809104026020016040519081016040528092919081815260200182805461105c90613051565b80156110a75780601f1061107e576101008083540402835291602001916110a7565b820191905f5260205f20905b81548152906001019060200180831161108a57829003601f168201915b505050505081526020019060010190611013565b60218054610b5690613051565b5f5b602e5481101561059457602e8054737109709ecfa91a80626ff3989d68f67f5b1dd12d91639ebf6827918490811061110457611104613024565b905f5260205f2090600502015f01546040518263ffffffff1660e01b815260040161113191815260200190565b5f604051808303815f87803b158015611148575f80fd5b505af115801561115a573d5f803e3d5ffd5b5050505061120a7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b0316632f103f226040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e39190613147565b602e83815481106111f6576111f6613024565b905f5260205f2090600502015f015461283c565b6001016110ca565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015610b40575f8481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156112f057602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161129d5790505b50505050508152505081526020019060010190611235565b60228054610b5690613051565b60208054610b5690613051565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015610b40575f8481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561140057602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116113ad5790505b50505050508152505081526020019060010190611345565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015610b40578382905f5260205f2001805461145890613051565b80601f016020809104026020016040519081016040528092919081815260200182805461148490613051565b80156114cf5780601f106114a6576101008083540402835291602001916114cf565b820191905f5260205f20905b8154815290600101906020018083116114b257829003601f168201915b50505050508152602001906001019061143b565b6008545f9060ff16156114fa575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa158015611588573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ac9190613147565b1415905090565b60258054610b5690613051565b60606015805480602002602001604051908101604052809291908181526020018280548015610a0357602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116109e5575050505050905090565b6116b18383836040516024016116369392919061318b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2ced7cef000000000000000000000000000000000000000000000000000000001790526128c0565b505050565b80516040517f9ebf68270000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d90639ebf6827906024015f604051808303815f87803b15801561171c575f80fd5b505af115801561172e573d5f803e3d5ffd5b505050505f816020015190505f816001600160a01b031663116191b66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611777573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179b91906131e1565b90505f826001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117fe91906131e1565b90505f836001600160a01b031663252f07bf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561183d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061186191906131fc565b60408681015190517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b1580156118d5575f80fd5b505af11580156118e7573d5f803e3d5ffd5b505050505f6040516118f890612bfc565b604051809103905ff080158015611911573d5f803e3d5ffd5b50604080517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015260248201929092525f6044820152919250861690634f1ef286906064015f604051808303815f87803b15801561197d575f80fd5b505af115801561198f573d5f803e3d5ffd5b505050505f61199d866128c9565b90506119df81836040518060400160405280600f81526020017f55706772616465206661696c65642e000000000000000000000000000000000081525061298d565b611a1e6040518060400160405280601981526020017f5375636365737366756c6c7920757067726164656420746f3a0000000000000081525082612a12565b611abd866001600160a01b031663116191b66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a8191906131e1565b866040518060400160405280601881526020017f476174657761792061646472657373206368616e6765642e000000000000000081525061298d565b611b5c866001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa158015611afc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b2091906131e1565b856040518060400160405280601481526020017f5453532061646472657373206368616e6765642e00000000000000000000000081525061298d565b611bfb866001600160a01b031663252f07bf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bbf91906131fc565b846040518060400160405280601881526020017f537570706f727473206c6567616379206368616e6765642e0000000000000000815250612aa7565b611c396040518060400160405280601d81526020017f5374617465207072657365727665642061667465722075706772616465000000815250612afb565b5f866001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c9a9190613147565b6040808a015190517f91d14854000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0391821660248201529192505f91908916906391d1485490604401602060405180830381865afa158015611d09573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d2d91906131fc565b9050611d51816040518060600160405280602c8152602001615d2f602c9139612b8a565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611dab575f80fd5b505af1158015611dbd573d5f803e3d5ffd5b50505050505050505050505050565b602e6040518060a001604052806027548152602001730bad40d9e9c369f2223c835e108f43a45fd223b56001600160a01b0316815260200173aeb6ddb7708467814d557e340283248be8e431246001600160a01b0316815260200160208054611e3490613051565b80601f0160208091040260200160405190810160405280929190818152602001828054611e6090613051565b8015611eab5780601f10611e8257610100808354040283529160200191611eab565b820191905f5260205f20905b815481529060010190602001808311611e8e57829003601f168201915b5050509183525050604080518082018252600881527f457468657265756d000000000000000000000000000000000000000000000000602082810191909152928301528354600181810186555f9586529483902084516005909202019081559183015193820180546001600160a01b039586167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155908301516002830180549190951691161790925560608101519091906003820190611f719082613293565b5060808201516004820190611f869082613293565b505050602e6040518060a001604052806028548152602001730bad40d9e9c369f2223c835e108f43a45fd223b56001600160a01b0316815260200173af28a257d292e7f0e531073f70a175b57e0261a86001600160a01b0316815260200160218054611ff190613051565b80601f016020809104026020016040519081016040528092919081815260200182805461201d90613051565b80156120685780601f1061203f57610100808354040283529160200191612068565b820191905f5260205f20905b81548152906001019060200180831161204b57829003601f168201915b505050918352505060408051808201825260038082527f4253430000000000000000000000000000000000000000000000000000000000602080840191909152938401919091528454600180820187555f9687529584902085516005909202019081559284015194830180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b0397881617909155918401516002840180549093169516949094179055606082015191929091908201906121339082613293565b50608082015160048201906121489082613293565b505050602e6040518060a001604052806029548152602001730bad40d9e9c369f2223c835e108f43a45fd223b56001600160a01b03168152602001737828f92e7d79e141189f24c98acef71bc07bad3f6001600160a01b03168152602001602280546121b390613051565b80601f01602080910402602001604051908101604052809291908181526020018280546121df90613051565b801561222a5780601f106122015761010080835404028352916020019161222a565b820191905f5260205f20905b81548152906001019060200180831161220d57829003601f168201915b5050509183525050604080518082018252600781527f506f6c79676f6e00000000000000000000000000000000000000000000000000602082810191909152928301528354600181810186555f9586529483902084516005909202019081559183015193820180546001600160a01b039586167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091559083015160028301805491909516911617909255606081015190919060038201906122f09082613293565b50608082015160048201906123059082613293565b505050602e6040518060a00160405280602a548152602001730bad40d9e9c369f2223c835e108f43a45fd223b56001600160a01b0316815260200173f43cf8b3f3d22d4cc33f964c59076eab2f8a108e6001600160a01b031681526020016023805461237090613051565b80601f016020809104026020016040519081016040528092919081815260200182805461239c90613051565b80156123e75780601f106123be576101008083540402835291602001916123e7565b820191905f5260205f20905b8154815290600101906020018083116123ca57829003601f168201915b5050509183525050604080518082018252600481527f4261736500000000000000000000000000000000000000000000000000000000602082810191909152928301528354600181810186555f9586529483902084516005909202019081559183015193820180546001600160a01b039586167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091559083015160028301805491909516911617909255606081015190919060038201906124ad9082613293565b50608082015160048201906124c29082613293565b505050602e6040518060a00160405280602b54815260200173ece33274237e6422f2668ed7dee5901b16336aa06001600160a01b0316815260200173de3fb63723f0eeed8967ff9124e1c3ba89871b036001600160a01b031681526020016024805461252d90613051565b80601f016020809104026020016040519081016040528092919081815260200182805461255990613051565b80156125a45780601f1061257b576101008083540402835291602001916125a4565b820191905f5260205f20905b81548152906001019060200180831161258757829003601f168201915b5050509183525050604080518082018252600881527f417262697472756d000000000000000000000000000000000000000000000000602082810191909152928301528354600181810186555f9586529483902084516005909202019081559183015193820180546001600160a01b039586167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915590830151600283018054919095169116179092556060810151909190600382019061266a9082613293565b506080820151600482019061267f9082613293565b505050602e6040518060a00160405280602c54815260200173ece33274237e6422f2668ed7dee5901b16336aa06001600160a01b0316815260200173de3fb63723f0eeed8967ff9124e1c3ba89871b036001600160a01b03168152602001602580546126ea90613051565b80601f016020809104026020016040519081016040528092919081815260200182805461271690613051565b80156127615780601f1061273857610100808354040283529160200191612761565b820191905f5260205f20905b81548152906001019060200180831161274457829003601f168201915b5050509183525050604080518082018252600981527f4176616c616e6368650000000000000000000000000000000000000000000000602082810191909152928301528354600181810186555f9586529483902084516005909202019081559183015193820180546001600160a01b039586167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091559083015160028301805491909516911617909255606081015190919060038201906128279082613293565b50608082015160048201906116b19082613293565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b5f6040518083038186803b1580156128a6575f80fd5b505afa1580156128b8573d5f803e3d5ffd5b505050505050565b61059481612bdc565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc602482018190525f91737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa158015612962573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129869190613147565b9392505050565b6040517f2f2769d1000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d90632f2769d1906129e1908690869086906004016133aa565b5f6040518083038186803b1580156129f7575f80fd5b505afa158015612a09573d5f803e3d5ffd5b50505050505050565b612aa38282604051602401612a289291906133e3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af333000000000000000000000000000000000000000000000000000000001790526128c0565b5050565b6040517f4db19e7e000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634db19e7e906129e19086908690869060040161340d565b61059481604051602401612b0f9190612da5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526128c0565b6040517fa34edc03000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a34edc0390612890908590859060040161342f565b80516a636f6e736f6c652e6c6f67602083015f808483855afa5050505050565b6128dd8061345283390190565b602080825282518282018190525f918401906040840190835b81811015612c495783516001600160a01b0316835260209384019390920191600101612c22565b509095945050505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015612d99577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b8801810191908801905f5b81811015612d7f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352612d69848651612c54565b6020958601959094509290920191600101612d2f565b509197505050602094850194929092019150600101612cc6565b50929695505050505050565b602081525f6129866020830184612c54565b5f60208284031215612dc7575f80fd5b5035919050565b8581526001600160a01b03851660208201526001600160a01b038416604082015260a060608201525f612e0460a0830185612c54565b8281036080840152612e168185612c54565b98975050505050505050565b5f8151808452602084019350602083015f5b82811015612e745781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101612e34565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015612d99577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752612ee86040880182612c54565b9050602082015191508681036020880152612f038183612e22565b965050506020938401939190910190600101612ea4565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015612d99577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452612f7a858351612c54565b94506020938401939190910190600101612f40565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015612d99577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261300e6040870182612e22565b9550506020938401939190910190600101612fb5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600181811c9082168061306557607f821691505b60208210810361309c577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b602081525f8083546130b381613051565b806020860152600182165f81146130d1576001811461310b5761313c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083166040870152604082151560051b870101935061313c565b865f5260205f205f5b8381101561313357815488820160400152600190910190602001613114565b87016040019450505b509195945050505050565b5f60208284031215613157575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b606081525f61319d6060830186612c54565b82810360208401526131af8186612c54565b905082810360408401526131c38185612c54565b9695505050505050565b6001600160a01b0381168114610594575f80fd5b5f602082840312156131f1575f80fd5b8151612986816131cd565b5f6020828403121561320c575f80fd5b81518015158114612986575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b601f8211156116b157805f5260205f20601f840160051c8101602085101561326d5750805b601f840160051c820191505b8181101561328c575f8155600101613279565b5050505050565b815167ffffffffffffffff8111156132ad576132ad61321b565b6132c1816132bb8454613051565b84613248565b6020601f821160018114613312575f83156132dc5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b17845561328c565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b8281101561335f578785015182556020948501946001909201910161333f565b508482101561339b57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b03841681526001600160a01b0383166020820152606060408201525f6133da6060830184612c54565b95945050505050565b604081525f6133f56040830185612c54565b90506001600160a01b03831660208301529392505050565b83151581528215156020820152606060408201525f6133da6060830184612c54565b8215158152604060208201525f6134496040830184612c54565b94935050505056fe60a0604052306080523480156012575f80fd5b506080516128a46100395f395f818161176001528181611789015261196001526128a45ff3fe6080604052600436106101ba575f3560e01c806391d14854116100f2578063ad3cb1cc11610092578063d9caed1211610062578063d9caed12146105d0578063e609055e146105ef578063e63ab1e91461060e578063eab103df14610641575f80fd5b8063ad3cb1cc1461050f578063c0c53b8b14610564578063d547741f14610583578063d936547e146105a2575f80fd5b80639a590427116100cd5780639a5904271461049f5780639b19251a146104be578063a217fddf146104dd578063ad081852146104f0575f80fd5b806391d14854146103fe578063950837aa1461046157806399a3c35614610480575f80fd5b80634f1ef2861161015d5780635b112591116101385780635b112591146103625780635c975abb146103815780638456cb59146103b757806385f438c1146103cb575f80fd5b80634f1ef2861461030857806352d1902d1461031b578063570618e11461032f575f80fd5b8063252f07bf11610198578063252f07bf146102835780632f2ff15d146102b457806336568abe146102d55780633f4ba83a146102f4575f80fd5b806301ffc9a7146101be578063116191b6146101f2578063248a9ca314610228575b5f80fd5b3480156101c9575f80fd5b506101dd6101d8366004612110565b610660565b60405190151581526020015b60405180910390f35b3480156101fd575f80fd5b505f54610210906001600160a01b031681565b6040516001600160a01b0390911681526020016101e9565b348015610233575f80fd5b5061027561024236600461214f565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101e9565b34801561028e575f80fd5b506002546101dd9074010000000000000000000000000000000000000000900460ff1681565b3480156102bf575f80fd5b506102d36102ce36600461217a565b6106f8565b005b3480156102e0575f80fd5b506102d36102ef36600461217a565b610741565b3480156102ff575f80fd5b506102d3610792565b6102d36103163660046121d5565b6107c7565b348015610326575f80fd5b506102756107e6565b34801561033a575f80fd5b506102757f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a81565b34801561036d575f80fd5b50600254610210906001600160a01b031681565b34801561038c575f80fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101dd565b3480156103c2575f80fd5b506102d3610814565b3480156103d6575f80fd5b506102757f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e481565b348015610409575f80fd5b506101dd61041836600461217a565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561046c575f80fd5b506102d361047b3660046122d8565b610846565b34801561048b575f80fd5b506102d361049a366004612338565b6109d8565b3480156104aa575f80fd5b506102d36104b93660046122d8565b610b7e565b3480156104c9575f80fd5b506102d36104d83660046122d8565b610c31565b3480156104e8575f80fd5b506102755f81565b3480156104fb575f80fd5b506102d361050a3660046123d4565b610cea565b34801561051a575f80fd5b506105576040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101e99190612459565b34801561056f575f80fd5b506102d361057e3660046124ac565b610e54565b34801561058e575f80fd5b506102d361059d36600461217a565b611176565b3480156105ad575f80fd5b506101dd6105bc3660046122d8565b60016020525f908152604090205460ff1681565b3480156105db575f80fd5b506102d36105ea3660046124f4565b6111b9565b3480156105fa575f80fd5b506102d3610609366004612532565b6112cf565b348015610619575f80fd5b506102757f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561064c575f80fd5b506102d361065b3660046125ac565b611514565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806106f257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461073181611569565b61073b8383611573565b50505050565b6001600160a01b0381163314610783576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61078d828261163f565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6107bc81611569565b6107c46116e3565b50565b6107cf611755565b6107d882611827565b6107e28282611831565b5050565b5f6107ef611955565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61083e81611569565b6107c46119b7565b5f61085081611569565b6001600160a01b038216610890576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546108c7907f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4906001600160a01b031661163f565b506002546108ff907f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a906001600160a01b031661163f565b5061092a7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e483611573565b506109557f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a83611573565b50600254604080516001600160a01b03928316815291841660208301527f4d3470c839d3c4dd664eec934b920c12fe0966e3185103dd40149496815df2b6910160405180910390a150600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6109e0611a12565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610a0a81611569565b610a12611a93565b6001600160a01b0386165f9081526001602052604090205460ff16610a63576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f54610a7c906001600160a01b03888116911687611aef565b5f546040517faa0c0fc10000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063aa0c0fc190610ace9089908b908a908a908a908a906004016126bf565b5f604051808303815f87803b158015610ae5575f80fd5b505af1158015610af7573d5f803e3d5ffd5b50505050856001600160a01b0316876001600160a01b03167f7b53ec10a80164e60591c43d9c222e9354886981b880a3fba19c9ceb77fb972187878787604051610b449493929190612715565b60405180910390a350610b7660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610ba881611569565b6001600160a01b038216610be8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382165f81815260016020526040808220805460ff19169055517f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da467919190a25050565b7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a610c5b81611569565b6001600160a01b038216610c9b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382165f818152600160208190526040808320805460ff1916909217909155517faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a549190a25050565b610cf2611a12565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4610d1c81611569565b610d24611a93565b6001600160a01b0385165f9081526001602052604090205460ff16610d75576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f54610d8e906001600160a01b03878116911686611aef565b5f546040517f7bbe9afa0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690637bbe9afa90610de0908a9089908b908a908a908a9060040161274b565b5f604051808303815f87803b158015610df7575f80fd5b505af1158015610e09573d5f803e3d5ffd5b50505050846001600160a01b0316866001600160a01b03167f6478cbb6e28c0823c691dfd74c01c985634faddd4c401b990fe4ec26277ea8d5868686604051610b44939291906127a9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f81158015610e9e5750825b90505f8267ffffffffffffffff166001148015610eba5750303b155b905081158015610ec8575080155b15610eff576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f605784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0388161580610f7d57506001600160a01b038716155b80610f8f57506001600160a01b038616155b15610fc6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fce611b89565b610fd6611b91565b610fde611b89565b610fe6611ba1565b5f80546001600160a01b03808b167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617835560028054918b16919092161790556110339087611573565b5061105e7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611573565b506110897f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a88611573565b506110b47f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e488611573565b506110df7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a87611573565b5061110a7f8619cecd8b9e095ab43867f5b69d492180450fe862e6b50bfbfb24b75dd84c8a88611573565b50831561116c5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546111af81611569565b61073b838361163f565b6111c1611a12565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e46111eb81611569565b6111f3611a93565b6001600160a01b0383165f9081526001602052604090205460ff16611244576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112586001600160a01b0384168584611aef565b826001600160a01b0316846001600160a01b03167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb8460405161129d91815260200190565b60405180910390a35061078d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6112d7611a12565b6112df611a93565b60025474010000000000000000000000000000000000000000900460ff16611333576040517f73cba66300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384165f9081526001602052604090205460ff16611384576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156113e1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140591906127c2565b905061141c6001600160a01b038616333087611bb1565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038616907f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae9089908990859085906370a0823190602401602060405180830381865afa1580156114a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114c591906127c2565b6114cf91906127d9565b87876040516114e2959493929190612811565b60405180910390a250610b7660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f61151e81611569565b506002805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6107c48133611bea565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611636575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556115ec3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506106f2565b5f9150506106f2565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611636575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506106f2565b6116eb611c76565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806117ee57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117e27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611825576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f6107e281611569565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118a9575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526118a6918101906127c2565b60015b6118ef576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461194b576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016118e6565b61078d8383611cd1565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611825576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119bf611a93565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611737565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611a8d576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611825576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516001600160a01b0383811660248301526044820183905261078d91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d26565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611825611da0565b611b99611da0565b611825611e07565b611ba9611da0565b611825611e0f565b6040516001600160a01b03848116602483015283811660448301526064820183905261073b9186918216906323b872dd90608401611b1c565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166107e2576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016118e6565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611825576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cda82611e42565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611d1e5761078d8282611ee9565b6107e2611f5b565b5f611d3a6001600160a01b03841683611f93565b905080515f14158015611d5e575080806020019051810190611d5c919061283d565b155b1561078d576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016118e6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611825576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b63611da0565b611e17611da0565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b806001600160a01b03163b5f03611e90576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016118e6565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051611f059190612858565b5f60405180830381855af49150503d805f8114611f3d576040519150601f19603f3d011682016040523d82523d5f602084013e611f42565b606091505b5091509150611f52858383611fa7565b95945050505050565b3415611825576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060611fa083835f61201c565b9392505050565b606082611fbc57611fb7826120ce565b611fa0565b8151158015611fd357506001600160a01b0384163b155b15612015576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016118e6565b5092915050565b60608147101561205a576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016118e6565b5f80856001600160a01b031684866040516120759190612858565b5f6040518083038185875af1925050503d805f81146120af576040519150601f19603f3d011682016040523d82523d5f602084013e6120b4565b606091505b50915091506120c4868383611fa7565b9695505050505050565b8051156120de5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60208284031215612120575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611fa0575f80fd5b5f6020828403121561215f575f80fd5b5035919050565b6001600160a01b03811681146107c4575f80fd5b5f806040838503121561218b575f80fd5b82359150602083013561219d81612166565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80604083850312156121e6575f80fd5b82356121f181612166565b9150602083013567ffffffffffffffff81111561220c575f80fd5b8301601f8101851361221c575f80fd5b803567ffffffffffffffff811115612236576122366121a8565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156122a2576122a26121a8565b6040528181528282016020018710156122b9575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f602082840312156122e8575f80fd5b8135611fa081612166565b5f8083601f840112612303575f80fd5b50813567ffffffffffffffff81111561231a575f80fd5b602083019150836020828501011115612331575f80fd5b9250929050565b5f805f805f8060a0878903121561234d575f80fd5b863561235881612166565b9550602087013561236881612166565b945060408701359350606087013567ffffffffffffffff81111561238a575f80fd5b61239689828a016122f3565b909450925050608087013567ffffffffffffffff8111156123b5575f80fd5b87016080818a0312156123c6575f80fd5b809150509295509295509295565b5f805f805f8086880360a08112156123ea575f80fd5b60208112156123f7575f80fd5b50869550602087013561240981612166565b9450604087013561241981612166565b935060608701359250608087013567ffffffffffffffff81111561243b575f80fd5b61244789828a016122f3565b979a9699509497509295939492505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f805f606084860312156124be575f80fd5b83356124c981612166565b925060208401356124d981612166565b915060408401356124e981612166565b809150509250925092565b5f805f60608486031215612506575f80fd5b833561251181612166565b9250602084013561252181612166565b929592945050506040919091013590565b5f805f805f8060808789031215612547575f80fd5b863567ffffffffffffffff81111561255d575f80fd5b61256989828a016122f3565b909750955050602087013561257d81612166565b935060408701359250606087013567ffffffffffffffff81111561243b575f80fd5b80151581146107c4575f80fd5b5f602082840312156125bc575f80fd5b8135611fa08161259f565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f813561261a81612166565b6001600160a01b03168352602082013561263381612166565b6001600160a01b03166020840152604082810135908401526060820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1018112612680575f80fd5b820160208101903567ffffffffffffffff81111561269c575f80fd5b8036038213156126aa575f80fd5b60806060860152611f526080860182846125c7565b6001600160a01b03871681526001600160a01b038616602082015284604082015260a060608201525f6126f660a0830185876125c7565b8281036080840152612708818561260e565b9998505050505050505050565b848152606060208201525f61272e6060830185876125c7565b8281036040840152612740818561260e565b979650505050505050565b5f873561275781612166565b6001600160a01b0381168352506001600160a01b03871660208301526001600160a01b038616604083015284606083015260a0608083015261279d60a0830184866125c7565b98975050505050505050565b838152604060208201525f611f526040830184866125c7565b5f602082840312156127d2575f80fd5b5051919050565b818103818111156106f2577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b606081525f6128246060830187896125c7565b856020840152828103604084015261279d8185876125c7565b5f6020828403121561284d575f80fd5b8151611fa08161259f565b5f82518060208501845e5f92019182525091905056fea2646970667358221220351094cc68607c5ad4987c06498e7a8aea7ab63f723ed104368663924dd0e8b864736f6c634300081a003341646d696e206c6f73742044454641554c545f41444d494e5f524f4c4520616674657220757067726164652ea2646970667358221220f6b4f7059773cd0fb43ec4707dcd480f0120b5d53ec3008e348587936830003e64736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d", +} + +// ERC20CustodyForkTestABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20CustodyForkTestMetaData.ABI instead. +var ERC20CustodyForkTestABI = ERC20CustodyForkTestMetaData.ABI + +// ERC20CustodyForkTestBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC20CustodyForkTestMetaData.Bin instead. +var ERC20CustodyForkTestBin = ERC20CustodyForkTestMetaData.Bin + +// DeployERC20CustodyForkTest deploys a new Ethereum contract, binding an instance of ERC20CustodyForkTest to it. +func DeployERC20CustodyForkTest(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20CustodyForkTest, error) { + parsed, err := ERC20CustodyForkTestMetaData.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(ERC20CustodyForkTestBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ERC20CustodyForkTest{ERC20CustodyForkTestCaller: ERC20CustodyForkTestCaller{contract: contract}, ERC20CustodyForkTestTransactor: ERC20CustodyForkTestTransactor{contract: contract}, ERC20CustodyForkTestFilterer: ERC20CustodyForkTestFilterer{contract: contract}}, nil +} + +// ERC20CustodyForkTest is an auto generated Go binding around an Ethereum contract. +type ERC20CustodyForkTest struct { + ERC20CustodyForkTestCaller // Read-only binding to the contract + ERC20CustodyForkTestTransactor // Write-only binding to the contract + ERC20CustodyForkTestFilterer // Log filterer for contract events +} + +// ERC20CustodyForkTestCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC20CustodyForkTestCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20CustodyForkTestTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC20CustodyForkTestTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20CustodyForkTestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC20CustodyForkTestFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20CustodyForkTestSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC20CustodyForkTestSession struct { + Contract *ERC20CustodyForkTest // 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 +} + +// ERC20CustodyForkTestCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC20CustodyForkTestCallerSession struct { + Contract *ERC20CustodyForkTestCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC20CustodyForkTestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC20CustodyForkTestTransactorSession struct { + Contract *ERC20CustodyForkTestTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20CustodyForkTestRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC20CustodyForkTestRaw struct { + Contract *ERC20CustodyForkTest // Generic contract binding to access the raw methods on +} + +// ERC20CustodyForkTestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC20CustodyForkTestCallerRaw struct { + Contract *ERC20CustodyForkTestCaller // Generic read-only contract binding to access the raw methods on +} + +// ERC20CustodyForkTestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC20CustodyForkTestTransactorRaw struct { + Contract *ERC20CustodyForkTestTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC20CustodyForkTest creates a new instance of ERC20CustodyForkTest, bound to a specific deployed contract. +func NewERC20CustodyForkTest(address common.Address, backend bind.ContractBackend) (*ERC20CustodyForkTest, error) { + contract, err := bindERC20CustodyForkTest(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC20CustodyForkTest{ERC20CustodyForkTestCaller: ERC20CustodyForkTestCaller{contract: contract}, ERC20CustodyForkTestTransactor: ERC20CustodyForkTestTransactor{contract: contract}, ERC20CustodyForkTestFilterer: ERC20CustodyForkTestFilterer{contract: contract}}, nil +} + +// NewERC20CustodyForkTestCaller creates a new read-only instance of ERC20CustodyForkTest, bound to a specific deployed contract. +func NewERC20CustodyForkTestCaller(address common.Address, caller bind.ContractCaller) (*ERC20CustodyForkTestCaller, error) { + contract, err := bindERC20CustodyForkTest(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestCaller{contract: contract}, nil +} + +// NewERC20CustodyForkTestTransactor creates a new write-only instance of ERC20CustodyForkTest, bound to a specific deployed contract. +func NewERC20CustodyForkTestTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20CustodyForkTestTransactor, error) { + contract, err := bindERC20CustodyForkTest(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestTransactor{contract: contract}, nil +} + +// NewERC20CustodyForkTestFilterer creates a new log filterer instance of ERC20CustodyForkTest, bound to a specific deployed contract. +func NewERC20CustodyForkTestFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20CustodyForkTestFilterer, error) { + contract, err := bindERC20CustodyForkTest(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestFilterer{contract: contract}, nil +} + +// bindERC20CustodyForkTest binds a generic wrapper to an already deployed contract. +func bindERC20CustodyForkTest(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20CustodyForkTestMetaData.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 (_ERC20CustodyForkTest *ERC20CustodyForkTestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20CustodyForkTest.Contract.ERC20CustodyForkTestCaller.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 (_ERC20CustodyForkTest *ERC20CustodyForkTestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20CustodyForkTest.Contract.ERC20CustodyForkTestTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20CustodyForkTest *ERC20CustodyForkTestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20CustodyForkTest.Contract.ERC20CustodyForkTestTransactor.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 (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20CustodyForkTest.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 (_ERC20CustodyForkTest *ERC20CustodyForkTestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20CustodyForkTest.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20CustodyForkTest *ERC20CustodyForkTestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20CustodyForkTest.Contract.contract.Transact(opts, method, params...) +} + +// ARBITRUMRPCURL is a free data retrieval call binding the contract method 0x699370b0. +// +// Solidity: function ARBITRUM_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) ARBITRUMRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "ARBITRUM_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ARBITRUMRPCURL is a free data retrieval call binding the contract method 0x699370b0. +// +// Solidity: function ARBITRUM_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) ARBITRUMRPCURL() (string, error) { + return _ERC20CustodyForkTest.Contract.ARBITRUMRPCURL(&_ERC20CustodyForkTest.CallOpts) +} + +// ARBITRUMRPCURL is a free data retrieval call binding the contract method 0x699370b0. +// +// Solidity: function ARBITRUM_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) ARBITRUMRPCURL() (string, error) { + return _ERC20CustodyForkTest.Contract.ARBITRUMRPCURL(&_ERC20CustodyForkTest.CallOpts) +} + +// AVALANCHERPCURL is a free data retrieval call binding the contract method 0xca747493. +// +// Solidity: function AVALANCHE_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) AVALANCHERPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "AVALANCHE_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// AVALANCHERPCURL is a free data retrieval call binding the contract method 0xca747493. +// +// Solidity: function AVALANCHE_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) AVALANCHERPCURL() (string, error) { + return _ERC20CustodyForkTest.Contract.AVALANCHERPCURL(&_ERC20CustodyForkTest.CallOpts) +} + +// AVALANCHERPCURL is a free data retrieval call binding the contract method 0xca747493. +// +// Solidity: function AVALANCHE_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) AVALANCHERPCURL() (string, error) { + return _ERC20CustodyForkTest.Contract.AVALANCHERPCURL(&_ERC20CustodyForkTest.CallOpts) +} + +// BASERPCURL is a free data retrieval call binding the contract method 0x2e8ade6e. +// +// Solidity: function BASE_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) BASERPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "BASE_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// BASERPCURL is a free data retrieval call binding the contract method 0x2e8ade6e. +// +// Solidity: function BASE_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) BASERPCURL() (string, error) { + return _ERC20CustodyForkTest.Contract.BASERPCURL(&_ERC20CustodyForkTest.CallOpts) +} + +// BASERPCURL is a free data retrieval call binding the contract method 0x2e8ade6e. +// +// Solidity: function BASE_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) BASERPCURL() (string, error) { + return _ERC20CustodyForkTest.Contract.BASERPCURL(&_ERC20CustodyForkTest.CallOpts) +} + +// BSCRPCURL is a free data retrieval call binding the contract method 0x88de7b87. +// +// Solidity: function BSC_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) BSCRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "BSC_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// BSCRPCURL is a free data retrieval call binding the contract method 0x88de7b87. +// +// Solidity: function BSC_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) BSCRPCURL() (string, error) { + return _ERC20CustodyForkTest.Contract.BSCRPCURL(&_ERC20CustodyForkTest.CallOpts) +} + +// BSCRPCURL is a free data retrieval call binding the contract method 0x88de7b87. +// +// Solidity: function BSC_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) BSCRPCURL() (string, error) { + return _ERC20CustodyForkTest.Contract.BSCRPCURL(&_ERC20CustodyForkTest.CallOpts) +} + +// ETHEREUMRPCURL is a free data retrieval call binding the contract method 0x9d3c5161. +// +// Solidity: function ETHEREUM_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) ETHEREUMRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "ETHEREUM_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ETHEREUMRPCURL is a free data retrieval call binding the contract method 0x9d3c5161. +// +// Solidity: function ETHEREUM_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) ETHEREUMRPCURL() (string, error) { + return _ERC20CustodyForkTest.Contract.ETHEREUMRPCURL(&_ERC20CustodyForkTest.CallOpts) +} + +// ETHEREUMRPCURL is a free data retrieval call binding the contract method 0x9d3c5161. +// +// Solidity: function ETHEREUM_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) ETHEREUMRPCURL() (string, error) { + return _ERC20CustodyForkTest.Contract.ETHEREUMRPCURL(&_ERC20CustodyForkTest.CallOpts) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) ISTEST(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "IS_TEST") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) ISTEST() (bool, error) { + return _ERC20CustodyForkTest.Contract.ISTEST(&_ERC20CustodyForkTest.CallOpts) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) ISTEST() (bool, error) { + return _ERC20CustodyForkTest.Contract.ISTEST(&_ERC20CustodyForkTest.CallOpts) +} + +// POLYGONRPCURL is a free data retrieval call binding the contract method 0x94897fb1. +// +// Solidity: function POLYGON_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) POLYGONRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "POLYGON_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// POLYGONRPCURL is a free data retrieval call binding the contract method 0x94897fb1. +// +// Solidity: function POLYGON_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) POLYGONRPCURL() (string, error) { + return _ERC20CustodyForkTest.Contract.POLYGONRPCURL(&_ERC20CustodyForkTest.CallOpts) +} + +// POLYGONRPCURL is a free data retrieval call binding the contract method 0x94897fb1. +// +// Solidity: function POLYGON_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) POLYGONRPCURL() (string, error) { + return _ERC20CustodyForkTest.Contract.POLYGONRPCURL(&_ERC20CustodyForkTest.CallOpts) +} + +// ZETACHAINRPCURL is a free data retrieval call binding the contract method 0x3f8f61dd. +// +// Solidity: function ZETACHAIN_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) ZETACHAINRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "ZETACHAIN_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ZETACHAINRPCURL is a free data retrieval call binding the contract method 0x3f8f61dd. +// +// Solidity: function ZETACHAIN_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) ZETACHAINRPCURL() (string, error) { + return _ERC20CustodyForkTest.Contract.ZETACHAINRPCURL(&_ERC20CustodyForkTest.CallOpts) +} + +// ZETACHAINRPCURL is a free data retrieval call binding the contract method 0x3f8f61dd. +// +// Solidity: function ZETACHAIN_RPC_URL() view returns(string) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) ZETACHAINRPCURL() (string, error) { + return _ERC20CustodyForkTest.Contract.ZETACHAINRPCURL(&_ERC20CustodyForkTest.CallOpts) +} + +// Chains is a free data retrieval call binding the contract method 0x550325b5. +// +// Solidity: function chains(uint256 ) view returns(uint256 forkId, address contractAddress, address admin, string rpcUrl, string name) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) Chains(opts *bind.CallOpts, arg0 *big.Int) (struct { + ForkId *big.Int + ContractAddress common.Address + Admin common.Address + RpcUrl string + Name string +}, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "chains", arg0) + + outstruct := new(struct { + ForkId *big.Int + ContractAddress common.Address + Admin common.Address + RpcUrl string + Name string + }) + if err != nil { + return *outstruct, err + } + + outstruct.ForkId = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.ContractAddress = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) + outstruct.Admin = *abi.ConvertType(out[2], new(common.Address)).(*common.Address) + outstruct.RpcUrl = *abi.ConvertType(out[3], new(string)).(*string) + outstruct.Name = *abi.ConvertType(out[4], new(string)).(*string) + + return *outstruct, err + +} + +// Chains is a free data retrieval call binding the contract method 0x550325b5. +// +// Solidity: function chains(uint256 ) view returns(uint256 forkId, address contractAddress, address admin, string rpcUrl, string name) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) Chains(arg0 *big.Int) (struct { + ForkId *big.Int + ContractAddress common.Address + Admin common.Address + RpcUrl string + Name string +}, error) { + return _ERC20CustodyForkTest.Contract.Chains(&_ERC20CustodyForkTest.CallOpts, arg0) +} + +// Chains is a free data retrieval call binding the contract method 0x550325b5. +// +// Solidity: function chains(uint256 ) view returns(uint256 forkId, address contractAddress, address admin, string rpcUrl, string name) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) Chains(arg0 *big.Int) (struct { + ForkId *big.Int + ContractAddress common.Address + Admin common.Address + RpcUrl string + Name string +}, error) { + return _ERC20CustodyForkTest.Contract.Chains(&_ERC20CustodyForkTest.CallOpts, arg0) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) ExcludeArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "excludeArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) ExcludeArtifacts() ([]string, error) { + return _ERC20CustodyForkTest.Contract.ExcludeArtifacts(&_ERC20CustodyForkTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) ExcludeArtifacts() ([]string, error) { + return _ERC20CustodyForkTest.Contract.ExcludeArtifacts(&_ERC20CustodyForkTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) ExcludeContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "excludeContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) ExcludeContracts() ([]common.Address, error) { + return _ERC20CustodyForkTest.Contract.ExcludeContracts(&_ERC20CustodyForkTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) ExcludeContracts() ([]common.Address, error) { + return _ERC20CustodyForkTest.Contract.ExcludeContracts(&_ERC20CustodyForkTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) ExcludeSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "excludeSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _ERC20CustodyForkTest.Contract.ExcludeSelectors(&_ERC20CustodyForkTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _ERC20CustodyForkTest.Contract.ExcludeSelectors(&_ERC20CustodyForkTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) ExcludeSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "excludeSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) ExcludeSenders() ([]common.Address, error) { + return _ERC20CustodyForkTest.Contract.ExcludeSenders(&_ERC20CustodyForkTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) ExcludeSenders() ([]common.Address, error) { + return _ERC20CustodyForkTest.Contract.ExcludeSenders(&_ERC20CustodyForkTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) Failed(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "failed") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) Failed() (bool, error) { + return _ERC20CustodyForkTest.Contract.Failed(&_ERC20CustodyForkTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) Failed() (bool, error) { + return _ERC20CustodyForkTest.Contract.Failed(&_ERC20CustodyForkTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) TargetArtifactSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzArtifactSelector, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "targetArtifactSelectors") + + if err != nil { + return *new([]StdInvariantFuzzArtifactSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzArtifactSelector)).(*[]StdInvariantFuzzArtifactSelector) + + return out0, err + +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _ERC20CustodyForkTest.Contract.TargetArtifactSelectors(&_ERC20CustodyForkTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _ERC20CustodyForkTest.Contract.TargetArtifactSelectors(&_ERC20CustodyForkTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) TargetArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "targetArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) TargetArtifacts() ([]string, error) { + return _ERC20CustodyForkTest.Contract.TargetArtifacts(&_ERC20CustodyForkTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) TargetArtifacts() ([]string, error) { + return _ERC20CustodyForkTest.Contract.TargetArtifacts(&_ERC20CustodyForkTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) TargetContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "targetContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) TargetContracts() ([]common.Address, error) { + return _ERC20CustodyForkTest.Contract.TargetContracts(&_ERC20CustodyForkTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) TargetContracts() ([]common.Address, error) { + return _ERC20CustodyForkTest.Contract.TargetContracts(&_ERC20CustodyForkTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) TargetInterfaces(opts *bind.CallOpts) ([]StdInvariantFuzzInterface, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "targetInterfaces") + + if err != nil { + return *new([]StdInvariantFuzzInterface), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzInterface)).(*[]StdInvariantFuzzInterface) + + return out0, err + +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _ERC20CustodyForkTest.Contract.TargetInterfaces(&_ERC20CustodyForkTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _ERC20CustodyForkTest.Contract.TargetInterfaces(&_ERC20CustodyForkTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) TargetSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "targetSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _ERC20CustodyForkTest.Contract.TargetSelectors(&_ERC20CustodyForkTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _ERC20CustodyForkTest.Contract.TargetSelectors(&_ERC20CustodyForkTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) TargetSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "targetSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) TargetSenders() ([]common.Address, error) { + return _ERC20CustodyForkTest.Contract.TargetSenders(&_ERC20CustodyForkTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) TargetSenders() ([]common.Address, error) { + return _ERC20CustodyForkTest.Contract.TargetSenders(&_ERC20CustodyForkTest.CallOpts) +} + +// TestForkIdDiffer is a free data retrieval call binding the contract method 0x6cf73eea. +// +// Solidity: function testForkIdDiffer() view returns() +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCaller) TestForkIdDiffer(opts *bind.CallOpts) error { + var out []interface{} + err := _ERC20CustodyForkTest.contract.Call(opts, &out, "testForkIdDiffer") + + if err != nil { + return err + } + + return err + +} + +// TestForkIdDiffer is a free data retrieval call binding the contract method 0x6cf73eea. +// +// Solidity: function testForkIdDiffer() view returns() +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) TestForkIdDiffer() error { + return _ERC20CustodyForkTest.Contract.TestForkIdDiffer(&_ERC20CustodyForkTest.CallOpts) +} + +// TestForkIdDiffer is a free data retrieval call binding the contract method 0x6cf73eea. +// +// Solidity: function testForkIdDiffer() view returns() +func (_ERC20CustodyForkTest *ERC20CustodyForkTestCallerSession) TestForkIdDiffer() error { + return _ERC20CustodyForkTest.Contract.TestForkIdDiffer(&_ERC20CustodyForkTest.CallOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_ERC20CustodyForkTest *ERC20CustodyForkTestTransactor) SetUp(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20CustodyForkTest.contract.Transact(opts, "setUp") +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) SetUp() (*types.Transaction, error) { + return _ERC20CustodyForkTest.Contract.SetUp(&_ERC20CustodyForkTest.TransactOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_ERC20CustodyForkTest *ERC20CustodyForkTestTransactorSession) SetUp() (*types.Transaction, error) { + return _ERC20CustodyForkTest.Contract.SetUp(&_ERC20CustodyForkTest.TransactOpts) +} + +// TestCanSwitchForks is a paid mutator transaction binding the contract method 0x8cf03dbc. +// +// Solidity: function testCanSwitchForks() returns() +func (_ERC20CustodyForkTest *ERC20CustodyForkTestTransactor) TestCanSwitchForks(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20CustodyForkTest.contract.Transact(opts, "testCanSwitchForks") +} + +// TestCanSwitchForks is a paid mutator transaction binding the contract method 0x8cf03dbc. +// +// Solidity: function testCanSwitchForks() returns() +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) TestCanSwitchForks() (*types.Transaction, error) { + return _ERC20CustodyForkTest.Contract.TestCanSwitchForks(&_ERC20CustodyForkTest.TransactOpts) +} + +// TestCanSwitchForks is a paid mutator transaction binding the contract method 0x8cf03dbc. +// +// Solidity: function testCanSwitchForks() returns() +func (_ERC20CustodyForkTest *ERC20CustodyForkTestTransactorSession) TestCanSwitchForks() (*types.Transaction, error) { + return _ERC20CustodyForkTest.Contract.TestCanSwitchForks(&_ERC20CustodyForkTest.TransactOpts) +} + +// TestUpgradeGatewayOnAllChains is a paid mutator transaction binding the contract method 0x03b965ec. +// +// Solidity: function testUpgradeGatewayOnAllChains() returns() +func (_ERC20CustodyForkTest *ERC20CustodyForkTestTransactor) TestUpgradeGatewayOnAllChains(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20CustodyForkTest.contract.Transact(opts, "testUpgradeGatewayOnAllChains") +} + +// TestUpgradeGatewayOnAllChains is a paid mutator transaction binding the contract method 0x03b965ec. +// +// Solidity: function testUpgradeGatewayOnAllChains() returns() +func (_ERC20CustodyForkTest *ERC20CustodyForkTestSession) TestUpgradeGatewayOnAllChains() (*types.Transaction, error) { + return _ERC20CustodyForkTest.Contract.TestUpgradeGatewayOnAllChains(&_ERC20CustodyForkTest.TransactOpts) +} + +// TestUpgradeGatewayOnAllChains is a paid mutator transaction binding the contract method 0x03b965ec. +// +// Solidity: function testUpgradeGatewayOnAllChains() returns() +func (_ERC20CustodyForkTest *ERC20CustodyForkTestTransactorSession) TestUpgradeGatewayOnAllChains() (*types.Transaction, error) { + return _ERC20CustodyForkTest.Contract.TestUpgradeGatewayOnAllChains(&_ERC20CustodyForkTest.TransactOpts) +} + +// ERC20CustodyForkTestLogIterator is returned from FilterLog and is used to iterate over the raw logs and unpacked data for Log events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogIterator struct { + Event *ERC20CustodyForkTestLog // 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 *ERC20CustodyForkTestLogIterator) 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(ERC20CustodyForkTestLog) + 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(ERC20CustodyForkTestLog) + 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 *ERC20CustodyForkTestLogIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLog represents a Log event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLog struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLog is a free log retrieval operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLog(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogIterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogIterator{contract: _ERC20CustodyForkTest.contract, event: "log", logs: logs, sub: sub}, nil +} + +// WatchLog is a free log subscription operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLog(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLog) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log") + 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(ERC20CustodyForkTestLog) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log", 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 +} + +// ParseLog is a log parse operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLog(log types.Log) (*ERC20CustodyForkTestLog, error) { + event := new(ERC20CustodyForkTestLog) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogAddressIterator is returned from FilterLogAddress and is used to iterate over the raw logs and unpacked data for LogAddress events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogAddressIterator struct { + Event *ERC20CustodyForkTestLogAddress // 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 *ERC20CustodyForkTestLogAddressIterator) 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(ERC20CustodyForkTestLogAddress) + 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(ERC20CustodyForkTestLogAddress) + 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 *ERC20CustodyForkTestLogAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogAddress represents a LogAddress event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogAddress struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogAddress is a free log retrieval operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogAddress(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogAddressIterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_address") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogAddressIterator{contract: _ERC20CustodyForkTest.contract, event: "log_address", logs: logs, sub: sub}, nil +} + +// WatchLogAddress is a free log subscription operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogAddress(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogAddress) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_address") + 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(ERC20CustodyForkTestLogAddress) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_address", 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 +} + +// ParseLogAddress is a log parse operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogAddress(log types.Log) (*ERC20CustodyForkTestLogAddress, error) { + event := new(ERC20CustodyForkTestLogAddress) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogArrayIterator is returned from FilterLogArray and is used to iterate over the raw logs and unpacked data for LogArray events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogArrayIterator struct { + Event *ERC20CustodyForkTestLogArray // 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 *ERC20CustodyForkTestLogArrayIterator) 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(ERC20CustodyForkTestLogArray) + 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(ERC20CustodyForkTestLogArray) + 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 *ERC20CustodyForkTestLogArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogArray represents a LogArray event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogArray struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray is a free log retrieval operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogArray(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogArrayIterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_array") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogArrayIterator{contract: _ERC20CustodyForkTest.contract, event: "log_array", logs: logs, sub: sub}, nil +} + +// WatchLogArray is a free log subscription operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogArray(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogArray) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_array") + 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(ERC20CustodyForkTestLogArray) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_array", 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 +} + +// ParseLogArray is a log parse operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogArray(log types.Log) (*ERC20CustodyForkTestLogArray, error) { + event := new(ERC20CustodyForkTestLogArray) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogArray0Iterator is returned from FilterLogArray0 and is used to iterate over the raw logs and unpacked data for LogArray0 events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogArray0Iterator struct { + Event *ERC20CustodyForkTestLogArray0 // 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 *ERC20CustodyForkTestLogArray0Iterator) 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(ERC20CustodyForkTestLogArray0) + 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(ERC20CustodyForkTestLogArray0) + 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 *ERC20CustodyForkTestLogArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogArray0 represents a LogArray0 event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogArray0 struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray0 is a free log retrieval operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogArray0(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogArray0Iterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogArray0Iterator{contract: _ERC20CustodyForkTest.contract, event: "log_array0", logs: logs, sub: sub}, nil +} + +// WatchLogArray0 is a free log subscription operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogArray0(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogArray0) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_array0") + 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(ERC20CustodyForkTestLogArray0) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_array0", 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 +} + +// ParseLogArray0 is a log parse operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogArray0(log types.Log) (*ERC20CustodyForkTestLogArray0, error) { + event := new(ERC20CustodyForkTestLogArray0) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogArray1Iterator is returned from FilterLogArray1 and is used to iterate over the raw logs and unpacked data for LogArray1 events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogArray1Iterator struct { + Event *ERC20CustodyForkTestLogArray1 // 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 *ERC20CustodyForkTestLogArray1Iterator) 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(ERC20CustodyForkTestLogArray1) + 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(ERC20CustodyForkTestLogArray1) + 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 *ERC20CustodyForkTestLogArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogArray1 represents a LogArray1 event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogArray1 struct { + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray1 is a free log retrieval operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogArray1(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogArray1Iterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogArray1Iterator{contract: _ERC20CustodyForkTest.contract, event: "log_array1", logs: logs, sub: sub}, nil +} + +// WatchLogArray1 is a free log subscription operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogArray1(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogArray1) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_array1") + 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(ERC20CustodyForkTestLogArray1) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_array1", 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 +} + +// ParseLogArray1 is a log parse operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogArray1(log types.Log) (*ERC20CustodyForkTestLogArray1, error) { + event := new(ERC20CustodyForkTestLogArray1) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogBytesIterator is returned from FilterLogBytes and is used to iterate over the raw logs and unpacked data for LogBytes events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogBytesIterator struct { + Event *ERC20CustodyForkTestLogBytes // 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 *ERC20CustodyForkTestLogBytesIterator) 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(ERC20CustodyForkTestLogBytes) + 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(ERC20CustodyForkTestLogBytes) + 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 *ERC20CustodyForkTestLogBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogBytes represents a LogBytes event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogBytes struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes is a free log retrieval operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogBytes(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogBytesIterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogBytesIterator{contract: _ERC20CustodyForkTest.contract, event: "log_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogBytes is a free log subscription operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogBytes(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogBytes) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_bytes") + 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(ERC20CustodyForkTestLogBytes) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_bytes", 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 +} + +// ParseLogBytes is a log parse operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogBytes(log types.Log) (*ERC20CustodyForkTestLogBytes, error) { + event := new(ERC20CustodyForkTestLogBytes) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogBytes32Iterator is returned from FilterLogBytes32 and is used to iterate over the raw logs and unpacked data for LogBytes32 events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogBytes32Iterator struct { + Event *ERC20CustodyForkTestLogBytes32 // 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 *ERC20CustodyForkTestLogBytes32Iterator) 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(ERC20CustodyForkTestLogBytes32) + 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(ERC20CustodyForkTestLogBytes32) + 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 *ERC20CustodyForkTestLogBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogBytes32 represents a LogBytes32 event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogBytes32 struct { + Arg0 [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes32 is a free log retrieval operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogBytes32(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogBytes32Iterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogBytes32Iterator{contract: _ERC20CustodyForkTest.contract, event: "log_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogBytes32 is a free log subscription operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogBytes32(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogBytes32) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_bytes32") + 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(ERC20CustodyForkTestLogBytes32) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_bytes32", 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 +} + +// ParseLogBytes32 is a log parse operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogBytes32(log types.Log) (*ERC20CustodyForkTestLogBytes32, error) { + event := new(ERC20CustodyForkTestLogBytes32) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogIntIterator is returned from FilterLogInt and is used to iterate over the raw logs and unpacked data for LogInt events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogIntIterator struct { + Event *ERC20CustodyForkTestLogInt // 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 *ERC20CustodyForkTestLogIntIterator) 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(ERC20CustodyForkTestLogInt) + 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(ERC20CustodyForkTestLogInt) + 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 *ERC20CustodyForkTestLogIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogInt represents a LogInt event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogInt struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogInt is a free log retrieval operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogInt(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogIntIterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_int") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogIntIterator{contract: _ERC20CustodyForkTest.contract, event: "log_int", logs: logs, sub: sub}, nil +} + +// WatchLogInt is a free log subscription operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogInt(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogInt) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_int") + 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(ERC20CustodyForkTestLogInt) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_int", 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 +} + +// ParseLogInt is a log parse operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogInt(log types.Log) (*ERC20CustodyForkTestLogInt, error) { + event := new(ERC20CustodyForkTestLogInt) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogNamedAddressIterator is returned from FilterLogNamedAddress and is used to iterate over the raw logs and unpacked data for LogNamedAddress events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedAddressIterator struct { + Event *ERC20CustodyForkTestLogNamedAddress // 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 *ERC20CustodyForkTestLogNamedAddressIterator) 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(ERC20CustodyForkTestLogNamedAddress) + 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(ERC20CustodyForkTestLogNamedAddress) + 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 *ERC20CustodyForkTestLogNamedAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogNamedAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogNamedAddress represents a LogNamedAddress event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedAddress struct { + Key string + Val common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedAddress is a free log retrieval operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogNamedAddress(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogNamedAddressIterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogNamedAddressIterator{contract: _ERC20CustodyForkTest.contract, event: "log_named_address", logs: logs, sub: sub}, nil +} + +// WatchLogNamedAddress is a free log subscription operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogNamedAddress(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogNamedAddress) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_named_address") + 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(ERC20CustodyForkTestLogNamedAddress) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_address", 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 +} + +// ParseLogNamedAddress is a log parse operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogNamedAddress(log types.Log) (*ERC20CustodyForkTestLogNamedAddress, error) { + event := new(ERC20CustodyForkTestLogNamedAddress) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogNamedArrayIterator is returned from FilterLogNamedArray and is used to iterate over the raw logs and unpacked data for LogNamedArray events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedArrayIterator struct { + Event *ERC20CustodyForkTestLogNamedArray // 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 *ERC20CustodyForkTestLogNamedArrayIterator) 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(ERC20CustodyForkTestLogNamedArray) + 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(ERC20CustodyForkTestLogNamedArray) + 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 *ERC20CustodyForkTestLogNamedArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogNamedArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogNamedArray represents a LogNamedArray event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedArray struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray is a free log retrieval operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogNamedArray(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogNamedArrayIterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogNamedArrayIterator{contract: _ERC20CustodyForkTest.contract, event: "log_named_array", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray is a free log subscription operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogNamedArray(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogNamedArray) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_named_array") + 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(ERC20CustodyForkTestLogNamedArray) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_array", 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 +} + +// ParseLogNamedArray is a log parse operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogNamedArray(log types.Log) (*ERC20CustodyForkTestLogNamedArray, error) { + event := new(ERC20CustodyForkTestLogNamedArray) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogNamedArray0Iterator is returned from FilterLogNamedArray0 and is used to iterate over the raw logs and unpacked data for LogNamedArray0 events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedArray0Iterator struct { + Event *ERC20CustodyForkTestLogNamedArray0 // 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 *ERC20CustodyForkTestLogNamedArray0Iterator) 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(ERC20CustodyForkTestLogNamedArray0) + 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(ERC20CustodyForkTestLogNamedArray0) + 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 *ERC20CustodyForkTestLogNamedArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogNamedArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogNamedArray0 represents a LogNamedArray0 event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedArray0 struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray0 is a free log retrieval operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogNamedArray0(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogNamedArray0Iterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogNamedArray0Iterator{contract: _ERC20CustodyForkTest.contract, event: "log_named_array0", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray0 is a free log subscription operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogNamedArray0(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogNamedArray0) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_named_array0") + 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(ERC20CustodyForkTestLogNamedArray0) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_array0", 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 +} + +// ParseLogNamedArray0 is a log parse operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogNamedArray0(log types.Log) (*ERC20CustodyForkTestLogNamedArray0, error) { + event := new(ERC20CustodyForkTestLogNamedArray0) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogNamedArray1Iterator is returned from FilterLogNamedArray1 and is used to iterate over the raw logs and unpacked data for LogNamedArray1 events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedArray1Iterator struct { + Event *ERC20CustodyForkTestLogNamedArray1 // 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 *ERC20CustodyForkTestLogNamedArray1Iterator) 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(ERC20CustodyForkTestLogNamedArray1) + 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(ERC20CustodyForkTestLogNamedArray1) + 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 *ERC20CustodyForkTestLogNamedArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogNamedArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogNamedArray1 represents a LogNamedArray1 event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedArray1 struct { + Key string + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray1 is a free log retrieval operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogNamedArray1(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogNamedArray1Iterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogNamedArray1Iterator{contract: _ERC20CustodyForkTest.contract, event: "log_named_array1", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray1 is a free log subscription operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogNamedArray1(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogNamedArray1) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_named_array1") + 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(ERC20CustodyForkTestLogNamedArray1) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_array1", 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 +} + +// ParseLogNamedArray1 is a log parse operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogNamedArray1(log types.Log) (*ERC20CustodyForkTestLogNamedArray1, error) { + event := new(ERC20CustodyForkTestLogNamedArray1) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogNamedBytesIterator is returned from FilterLogNamedBytes and is used to iterate over the raw logs and unpacked data for LogNamedBytes events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedBytesIterator struct { + Event *ERC20CustodyForkTestLogNamedBytes // 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 *ERC20CustodyForkTestLogNamedBytesIterator) 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(ERC20CustodyForkTestLogNamedBytes) + 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(ERC20CustodyForkTestLogNamedBytes) + 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 *ERC20CustodyForkTestLogNamedBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogNamedBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogNamedBytes represents a LogNamedBytes event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedBytes struct { + Key string + Val []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes is a free log retrieval operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogNamedBytes(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogNamedBytesIterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogNamedBytesIterator{contract: _ERC20CustodyForkTest.contract, event: "log_named_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes is a free log subscription operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogNamedBytes(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogNamedBytes) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_named_bytes") + 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(ERC20CustodyForkTestLogNamedBytes) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_bytes", 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 +} + +// ParseLogNamedBytes is a log parse operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogNamedBytes(log types.Log) (*ERC20CustodyForkTestLogNamedBytes, error) { + event := new(ERC20CustodyForkTestLogNamedBytes) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogNamedBytes32Iterator is returned from FilterLogNamedBytes32 and is used to iterate over the raw logs and unpacked data for LogNamedBytes32 events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedBytes32Iterator struct { + Event *ERC20CustodyForkTestLogNamedBytes32 // 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 *ERC20CustodyForkTestLogNamedBytes32Iterator) 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(ERC20CustodyForkTestLogNamedBytes32) + 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(ERC20CustodyForkTestLogNamedBytes32) + 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 *ERC20CustodyForkTestLogNamedBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogNamedBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogNamedBytes32 represents a LogNamedBytes32 event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedBytes32 struct { + Key string + Val [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes32 is a free log retrieval operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogNamedBytes32(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogNamedBytes32Iterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogNamedBytes32Iterator{contract: _ERC20CustodyForkTest.contract, event: "log_named_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes32 is a free log subscription operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogNamedBytes32(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogNamedBytes32) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_named_bytes32") + 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(ERC20CustodyForkTestLogNamedBytes32) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_bytes32", 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 +} + +// ParseLogNamedBytes32 is a log parse operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogNamedBytes32(log types.Log) (*ERC20CustodyForkTestLogNamedBytes32, error) { + event := new(ERC20CustodyForkTestLogNamedBytes32) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogNamedDecimalIntIterator is returned from FilterLogNamedDecimalInt and is used to iterate over the raw logs and unpacked data for LogNamedDecimalInt events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedDecimalIntIterator struct { + Event *ERC20CustodyForkTestLogNamedDecimalInt // 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 *ERC20CustodyForkTestLogNamedDecimalIntIterator) 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(ERC20CustodyForkTestLogNamedDecimalInt) + 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(ERC20CustodyForkTestLogNamedDecimalInt) + 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 *ERC20CustodyForkTestLogNamedDecimalIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogNamedDecimalIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogNamedDecimalInt represents a LogNamedDecimalInt event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedDecimalInt struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalInt is a free log retrieval operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogNamedDecimalInt(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogNamedDecimalIntIterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogNamedDecimalIntIterator{contract: _ERC20CustodyForkTest.contract, event: "log_named_decimal_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalInt is a free log subscription operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogNamedDecimalInt(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogNamedDecimalInt) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_named_decimal_int") + 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(ERC20CustodyForkTestLogNamedDecimalInt) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_decimal_int", 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 +} + +// ParseLogNamedDecimalInt is a log parse operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogNamedDecimalInt(log types.Log) (*ERC20CustodyForkTestLogNamedDecimalInt, error) { + event := new(ERC20CustodyForkTestLogNamedDecimalInt) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogNamedDecimalUintIterator is returned from FilterLogNamedDecimalUint and is used to iterate over the raw logs and unpacked data for LogNamedDecimalUint events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedDecimalUintIterator struct { + Event *ERC20CustodyForkTestLogNamedDecimalUint // 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 *ERC20CustodyForkTestLogNamedDecimalUintIterator) 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(ERC20CustodyForkTestLogNamedDecimalUint) + 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(ERC20CustodyForkTestLogNamedDecimalUint) + 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 *ERC20CustodyForkTestLogNamedDecimalUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogNamedDecimalUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogNamedDecimalUint represents a LogNamedDecimalUint event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedDecimalUint struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalUint is a free log retrieval operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogNamedDecimalUint(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogNamedDecimalUintIterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogNamedDecimalUintIterator{contract: _ERC20CustodyForkTest.contract, event: "log_named_decimal_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalUint is a free log subscription operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogNamedDecimalUint(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogNamedDecimalUint) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_named_decimal_uint") + 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(ERC20CustodyForkTestLogNamedDecimalUint) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_decimal_uint", 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 +} + +// ParseLogNamedDecimalUint is a log parse operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogNamedDecimalUint(log types.Log) (*ERC20CustodyForkTestLogNamedDecimalUint, error) { + event := new(ERC20CustodyForkTestLogNamedDecimalUint) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogNamedIntIterator is returned from FilterLogNamedInt and is used to iterate over the raw logs and unpacked data for LogNamedInt events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedIntIterator struct { + Event *ERC20CustodyForkTestLogNamedInt // 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 *ERC20CustodyForkTestLogNamedIntIterator) 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(ERC20CustodyForkTestLogNamedInt) + 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(ERC20CustodyForkTestLogNamedInt) + 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 *ERC20CustodyForkTestLogNamedIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogNamedIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogNamedInt represents a LogNamedInt event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedInt struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedInt is a free log retrieval operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogNamedInt(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogNamedIntIterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogNamedIntIterator{contract: _ERC20CustodyForkTest.contract, event: "log_named_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedInt is a free log subscription operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogNamedInt(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogNamedInt) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_named_int") + 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(ERC20CustodyForkTestLogNamedInt) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_int", 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 +} + +// ParseLogNamedInt is a log parse operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogNamedInt(log types.Log) (*ERC20CustodyForkTestLogNamedInt, error) { + event := new(ERC20CustodyForkTestLogNamedInt) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogNamedStringIterator is returned from FilterLogNamedString and is used to iterate over the raw logs and unpacked data for LogNamedString events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedStringIterator struct { + Event *ERC20CustodyForkTestLogNamedString // 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 *ERC20CustodyForkTestLogNamedStringIterator) 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(ERC20CustodyForkTestLogNamedString) + 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(ERC20CustodyForkTestLogNamedString) + 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 *ERC20CustodyForkTestLogNamedStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogNamedStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogNamedString represents a LogNamedString event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedString struct { + Key string + Val string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedString is a free log retrieval operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogNamedString(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogNamedStringIterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogNamedStringIterator{contract: _ERC20CustodyForkTest.contract, event: "log_named_string", logs: logs, sub: sub}, nil +} + +// WatchLogNamedString is a free log subscription operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogNamedString(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogNamedString) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_named_string") + 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(ERC20CustodyForkTestLogNamedString) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_string", 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 +} + +// ParseLogNamedString is a log parse operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogNamedString(log types.Log) (*ERC20CustodyForkTestLogNamedString, error) { + event := new(ERC20CustodyForkTestLogNamedString) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogNamedUintIterator is returned from FilterLogNamedUint and is used to iterate over the raw logs and unpacked data for LogNamedUint events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedUintIterator struct { + Event *ERC20CustodyForkTestLogNamedUint // 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 *ERC20CustodyForkTestLogNamedUintIterator) 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(ERC20CustodyForkTestLogNamedUint) + 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(ERC20CustodyForkTestLogNamedUint) + 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 *ERC20CustodyForkTestLogNamedUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogNamedUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogNamedUint represents a LogNamedUint event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogNamedUint struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedUint is a free log retrieval operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogNamedUint(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogNamedUintIterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogNamedUintIterator{contract: _ERC20CustodyForkTest.contract, event: "log_named_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedUint is a free log subscription operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogNamedUint(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogNamedUint) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_named_uint") + 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(ERC20CustodyForkTestLogNamedUint) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_uint", 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 +} + +// ParseLogNamedUint is a log parse operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogNamedUint(log types.Log) (*ERC20CustodyForkTestLogNamedUint, error) { + event := new(ERC20CustodyForkTestLogNamedUint) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogStringIterator is returned from FilterLogString and is used to iterate over the raw logs and unpacked data for LogString events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogStringIterator struct { + Event *ERC20CustodyForkTestLogString // 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 *ERC20CustodyForkTestLogStringIterator) 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(ERC20CustodyForkTestLogString) + 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(ERC20CustodyForkTestLogString) + 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 *ERC20CustodyForkTestLogStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogString represents a LogString event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogString struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogString is a free log retrieval operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogString(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogStringIterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_string") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogStringIterator{contract: _ERC20CustodyForkTest.contract, event: "log_string", logs: logs, sub: sub}, nil +} + +// WatchLogString is a free log subscription operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogString(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogString) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_string") + 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(ERC20CustodyForkTestLogString) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_string", 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 +} + +// ParseLogString is a log parse operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogString(log types.Log) (*ERC20CustodyForkTestLogString, error) { + event := new(ERC20CustodyForkTestLogString) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogUintIterator is returned from FilterLogUint and is used to iterate over the raw logs and unpacked data for LogUint events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogUintIterator struct { + Event *ERC20CustodyForkTestLogUint // 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 *ERC20CustodyForkTestLogUintIterator) 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(ERC20CustodyForkTestLogUint) + 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(ERC20CustodyForkTestLogUint) + 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 *ERC20CustodyForkTestLogUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogUint represents a LogUint event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogUint struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogUint is a free log retrieval operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogUint(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogUintIterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogUintIterator{contract: _ERC20CustodyForkTest.contract, event: "log_uint", logs: logs, sub: sub}, nil +} + +// WatchLogUint is a free log subscription operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogUint(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogUint) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "log_uint") + 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(ERC20CustodyForkTestLogUint) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_uint", 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 +} + +// ParseLogUint is a log parse operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogUint(log types.Log) (*ERC20CustodyForkTestLogUint, error) { + event := new(ERC20CustodyForkTestLogUint) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20CustodyForkTestLogsIterator is returned from FilterLogs and is used to iterate over the raw logs and unpacked data for Logs events raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogsIterator struct { + Event *ERC20CustodyForkTestLogs // 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 *ERC20CustodyForkTestLogsIterator) 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(ERC20CustodyForkTestLogs) + 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(ERC20CustodyForkTestLogs) + 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 *ERC20CustodyForkTestLogsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20CustodyForkTestLogsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20CustodyForkTestLogs represents a Logs event raised by the ERC20CustodyForkTest contract. +type ERC20CustodyForkTestLogs struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogs is a free log retrieval operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) FilterLogs(opts *bind.FilterOpts) (*ERC20CustodyForkTestLogsIterator, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.FilterLogs(opts, "logs") + if err != nil { + return nil, err + } + return &ERC20CustodyForkTestLogsIterator{contract: _ERC20CustodyForkTest.contract, event: "logs", logs: logs, sub: sub}, nil +} + +// WatchLogs is a free log subscription operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) WatchLogs(opts *bind.WatchOpts, sink chan<- *ERC20CustodyForkTestLogs) (event.Subscription, error) { + + logs, sub, err := _ERC20CustodyForkTest.contract.WatchLogs(opts, "logs") + 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(ERC20CustodyForkTestLogs) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "logs", 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 +} + +// ParseLogs is a log parse operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_ERC20CustodyForkTest *ERC20CustodyForkTestFilterer) ParseLogs(log types.Log) (*ERC20CustodyForkTestLogs, error) { + event := new(ERC20CustodyForkTestLogs) + if err := _ERC20CustodyForkTest.contract.UnpackLog(event, "logs", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/gatewayevmfork.t.sol/gatewayevmforktest.go b/pkg/gatewayevmfork.t.sol/gatewayevmforktest.go new file mode 100644 index 000000000..d74339c86 --- /dev/null +++ b/pkg/gatewayevmfork.t.sol/gatewayevmforktest.go @@ -0,0 +1,3923 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package gatewayevmfork + +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 +) + +// StdInvariantFuzzArtifactSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzArtifactSelector struct { + Artifact string + Selectors [][4]byte +} + +// StdInvariantFuzzInterface is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzInterface struct { + Addr common.Address + Artifacts []string +} + +// StdInvariantFuzzSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzSelector struct { + Addr common.Address + Selectors [][4]byte +} + +// GatewayEVMForkTestMetaData contains all meta data concerning the GatewayEVMForkTest contract. +var GatewayEVMForkTestMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"ARBITRUM_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"AVALANCHE_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BASE_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BSC_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ETHEREUM_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"POLYGON_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ZETACHAIN_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"chains\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"forkId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"contractAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"rpcUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCanSwitchForks\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForkIdDiffer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testUpgradeGatewayOnAllChains\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false}]", + Bin: "0x60806040819052600c8054600160ff199182168117909255601f8054909116909117905563f877cb1960e01b90526020608452601060a4526f115512115491555357d49410d7d5549360821b60c4525f80516020617eb283398151915263f877cb1960e45f60405180830381865afa15801561007d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100a49190810190610471565b6020906100b190826105a5565b5060405163f877cb1960e01b815260206004820152600b60248201526a1094d0d7d49410d7d5549360aa1b60448201525f80516020617eb28339815191529063f877cb19906064015f60405180830381865afa158015610113573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261013a9190810190610471565b60219061014790826105a5565b5060405163f877cb1960e01b815260206004820152600f60248201526e1413d31651d3d397d49410d7d55493608a1b60448201525f80516020617eb28339815191529063f877cb19906064015f60405180830381865afa1580156101ad573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101d49190810190610471565b6022906101e190826105a5565b5060405163f877cb1960e01b815260206004820152600c60248201526b109054d157d49410d7d5549360a21b60448201525f80516020617eb28339815191529063f877cb19906064015f60405180830381865afa158015610244573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261026b9190810190610471565b60239061027890826105a5565b5060405163f877cb1960e01b815260206004820152601060248201526f105490925514955357d49410d7d5549360821b60448201525f80516020617eb28339815191529063f877cb19906064015f60405180830381865afa1580156102df573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526103069190810190610471565b60249061031390826105a5565b5060405163f877cb1960e01b815260206004820152601160248201527010559053105390d21157d49410d7d55493607a1b60448201525f80516020617eb28339815191529063f877cb19906064015f60405180830381865afa15801561037b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526103a29190810190610471565b6025906103af90826105a5565b5060405163f877cb1960e01b81526020600482015260116024820152701691551050d210525397d49410d7d55493607a1b60448201525f80516020617eb28339815191529063f877cb19906064015f60405180830381865afa158015610417573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261043e9190810190610471565b60269061044b90826105a5565b50348015610457575f80fd5b5061065f565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610481575f80fd5b81516001600160401b03811115610496575f80fd5b8201601f810184136104a6575f80fd5b80516001600160401b038111156104bf576104bf61045d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104ed576104ed61045d565b604052818152828201602001861015610504575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b600181811c9082168061053557607f821691505b60208210810361055357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156105a057805f5260205f20601f840160051c8101602085101561057e5750805b601f840160051c820191505b8181101561059d575f815560010161058a565b50505b505050565b81516001600160401b038111156105be576105be61045d565b6105d2816105cc8454610521565b84610559565b6020601f821160018114610604575f83156105ed5750848201515b5f19600385901b1c1916600184901b17845561059d565b5f84815260208120601f198516915b828110156106335787850151825560209485019460019092019101610613565b508482101561065057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6178468061066c5f395ff3fe608060405234801561000f575f80fd5b506004361061018f575f3560e01c806385226c81116100dd578063b0464fdc11610088578063ca74749311610063578063ca747493146102c0578063e20c9f71146102c8578063fa7626d4146102d0575f80fd5b8063b0464fdc14610298578063b5508aa9146102a0578063ba414fa6146102a8575f80fd5b8063916a17c6116100b8578063916a17c61461027357806394897fb1146102885780639d3c516114610290575f80fd5b806385226c811461024e57806388de7b87146102635780638cf03dbc1461026b575f80fd5b80633f7286f41161013d57806366d9a9a01161011857806366d9a9a014610229578063699370b01461023e5780636cf73eea14610246575f80fd5b80633f7286f4146101f55780633f8f61dd146101fd578063550325b514610205575f80fd5b80632ade38801161016d5780632ade3880146101c35780632e8ade6e146101d85780633e5e3c23146101ed575f80fd5b806303b965ec146101935780630a9254e41461019d5780631ed7831c146101a5575b5f80fd5b61019b6102dd565b005b61019b610597565b6101ad6109ad565b6040516101ba9190612cb8565b60405180910390f35b6101cb610a0d565b6040516101ba9190612d4f565b6101e0610b49565b6040516101ba9190612e54565b6101ad610bd5565b6101ad610c33565b6101e0610c91565b610218610213366004612e66565b610c9e565b6040516101ba959493929190612e7d565b610231610df8565b6040516101ba9190612f2d565b6101e0610f71565b61019b610f7e565b610256610ff0565b6040516101ba9190612fc9565b6101e06110bb565b61019b6110c8565b61027b611212565b6040516101ba919061303e565b6101e0611308565b6101e0611315565b61027b611322565b610256611418565b6102b06114e3565b60405190151581526020016101ba565b6101e06115b3565b6101ad6115c0565b601f546102b09060ff1681565b5f5b602e54811015610594576104066040518060400160405280601781526020017f0a3d3d3d2054657374696e672075706772616465206f6e000000000000000000815250602e8381548110610335576103356130d3565b905f5260205f209060050201600401805461034f90613100565b80601f016020809104026020016040519081016040528092919081815260200182805461037b90613100565b80156103c65780601f1061039d576101008083540402835291602001916103c6565b820191905f5260205f20905b8154815290600101906020018083116103a957829003601f168201915b50505050506040518060400160405280600381526020017f3d3d3d000000000000000000000000000000000000000000000000000000000081525061161e565b61058c602e828154811061041c5761041c6130d3565b5f9182526020918290206040805160a08101825260059093029091018054835260018101546001600160a01b039081169484019490945260028101549093169082015260038201805491929160608401919061047790613100565b80601f01602080910402602001604051908101604052809291908181526020018280546104a390613100565b80156104ee5780601f106104c5576101008083540402835291602001916104ee565b820191905f5260205f20905b8154815290600101906020018083116104d157829003601f168201915b5050505050815260200160048201805461050790613100565b80601f016020809104026020016040519081016040528092919081815260200182805461053390613100565b801561057e5780601f106105555761010080835404028352916020019161057e565b820191905f5260205f20905b81548152906001019060200180831161056157829003601f168201915b5050505050815250506116b6565b6001016102df565b50565b6040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba3498906105e890602090600401613151565b6020604051808303815f875af1158015610604573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062891906131f6565b6027556040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba34989061067c90602190600401613151565b6020604051808303815f875af1158015610698573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc91906131f6565b6028556040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba34989061071090602290600401613151565b6020604051808303815f875af115801561072c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075091906131f6565b6029556040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba3498906107a490602390600401613151565b6020604051808303815f875af11580156107c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e491906131f6565b602a556040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba34989061083890602490600401613151565b6020604051808303815f875af1158015610854573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087891906131f6565b602b556040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba3498906108cc90602590600401613151565b6020604051808303815f875af11580156108e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090c91906131f6565b602c556040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba34989061096090602690600401613151565b6020604051808303815f875af115801561097c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a091906131f6565b602d556109ab611ecf565b565b60606016805480602002602001604051908101604052809291908181526020018280548015610a0357602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116109e5575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015610b40575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610b29578382905f5260205f20018054610a9e90613100565b80601f0160208091040260200160405190810160405280929190818152602001828054610aca90613100565b8015610b155780601f10610aec57610100808354040283529160200191610b15565b820191905f5260205f20905b815481529060010190602001808311610af857829003601f168201915b505050505081526020019060010190610a81565b505050508152505081526020019060010190610a30565b50505050905090565b60238054610b5690613100565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8290613100565b8015610bcd5780601f10610ba457610100808354040283529160200191610bcd565b820191905f5260205f20905b815481529060010190602001808311610bb057829003601f168201915b505050505081565b60606018805480602002602001604051908101604052809291908181526020018280548015610a0357602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116109e5575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610a0357602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116109e5575050505050905090565b60268054610b5690613100565b602e8181548110610cad575f80fd5b5f91825260209091206005909102018054600182015460028301546003840180549395506001600160a01b03928316949290911692610ceb90613100565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1790613100565b8015610d625780601f10610d3957610100808354040283529160200191610d62565b820191905f5260205f20905b815481529060010190602001808311610d4557829003601f168201915b505050505090806004018054610d7790613100565b80601f0160208091040260200160405190810160405280929190818152602001828054610da390613100565b8015610dee5780601f10610dc557610100808354040283529160200191610dee565b820191905f5260205f20905b815481529060010190602001808311610dd157829003601f168201915b5050505050905085565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015610b40578382905f5260205f2090600202016040518060400160405290815f82018054610e4b90613100565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7790613100565b8015610ec25780601f10610e9957610100808354040283529160200191610ec2565b820191905f5260205f20905b815481529060010190602001808311610ea557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610f5957602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610f065790505b50505050508152505081526020019060010190610e1b565b60248054610b5690613100565b60285460275403610f9157610f9161320d565b60295460285403610fa457610fa461320d565b602a5460295403610fb757610fb761320d565b602b54602a5403610fca57610fca61320d565b602c54602b5403610fdd57610fdd61320d565b602d54602c54036109ab576109ab61320d565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015610b40578382905f5260205f2001805461103090613100565b80601f016020809104026020016040519081016040528092919081815260200182805461105c90613100565b80156110a75780601f1061107e576101008083540402835291602001916110a7565b820191905f5260205f20905b81548152906001019060200180831161108a57829003601f168201915b505050505081526020019060010190611013565b60218054610b5690613100565b5f5b602e5481101561059457602e8054737109709ecfa91a80626ff3989d68f67f5b1dd12d91639ebf68279184908110611104576111046130d3565b905f5260205f2090600502015f01546040518263ffffffff1660e01b815260040161113191815260200190565b5f604051808303815f87803b158015611148575f80fd5b505af115801561115a573d5f803e3d5ffd5b5050505061120a7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b0316632f103f226040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e391906131f6565b602e83815481106111f6576111f66130d3565b905f5260205f2090600502015f015461293f565b6001016110ca565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015610b40575f8481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156112f057602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161129d5790505b50505050508152505081526020019060010190611235565b60228054610b5690613100565b60208054610b5690613100565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015610b40575f8481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561140057602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116113ad5790505b50505050508152505081526020019060010190611345565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015610b40578382905f5260205f2001805461145890613100565b80601f016020809104026020016040519081016040528092919081815260200182805461148490613100565b80156114cf5780601f106114a6576101008083540402835291602001916114cf565b820191905f5260205f20905b8154815290600101906020018083116114b257829003601f168201915b50505050508152602001906001019061143b565b6008545f9060ff16156114fa575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa158015611588573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ac91906131f6565b1415905090565b60258054610b5690613100565b60606015805480602002602001604051908101604052809291908181526020018280548015610a0357602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116109e5575050505050905090565b6116b18383836040516024016116369392919061323a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2ced7cef000000000000000000000000000000000000000000000000000000001790526129c3565b505050565b80516040517f9ebf68270000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d90639ebf6827906024015f604051808303815f87803b15801561171c575f80fd5b505af115801561172e573d5f803e3d5ffd5b505050505f816020015190505f816001600160a01b031663dda79b756040518163ffffffff1660e01b8152600401602060405180830381865afa158015611777573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179b919061327c565b90505f826001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117fe919061327c565b90505f836001600160a01b03166357bec62f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561183d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611861919061327c565b90505f846001600160a01b03166321e093b16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118c4919061327c565b60408781015190517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015611938575f80fd5b505af115801561194a573d5f803e3d5ffd5b505050505f60405161195b90612cab565b604051809103905ff080158015611974573d5f803e3d5ffd5b50604080517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015260248201929092525f6044820152919250871690634f1ef286906064015f604051808303815f87803b1580156119e0575f80fd5b505af11580156119f2573d5f803e3d5ffd5b505050505f611a00876129cc565b9050611a4281836040518060400160405280600f81526020017f55706772616465206661696c65642e0000000000000000000000000000000000815250612a90565b611a816040518060400160405280601981526020017f5375636365737366756c6c7920757067726164656420746f3a0000000000000081525082612b15565b611b20876001600160a01b031663dda79b756040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ac0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ae4919061327c565b876040518060400160405280601881526020017f437573746f64792061646472657373206368616e6765642e0000000000000000815250612a90565b611bbf876001600160a01b0316635b1125916040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b83919061327c565b866040518060400160405280601481526020017f5453532061646472657373206368616e6765642e000000000000000000000000815250612a90565b611c5e876001600160a01b03166357bec62f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bfe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c22919061327c565b856040518060400160405280601a81526020017f436f6e6e6563746f722061646472657373206368616e6765642e000000000000815250612a90565b611cfd876001600160a01b03166321e093b16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cc1919061327c565b846040518060400160405280601b81526020017f5a65746120746f6b656e2061646472657373206368616e6765642e0000000000815250612a90565b611d3b6040518060400160405280601d81526020017f5374617465207072657365727665642061667465722075706772616465000000815250612baa565b5f876001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d9c91906131f6565b6040808b015190517f91d14854000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0391821660248201529192505f91908a16906391d1485490604401602060405180830381865afa158015611e0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e2f91906132a2565b9050611e53816040518060600160405280602c81526020016177e5602c9139612c39565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611ead575f80fd5b505af1158015611ebf573d5f803e3d5ffd5b5050505050505050505050505050565b602e6040518060a0016040528060275481526020017348b9aacc350b20147001f88821d31731ba4c30ed6001600160a01b0316815260200173aeb6ddb7708467814d557e340283248be8e431246001600160a01b0316815260200160208054611f3790613100565b80601f0160208091040260200160405190810160405280929190818152602001828054611f6390613100565b8015611fae5780601f10611f8557610100808354040283529160200191611fae565b820191905f5260205f20905b815481529060010190602001808311611f9157829003601f168201915b5050509183525050604080518082018252600881527f457468657265756d000000000000000000000000000000000000000000000000602082810191909152928301528354600181810186555f9586529483902084516005909202019081559183015193820180546001600160a01b039586167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091559083015160028301805491909516911617909255606081015190919060038201906120749082613339565b50608082015160048201906120899082613339565b505050602e6040518060a0016040528060285481526020017348b9aacc350b20147001f88821d31731ba4c30ed6001600160a01b0316815260200173af28a257d292e7f0e531073f70a175b57e0261a86001600160a01b03168152602001602180546120f490613100565b80601f016020809104026020016040519081016040528092919081815260200182805461212090613100565b801561216b5780601f106121425761010080835404028352916020019161216b565b820191905f5260205f20905b81548152906001019060200180831161214e57829003601f168201915b505050918352505060408051808201825260038082527f4253430000000000000000000000000000000000000000000000000000000000602080840191909152938401919091528454600180820187555f9687529584902085516005909202019081559284015194830180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b0397881617909155918401516002840180549093169516949094179055606082015191929091908201906122369082613339565b506080820151600482019061224b9082613339565b505050602e6040518060a0016040528060295481526020017348b9aacc350b20147001f88821d31731ba4c30ed6001600160a01b03168152602001737828f92e7d79e141189f24c98acef71bc07bad3f6001600160a01b03168152602001602280546122b690613100565b80601f01602080910402602001604051908101604052809291908181526020018280546122e290613100565b801561232d5780601f106123045761010080835404028352916020019161232d565b820191905f5260205f20905b81548152906001019060200180831161231057829003601f168201915b5050509183525050604080518082018252600781527f506f6c79676f6e00000000000000000000000000000000000000000000000000602082810191909152928301528354600181810186555f9586529483902084516005909202019081559183015193820180546001600160a01b039586167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091559083015160028301805491909516911617909255606081015190919060038201906123f39082613339565b50608082015160048201906124089082613339565b505050602e6040518060a00160405280602a5481526020017348b9aacc350b20147001f88821d31731ba4c30ed6001600160a01b0316815260200173f43cf8b3f3d22d4cc33f964c59076eab2f8a108e6001600160a01b031681526020016023805461247390613100565b80601f016020809104026020016040519081016040528092919081815260200182805461249f90613100565b80156124ea5780601f106124c1576101008083540402835291602001916124ea565b820191905f5260205f20905b8154815290600101906020018083116124cd57829003601f168201915b5050509183525050604080518082018252600481527f4261736500000000000000000000000000000000000000000000000000000000602082810191909152928301528354600181810186555f9586529483902084516005909202019081559183015193820180546001600160a01b039586167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091559083015160028301805491909516911617909255606081015190919060038201906125b09082613339565b50608082015160048201906125c59082613339565b505050602e6040518060a00160405280602b548152602001731c53e188bc2e471f9d4a4762cff843d32c2c85496001600160a01b0316815260200173de3fb63723f0eeed8967ff9124e1c3ba89871b036001600160a01b031681526020016024805461263090613100565b80601f016020809104026020016040519081016040528092919081815260200182805461265c90613100565b80156126a75780601f1061267e576101008083540402835291602001916126a7565b820191905f5260205f20905b81548152906001019060200180831161268a57829003601f168201915b5050509183525050604080518082018252600881527f417262697472756d000000000000000000000000000000000000000000000000602082810191909152928301528354600181810186555f9586529483902084516005909202019081559183015193820180546001600160a01b039586167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915590830151600283018054919095169116179092556060810151909190600382019061276d9082613339565b50608082015160048201906127829082613339565b505050602e6040518060a00160405280602c548152602001731c53e188bc2e471f9d4a4762cff843d32c2c85496001600160a01b0316815260200173de3fb63723f0eeed8967ff9124e1c3ba89871b036001600160a01b03168152602001602580546127ed90613100565b80601f016020809104026020016040519081016040528092919081815260200182805461281990613100565b80156128645780601f1061283b57610100808354040283529160200191612864565b820191905f5260205f20905b81548152906001019060200180831161284757829003601f168201915b5050509183525050604080518082018252600981527f4176616c616e6368650000000000000000000000000000000000000000000000602082810191909152928301528354600181810186555f9586529483902084516005909202019081559183015193820180546001600160a01b039586167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915590830151600283018054919095169116179092556060810151909190600382019061292a9082613339565b50608082015160048201906116b19082613339565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b5f6040518083038186803b1580156129a9575f80fd5b505afa1580156129bb573d5f803e3d5ffd5b505050505050565b61059481612c8b565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc602482018190525f91737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa158015612a65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a8991906131f6565b9392505050565b6040517f2f2769d1000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d90632f2769d190612ae490869086908690600401613450565b5f6040518083038186803b158015612afa575f80fd5b505afa158015612b0c573d5f803e3d5ffd5b50505050505050565b612ba68282604051602401612b2b929190613489565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af333000000000000000000000000000000000000000000000000000000001790526129c3565b5050565b61059481604051602401612bbe9190612e54565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526129c3565b6040517fa34edc03000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a34edc039061299390859085906004016134b3565b80516a636f6e736f6c652e6c6f67602083015f808483855afa5050505050565b61430f806134d683390190565b602080825282518282018190525f918401906040840190835b81811015612cf85783516001600160a01b0316835260209384019390920191600101612cd1565b509095945050505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015612e48577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b8801810191908801905f5b81811015612e2e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352612e18848651612d03565b6020958601959094509290920191600101612dde565b509197505050602094850194929092019150600101612d75565b50929695505050505050565b602081525f612a896020830184612d03565b5f60208284031215612e76575f80fd5b5035919050565b8581526001600160a01b03851660208201526001600160a01b038416604082015260a060608201525f612eb360a0830185612d03565b8281036080840152612ec58185612d03565b98975050505050505050565b5f8151808452602084019350602083015f5b82811015612f235781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101612ee3565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015612e48577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752612f976040880182612d03565b9050602082015191508681036020880152612fb28183612ed1565b965050506020938401939190910190600101612f53565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015612e48577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452613029858351612d03565b94506020938401939190910190600101612fef565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015612e48577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b03815116865260208101519050604060208701526130bd6040870182612ed1565b9550506020938401939190910190600101613064565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600181811c9082168061311457607f821691505b60208210810361314b577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b602081525f80835461316281613100565b806020860152600182165f811461318057600181146131ba576131eb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083166040870152604082151560051b87010193506131eb565b865f5260205f205f5b838110156131e2578154888201604001526001909101906020016131c3565b87016040019450505b509195945050505050565b5f60208284031215613206575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b606081525f61324c6060830186612d03565b828103602084015261325e8186612d03565b905082810360408401526132728185612d03565b9695505050505050565b5f6020828403121561328c575f80fd5b81516001600160a01b0381168114612a89575f80fd5b5f602082840312156132b2575f80fd5b81518015158114612a89575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b601f8211156116b157805f5260205f20601f840160051c810160208510156133135750805b601f840160051c820191505b81811015613332575f815560010161331f565b5050505050565b815167ffffffffffffffff811115613353576133536132c1565b613367816133618454613100565b846132ee565b6020601f8211600181146133b8575f83156133825750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455613332565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b8281101561340557878501518255602094850194600190920191016133e5565b508482101561344157868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b03841681526001600160a01b0383166020820152606060408201525f6134806060830184612d03565b95945050505050565b604081525f61349b6040830185612d03565b90506001600160a01b03831660208301529392505050565b8215158152604060208201525f6134cd6040830184612d03565b94935050505056fe60a060405230608052348015610013575f80fd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516142166100f95f395f8181612882015281816128ab0152612a5d01526142165ff3fe608060405260043610610277575f3560e01c8063744b9b8b1161014b578063aa0c0fc1116100c6578063cb7ba8e51161007c578063d547741f11610062578063d547741f14610723578063dda79b7514610742578063e63ab1e914610760575f80fd5b8063cb7ba8e5146106fd578063d09e3b7814610710575f80fd5b8063ae7a3a6f116100ac578063ae7a3a6f146106aa578063b0107214146106c9578063c0c53b8b146106de575f80fd5b8063aa0c0fc114610643578063ad3cb1cc14610662575f80fd5b806391d148541161011b578063a217fddf11610101578063a217fddf146105e8578063a2ba1934146105fb578063a783c78914610610575f80fd5b806391d1485414610566578063950837aa146105c9575f80fd5b8063744b9b8b146105015780637bbe9afa146105145780637c744253146105335780638456cb5914610552575f80fd5b806338e22527116101f557806357bec62f116101ab5780635c975abb116101915780635c975abb146104855780635d62c860146104bb578063726ac97c146104ee575f80fd5b806357bec62f146104475780635b11259114610466575f80fd5b80633f4ba83a116101db5780633f4ba83a1461040c5780634f1ef2861461042057806352d1902d14610433575f80fd5b806338e22527146103d9578063397e375c146103f9575f80fd5b806321e093b11161024a578063282906ed11610230578063282906ed146103885780632f2ff15d1461039b57806336568abe146103ba575f80fd5b806321e093b1146102f6578063248a9ca31461032d575f80fd5b806301ffc9a71461027b57806310188aef146102af578063102614b0146102d05780631becceb4146102e3575b5f80fd5b348015610286575f80fd5b5061029a6102953660046136c5565b610793565b60405190151581526020015b60405180910390f35b3480156102ba575f80fd5b506102ce6102c936600461371f565b61082b565b005b6102ce6102de36600461374e565b610905565b6102ce6102f13660046137f7565b610a2c565b348015610301575f80fd5b50600354610315906001600160a01b031681565b6040516001600160a01b0390911681526020016102a6565b348015610338575f80fd5b5061037a610347366004613859565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016102a6565b6102ce610396366004613870565b610b50565b3480156103a6575f80fd5b506102ce6103b53660046138c3565b610ce8565b3480156103c5575f80fd5b506102ce6103d43660046138c3565b610d31565b6103ec6103e73660046138fd565b610d82565b6040516102a69190613989565b6102ce61040736600461399b565b610e9d565b348015610417575f80fd5b506102ce611053565b6102ce61042e366004613aa3565b611088565b34801561043e575f80fd5b5061037a6110a7565b348015610452575f80fd5b50600254610315906001600160a01b031681565b348015610471575f80fd5b50600154610315906001600160a01b031681565b348015610490575f80fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661029a565b3480156104c6575f80fd5b5061037a7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b6102ce6104fc366004613b2e565b6110d5565b6102ce61050f3660046137f7565b6112a9565b34801561051f575f80fd5b506102ce61052e366004613b79565b61148c565b34801561053e575f80fd5b506102ce61054d366004613859565b61170a565b34801561055d575f80fd5b506102ce61175a565b348015610571575f80fd5b5061029a6105803660046138c3565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105d4575f80fd5b506102ce6105e336600461371f565b61178c565b3480156105f3575f80fd5b5061037a5f81565b348015610606575f80fd5b5061037a610b4081565b34801561061b575f80fd5b5061037a7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561064e575f80fd5b506102ce61065d366004613c04565b6118a2565b34801561066d575f80fd5b506103ec6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156106b5575f80fd5b506102ce6106c436600461371f565b611a3d565b3480156106d4575f80fd5b5061037a60045481565b3480156106e9575f80fd5b506102ce6106f8366004613c96565b611b15565b6102ce61070b366004613cd6565b611dd9565b6102ce61071e366004613d44565b611fb1565b34801561072e575f80fd5b506102ce61073d3660046138c3565b6120d6565b34801561074d575f80fd5b505f54610315906001600160a01b031681565b34801561076b575f80fd5b5061037a7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061082557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f61083581612119565b6001600160a01b03821661085c5760405163d92e233d60e01b815260040160405180910390fd5b6002546001600160a01b03161561089f576040517f0c8dc01600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108c97f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983612123565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61090d61220d565b825f03610946576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841661096d5760405163d92e233d60e01b815260040160405180910390fd5b610b4061097d6060830183613dc9565b905011156109b7576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109c061226b565b90506109cb816123a1565b6109d63384866123e4565b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c868686604051610a1d93929190613f3c565b60405180910390a35050505050565b610a3461220d565b610a446040820160208301613f70565b15610a7b576040517f19b4bff200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038416610aa25760405163d92e233d60e01b815260040160405180910390fd5b610b40610ab26060830183613dc9565b610abd915084613f8b565b1115610af5576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610afe61226b565b9050610b09816123a1565b846001600160a01b0316336001600160a01b03167fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d974868686604051610a1d93929190613fc3565b610b5861220d565b815f03610b91576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316610bb85760405163d92e233d60e01b815260040160405180910390fd5b610b40610bc86060830183613dc9565b90501115610c02576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610c0b61226b565b9050610c178382612501565b6001546040515f916001600160a01b03169085908381818185875af1925050503d805f8114610c61576040519150601f19603f3d011682016040523d82523d5f602084013e610c66565b606091505b5050905080610ca1576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c865f87604051610a1d93929190613f3c565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610d2181612119565b610d2b8383612123565b50505050565b6001600160a01b0381163314610d73576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d7d8282612550565b505050565b6060610d8c612612565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610db681612119565b610dbe61220d565b6001600160a01b038516610de55760405163d92e233d60e01b815260040160405180910390fd5b60605f610df5602089018961371f565b6001600160a01b031603610e1557610e0e868686612693565b9050610e24565b610e2187878787612742565b90505b856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610e6193929190613fe8565b60405180910390a2915050610e9560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b949350505050565b610ea561220d565b835f03610ede576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610f055760405163d92e233d60e01b815260040160405180910390fd5b610b40610f156060830183613dc9565b610f20915084613f8b565b1115610f58576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610f6161226b565b9050610f6d8582612501565b6001546040515f916001600160a01b03169087908381818185875af1925050503d805f8114610fb7576040519150601f19603f3d011682016040523d82523d5f602084013e610fbc565b606091505b5050905080610ff7576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866001600160a01b0316336001600160a01b03167fa795d4377323e4c2d4c346b8050a7dd504c4043be8884c81b8d9690706c8388f885f898989604051611042959493929190614001565b60405180910390a350505050505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61107d81612119565b6110856127e7565b50565b611090612877565b61109982612947565b6110a38282612951565b5050565b5f6110b0612a52565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6110dd61220d565b345f03611116576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661113d5760405163d92e233d60e01b815260040160405180910390fd5b610b4061114d6060830183613dc9565b90501115611187576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611190612ab4565b905080156111ca576040517f394836a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040515f916001600160a01b03169034908381818185875af1925050503d805f8114611214576040519150601f19603f3d011682016040523d82523d5f602084013e611219565b606091505b5050905080611254576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c345f8760405161129b93929190613f3c565b60405180910390a350505050565b6112b161220d565b345f036112ea576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166113115760405163d92e233d60e01b815260040160405180910390fd5b610b406113216060830183613dc9565b61132c915084613f8b565b1115611364576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61136d612ab4565b905080156113a7576040517f394836a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040515f916001600160a01b03169034908381818185875af1925050503d805f81146113f1576040519150601f19603f3d011682016040523d82523d5f602084013e6113f6565b606091505b5050905080611431576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b856001600160a01b0316336001600160a01b03167fa795d4377323e4c2d4c346b8050a7dd504c4043be8884c81b8d9690706c8388f345f89898960405161147c959493929190614001565b60405180910390a3505050505050565b611494612612565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96114be81612119565b6114c661220d565b835f036114ff576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0385166115265760405163d92e233d60e01b815260040160405180910390fd5b6115308686612ac1565b611566576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61157a6001600160a01b0387168686612bcf565b5f611588602089018961371f565b6001600160a01b0316036115a7576115a1858484612693565b506115b5565b6115b387868585612742565b505b6115bf8686612ac1565b6115f5576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f906001600160a01b038816906370a0823190602401602060405180830381865afa158015611652573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116769190614047565b90508015611688576116888782612ccf565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b73828787876040516116cf93929190613fe8565b60405180910390a3505061170260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b5f61171481612119565b600480549083905560408051828152602081018590527fe60a2882aff7841a7d0492b804d46ff2d9b07ea353dbc3791e8276b729e40cd8910160405180910390a1505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61178481612119565b611085612ee9565b5f61179681612119565b6001600160a01b0382166117bd5760405163d92e233d60e01b815260040160405180910390fd5b6001546117f4907f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb906001600160a01b0316612550565b5061181f7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb83612123565b50600154604080516001600160a01b03928316815291841660208301527f3a7b8d6372645f474fe60c115a2ef21421306a3ed4664fa0023c461413c08579910160405180910390a150600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6118aa612612565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b96118d481612119565b6118dc61220d565b845f03611915576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03861661193c5760405163d92e233d60e01b815260040160405180910390fd5b6119506001600160a01b0388168787612f62565b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a36906119959085906004016140b9565b5f604051808303815f87803b1580156119ac575f80fd5b505af11580156119be573d5f803e3d5ffd5b50505050866001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03587878787604051611a0b94939291906140cb565b60405180910390a35061170260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f611a4781612119565b6001600160a01b038216611a6e5760405163d92e233d60e01b815260040160405180910390fd5b5f546001600160a01b031615611ab0576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ada7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983612123565b50505f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f81158015611b5f5750825b90505f8267ffffffffffffffff166001148015611b7b5750303b155b905081158015611b89575080155b15611bc0576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315611c215784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0388161580611c3e57506001600160a01b038716155b15611c5c5760405163d92e233d60e01b815260040160405180910390fd5b611c64612f93565b611c6c612f9b565b611c74612f93565b611c7c612fab565b611c865f87612123565b50611cb17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87612123565b50611cdc7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89612123565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a16179055611d3a7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89612123565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315611dcf5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b611de1612612565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb611e0b81612119565b611e1361220d565b6001600160a01b038516611e3a5760405163d92e233d60e01b815260040160405180910390fd5b5f856001600160a01b0316346040515f6040518083038185875af1925050503d805f8114611e83576040519150601f19603f3d011682016040523d82523d5f602084013e611e88565b606091505b5050905080611ec3576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063c9028a3690611f089086906004016140b9565b5f604051808303815f87803b158015611f1f575f80fd5b505af1158015611f31573d5f803e3d5ffd5b505050505f6001600160a01b0316866001600160a01b03167fde7603a6ed5d07c9f43597ccfe9043d15b66d3284f0de321f5cdf56329e6e03534888888604051611f7e94939291906140cb565b60405180910390a35050610d2b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611fb961220d565b845f03611ff2576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0386166120195760405163d92e233d60e01b815260040160405180910390fd5b610b406120296060830183613dc9565b612034915084613f8b565b111561206c576040517f386691aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61207561226b565b9050612080816123a1565b61208b3386886123e4565b866001600160a01b0316336001600160a01b03167fa795d4377323e4c2d4c346b8050a7dd504c4043be8884c81b8d9690706c8388f8888888888604051611042959493929190614001565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461210f81612119565b610d2b8383612550565b6110858133612fbb565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16612204575f848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556121ba3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610825565b5f915050610825565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615612269576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f80612275612ab4565b9050805f03612285575f91505090565b6004545f036122c0576040517f394836a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045434101561230b57600480546040517fa458261b000000000000000000000000000000000000000000000000000000008152918201523460248201526044015b60405180910390fd5b6001546004546040515f926001600160a01b031691908381818185875af1925050503d805f8114612357576040519150601f19603f3d011682016040523d82523d5f602084013e61235c565b606091505b5050905080612397576040517f4033e4e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004549250505090565b80341115611085576040517f8afe4db400000000000000000000000000000000000000000000000000000000815260048101829052346024820152604401612302565b6003546001600160a01b039081169083160361242c576040517fe4dd681d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa15801561248c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b09190614101565b6124e6576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f54610d7d906001600160a01b038481169186911684613047565b5f61250c8284613f8b565b9050803414610d7d576040517f84222ac700000000000000000000000000000000000000000000000000000000815260048101829052346024820152604401612302565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615612204575f848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610825565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161268d576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b606061269f8383613080565b5f80856001600160a01b03163486866040516126bc92919061411c565b5f6040518083038185875af1925050503d805f81146126f6576040519150601f19603f3d011682016040523d82523d5f602084013e6126fb565b606091505b509150915081612737576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b6060836001600160a01b031663676cc054348786866040518563ffffffff1660e01b81526004016127759392919061412b565b5f6040518083038185885af1158015612790573d5f803e3d5ffd5b50505050506040513d5f823e601f3d908101601f191682016040526127b89190810190614155565b95945050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6127ef613180565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061291057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166129047f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15612269576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110a381612119565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156129ab575060408051601f3d908101601f191682019092526129a891810190614047565b60015b6129ec576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401612302565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612a48576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612302565b610d7d83836131db565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612269576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805c90818101905d90565b604080516001600160a01b0383811660248301525f604480840182905284518085039091018152606490930184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052925183928392871691612b4a91906141ca565b5f604051808303815f865af19150503d805f8114612b83576040519150601f19603f3d011682016040523d82523d5f602084013e612b88565b606091505b509150915081612b9d57600192505050610825565b805115612bc4575f81806020019051810190612bb99190614101565b935061082592505050565b506001949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052612c4e8482613230565b610d2b576040516001600160a01b0384811660248301525f6044830152612cc591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506132cd565b610d2b84826132cd565b6003546001600160a01b0390811690831603612e16576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303815f875af1158015612d4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d729190614101565b612da8576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b906024015f604051808303815f87803b158015612e04575f80fd5b505af1158015611702573d5f803e3d5ffd5b5f546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015612e76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e9a9190614101565b612ed0576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f546110a3906001600160a01b03848116911683612f62565b612ef161220d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612859565b6040516001600160a01b03838116602483015260448201839052610d7d91859182169063a9059cbb90606401612c7e565b612269613347565b612fa3613347565b6122696133ae565b612fb3613347565b6122696133b6565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166110a3576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612302565b6040516001600160a01b038481166024830152838116604483015260648201839052610d2b9186918216906323b872dd90608401612c7e565b600481106110a35781357f98933fac000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601613105576040517fed69977500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f36fd75ca000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601610d7d576040517ff3459a9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16612269576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6131e482613407565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561322857610d7d82826134ae565b6110a3613517565b5f805f846001600160a01b03168460405161324b91906141ca565b5f604051808303815f865af19150503d805f8114613284576040519150601f19603f3d011682016040523d82523d5f602084013e613289565b606091505b50915091508180156132b35750805115806132b35750808060200190518101906132b39190614101565b80156127b85750505050506001600160a01b03163b151590565b5f6132e16001600160a01b0384168361354f565b905080515f141580156133055750808060200190518101906133039190614101565b155b15610d7d576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401612302565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16612269576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127c1613347565b6133be613347565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b806001600160a01b03163b5f03613455576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612302565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516134ca91906141ca565b5f60405180830381855af49150503d805f8114613502576040519150601f19603f3d011682016040523d82523d5f602084013e613507565b606091505b50915091506127b885838361355c565b3415612269576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061273b83835f6135d1565b6060826135715761356c82613683565b61273b565b815115801561358857506001600160a01b0384163b155b156135ca576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612302565b508061273b565b60608147101561360f576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401612302565b5f80856001600160a01b0316848660405161362a91906141ca565b5f6040518083038185875af1925050503d805f8114613664576040519150601f19603f3d011682016040523d82523d5f602084013e613669565b606091505b509150915061367986838361355c565b9695505050505050565b8051156136935780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f602082840312156136d5575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461273b575f80fd5b80356001600160a01b038116811461371a575f80fd5b919050565b5f6020828403121561372f575f80fd5b61273b82613704565b5f60a08284031215613748575f80fd5b50919050565b5f805f8060808587031215613761575f80fd5b61376a85613704565b93506020850135925061377f60408601613704565b9150606085013567ffffffffffffffff81111561379a575f80fd5b6137a687828801613738565b91505092959194509250565b5f8083601f8401126137c2575f80fd5b50813567ffffffffffffffff8111156137d9575f80fd5b6020830191508360208285010111156137f0575f80fd5b9250929050565b5f805f806060858703121561380a575f80fd5b61381385613704565b9350602085013567ffffffffffffffff81111561382e575f80fd5b61383a878288016137b2565b909450925050604085013567ffffffffffffffff81111561379a575f80fd5b5f60208284031215613869575f80fd5b5035919050565b5f805f60608486031215613882575f80fd5b61388b84613704565b925060208401359150604084013567ffffffffffffffff8111156138ad575f80fd5b6138b986828701613738565b9150509250925092565b5f80604083850312156138d4575f80fd5b823591506138e460208401613704565b90509250929050565b5f60208284031215613748575f80fd5b5f805f8060608587031215613910575f80fd5b61391a86866138ed565b935061392860208601613704565b9250604085013567ffffffffffffffff811115613943575f80fd5b61394f878288016137b2565b95989497509550505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61273b602083018461395b565b5f805f805f608086880312156139af575f80fd5b6139b886613704565b945060208601359350604086013567ffffffffffffffff8111156139da575f80fd5b6139e6888289016137b2565b909450925050606086013567ffffffffffffffff811115613a05575f80fd5b613a1188828901613738565b9150509295509295909350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613a7457613a74613a1e565b604052919050565b5f67ffffffffffffffff821115613a9557613a95613a1e565b50601f01601f191660200190565b5f8060408385031215613ab4575f80fd5b613abd83613704565b9150602083013567ffffffffffffffff811115613ad8575f80fd5b8301601f81018513613ae8575f80fd5b8035613afb613af682613a7c565b613a4b565b818152866020838501011115613b0f575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f8060408385031215613b3f575f80fd5b613b4883613704565b9150602083013567ffffffffffffffff811115613b63575f80fd5b613b6f85828601613738565b9150509250929050565b5f805f805f8060a08789031215613b8e575f80fd5b613b9888886138ed565b9550613ba660208801613704565b9450613bb460408801613704565b935060608701359250608087013567ffffffffffffffff811115613bd6575f80fd5b613be289828a016137b2565b979a9699509497509295939492505050565b5f60808284031215613748575f80fd5b5f805f805f8060a08789031215613c19575f80fd5b613c2287613704565b9550613c3060208801613704565b945060408701359350606087013567ffffffffffffffff811115613c52575f80fd5b613c5e89828a016137b2565b909450925050608087013567ffffffffffffffff811115613c7d575f80fd5b613c8989828a01613bf4565b9150509295509295509295565b5f805f60608486031215613ca8575f80fd5b613cb184613704565b9250613cbf60208501613704565b9150613ccd60408501613704565b90509250925092565b5f805f8060608587031215613ce9575f80fd5b613cf285613704565b9350602085013567ffffffffffffffff811115613d0d575f80fd5b613d19878288016137b2565b909450925050604085013567ffffffffffffffff811115613d38575f80fd5b6137a687828801613bf4565b5f805f805f8060a08789031215613d59575f80fd5b613d6287613704565b955060208701359450613d7760408801613704565b9350606087013567ffffffffffffffff811115613d92575f80fd5b613d9e89828a016137b2565b909450925050608087013567ffffffffffffffff811115613dbd575f80fd5b613c8989828a01613738565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613dfc575f80fd5b83018035915067ffffffffffffffff821115613e16575f80fd5b6020019150368190038213156137f0575f80fd5b8015158114611085575f80fd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e6a575f80fd5b830160208101925035905067ffffffffffffffff811115613e89575f80fd5b8036038213156137f0575f80fd5b81835281816020850137505f602082840101525f6020601f19601f840116840101905092915050565b6001600160a01b03613ed182613704565b1682525f6020820135613ee381613e2a565b151560208401526001600160a01b03613efe60408401613704565b166040840152613f116060830183613e37565b60a06060860152613f2660a086018284613e97565b6080948501359590940194909452509092915050565b8381526001600160a01b0383166020820152608060408201525f608082015260a060608201525f6127b860a0830184613ec0565b5f60208284031215613f80575f80fd5b813561273b81613e2a565b80820180821115610825577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b604081525f613fd6604083018587613e97565b82810360208401526136798185613ec0565b838152604060208201525f6127b8604083018486613e97565b8581526001600160a01b0385166020820152608060408201525f614029608083018587613e97565b828103606084015261403b8185613ec0565b98975050505050505050565b5f60208284031215614057575f80fd5b5051919050565b6001600160a01b0361406f82613704565b1682526001600160a01b0361408660208301613704565b166020830152604081810135908301525f6140a46060830183613e37565b608060608601526127b8608086018284613e97565b602081525f61273b602083018461405e565b848152606060208201525f6140e4606083018587613e97565b82810360408401526140f6818561405e565b979650505050505050565b5f60208284031215614111575f80fd5b815161273b81613e2a565b818382375f9101908152919050565b6001600160a01b0361413c85613704565b168152604060208201525f6127b8604083018486613e97565b5f60208284031215614165575f80fd5b815167ffffffffffffffff81111561417b575f80fd5b8201601f8101841361418b575f80fd5b8051614199613af682613a7c565b8181528560208385010111156141ad575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f82518060208501845e5f92019182525091905056fea26469706673582212200b17cb9dbd669352d49541c42cbaa2f317c7dbecae91c4758c456d153cb1016164736f6c634300081a003341646d696e206c6f73742044454641554c545f41444d494e5f524f4c4520616674657220757067726164652ea2646970667358221220c3e0c8b5170cbe46c13d825c189f99a7e7e358c4c7a3c9f6d4b5bcc1675e661864736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d", +} + +// GatewayEVMForkTestABI is the input ABI used to generate the binding from. +// Deprecated: Use GatewayEVMForkTestMetaData.ABI instead. +var GatewayEVMForkTestABI = GatewayEVMForkTestMetaData.ABI + +// GatewayEVMForkTestBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use GatewayEVMForkTestMetaData.Bin instead. +var GatewayEVMForkTestBin = GatewayEVMForkTestMetaData.Bin + +// DeployGatewayEVMForkTest deploys a new Ethereum contract, binding an instance of GatewayEVMForkTest to it. +func DeployGatewayEVMForkTest(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *GatewayEVMForkTest, error) { + parsed, err := GatewayEVMForkTestMetaData.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(GatewayEVMForkTestBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &GatewayEVMForkTest{GatewayEVMForkTestCaller: GatewayEVMForkTestCaller{contract: contract}, GatewayEVMForkTestTransactor: GatewayEVMForkTestTransactor{contract: contract}, GatewayEVMForkTestFilterer: GatewayEVMForkTestFilterer{contract: contract}}, nil +} + +// GatewayEVMForkTest is an auto generated Go binding around an Ethereum contract. +type GatewayEVMForkTest struct { + GatewayEVMForkTestCaller // Read-only binding to the contract + GatewayEVMForkTestTransactor // Write-only binding to the contract + GatewayEVMForkTestFilterer // Log filterer for contract events +} + +// GatewayEVMForkTestCaller is an auto generated read-only Go binding around an Ethereum contract. +type GatewayEVMForkTestCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMForkTestTransactor is an auto generated write-only Go binding around an Ethereum contract. +type GatewayEVMForkTestTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMForkTestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type GatewayEVMForkTestFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayEVMForkTestSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type GatewayEVMForkTestSession struct { + Contract *GatewayEVMForkTest // 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 +} + +// GatewayEVMForkTestCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type GatewayEVMForkTestCallerSession struct { + Contract *GatewayEVMForkTestCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// GatewayEVMForkTestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type GatewayEVMForkTestTransactorSession struct { + Contract *GatewayEVMForkTestTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayEVMForkTestRaw is an auto generated low-level Go binding around an Ethereum contract. +type GatewayEVMForkTestRaw struct { + Contract *GatewayEVMForkTest // Generic contract binding to access the raw methods on +} + +// GatewayEVMForkTestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type GatewayEVMForkTestCallerRaw struct { + Contract *GatewayEVMForkTestCaller // Generic read-only contract binding to access the raw methods on +} + +// GatewayEVMForkTestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type GatewayEVMForkTestTransactorRaw struct { + Contract *GatewayEVMForkTestTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewGatewayEVMForkTest creates a new instance of GatewayEVMForkTest, bound to a specific deployed contract. +func NewGatewayEVMForkTest(address common.Address, backend bind.ContractBackend) (*GatewayEVMForkTest, error) { + contract, err := bindGatewayEVMForkTest(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &GatewayEVMForkTest{GatewayEVMForkTestCaller: GatewayEVMForkTestCaller{contract: contract}, GatewayEVMForkTestTransactor: GatewayEVMForkTestTransactor{contract: contract}, GatewayEVMForkTestFilterer: GatewayEVMForkTestFilterer{contract: contract}}, nil +} + +// NewGatewayEVMForkTestCaller creates a new read-only instance of GatewayEVMForkTest, bound to a specific deployed contract. +func NewGatewayEVMForkTestCaller(address common.Address, caller bind.ContractCaller) (*GatewayEVMForkTestCaller, error) { + contract, err := bindGatewayEVMForkTest(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &GatewayEVMForkTestCaller{contract: contract}, nil +} + +// NewGatewayEVMForkTestTransactor creates a new write-only instance of GatewayEVMForkTest, bound to a specific deployed contract. +func NewGatewayEVMForkTestTransactor(address common.Address, transactor bind.ContractTransactor) (*GatewayEVMForkTestTransactor, error) { + contract, err := bindGatewayEVMForkTest(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &GatewayEVMForkTestTransactor{contract: contract}, nil +} + +// NewGatewayEVMForkTestFilterer creates a new log filterer instance of GatewayEVMForkTest, bound to a specific deployed contract. +func NewGatewayEVMForkTestFilterer(address common.Address, filterer bind.ContractFilterer) (*GatewayEVMForkTestFilterer, error) { + contract, err := bindGatewayEVMForkTest(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &GatewayEVMForkTestFilterer{contract: contract}, nil +} + +// bindGatewayEVMForkTest binds a generic wrapper to an already deployed contract. +func bindGatewayEVMForkTest(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := GatewayEVMForkTestMetaData.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 (_GatewayEVMForkTest *GatewayEVMForkTestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayEVMForkTest.Contract.GatewayEVMForkTestCaller.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 (_GatewayEVMForkTest *GatewayEVMForkTestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMForkTest.Contract.GatewayEVMForkTestTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayEVMForkTest *GatewayEVMForkTestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayEVMForkTest.Contract.GatewayEVMForkTestTransactor.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 (_GatewayEVMForkTest *GatewayEVMForkTestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayEVMForkTest.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 (_GatewayEVMForkTest *GatewayEVMForkTestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMForkTest.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayEVMForkTest *GatewayEVMForkTestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayEVMForkTest.Contract.contract.Transact(opts, method, params...) +} + +// ARBITRUMRPCURL is a free data retrieval call binding the contract method 0x699370b0. +// +// Solidity: function ARBITRUM_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) ARBITRUMRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "ARBITRUM_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ARBITRUMRPCURL is a free data retrieval call binding the contract method 0x699370b0. +// +// Solidity: function ARBITRUM_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) ARBITRUMRPCURL() (string, error) { + return _GatewayEVMForkTest.Contract.ARBITRUMRPCURL(&_GatewayEVMForkTest.CallOpts) +} + +// ARBITRUMRPCURL is a free data retrieval call binding the contract method 0x699370b0. +// +// Solidity: function ARBITRUM_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) ARBITRUMRPCURL() (string, error) { + return _GatewayEVMForkTest.Contract.ARBITRUMRPCURL(&_GatewayEVMForkTest.CallOpts) +} + +// AVALANCHERPCURL is a free data retrieval call binding the contract method 0xca747493. +// +// Solidity: function AVALANCHE_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) AVALANCHERPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "AVALANCHE_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// AVALANCHERPCURL is a free data retrieval call binding the contract method 0xca747493. +// +// Solidity: function AVALANCHE_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) AVALANCHERPCURL() (string, error) { + return _GatewayEVMForkTest.Contract.AVALANCHERPCURL(&_GatewayEVMForkTest.CallOpts) +} + +// AVALANCHERPCURL is a free data retrieval call binding the contract method 0xca747493. +// +// Solidity: function AVALANCHE_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) AVALANCHERPCURL() (string, error) { + return _GatewayEVMForkTest.Contract.AVALANCHERPCURL(&_GatewayEVMForkTest.CallOpts) +} + +// BASERPCURL is a free data retrieval call binding the contract method 0x2e8ade6e. +// +// Solidity: function BASE_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) BASERPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "BASE_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// BASERPCURL is a free data retrieval call binding the contract method 0x2e8ade6e. +// +// Solidity: function BASE_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) BASERPCURL() (string, error) { + return _GatewayEVMForkTest.Contract.BASERPCURL(&_GatewayEVMForkTest.CallOpts) +} + +// BASERPCURL is a free data retrieval call binding the contract method 0x2e8ade6e. +// +// Solidity: function BASE_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) BASERPCURL() (string, error) { + return _GatewayEVMForkTest.Contract.BASERPCURL(&_GatewayEVMForkTest.CallOpts) +} + +// BSCRPCURL is a free data retrieval call binding the contract method 0x88de7b87. +// +// Solidity: function BSC_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) BSCRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "BSC_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// BSCRPCURL is a free data retrieval call binding the contract method 0x88de7b87. +// +// Solidity: function BSC_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) BSCRPCURL() (string, error) { + return _GatewayEVMForkTest.Contract.BSCRPCURL(&_GatewayEVMForkTest.CallOpts) +} + +// BSCRPCURL is a free data retrieval call binding the contract method 0x88de7b87. +// +// Solidity: function BSC_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) BSCRPCURL() (string, error) { + return _GatewayEVMForkTest.Contract.BSCRPCURL(&_GatewayEVMForkTest.CallOpts) +} + +// ETHEREUMRPCURL is a free data retrieval call binding the contract method 0x9d3c5161. +// +// Solidity: function ETHEREUM_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) ETHEREUMRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "ETHEREUM_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ETHEREUMRPCURL is a free data retrieval call binding the contract method 0x9d3c5161. +// +// Solidity: function ETHEREUM_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) ETHEREUMRPCURL() (string, error) { + return _GatewayEVMForkTest.Contract.ETHEREUMRPCURL(&_GatewayEVMForkTest.CallOpts) +} + +// ETHEREUMRPCURL is a free data retrieval call binding the contract method 0x9d3c5161. +// +// Solidity: function ETHEREUM_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) ETHEREUMRPCURL() (string, error) { + return _GatewayEVMForkTest.Contract.ETHEREUMRPCURL(&_GatewayEVMForkTest.CallOpts) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) ISTEST(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "IS_TEST") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) ISTEST() (bool, error) { + return _GatewayEVMForkTest.Contract.ISTEST(&_GatewayEVMForkTest.CallOpts) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) ISTEST() (bool, error) { + return _GatewayEVMForkTest.Contract.ISTEST(&_GatewayEVMForkTest.CallOpts) +} + +// POLYGONRPCURL is a free data retrieval call binding the contract method 0x94897fb1. +// +// Solidity: function POLYGON_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) POLYGONRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "POLYGON_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// POLYGONRPCURL is a free data retrieval call binding the contract method 0x94897fb1. +// +// Solidity: function POLYGON_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) POLYGONRPCURL() (string, error) { + return _GatewayEVMForkTest.Contract.POLYGONRPCURL(&_GatewayEVMForkTest.CallOpts) +} + +// POLYGONRPCURL is a free data retrieval call binding the contract method 0x94897fb1. +// +// Solidity: function POLYGON_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) POLYGONRPCURL() (string, error) { + return _GatewayEVMForkTest.Contract.POLYGONRPCURL(&_GatewayEVMForkTest.CallOpts) +} + +// ZETACHAINRPCURL is a free data retrieval call binding the contract method 0x3f8f61dd. +// +// Solidity: function ZETACHAIN_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) ZETACHAINRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "ZETACHAIN_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ZETACHAINRPCURL is a free data retrieval call binding the contract method 0x3f8f61dd. +// +// Solidity: function ZETACHAIN_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) ZETACHAINRPCURL() (string, error) { + return _GatewayEVMForkTest.Contract.ZETACHAINRPCURL(&_GatewayEVMForkTest.CallOpts) +} + +// ZETACHAINRPCURL is a free data retrieval call binding the contract method 0x3f8f61dd. +// +// Solidity: function ZETACHAIN_RPC_URL() view returns(string) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) ZETACHAINRPCURL() (string, error) { + return _GatewayEVMForkTest.Contract.ZETACHAINRPCURL(&_GatewayEVMForkTest.CallOpts) +} + +// Chains is a free data retrieval call binding the contract method 0x550325b5. +// +// Solidity: function chains(uint256 ) view returns(uint256 forkId, address contractAddress, address admin, string rpcUrl, string name) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) Chains(opts *bind.CallOpts, arg0 *big.Int) (struct { + ForkId *big.Int + ContractAddress common.Address + Admin common.Address + RpcUrl string + Name string +}, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "chains", arg0) + + outstruct := new(struct { + ForkId *big.Int + ContractAddress common.Address + Admin common.Address + RpcUrl string + Name string + }) + if err != nil { + return *outstruct, err + } + + outstruct.ForkId = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.ContractAddress = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) + outstruct.Admin = *abi.ConvertType(out[2], new(common.Address)).(*common.Address) + outstruct.RpcUrl = *abi.ConvertType(out[3], new(string)).(*string) + outstruct.Name = *abi.ConvertType(out[4], new(string)).(*string) + + return *outstruct, err + +} + +// Chains is a free data retrieval call binding the contract method 0x550325b5. +// +// Solidity: function chains(uint256 ) view returns(uint256 forkId, address contractAddress, address admin, string rpcUrl, string name) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) Chains(arg0 *big.Int) (struct { + ForkId *big.Int + ContractAddress common.Address + Admin common.Address + RpcUrl string + Name string +}, error) { + return _GatewayEVMForkTest.Contract.Chains(&_GatewayEVMForkTest.CallOpts, arg0) +} + +// Chains is a free data retrieval call binding the contract method 0x550325b5. +// +// Solidity: function chains(uint256 ) view returns(uint256 forkId, address contractAddress, address admin, string rpcUrl, string name) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) Chains(arg0 *big.Int) (struct { + ForkId *big.Int + ContractAddress common.Address + Admin common.Address + RpcUrl string + Name string +}, error) { + return _GatewayEVMForkTest.Contract.Chains(&_GatewayEVMForkTest.CallOpts, arg0) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) ExcludeArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "excludeArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) ExcludeArtifacts() ([]string, error) { + return _GatewayEVMForkTest.Contract.ExcludeArtifacts(&_GatewayEVMForkTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) ExcludeArtifacts() ([]string, error) { + return _GatewayEVMForkTest.Contract.ExcludeArtifacts(&_GatewayEVMForkTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) ExcludeContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "excludeContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) ExcludeContracts() ([]common.Address, error) { + return _GatewayEVMForkTest.Contract.ExcludeContracts(&_GatewayEVMForkTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) ExcludeContracts() ([]common.Address, error) { + return _GatewayEVMForkTest.Contract.ExcludeContracts(&_GatewayEVMForkTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) ExcludeSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "excludeSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMForkTest.Contract.ExcludeSelectors(&_GatewayEVMForkTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMForkTest.Contract.ExcludeSelectors(&_GatewayEVMForkTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) ExcludeSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "excludeSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) ExcludeSenders() ([]common.Address, error) { + return _GatewayEVMForkTest.Contract.ExcludeSenders(&_GatewayEVMForkTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) ExcludeSenders() ([]common.Address, error) { + return _GatewayEVMForkTest.Contract.ExcludeSenders(&_GatewayEVMForkTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) Failed(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "failed") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) Failed() (bool, error) { + return _GatewayEVMForkTest.Contract.Failed(&_GatewayEVMForkTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) Failed() (bool, error) { + return _GatewayEVMForkTest.Contract.Failed(&_GatewayEVMForkTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) TargetArtifactSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzArtifactSelector, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "targetArtifactSelectors") + + if err != nil { + return *new([]StdInvariantFuzzArtifactSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzArtifactSelector)).(*[]StdInvariantFuzzArtifactSelector) + + return out0, err + +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _GatewayEVMForkTest.Contract.TargetArtifactSelectors(&_GatewayEVMForkTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _GatewayEVMForkTest.Contract.TargetArtifactSelectors(&_GatewayEVMForkTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) TargetArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "targetArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) TargetArtifacts() ([]string, error) { + return _GatewayEVMForkTest.Contract.TargetArtifacts(&_GatewayEVMForkTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) TargetArtifacts() ([]string, error) { + return _GatewayEVMForkTest.Contract.TargetArtifacts(&_GatewayEVMForkTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) TargetContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "targetContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) TargetContracts() ([]common.Address, error) { + return _GatewayEVMForkTest.Contract.TargetContracts(&_GatewayEVMForkTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) TargetContracts() ([]common.Address, error) { + return _GatewayEVMForkTest.Contract.TargetContracts(&_GatewayEVMForkTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) TargetInterfaces(opts *bind.CallOpts) ([]StdInvariantFuzzInterface, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "targetInterfaces") + + if err != nil { + return *new([]StdInvariantFuzzInterface), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzInterface)).(*[]StdInvariantFuzzInterface) + + return out0, err + +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _GatewayEVMForkTest.Contract.TargetInterfaces(&_GatewayEVMForkTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _GatewayEVMForkTest.Contract.TargetInterfaces(&_GatewayEVMForkTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) TargetSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "targetSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMForkTest.Contract.TargetSelectors(&_GatewayEVMForkTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayEVMForkTest.Contract.TargetSelectors(&_GatewayEVMForkTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) TargetSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "targetSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) TargetSenders() ([]common.Address, error) { + return _GatewayEVMForkTest.Contract.TargetSenders(&_GatewayEVMForkTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) TargetSenders() ([]common.Address, error) { + return _GatewayEVMForkTest.Contract.TargetSenders(&_GatewayEVMForkTest.CallOpts) +} + +// TestForkIdDiffer is a free data retrieval call binding the contract method 0x6cf73eea. +// +// Solidity: function testForkIdDiffer() view returns() +func (_GatewayEVMForkTest *GatewayEVMForkTestCaller) TestForkIdDiffer(opts *bind.CallOpts) error { + var out []interface{} + err := _GatewayEVMForkTest.contract.Call(opts, &out, "testForkIdDiffer") + + if err != nil { + return err + } + + return err + +} + +// TestForkIdDiffer is a free data retrieval call binding the contract method 0x6cf73eea. +// +// Solidity: function testForkIdDiffer() view returns() +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) TestForkIdDiffer() error { + return _GatewayEVMForkTest.Contract.TestForkIdDiffer(&_GatewayEVMForkTest.CallOpts) +} + +// TestForkIdDiffer is a free data retrieval call binding the contract method 0x6cf73eea. +// +// Solidity: function testForkIdDiffer() view returns() +func (_GatewayEVMForkTest *GatewayEVMForkTestCallerSession) TestForkIdDiffer() error { + return _GatewayEVMForkTest.Contract.TestForkIdDiffer(&_GatewayEVMForkTest.CallOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayEVMForkTest *GatewayEVMForkTestTransactor) SetUp(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMForkTest.contract.Transact(opts, "setUp") +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) SetUp() (*types.Transaction, error) { + return _GatewayEVMForkTest.Contract.SetUp(&_GatewayEVMForkTest.TransactOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayEVMForkTest *GatewayEVMForkTestTransactorSession) SetUp() (*types.Transaction, error) { + return _GatewayEVMForkTest.Contract.SetUp(&_GatewayEVMForkTest.TransactOpts) +} + +// TestCanSwitchForks is a paid mutator transaction binding the contract method 0x8cf03dbc. +// +// Solidity: function testCanSwitchForks() returns() +func (_GatewayEVMForkTest *GatewayEVMForkTestTransactor) TestCanSwitchForks(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMForkTest.contract.Transact(opts, "testCanSwitchForks") +} + +// TestCanSwitchForks is a paid mutator transaction binding the contract method 0x8cf03dbc. +// +// Solidity: function testCanSwitchForks() returns() +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) TestCanSwitchForks() (*types.Transaction, error) { + return _GatewayEVMForkTest.Contract.TestCanSwitchForks(&_GatewayEVMForkTest.TransactOpts) +} + +// TestCanSwitchForks is a paid mutator transaction binding the contract method 0x8cf03dbc. +// +// Solidity: function testCanSwitchForks() returns() +func (_GatewayEVMForkTest *GatewayEVMForkTestTransactorSession) TestCanSwitchForks() (*types.Transaction, error) { + return _GatewayEVMForkTest.Contract.TestCanSwitchForks(&_GatewayEVMForkTest.TransactOpts) +} + +// TestUpgradeGatewayOnAllChains is a paid mutator transaction binding the contract method 0x03b965ec. +// +// Solidity: function testUpgradeGatewayOnAllChains() returns() +func (_GatewayEVMForkTest *GatewayEVMForkTestTransactor) TestUpgradeGatewayOnAllChains(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayEVMForkTest.contract.Transact(opts, "testUpgradeGatewayOnAllChains") +} + +// TestUpgradeGatewayOnAllChains is a paid mutator transaction binding the contract method 0x03b965ec. +// +// Solidity: function testUpgradeGatewayOnAllChains() returns() +func (_GatewayEVMForkTest *GatewayEVMForkTestSession) TestUpgradeGatewayOnAllChains() (*types.Transaction, error) { + return _GatewayEVMForkTest.Contract.TestUpgradeGatewayOnAllChains(&_GatewayEVMForkTest.TransactOpts) +} + +// TestUpgradeGatewayOnAllChains is a paid mutator transaction binding the contract method 0x03b965ec. +// +// Solidity: function testUpgradeGatewayOnAllChains() returns() +func (_GatewayEVMForkTest *GatewayEVMForkTestTransactorSession) TestUpgradeGatewayOnAllChains() (*types.Transaction, error) { + return _GatewayEVMForkTest.Contract.TestUpgradeGatewayOnAllChains(&_GatewayEVMForkTest.TransactOpts) +} + +// GatewayEVMForkTestLogIterator is returned from FilterLog and is used to iterate over the raw logs and unpacked data for Log events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogIterator struct { + Event *GatewayEVMForkTestLog // 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 *GatewayEVMForkTestLogIterator) 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(GatewayEVMForkTestLog) + 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(GatewayEVMForkTestLog) + 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 *GatewayEVMForkTestLogIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLog represents a Log event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLog struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLog is a free log retrieval operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLog(opts *bind.FilterOpts) (*GatewayEVMForkTestLogIterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogIterator{contract: _GatewayEVMForkTest.contract, event: "log", logs: logs, sub: sub}, nil +} + +// WatchLog is a free log subscription operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLog(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLog) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log") + 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(GatewayEVMForkTestLog) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log", 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 +} + +// ParseLog is a log parse operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLog(log types.Log) (*GatewayEVMForkTestLog, error) { + event := new(GatewayEVMForkTestLog) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogAddressIterator is returned from FilterLogAddress and is used to iterate over the raw logs and unpacked data for LogAddress events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogAddressIterator struct { + Event *GatewayEVMForkTestLogAddress // 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 *GatewayEVMForkTestLogAddressIterator) 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(GatewayEVMForkTestLogAddress) + 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(GatewayEVMForkTestLogAddress) + 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 *GatewayEVMForkTestLogAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogAddress represents a LogAddress event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogAddress struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogAddress is a free log retrieval operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogAddress(opts *bind.FilterOpts) (*GatewayEVMForkTestLogAddressIterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_address") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogAddressIterator{contract: _GatewayEVMForkTest.contract, event: "log_address", logs: logs, sub: sub}, nil +} + +// WatchLogAddress is a free log subscription operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogAddress(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogAddress) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_address") + 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(GatewayEVMForkTestLogAddress) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_address", 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 +} + +// ParseLogAddress is a log parse operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogAddress(log types.Log) (*GatewayEVMForkTestLogAddress, error) { + event := new(GatewayEVMForkTestLogAddress) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogArrayIterator is returned from FilterLogArray and is used to iterate over the raw logs and unpacked data for LogArray events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogArrayIterator struct { + Event *GatewayEVMForkTestLogArray // 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 *GatewayEVMForkTestLogArrayIterator) 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(GatewayEVMForkTestLogArray) + 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(GatewayEVMForkTestLogArray) + 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 *GatewayEVMForkTestLogArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogArray represents a LogArray event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogArray struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray is a free log retrieval operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogArray(opts *bind.FilterOpts) (*GatewayEVMForkTestLogArrayIterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_array") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogArrayIterator{contract: _GatewayEVMForkTest.contract, event: "log_array", logs: logs, sub: sub}, nil +} + +// WatchLogArray is a free log subscription operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogArray(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogArray) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_array") + 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(GatewayEVMForkTestLogArray) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_array", 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 +} + +// ParseLogArray is a log parse operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogArray(log types.Log) (*GatewayEVMForkTestLogArray, error) { + event := new(GatewayEVMForkTestLogArray) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogArray0Iterator is returned from FilterLogArray0 and is used to iterate over the raw logs and unpacked data for LogArray0 events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogArray0Iterator struct { + Event *GatewayEVMForkTestLogArray0 // 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 *GatewayEVMForkTestLogArray0Iterator) 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(GatewayEVMForkTestLogArray0) + 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(GatewayEVMForkTestLogArray0) + 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 *GatewayEVMForkTestLogArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogArray0 represents a LogArray0 event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogArray0 struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray0 is a free log retrieval operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogArray0(opts *bind.FilterOpts) (*GatewayEVMForkTestLogArray0Iterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogArray0Iterator{contract: _GatewayEVMForkTest.contract, event: "log_array0", logs: logs, sub: sub}, nil +} + +// WatchLogArray0 is a free log subscription operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogArray0(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogArray0) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_array0") + 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(GatewayEVMForkTestLogArray0) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_array0", 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 +} + +// ParseLogArray0 is a log parse operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogArray0(log types.Log) (*GatewayEVMForkTestLogArray0, error) { + event := new(GatewayEVMForkTestLogArray0) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogArray1Iterator is returned from FilterLogArray1 and is used to iterate over the raw logs and unpacked data for LogArray1 events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogArray1Iterator struct { + Event *GatewayEVMForkTestLogArray1 // 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 *GatewayEVMForkTestLogArray1Iterator) 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(GatewayEVMForkTestLogArray1) + 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(GatewayEVMForkTestLogArray1) + 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 *GatewayEVMForkTestLogArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogArray1 represents a LogArray1 event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogArray1 struct { + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray1 is a free log retrieval operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogArray1(opts *bind.FilterOpts) (*GatewayEVMForkTestLogArray1Iterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogArray1Iterator{contract: _GatewayEVMForkTest.contract, event: "log_array1", logs: logs, sub: sub}, nil +} + +// WatchLogArray1 is a free log subscription operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogArray1(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogArray1) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_array1") + 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(GatewayEVMForkTestLogArray1) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_array1", 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 +} + +// ParseLogArray1 is a log parse operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogArray1(log types.Log) (*GatewayEVMForkTestLogArray1, error) { + event := new(GatewayEVMForkTestLogArray1) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogBytesIterator is returned from FilterLogBytes and is used to iterate over the raw logs and unpacked data for LogBytes events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogBytesIterator struct { + Event *GatewayEVMForkTestLogBytes // 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 *GatewayEVMForkTestLogBytesIterator) 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(GatewayEVMForkTestLogBytes) + 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(GatewayEVMForkTestLogBytes) + 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 *GatewayEVMForkTestLogBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogBytes represents a LogBytes event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogBytes struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes is a free log retrieval operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogBytes(opts *bind.FilterOpts) (*GatewayEVMForkTestLogBytesIterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogBytesIterator{contract: _GatewayEVMForkTest.contract, event: "log_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogBytes is a free log subscription operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogBytes(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogBytes) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_bytes") + 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(GatewayEVMForkTestLogBytes) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_bytes", 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 +} + +// ParseLogBytes is a log parse operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogBytes(log types.Log) (*GatewayEVMForkTestLogBytes, error) { + event := new(GatewayEVMForkTestLogBytes) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogBytes32Iterator is returned from FilterLogBytes32 and is used to iterate over the raw logs and unpacked data for LogBytes32 events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogBytes32Iterator struct { + Event *GatewayEVMForkTestLogBytes32 // 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 *GatewayEVMForkTestLogBytes32Iterator) 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(GatewayEVMForkTestLogBytes32) + 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(GatewayEVMForkTestLogBytes32) + 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 *GatewayEVMForkTestLogBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogBytes32 represents a LogBytes32 event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogBytes32 struct { + Arg0 [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes32 is a free log retrieval operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogBytes32(opts *bind.FilterOpts) (*GatewayEVMForkTestLogBytes32Iterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogBytes32Iterator{contract: _GatewayEVMForkTest.contract, event: "log_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogBytes32 is a free log subscription operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogBytes32(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogBytes32) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_bytes32") + 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(GatewayEVMForkTestLogBytes32) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_bytes32", 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 +} + +// ParseLogBytes32 is a log parse operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogBytes32(log types.Log) (*GatewayEVMForkTestLogBytes32, error) { + event := new(GatewayEVMForkTestLogBytes32) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogIntIterator is returned from FilterLogInt and is used to iterate over the raw logs and unpacked data for LogInt events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogIntIterator struct { + Event *GatewayEVMForkTestLogInt // 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 *GatewayEVMForkTestLogIntIterator) 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(GatewayEVMForkTestLogInt) + 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(GatewayEVMForkTestLogInt) + 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 *GatewayEVMForkTestLogIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogInt represents a LogInt event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogInt struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogInt is a free log retrieval operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogInt(opts *bind.FilterOpts) (*GatewayEVMForkTestLogIntIterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_int") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogIntIterator{contract: _GatewayEVMForkTest.contract, event: "log_int", logs: logs, sub: sub}, nil +} + +// WatchLogInt is a free log subscription operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogInt(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogInt) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_int") + 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(GatewayEVMForkTestLogInt) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_int", 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 +} + +// ParseLogInt is a log parse operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogInt(log types.Log) (*GatewayEVMForkTestLogInt, error) { + event := new(GatewayEVMForkTestLogInt) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogNamedAddressIterator is returned from FilterLogNamedAddress and is used to iterate over the raw logs and unpacked data for LogNamedAddress events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedAddressIterator struct { + Event *GatewayEVMForkTestLogNamedAddress // 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 *GatewayEVMForkTestLogNamedAddressIterator) 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(GatewayEVMForkTestLogNamedAddress) + 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(GatewayEVMForkTestLogNamedAddress) + 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 *GatewayEVMForkTestLogNamedAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogNamedAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogNamedAddress represents a LogNamedAddress event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedAddress struct { + Key string + Val common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedAddress is a free log retrieval operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogNamedAddress(opts *bind.FilterOpts) (*GatewayEVMForkTestLogNamedAddressIterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogNamedAddressIterator{contract: _GatewayEVMForkTest.contract, event: "log_named_address", logs: logs, sub: sub}, nil +} + +// WatchLogNamedAddress is a free log subscription operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogNamedAddress(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogNamedAddress) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_named_address") + 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(GatewayEVMForkTestLogNamedAddress) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_address", 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 +} + +// ParseLogNamedAddress is a log parse operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogNamedAddress(log types.Log) (*GatewayEVMForkTestLogNamedAddress, error) { + event := new(GatewayEVMForkTestLogNamedAddress) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogNamedArrayIterator is returned from FilterLogNamedArray and is used to iterate over the raw logs and unpacked data for LogNamedArray events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedArrayIterator struct { + Event *GatewayEVMForkTestLogNamedArray // 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 *GatewayEVMForkTestLogNamedArrayIterator) 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(GatewayEVMForkTestLogNamedArray) + 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(GatewayEVMForkTestLogNamedArray) + 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 *GatewayEVMForkTestLogNamedArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogNamedArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogNamedArray represents a LogNamedArray event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedArray struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray is a free log retrieval operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogNamedArray(opts *bind.FilterOpts) (*GatewayEVMForkTestLogNamedArrayIterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogNamedArrayIterator{contract: _GatewayEVMForkTest.contract, event: "log_named_array", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray is a free log subscription operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogNamedArray(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogNamedArray) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_named_array") + 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(GatewayEVMForkTestLogNamedArray) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_array", 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 +} + +// ParseLogNamedArray is a log parse operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogNamedArray(log types.Log) (*GatewayEVMForkTestLogNamedArray, error) { + event := new(GatewayEVMForkTestLogNamedArray) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogNamedArray0Iterator is returned from FilterLogNamedArray0 and is used to iterate over the raw logs and unpacked data for LogNamedArray0 events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedArray0Iterator struct { + Event *GatewayEVMForkTestLogNamedArray0 // 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 *GatewayEVMForkTestLogNamedArray0Iterator) 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(GatewayEVMForkTestLogNamedArray0) + 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(GatewayEVMForkTestLogNamedArray0) + 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 *GatewayEVMForkTestLogNamedArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogNamedArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogNamedArray0 represents a LogNamedArray0 event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedArray0 struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray0 is a free log retrieval operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogNamedArray0(opts *bind.FilterOpts) (*GatewayEVMForkTestLogNamedArray0Iterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogNamedArray0Iterator{contract: _GatewayEVMForkTest.contract, event: "log_named_array0", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray0 is a free log subscription operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogNamedArray0(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogNamedArray0) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_named_array0") + 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(GatewayEVMForkTestLogNamedArray0) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_array0", 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 +} + +// ParseLogNamedArray0 is a log parse operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogNamedArray0(log types.Log) (*GatewayEVMForkTestLogNamedArray0, error) { + event := new(GatewayEVMForkTestLogNamedArray0) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogNamedArray1Iterator is returned from FilterLogNamedArray1 and is used to iterate over the raw logs and unpacked data for LogNamedArray1 events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedArray1Iterator struct { + Event *GatewayEVMForkTestLogNamedArray1 // 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 *GatewayEVMForkTestLogNamedArray1Iterator) 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(GatewayEVMForkTestLogNamedArray1) + 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(GatewayEVMForkTestLogNamedArray1) + 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 *GatewayEVMForkTestLogNamedArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogNamedArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogNamedArray1 represents a LogNamedArray1 event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedArray1 struct { + Key string + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray1 is a free log retrieval operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogNamedArray1(opts *bind.FilterOpts) (*GatewayEVMForkTestLogNamedArray1Iterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogNamedArray1Iterator{contract: _GatewayEVMForkTest.contract, event: "log_named_array1", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray1 is a free log subscription operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogNamedArray1(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogNamedArray1) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_named_array1") + 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(GatewayEVMForkTestLogNamedArray1) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_array1", 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 +} + +// ParseLogNamedArray1 is a log parse operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogNamedArray1(log types.Log) (*GatewayEVMForkTestLogNamedArray1, error) { + event := new(GatewayEVMForkTestLogNamedArray1) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogNamedBytesIterator is returned from FilterLogNamedBytes and is used to iterate over the raw logs and unpacked data for LogNamedBytes events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedBytesIterator struct { + Event *GatewayEVMForkTestLogNamedBytes // 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 *GatewayEVMForkTestLogNamedBytesIterator) 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(GatewayEVMForkTestLogNamedBytes) + 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(GatewayEVMForkTestLogNamedBytes) + 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 *GatewayEVMForkTestLogNamedBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogNamedBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogNamedBytes represents a LogNamedBytes event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedBytes struct { + Key string + Val []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes is a free log retrieval operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogNamedBytes(opts *bind.FilterOpts) (*GatewayEVMForkTestLogNamedBytesIterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogNamedBytesIterator{contract: _GatewayEVMForkTest.contract, event: "log_named_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes is a free log subscription operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogNamedBytes(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogNamedBytes) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_named_bytes") + 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(GatewayEVMForkTestLogNamedBytes) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_bytes", 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 +} + +// ParseLogNamedBytes is a log parse operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogNamedBytes(log types.Log) (*GatewayEVMForkTestLogNamedBytes, error) { + event := new(GatewayEVMForkTestLogNamedBytes) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogNamedBytes32Iterator is returned from FilterLogNamedBytes32 and is used to iterate over the raw logs and unpacked data for LogNamedBytes32 events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedBytes32Iterator struct { + Event *GatewayEVMForkTestLogNamedBytes32 // 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 *GatewayEVMForkTestLogNamedBytes32Iterator) 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(GatewayEVMForkTestLogNamedBytes32) + 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(GatewayEVMForkTestLogNamedBytes32) + 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 *GatewayEVMForkTestLogNamedBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogNamedBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogNamedBytes32 represents a LogNamedBytes32 event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedBytes32 struct { + Key string + Val [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes32 is a free log retrieval operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogNamedBytes32(opts *bind.FilterOpts) (*GatewayEVMForkTestLogNamedBytes32Iterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogNamedBytes32Iterator{contract: _GatewayEVMForkTest.contract, event: "log_named_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes32 is a free log subscription operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogNamedBytes32(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogNamedBytes32) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_named_bytes32") + 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(GatewayEVMForkTestLogNamedBytes32) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_bytes32", 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 +} + +// ParseLogNamedBytes32 is a log parse operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogNamedBytes32(log types.Log) (*GatewayEVMForkTestLogNamedBytes32, error) { + event := new(GatewayEVMForkTestLogNamedBytes32) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogNamedDecimalIntIterator is returned from FilterLogNamedDecimalInt and is used to iterate over the raw logs and unpacked data for LogNamedDecimalInt events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedDecimalIntIterator struct { + Event *GatewayEVMForkTestLogNamedDecimalInt // 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 *GatewayEVMForkTestLogNamedDecimalIntIterator) 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(GatewayEVMForkTestLogNamedDecimalInt) + 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(GatewayEVMForkTestLogNamedDecimalInt) + 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 *GatewayEVMForkTestLogNamedDecimalIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogNamedDecimalIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogNamedDecimalInt represents a LogNamedDecimalInt event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedDecimalInt struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalInt is a free log retrieval operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogNamedDecimalInt(opts *bind.FilterOpts) (*GatewayEVMForkTestLogNamedDecimalIntIterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogNamedDecimalIntIterator{contract: _GatewayEVMForkTest.contract, event: "log_named_decimal_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalInt is a free log subscription operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogNamedDecimalInt(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogNamedDecimalInt) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_named_decimal_int") + 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(GatewayEVMForkTestLogNamedDecimalInt) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_decimal_int", 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 +} + +// ParseLogNamedDecimalInt is a log parse operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogNamedDecimalInt(log types.Log) (*GatewayEVMForkTestLogNamedDecimalInt, error) { + event := new(GatewayEVMForkTestLogNamedDecimalInt) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogNamedDecimalUintIterator is returned from FilterLogNamedDecimalUint and is used to iterate over the raw logs and unpacked data for LogNamedDecimalUint events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedDecimalUintIterator struct { + Event *GatewayEVMForkTestLogNamedDecimalUint // 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 *GatewayEVMForkTestLogNamedDecimalUintIterator) 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(GatewayEVMForkTestLogNamedDecimalUint) + 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(GatewayEVMForkTestLogNamedDecimalUint) + 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 *GatewayEVMForkTestLogNamedDecimalUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogNamedDecimalUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogNamedDecimalUint represents a LogNamedDecimalUint event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedDecimalUint struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalUint is a free log retrieval operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogNamedDecimalUint(opts *bind.FilterOpts) (*GatewayEVMForkTestLogNamedDecimalUintIterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogNamedDecimalUintIterator{contract: _GatewayEVMForkTest.contract, event: "log_named_decimal_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalUint is a free log subscription operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogNamedDecimalUint(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogNamedDecimalUint) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_named_decimal_uint") + 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(GatewayEVMForkTestLogNamedDecimalUint) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_decimal_uint", 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 +} + +// ParseLogNamedDecimalUint is a log parse operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogNamedDecimalUint(log types.Log) (*GatewayEVMForkTestLogNamedDecimalUint, error) { + event := new(GatewayEVMForkTestLogNamedDecimalUint) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogNamedIntIterator is returned from FilterLogNamedInt and is used to iterate over the raw logs and unpacked data for LogNamedInt events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedIntIterator struct { + Event *GatewayEVMForkTestLogNamedInt // 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 *GatewayEVMForkTestLogNamedIntIterator) 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(GatewayEVMForkTestLogNamedInt) + 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(GatewayEVMForkTestLogNamedInt) + 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 *GatewayEVMForkTestLogNamedIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogNamedIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogNamedInt represents a LogNamedInt event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedInt struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedInt is a free log retrieval operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogNamedInt(opts *bind.FilterOpts) (*GatewayEVMForkTestLogNamedIntIterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogNamedIntIterator{contract: _GatewayEVMForkTest.contract, event: "log_named_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedInt is a free log subscription operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogNamedInt(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogNamedInt) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_named_int") + 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(GatewayEVMForkTestLogNamedInt) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_int", 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 +} + +// ParseLogNamedInt is a log parse operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogNamedInt(log types.Log) (*GatewayEVMForkTestLogNamedInt, error) { + event := new(GatewayEVMForkTestLogNamedInt) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogNamedStringIterator is returned from FilterLogNamedString and is used to iterate over the raw logs and unpacked data for LogNamedString events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedStringIterator struct { + Event *GatewayEVMForkTestLogNamedString // 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 *GatewayEVMForkTestLogNamedStringIterator) 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(GatewayEVMForkTestLogNamedString) + 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(GatewayEVMForkTestLogNamedString) + 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 *GatewayEVMForkTestLogNamedStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogNamedStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogNamedString represents a LogNamedString event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedString struct { + Key string + Val string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedString is a free log retrieval operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogNamedString(opts *bind.FilterOpts) (*GatewayEVMForkTestLogNamedStringIterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogNamedStringIterator{contract: _GatewayEVMForkTest.contract, event: "log_named_string", logs: logs, sub: sub}, nil +} + +// WatchLogNamedString is a free log subscription operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogNamedString(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogNamedString) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_named_string") + 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(GatewayEVMForkTestLogNamedString) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_string", 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 +} + +// ParseLogNamedString is a log parse operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogNamedString(log types.Log) (*GatewayEVMForkTestLogNamedString, error) { + event := new(GatewayEVMForkTestLogNamedString) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogNamedUintIterator is returned from FilterLogNamedUint and is used to iterate over the raw logs and unpacked data for LogNamedUint events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedUintIterator struct { + Event *GatewayEVMForkTestLogNamedUint // 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 *GatewayEVMForkTestLogNamedUintIterator) 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(GatewayEVMForkTestLogNamedUint) + 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(GatewayEVMForkTestLogNamedUint) + 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 *GatewayEVMForkTestLogNamedUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogNamedUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogNamedUint represents a LogNamedUint event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogNamedUint struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedUint is a free log retrieval operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogNamedUint(opts *bind.FilterOpts) (*GatewayEVMForkTestLogNamedUintIterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogNamedUintIterator{contract: _GatewayEVMForkTest.contract, event: "log_named_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedUint is a free log subscription operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogNamedUint(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogNamedUint) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_named_uint") + 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(GatewayEVMForkTestLogNamedUint) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_uint", 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 +} + +// ParseLogNamedUint is a log parse operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogNamedUint(log types.Log) (*GatewayEVMForkTestLogNamedUint, error) { + event := new(GatewayEVMForkTestLogNamedUint) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogStringIterator is returned from FilterLogString and is used to iterate over the raw logs and unpacked data for LogString events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogStringIterator struct { + Event *GatewayEVMForkTestLogString // 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 *GatewayEVMForkTestLogStringIterator) 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(GatewayEVMForkTestLogString) + 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(GatewayEVMForkTestLogString) + 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 *GatewayEVMForkTestLogStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogString represents a LogString event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogString struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogString is a free log retrieval operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogString(opts *bind.FilterOpts) (*GatewayEVMForkTestLogStringIterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_string") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogStringIterator{contract: _GatewayEVMForkTest.contract, event: "log_string", logs: logs, sub: sub}, nil +} + +// WatchLogString is a free log subscription operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogString(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogString) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_string") + 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(GatewayEVMForkTestLogString) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_string", 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 +} + +// ParseLogString is a log parse operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogString(log types.Log) (*GatewayEVMForkTestLogString, error) { + event := new(GatewayEVMForkTestLogString) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogUintIterator is returned from FilterLogUint and is used to iterate over the raw logs and unpacked data for LogUint events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogUintIterator struct { + Event *GatewayEVMForkTestLogUint // 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 *GatewayEVMForkTestLogUintIterator) 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(GatewayEVMForkTestLogUint) + 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(GatewayEVMForkTestLogUint) + 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 *GatewayEVMForkTestLogUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogUint represents a LogUint event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogUint struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogUint is a free log retrieval operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogUint(opts *bind.FilterOpts) (*GatewayEVMForkTestLogUintIterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogUintIterator{contract: _GatewayEVMForkTest.contract, event: "log_uint", logs: logs, sub: sub}, nil +} + +// WatchLogUint is a free log subscription operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogUint(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogUint) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "log_uint") + 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(GatewayEVMForkTestLogUint) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_uint", 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 +} + +// ParseLogUint is a log parse operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogUint(log types.Log) (*GatewayEVMForkTestLogUint, error) { + event := new(GatewayEVMForkTestLogUint) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayEVMForkTestLogsIterator is returned from FilterLogs and is used to iterate over the raw logs and unpacked data for Logs events raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogsIterator struct { + Event *GatewayEVMForkTestLogs // 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 *GatewayEVMForkTestLogsIterator) 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(GatewayEVMForkTestLogs) + 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(GatewayEVMForkTestLogs) + 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 *GatewayEVMForkTestLogsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayEVMForkTestLogsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayEVMForkTestLogs represents a Logs event raised by the GatewayEVMForkTest contract. +type GatewayEVMForkTestLogs struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogs is a free log retrieval operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) FilterLogs(opts *bind.FilterOpts) (*GatewayEVMForkTestLogsIterator, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.FilterLogs(opts, "logs") + if err != nil { + return nil, err + } + return &GatewayEVMForkTestLogsIterator{contract: _GatewayEVMForkTest.contract, event: "logs", logs: logs, sub: sub}, nil +} + +// WatchLogs is a free log subscription operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) WatchLogs(opts *bind.WatchOpts, sink chan<- *GatewayEVMForkTestLogs) (event.Subscription, error) { + + logs, sub, err := _GatewayEVMForkTest.contract.WatchLogs(opts, "logs") + 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(GatewayEVMForkTestLogs) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "logs", 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 +} + +// ParseLogs is a log parse operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayEVMForkTest *GatewayEVMForkTestFilterer) ParseLogs(log types.Log) (*GatewayEVMForkTestLogs, error) { + event := new(GatewayEVMForkTestLogs) + if err := _GatewayEVMForkTest.contract.UnpackLog(event, "logs", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/gatewayzevmfork.t.sol/gatewayzevmforktest.go b/pkg/gatewayzevmfork.t.sol/gatewayzevmforktest.go new file mode 100644 index 000000000..e86e3e6ee --- /dev/null +++ b/pkg/gatewayzevmfork.t.sol/gatewayzevmforktest.go @@ -0,0 +1,3923 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package gatewayzevmfork + +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 +) + +// StdInvariantFuzzArtifactSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzArtifactSelector struct { + Artifact string + Selectors [][4]byte +} + +// StdInvariantFuzzInterface is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzInterface struct { + Addr common.Address + Artifacts []string +} + +// StdInvariantFuzzSelector is an auto generated low-level Go binding around an user-defined struct. +type StdInvariantFuzzSelector struct { + Addr common.Address + Selectors [][4]byte +} + +// GatewayZEVMForkTestMetaData contains all meta data concerning the GatewayZEVMForkTest contract. +var GatewayZEVMForkTestMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"ARBITRUM_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"AVALANCHE_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BASE_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BSC_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ETHEREUM_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"POLYGON_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ZETACHAIN_RPC_URL\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"chains\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"forkId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"contractAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"rpcUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCanSwitchForks\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForkIdDiffer\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testUpgradeGatewayOnAllChains\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false}]", + Bin: "0x60806040819052600c8054600160ff199182168117909255601f8054909116909117905563f877cb1960e01b90526020608452601060a4526f115512115491555357d49410d7d5549360821b60c4525f805160206170d083398151915263f877cb1960e45f60405180830381865afa15801561007d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100a49190810190610471565b6020906100b190826105a5565b5060405163f877cb1960e01b815260206004820152600b60248201526a1094d0d7d49410d7d5549360aa1b60448201525f805160206170d08339815191529063f877cb19906064015f60405180830381865afa158015610113573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261013a9190810190610471565b60219061014790826105a5565b5060405163f877cb1960e01b815260206004820152600f60248201526e1413d31651d3d397d49410d7d55493608a1b60448201525f805160206170d08339815191529063f877cb19906064015f60405180830381865afa1580156101ad573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101d49190810190610471565b6022906101e190826105a5565b5060405163f877cb1960e01b815260206004820152600c60248201526b109054d157d49410d7d5549360a21b60448201525f805160206170d08339815191529063f877cb19906064015f60405180830381865afa158015610244573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261026b9190810190610471565b60239061027890826105a5565b5060405163f877cb1960e01b815260206004820152601060248201526f105490925514955357d49410d7d5549360821b60448201525f805160206170d08339815191529063f877cb19906064015f60405180830381865afa1580156102df573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526103069190810190610471565b60249061031390826105a5565b5060405163f877cb1960e01b815260206004820152601160248201527010559053105390d21157d49410d7d55493607a1b60448201525f805160206170d08339815191529063f877cb19906064015f60405180830381865afa15801561037b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526103a29190810190610471565b6025906103af90826105a5565b5060405163f877cb1960e01b81526020600482015260116024820152701691551050d210525397d49410d7d55493607a1b60448201525f805160206170d08339815191529063f877cb19906064015f60405180830381865afa158015610417573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261043e9190810190610471565b60269061044b90826105a5565b50348015610457575f80fd5b5061065f565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610481575f80fd5b81516001600160401b03811115610496575f80fd5b8201601f810184136104a6575f80fd5b80516001600160401b038111156104bf576104bf61045d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104ed576104ed61045d565b604052818152828201602001861015610504575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b600181811c9082168061053557607f821691505b60208210810361055357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156105a057805f5260205f20601f840160051c8101602085101561057e5750805b601f840160051c820191505b8181101561059d575f815560010161058a565b50505b505050565b81516001600160401b038111156105be576105be61045d565b6105d2816105cc8454610521565b84610559565b6020601f821160018114610604575f83156105ed5750848201515b5f19600385901b1c1916600184901b17845561059d565b5f84815260208120601f198516915b828110156106335787850151825560209485019460019092019101610613565b508482101561065057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b616a648061066c5f395ff3fe608060405234801561000f575f80fd5b506004361061018f575f3560e01c806385226c81116100dd578063b0464fdc11610088578063ca74749311610063578063ca747493146102c0578063e20c9f71146102c8578063fa7626d4146102d0575f80fd5b8063b0464fdc14610298578063b5508aa9146102a0578063ba414fa6146102a8575f80fd5b8063916a17c6116100b8578063916a17c61461027357806394897fb1146102885780639d3c516114610290575f80fd5b806385226c811461024e57806388de7b87146102635780638cf03dbc1461026b575f80fd5b80633f7286f41161013d57806366d9a9a01161011857806366d9a9a014610229578063699370b01461023e5780636cf73eea14610246575f80fd5b80633f7286f4146101f55780633f8f61dd146101fd578063550325b514610205575f80fd5b80632ade38801161016d5780632ade3880146101c35780632e8ade6e146101d85780633e5e3c23146101ed575f80fd5b806303b965ec146101935780630a9254e41461019d5780631ed7831c146101a5575b5f80fd5b61019b6102dd565b005b61019b6105a4565b6101ad6109ba565b6040516101ba919061220a565b60405180910390f35b6101cb610a27565b6040516101ba91906122ae565b6101e0610b70565b6040516101ba91906123c0565b6101ad610bfc565b6101ad610c67565b6101e0610cd2565b6102186102133660046123d2565b610cdf565b6040516101ba9594939291906123e9565b610231610e46565b6040516101ba91906124b3565b6101e0610fbf565b61019b610fcc565b61025661103e565b6040516101ba919061254f565b6101e0611109565b61019b611116565b61027b61126d565b6040516101ba91906125c4565b6101e0611370565b6101e061137d565b61027b61138a565b61025661148d565b6102b0611558565b60405190151581526020016101ba565b6101e0611628565b6101ad611635565b601f546102b09060ff1681565b5f5b602e548110156105a1576104066040518060400160405280601781526020017f0a3d3d3d2054657374696e672075706772616465206f6e000000000000000000815250602e838154811061033557610335612666565b905f5260205f209060050201600401805461034f90612693565b80601f016020809104026020016040519081016040528092919081815260200182805461037b90612693565b80156103c65780601f1061039d576101008083540402835291602001916103c6565b820191905f5260205f20905b8154815290600101906020018083116103a957829003601f168201915b50505050506040518060400160405280600381526020017f3d3d3d00000000000000000000000000000000000000000000000000000000008152506116a0565b610599602e828154811061041c5761041c612666565b5f9182526020918290206040805160a081018252600590930290910180548352600181015473ffffffffffffffffffffffffffffffffffffffff9081169484019490945260028101549093169082015260038201805491929160608401919061048490612693565b80601f01602080910402602001604051908101604052809291908181526020018280546104b090612693565b80156104fb5780601f106104d2576101008083540402835291602001916104fb565b820191905f5260205f20905b8154815290600101906020018083116104de57829003601f168201915b5050505050815260200160048201805461051490612693565b80601f016020809104026020016040519081016040528092919081815260200182805461054090612693565b801561058b5780601f106105625761010080835404028352916020019161058b565b820191905f5260205f20905b81548152906001019060200180831161056e57829003601f168201915b505050505081525050611738565b6001016102df565b50565b6040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba3498906105f5906020906004016126e4565b6020604051808303815f875af1158015610611573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106359190612789565b6027556040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba349890610689906021906004016126e4565b6020604051808303815f875af11580156106a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c99190612789565b6028556040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba34989061071d906022906004016126e4565b6020604051808303815f875af1158015610739573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075d9190612789565b6029556040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba3498906107b1906023906004016126e4565b6020604051808303815f875af11580156107cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f19190612789565b602a556040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba349890610845906024906004016126e4565b6020604051808303815f875af1158015610861573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108859190612789565b602b556040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba3498906108d9906025906004016126e4565b6020604051808303815f875af11580156108f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109199190612789565b602c556040517f31ba3498000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906331ba34989061096d906026906004016126e4565b6020604051808303815f875af1158015610989573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ad9190612789565b602d556109b8611ca3565b565b60606016805480602002602001604051908101604052809291908181526020018280548015610a1d57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116109f2575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015610b67575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610b50578382905f5260205f20018054610ac590612693565b80601f0160208091040260200160405190810160405280929190818152602001828054610af190612693565b8015610b3c5780601f10610b1357610100808354040283529160200191610b3c565b820191905f5260205f20905b815481529060010190602001808311610b1f57829003601f168201915b505050505081526020019060010190610aa8565b505050508152505081526020019060010190610a4a565b50505050905090565b60238054610b7d90612693565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba990612693565b8015610bf45780601f10610bcb57610100808354040283529160200191610bf4565b820191905f5260205f20905b815481529060010190602001808311610bd757829003601f168201915b505050505081565b60606018805480602002602001604051908101604052809291908181526020018280548015610a1d57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116109f2575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610a1d57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116109f2575050505050905090565b60268054610b7d90612693565b602e8181548110610cee575f80fd5b5f918252602090912060059091020180546001820154600283015460038401805493955073ffffffffffffffffffffffffffffffffffffffff928316949290911692610d3990612693565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6590612693565b8015610db05780601f10610d8757610100808354040283529160200191610db0565b820191905f5260205f20905b815481529060010190602001808311610d9357829003601f168201915b505050505090806004018054610dc590612693565b80601f0160208091040260200160405190810160405280929190818152602001828054610df190612693565b8015610e3c5780601f10610e1357610100808354040283529160200191610e3c565b820191905f5260205f20905b815481529060010190602001808311610e1f57829003601f168201915b5050505050905085565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015610b67578382905f5260205f2090600202016040518060400160405290815f82018054610e9990612693565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec590612693565b8015610f105780601f10610ee757610100808354040283529160200191610f10565b820191905f5260205f20905b815481529060010190602001808311610ef357829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610fa757602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610f545790505b50505050508152505081526020019060010190610e69565b60248054610b7d90612693565b60285460275403610fdf57610fdf6127a0565b60295460285403610ff257610ff26127a0565b602a5460295403611005576110056127a0565b602b54602a5403611018576110186127a0565b602c54602b540361102b5761102b6127a0565b602d54602c54036109b8576109b86127a0565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015610b67578382905f5260205f2001805461107e90612693565b80601f01602080910402602001604051908101604052809291908181526020018280546110aa90612693565b80156110f55780601f106110cc576101008083540402835291602001916110f5565b820191905f5260205f20905b8154815290600101906020018083116110d857829003601f168201915b505050505081526020019060010190611061565b60218054610b7d90612693565b5f5b602e548110156105a157602e8054737109709ecfa91a80626ff3989d68f67f5b1dd12d91639ebf6827918490811061115257611152612666565b905f5260205f2090600502015f01546040518263ffffffff1660e01b815260040161117f91815260200190565b5f604051808303815f87803b158015611196575f80fd5b505af11580156111a8573d5f803e3d5ffd5b505050506112657f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff16632f103f226040518163ffffffff1660e01b8152600401602060405180830381865afa15801561121a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123e9190612789565b602e838154811061125157611251612666565b905f5260205f2090600502015f0154611e84565b600101611118565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015610b67575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561135857602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116113055790505b50505050508152505081526020019060010190611290565b60228054610b7d90612693565b60208054610b7d90612693565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015610b67575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561147557602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116114225790505b505050505081525050815260200190600101906113ad565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015610b67578382905f5260205f200180546114cd90612693565b80601f01602080910402602001604051908101604052809291908181526020018280546114f990612693565b80156115445780601f1061151b57610100808354040283529160200191611544565b820191905f5260205f20905b81548152906001019060200180831161152757829003601f168201915b5050505050815260200190600101906114b0565b6008545f9060ff161561156f575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa1580156115fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116219190612789565b1415905090565b60258054610b7d90612693565b60606015805480602002602001604051908101604052809291908181526020018280548015610a1d57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116109f2575050505050905090565b6117338383836040516024016116b8939291906127cd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2ced7cef00000000000000000000000000000000000000000000000000000000179052611f08565b505050565b80516040517f9ebf68270000000000000000000000000000000000000000000000000000000081526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d90639ebf6827906024015f604051808303815f87803b15801561179e575f80fd5b505af11580156117b0573d5f803e3d5ffd5b505050505f816020015190505f8173ffffffffffffffffffffffffffffffffffffffff166321e093b16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611806573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061182a919061280f565b60408481015190517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b1580156118ab575f80fd5b505af11580156118bd573d5f803e3d5ffd5b505050505f6040516118ce906121fd565b604051809103905ff0801580156118e7573d5f803e3d5ffd5b50604080517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015260248201929092525f6044820152919250841690634f1ef286906064015f604051808303815f87803b158015611960575f80fd5b505af1158015611972573d5f803e3d5ffd5b505050505f61198084611f11565b90506119c281836040518060400160405280600f81526020017f55706772616465206661696c65642e0000000000000000000000000000000000815250611fe2565b611a016040518060400160405280601981526020017f5375636365737366756c6c7920757067726164656420746f3a0000000000000081525082612067565b611aad8473ffffffffffffffffffffffffffffffffffffffff166321e093b16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a4d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a71919061280f565b846040518060400160405280601b81526020017f5a65746120746f6b656e2061646472657373206368616e6765642e0000000000815250611fe2565b611aeb6040518060400160405280601d81526020017f53746174652070726573657276656420616674657220757067726164650000008152506120fc565b5f8473ffffffffffffffffffffffffffffffffffffffff1663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b35573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b599190612789565b60408088015190517f91d148540000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff91821660248201529192505f91908716906391d1485490604401602060405180830381865afa158015611bd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf99190612842565b9050611c1d816040518060600160405280602c8152602001616a03602c913961218b565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611c84575f80fd5b505af1158015611c96573d5f803e3d5ffd5b5050505050505050505050565b602e6040518060a00160405280602d54815260200173fedd7a6e3ef1cc470fbfbf955a22d793ddc0f44e73ffffffffffffffffffffffffffffffffffffffff1681526020017301d8207aff7a7d029114ee35afc72d0e133b7a0a73ffffffffffffffffffffffffffffffffffffffff16815260200160268054611d2590612693565b80601f0160208091040260200160405190810160405280929190818152602001828054611d5190612693565b8015611d9c5780601f10611d7357610100808354040283529160200191611d9c565b820191905f5260205f20905b815481529060010190602001808311611d7f57829003601f168201915b5050509183525050604080518082018252600981527f5a657461436861696e0000000000000000000000000000000000000000000000602082810191909152928301528354600181810186555f95865294839020845160059092020190815591830151938201805473ffffffffffffffffffffffffffffffffffffffff9586167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155908301516002830180549190951691161790925560608101519091906003820190611e6f90826128d9565b506080820151600482019061173390826128d9565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b5f6040518083038186803b158015611eee575f80fd5b505afa158015611f00573d5f803e3d5ffd5b505050505050565b6105a1816121dd565b6040517f667f9d7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc602482018190525f91737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa158015611fb7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fdb9190612789565b9392505050565b6040517f2f2769d1000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d90632f2769d190612036908690869086906004016129f0565b5f6040518083038186803b15801561204c575f80fd5b505afa15801561205e573d5f803e3d5ffd5b50505050505050565b6120f8828260405160240161207d929190612a43565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052611f08565b5050565b6105a18160405160240161211091906123c0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052611f08565b6040517fa34edc03000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a34edc0390611ed89085908590600401612a7a565b80516a636f6e736f6c652e6c6f67602083015f808483855afa5050505050565b613f6680612a9d83390190565b602080825282518282018190525f918401906040840190835b8181101561225757835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101612223565b509095945050505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156123b4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805173ffffffffffffffffffffffffffffffffffffffff168652602090810151604082880181905281519088018190529101906060600582901b8801810191908801905f5b8181101561239a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352612384848651612262565b602095860195909450929092019160010161234a565b5091975050506020948501949290920191506001016122d4565b50929695505050505050565b602081525f611fdb6020830184612262565b5f602082840312156123e2575f80fd5b5035919050565b85815273ffffffffffffffffffffffffffffffffffffffff8516602082015273ffffffffffffffffffffffffffffffffffffffff8416604082015260a060608201525f61243960a0830185612262565b828103608084015261244b8185612262565b98975050505050505050565b5f8151808452602084019350602083015f5b828110156124a95781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101612469565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156123b4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516040875261251d6040880182612262565b90506020820151915086810360208801526125388183612457565b9650505060209384019391909101906001016124d9565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156123b4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526125af858351612262565b94506020938401939190910190600101612575565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156123b4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff815116865260208101519050604060208701526126506040870182612457565b95505060209384019391909101906001016125ea565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600181811c908216806126a757607f821691505b6020821081036126de577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b602081525f8083546126f581612693565b806020860152600182165f8114612713576001811461274d5761277e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083166040870152604082151560051b870101935061277e565b865f5260205f205f5b8381101561277557815488820160400152600190910190602001612756565b87016040019450505b509195945050505050565b5f60208284031215612799575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b606081525f6127df6060830186612262565b82810360208401526127f18186612262565b905082810360408401526128058185612262565b9695505050505050565b5f6020828403121561281f575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114611fdb575f80fd5b5f60208284031215612852575f80fd5b81518015158114611fdb575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b601f82111561173357805f5260205f20601f840160051c810160208510156128b35750805b601f840160051c820191505b818110156128d2575f81556001016128bf565b5050505050565b815167ffffffffffffffff8111156128f3576128f3612861565b612907816129018454612693565b8461288e565b6020601f821160018114612958575f83156129225750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556128d2565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156129a55787850151825560209485019460019092019101612985565b50848210156129e157868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b73ffffffffffffffffffffffffffffffffffffffff8416815273ffffffffffffffffffffffffffffffffffffffff83166020820152606060408201525f612a3a6060830184612262565b95945050505050565b604081525f612a556040830185612262565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b8215158152604060208201525f612a946040830184612262565b94935050505056fe60a060405230608052348015610013575f80fd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613e6d6100f95f395f8181612487015281816124b001526126850152613e6d5ff3fe6080604052600436106101de575f3560e01c80637b15118b116100fd578063a217fddf11610092578063c5356f6d11610062578063c5356f6d1461066a578063d547741f14610689578063e63ab1e9146106a8578063f45346dc146106db575f80fd5b8063a217fddf146105c4578063ad3cb1cc146105d7578063bcf7f32b1461062c578063c39aca371461064b575f80fd5b806391d14854116100cd57806391d148541461051357806397a1cef11461057657806397d340f5146105905780639d4ba465146105a5575f80fd5b80637b15118b146104ab5780637c0dcb5f146104ca5780637ce1ffeb146104e95780638456cb59146104ff575f80fd5b80632810ae6311610173578063485cc95511610143578063485cc9551461042f5780634f1ef2861461044e57806352d1902d146104615780635c975abb14610475575f80fd5b80632810ae63146103be5780632f2ff15d146103dd57806336568abe146103fc5780633f4ba83a1461041b575f80fd5b806321501a95116101ae57806321501a95146102e757806321e093b114610306578063248a9ca31461033c5780632722feee14610397575f80fd5b806301ffc9a71461025657806306cb89831461028a578063184b0793146102a95780632095dedb146102c8575f80fd5b36610252576101eb6106fa565b5f546001600160a01b0316331480159061021957503373735b14bb79463307aacbed86daf3322b1e6226ab14155b15610250576040517fb3af013700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b5f80fd5b348015610261575f80fd5b50610275610270366004612f4d565b610758565b60405190151581526020015b60405180910390f35b348015610295575f80fd5b506102506102a43660046130e1565b6107f0565b3480156102b4575f80fd5b506102506102c33660046131a8565b6108b5565b3480156102d3575f80fd5b506102506102e23660046131f5565b6109f1565b3480156102f2575f80fd5b50610250610301366004613258565b610ad3565b348015610311575f80fd5b505f54610324906001600160a01b031681565b6040516001600160a01b039091168152602001610281565b348015610347575f80fd5b506103896103563660046132de565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610281565b3480156103a2575f80fd5b5061032473735b14bb79463307aacbed86daf3322b1e6226ab81565b3480156103c9575f80fd5b506102506103d83660046132f5565b610cca565b3480156103e8575f80fd5b506102506103f73660046133ad565b610d04565b348015610407575f80fd5b506102506104163660046133ad565b610d4d565b348015610426575f80fd5b50610250610d9e565b34801561043a575f80fd5b506102506104493660046133d0565b610dd3565b61025061045c3660046133fc565b611025565b34801561046c575f80fd5b50610389611040565b348015610480575f80fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610275565b3480156104b6575f80fd5b506102506104c536600461343f565b61106e565b3480156104d5575f80fd5b506102506104e43660046134aa565b6112af565b3480156104f4575f80fd5b50610389620186a081565b34801561050a575f80fd5b506102506114a9565b34801561051e575f80fd5b5061027561052d3660046133ad565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b348015610581575f80fd5b506102506103d836600461352a565b34801561059b575f80fd5b50610389610b4081565b3480156105b0575f80fd5b506102506105bf366004613589565b6114db565b3480156105cf575f80fd5b506103895f81565b3480156105e2575f80fd5b5061061f6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102819190613631565b348015610637575f80fd5b50610250610646366004613643565b611789565b348015610656575f80fd5b50610250610665366004613643565b6118dd565b348015610675575f80fd5b506102506106843660046136db565b611af0565b348015610694575f80fd5b506102506106a33660046133ad565b611cc6565b3480156106b3575f80fd5b506103897f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156106e6575f80fd5b506102506106f5366004613764565b611d09565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610756576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107ea57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6107f86106fa565b620186a082351015610836576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b4061084660608301836137a3565b610851915085613804565b1115610889576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108ad8686868661089f36889003880188613849565b6108a88761389f565b611f14565b505050505050565b6108bd611fa7565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461090a576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109126106fa565b6001600160a01b038216610952576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a36906109979084906004016139eb565b5f604051808303815f87803b1580156109ae575f80fd5b505af11580156109c0573d5f803e3d5ffd5b505050506109ed60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b6109f9611fa7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a46576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a4e6106fa565b6001600160a01b038216610a8e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f2d4cfb7e0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690632d4cfb7e90610997908490600401613a59565b610adb611fa7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b28576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b306106fa565b6001600160a01b038316610b70576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b835f03610ba9576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610bdc57506001600160a01b03831630145b15610c13576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c1d848461204e565b5f546040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b0380861692635bcfd61692610c6d928a921690899088908890600401613b1c565b5f604051808303815f87803b158015610c84575f80fd5b505af1158015610c96573d5f803e3d5ffd5b50505050610cc360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b610cd26106fa565b6040517fe4dd681d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610d3d8161220e565b610d478383612218565b50505050565b6001600160a01b0381163314610d8f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d998282612302565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610dc88161220e565b610dd06123c4565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f81158015610e1d5750825b90505f8267ffffffffffffffff166001148015610e395750303b155b905081158015610e47575080155b15610e7e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610edf5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610efc57506001600160a01b038616155b15610f33576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f3b612454565b610f43612454565b610f4b61245c565b610f5361246c565b610f5d5f87612218565b50610f887f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87612218565b505f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038916179055831561101c5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b61102d61247c565b6110368261254c565b6109ed8282612556565b5f61104961267a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6110766106fa565b86515f036110b0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b855f036110e9576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620186a082351015611127576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b4061113760608301836137a3565b611142915085613804565b111561117a576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b03166385e1f4d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111da9190613b98565b6069036111e5575f80fd5b5f6111f2878785356126dc565b90505f336001600160a01b03167fd90f94752d2b12f364f4a2237ebe1aff24ba6127585376bf4935f6a7be17dd2a8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611260573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112849190613b98565b8c8c8c8c60405161129d99989796959493929190613c2f565b60405180910390a35050505050505050565b6112b76106fa565b83515f036112f1576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f0361132a576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b4061133a60608301836137a3565b90501115611374576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61137f848461286f565b90505f336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c87868886896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ed573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114119190613b98565b60405180604001604052808c6001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa158015611458573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061147c9190613b98565b8152600160209091015260405161149a969594939291908c90613cb8565b60405180910390a35050505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6114d38161220e565b610dd06128da565b6114e3611fa7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611530576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115386106fa565b6001600160a01b038416158061155557506001600160a01b038216155b1561158c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f036115c5576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821673735b14bb79463307aacbed86daf3322b1e6226ab14806115f857506001600160a01b03821630145b1561162f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590528516906347e7ef24906044016020604051808303815f875af1158015611694573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b89190613d38565b6116ee576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc9028a360000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063c9028a36906117339084906004016139eb565b5f604051808303815f87803b15801561174a575f80fd5b505af115801561175c573d5f803e3d5ffd5b50505050610d4760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611791611fa7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146117de576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117e66106fa565b6001600160a01b038516158061180357506001600160a01b038316155b1561183a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f5bcfd6160000000000000000000000000000000000000000000000000000000081526001600160a01b03841690635bcfd616906118879089908990899088908890600401613b1c565b5f604051808303815f87803b15801561189e575f80fd5b505af11580156118b0573d5f803e3d5ffd5b505050506108ad60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6118e5611fa7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611932576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61193a6106fa565b6001600160a01b038516158061195757506001600160a01b038316155b1561198e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b835f036119c7576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab14806119fa57506001600160a01b03831630145b15611a31576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303815f875af1158015611a96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aba9190613d38565b61183a576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611af86106fa565b84515f03611b32576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b835f03611b6b576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620186a0821015611ba8576040517f60ee124700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b40611bb860608301836137a3565b90501115611bf2576040517f9507fb3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611bfe8585856126dc565b90505f336001600160a01b03167f07bf64173efd8f3dfb9e4eb3834bab9d5b85a3d89a1c6425797329de0668502c888789868a6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c909190613b98565b6040805180820182528c8152600160208201529051611cb6969594939291908c90613cb8565b60405180910390a3505050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611cff8161220e565b610d478383612302565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611d56576040517f42c0407e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d5e6106fa565b6001600160a01b0383161580611d7b57506001600160a01b038116155b15611db2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f03611deb576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab1480611e1e57506001600160a01b03811630145b15611e55576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303815f875af1158015611eba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ede9190613d38565b610d99576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85515f03611f4e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f5b85835f0151612953565b50846001600160a01b0316336001600160a01b03167f306ee13f48319a123b222c69908e44dcf91abffc20cacc502e3cf5a4ff23e0e48887878787604051611cb6959493929190613d53565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612022576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af11580156120ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120de9190613d38565b612114576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d906024015f604051808303815f87803b15801561216f575f80fd5b505af1158015612181573d5f803e3d5ffd5b505050505f816001600160a01b0316836040515f6040518083038185875af1925050503d805f81146121ce576040519150601f19603f3d011682016040523d82523d5f602084013e6121d3565b606091505b5050905080610d99576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dd08133612b49565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166122f9575f848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556122af3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107ea565b5f9150506107ea565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156122f9575f848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107ea565b6123cc612bd5565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b610756612c30565b612464612c30565b610756612c97565b612474612c30565b610756612ce8565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061251557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166125097f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610756576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109ed8161220e565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156125ce575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526125cb91810190613b98565b60015b612614576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612670576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161260b565b610d998383612cf0565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610756576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f806126e88484612953565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790529091506001600160a01b038516906323b872dd906064016020604051808303815f875af1158015612754573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127789190613d38565b6127ae576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303815f875af115801561280b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061282f9190613d38565b612865576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b90505b9392505050565b5f6128688383846001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128d59190613b98565b6126dc565b6128e26106fa565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612436565b5f805f846001600160a01b031663fc5fecd5856040518263ffffffff1660e01b815260040161298491815260200190565b6040805180830381865afa15801561299e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129c29190613df5565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303815f875af1158015612a30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a549190613d38565b612a8a576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b038316906342966c68906024016020604051808303815f875af1158015612ae7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b0b9190613d38565b612b41576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166109ed576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024810183905260440161260b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610756576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610756576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612c9f612c30565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b612028612c30565b612cf982612d45565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115612d3d57610d998282612dec565b6109ed612e5e565b806001600160a01b03163b5f03612d93576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161260b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051612e089190613e21565b5f60405180830381855af49150503d805f8114612e40576040519150601f19603f3d011682016040523d82523d5f602084013e612e45565b606091505b5091509150612e55858383612e96565b95945050505050565b3415610756576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082612eab57612ea682612f0b565b612868565b8151158015612ec257506001600160a01b0384163b155b15612f04576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161260b565b5080612868565b805115612f1b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60208284031215612f5d575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612868575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f830112612fc8575f80fd5b813567ffffffffffffffff811115612fe257612fe2612f8c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561302f5761302f612f8c565b604052818152838201602001851015613046575f80fd5b816020850160208301375f918101602001919091529392505050565b6001600160a01b0381168114610dd0575f80fd5b5f8083601f840112613086575f80fd5b50813567ffffffffffffffff81111561309d575f80fd5b6020830191508360208285010111156130b4575f80fd5b9250929050565b5f604082840312156130cb575f80fd5b50919050565b5f60a082840312156130cb575f80fd5b5f805f805f8060c087890312156130f6575f80fd5b863567ffffffffffffffff81111561310c575f80fd5b61311889828a01612fb9565b965050602087013561312981613062565b9450604087013567ffffffffffffffff811115613144575f80fd5b61315089828a01613076565b9095509350613164905088606089016130bb565b915060a087013567ffffffffffffffff81111561317f575f80fd5b61318b89828a016130d1565b9150509295509295509295565b5f608082840312156130cb575f80fd5b5f80604083850312156131b9575f80fd5b82356131c481613062565b9150602083013567ffffffffffffffff8111156131df575f80fd5b6131eb85828601613198565b9150509250929050565b5f8060408385031215613206575f80fd5b823561321181613062565b9150602083013567ffffffffffffffff81111561322c575f80fd5b830160c0818603121561323d575f80fd5b809150509250929050565b5f606082840312156130cb575f80fd5b5f805f805f6080868803121561326c575f80fd5b853567ffffffffffffffff811115613282575f80fd5b61328e88828901613248565b9550506020860135935060408601356132a681613062565b9250606086013567ffffffffffffffff8111156132c1575f80fd5b6132cd88828901613076565b969995985093965092949392505050565b5f602082840312156132ee575f80fd5b5035919050565b5f805f805f805f60e0888a03121561330b575f80fd5b873567ffffffffffffffff811115613321575f80fd5b61332d8a828b01612fb9565b9750506020880135955060408801359450606088013567ffffffffffffffff811115613357575f80fd5b6133638a828b01613076565b909550935061337790508960808a016130bb565b915060c088013567ffffffffffffffff811115613392575f80fd5b61339e8a828b016130d1565b91505092959891949750929550565b5f80604083850312156133be575f80fd5b82359150602083013561323d81613062565b5f80604083850312156133e1575f80fd5b82356133ec81613062565b9150602083013561323d81613062565b5f806040838503121561340d575f80fd5b823561341881613062565b9150602083013567ffffffffffffffff811115613433575f80fd5b6131eb85828601612fb9565b5f805f805f805f60e0888a031215613455575f80fd5b873567ffffffffffffffff81111561346b575f80fd5b6134778a828b01612fb9565b97505060208801359550604088013561348f81613062565b9450606088013567ffffffffffffffff811115613357575f80fd5b5f805f80608085870312156134bd575f80fd5b843567ffffffffffffffff8111156134d3575f80fd5b6134df87828801612fb9565b9450506020850135925060408501356134f781613062565b9150606085013567ffffffffffffffff811115613512575f80fd5b61351e878288016130d1565b91505092959194509250565b5f805f806080858703121561353d575f80fd5b843567ffffffffffffffff811115613553575f80fd5b61355f87828801612fb9565b9450506020850135925060408501359150606085013567ffffffffffffffff811115613512575f80fd5b5f805f806080858703121561359c575f80fd5b84356135a781613062565b93506020850135925060408501356135be81613062565b9150606085013567ffffffffffffffff8111156135d9575f80fd5b61351e87828801613198565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61286860208301846135e5565b5f805f805f8060a08789031215613658575f80fd5b863567ffffffffffffffff81111561366e575f80fd5b61367a89828a01613248565b965050602087013561368b81613062565b94506040870135935060608701356136a281613062565b9250608087013567ffffffffffffffff8111156136bd575f80fd5b6136c989828a01613076565b979a9699509497509295939492505050565b5f805f805f60a086880312156136ef575f80fd5b853567ffffffffffffffff811115613705575f80fd5b61371188828901612fb9565b95505060208601359350604086013561372981613062565b925060608601359150608086013567ffffffffffffffff81111561374b575f80fd5b613757888289016130d1565b9150509295509295909350565b5f805f60608486031215613776575f80fd5b833561378181613062565b925060208401359150604084013561379881613062565b809150509250925092565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126137d6575f80fd5b83018035915067ffffffffffffffff8211156137f0575f80fd5b6020019150368190038213156130b4575f80fd5b808201808211156107ea577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8015158114610dd0575f80fd5b5f604082840312801561385a575f80fd5b506040805190810167ffffffffffffffff8111828210171561387e5761387e612f8c565b6040528235815260208301356138938161383c565b60208201529392505050565b5f60a082360312156138af575f80fd5b60405160a0810167ffffffffffffffff811182821017156138d2576138d2612f8c565b60405282356138e081613062565b815260208301356138f08161383c565b6020820152604083013561390381613062565b6040820152606083013567ffffffffffffffff811115613921575f80fd5b61392d36828601612fb9565b606083015250608092830135928101929092525090565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613977575f80fd5b830160208101925035905067ffffffffffffffff811115613996575f80fd5b8036038213156130b4575f80fd5b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081525f82356139fb81613062565b6001600160a01b0381166020840152506020830135613a1981613062565b6001600160a01b0381166040840152505f6040840135905080606084015250613a456060840184613944565b608080850152612e5560a0850182846139a4565b602081525f613a688384613944565b60c06020850152613a7d60e0850182846139a4565b9150506020840135613a8e81613062565b6001600160a01b0316604084810191909152840135606080850191909152840135613ab88161383c565b8015156080850152505f608085013590508060a085015250613add60a0850185613944565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08584030160c0860152613b128382846139a4565b9695505050505050565b608081525f613b2b8788613944565b60606080850152613b4060e0850182846139a4565b9150506020880135613b5181613062565b6001600160a01b0390811660a085015260408981013560c0860152908816602085015283018690528281036060840152613b8c8185876139a4565b98975050505050505050565b5f60208284031215613ba8575f80fd5b5051919050565b5f8135613bbb81613062565b6001600160a01b031683526020820135613bd48161383c565b151560208401526040820135613be981613062565b6001600160a01b03166040840152613c046060830183613944565b60a06060860152613c1960a0860182846139a4565b6080948501359590940194909452509092915050565b61012081525f613c4361012083018c6135e5565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a0840152613c778187896139a4565b853560c085015290506020850135613c8e8161383c565b151560e0840152828103610100840152613ca88185613baf565b9c9b505050505050505050505050565b61012081525f613ccc61012083018a6135e5565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a08501525f8252613d1260c0850187805182526020908101511515910152565b6020810161010085015250613d2a6020820185613baf565b9a9950505050505050505050565b5f60208284031215613d48575f80fd5b81516128688161383c565b60a081525f613d6560a08301886135e5565b8281036020840152613d788187896139a4565b85516040850152602086015115156060850152905082810360808401526001600160a01b0384511681526020840151151560208201526001600160a01b036040850151166040820152606084015160a06060830152613dda60a08301826135e5565b90506080850151608083015280925050509695505050505050565b5f8060408385031215613e06575f80fd5b8251613e1181613062565b6020939093015192949293505050565b5f82518060208501845e5f92019182525091905056fea2646970667358221220b5e8be7f4c42c777a791a61cc01378a6d40c25ddd6e480572b9f97ee3a93465a64736f6c634300081a003341646d696e206c6f73742044454641554c545f41444d494e5f524f4c4520616674657220757067726164652ea26469706673582212208453fa8a2d7f8880f81720503caa05d239e1e5cc2755c3e60ff8a701f1a6078c64736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d", +} + +// GatewayZEVMForkTestABI is the input ABI used to generate the binding from. +// Deprecated: Use GatewayZEVMForkTestMetaData.ABI instead. +var GatewayZEVMForkTestABI = GatewayZEVMForkTestMetaData.ABI + +// GatewayZEVMForkTestBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use GatewayZEVMForkTestMetaData.Bin instead. +var GatewayZEVMForkTestBin = GatewayZEVMForkTestMetaData.Bin + +// DeployGatewayZEVMForkTest deploys a new Ethereum contract, binding an instance of GatewayZEVMForkTest to it. +func DeployGatewayZEVMForkTest(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *GatewayZEVMForkTest, error) { + parsed, err := GatewayZEVMForkTestMetaData.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(GatewayZEVMForkTestBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &GatewayZEVMForkTest{GatewayZEVMForkTestCaller: GatewayZEVMForkTestCaller{contract: contract}, GatewayZEVMForkTestTransactor: GatewayZEVMForkTestTransactor{contract: contract}, GatewayZEVMForkTestFilterer: GatewayZEVMForkTestFilterer{contract: contract}}, nil +} + +// GatewayZEVMForkTest is an auto generated Go binding around an Ethereum contract. +type GatewayZEVMForkTest struct { + GatewayZEVMForkTestCaller // Read-only binding to the contract + GatewayZEVMForkTestTransactor // Write-only binding to the contract + GatewayZEVMForkTestFilterer // Log filterer for contract events +} + +// GatewayZEVMForkTestCaller is an auto generated read-only Go binding around an Ethereum contract. +type GatewayZEVMForkTestCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayZEVMForkTestTransactor is an auto generated write-only Go binding around an Ethereum contract. +type GatewayZEVMForkTestTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayZEVMForkTestFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type GatewayZEVMForkTestFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GatewayZEVMForkTestSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type GatewayZEVMForkTestSession struct { + Contract *GatewayZEVMForkTest // 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 +} + +// GatewayZEVMForkTestCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type GatewayZEVMForkTestCallerSession struct { + Contract *GatewayZEVMForkTestCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// GatewayZEVMForkTestTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type GatewayZEVMForkTestTransactorSession struct { + Contract *GatewayZEVMForkTestTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GatewayZEVMForkTestRaw is an auto generated low-level Go binding around an Ethereum contract. +type GatewayZEVMForkTestRaw struct { + Contract *GatewayZEVMForkTest // Generic contract binding to access the raw methods on +} + +// GatewayZEVMForkTestCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type GatewayZEVMForkTestCallerRaw struct { + Contract *GatewayZEVMForkTestCaller // Generic read-only contract binding to access the raw methods on +} + +// GatewayZEVMForkTestTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type GatewayZEVMForkTestTransactorRaw struct { + Contract *GatewayZEVMForkTestTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewGatewayZEVMForkTest creates a new instance of GatewayZEVMForkTest, bound to a specific deployed contract. +func NewGatewayZEVMForkTest(address common.Address, backend bind.ContractBackend) (*GatewayZEVMForkTest, error) { + contract, err := bindGatewayZEVMForkTest(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &GatewayZEVMForkTest{GatewayZEVMForkTestCaller: GatewayZEVMForkTestCaller{contract: contract}, GatewayZEVMForkTestTransactor: GatewayZEVMForkTestTransactor{contract: contract}, GatewayZEVMForkTestFilterer: GatewayZEVMForkTestFilterer{contract: contract}}, nil +} + +// NewGatewayZEVMForkTestCaller creates a new read-only instance of GatewayZEVMForkTest, bound to a specific deployed contract. +func NewGatewayZEVMForkTestCaller(address common.Address, caller bind.ContractCaller) (*GatewayZEVMForkTestCaller, error) { + contract, err := bindGatewayZEVMForkTest(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestCaller{contract: contract}, nil +} + +// NewGatewayZEVMForkTestTransactor creates a new write-only instance of GatewayZEVMForkTest, bound to a specific deployed contract. +func NewGatewayZEVMForkTestTransactor(address common.Address, transactor bind.ContractTransactor) (*GatewayZEVMForkTestTransactor, error) { + contract, err := bindGatewayZEVMForkTest(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestTransactor{contract: contract}, nil +} + +// NewGatewayZEVMForkTestFilterer creates a new log filterer instance of GatewayZEVMForkTest, bound to a specific deployed contract. +func NewGatewayZEVMForkTestFilterer(address common.Address, filterer bind.ContractFilterer) (*GatewayZEVMForkTestFilterer, error) { + contract, err := bindGatewayZEVMForkTest(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestFilterer{contract: contract}, nil +} + +// bindGatewayZEVMForkTest binds a generic wrapper to an already deployed contract. +func bindGatewayZEVMForkTest(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := GatewayZEVMForkTestMetaData.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 (_GatewayZEVMForkTest *GatewayZEVMForkTestRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayZEVMForkTest.Contract.GatewayZEVMForkTestCaller.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 (_GatewayZEVMForkTest *GatewayZEVMForkTestRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMForkTest.Contract.GatewayZEVMForkTestTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayZEVMForkTest *GatewayZEVMForkTestRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayZEVMForkTest.Contract.GatewayZEVMForkTestTransactor.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 (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GatewayZEVMForkTest.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 (_GatewayZEVMForkTest *GatewayZEVMForkTestTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMForkTest.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GatewayZEVMForkTest *GatewayZEVMForkTestTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GatewayZEVMForkTest.Contract.contract.Transact(opts, method, params...) +} + +// ARBITRUMRPCURL is a free data retrieval call binding the contract method 0x699370b0. +// +// Solidity: function ARBITRUM_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) ARBITRUMRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "ARBITRUM_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ARBITRUMRPCURL is a free data retrieval call binding the contract method 0x699370b0. +// +// Solidity: function ARBITRUM_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) ARBITRUMRPCURL() (string, error) { + return _GatewayZEVMForkTest.Contract.ARBITRUMRPCURL(&_GatewayZEVMForkTest.CallOpts) +} + +// ARBITRUMRPCURL is a free data retrieval call binding the contract method 0x699370b0. +// +// Solidity: function ARBITRUM_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) ARBITRUMRPCURL() (string, error) { + return _GatewayZEVMForkTest.Contract.ARBITRUMRPCURL(&_GatewayZEVMForkTest.CallOpts) +} + +// AVALANCHERPCURL is a free data retrieval call binding the contract method 0xca747493. +// +// Solidity: function AVALANCHE_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) AVALANCHERPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "AVALANCHE_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// AVALANCHERPCURL is a free data retrieval call binding the contract method 0xca747493. +// +// Solidity: function AVALANCHE_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) AVALANCHERPCURL() (string, error) { + return _GatewayZEVMForkTest.Contract.AVALANCHERPCURL(&_GatewayZEVMForkTest.CallOpts) +} + +// AVALANCHERPCURL is a free data retrieval call binding the contract method 0xca747493. +// +// Solidity: function AVALANCHE_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) AVALANCHERPCURL() (string, error) { + return _GatewayZEVMForkTest.Contract.AVALANCHERPCURL(&_GatewayZEVMForkTest.CallOpts) +} + +// BASERPCURL is a free data retrieval call binding the contract method 0x2e8ade6e. +// +// Solidity: function BASE_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) BASERPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "BASE_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// BASERPCURL is a free data retrieval call binding the contract method 0x2e8ade6e. +// +// Solidity: function BASE_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) BASERPCURL() (string, error) { + return _GatewayZEVMForkTest.Contract.BASERPCURL(&_GatewayZEVMForkTest.CallOpts) +} + +// BASERPCURL is a free data retrieval call binding the contract method 0x2e8ade6e. +// +// Solidity: function BASE_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) BASERPCURL() (string, error) { + return _GatewayZEVMForkTest.Contract.BASERPCURL(&_GatewayZEVMForkTest.CallOpts) +} + +// BSCRPCURL is a free data retrieval call binding the contract method 0x88de7b87. +// +// Solidity: function BSC_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) BSCRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "BSC_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// BSCRPCURL is a free data retrieval call binding the contract method 0x88de7b87. +// +// Solidity: function BSC_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) BSCRPCURL() (string, error) { + return _GatewayZEVMForkTest.Contract.BSCRPCURL(&_GatewayZEVMForkTest.CallOpts) +} + +// BSCRPCURL is a free data retrieval call binding the contract method 0x88de7b87. +// +// Solidity: function BSC_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) BSCRPCURL() (string, error) { + return _GatewayZEVMForkTest.Contract.BSCRPCURL(&_GatewayZEVMForkTest.CallOpts) +} + +// ETHEREUMRPCURL is a free data retrieval call binding the contract method 0x9d3c5161. +// +// Solidity: function ETHEREUM_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) ETHEREUMRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "ETHEREUM_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ETHEREUMRPCURL is a free data retrieval call binding the contract method 0x9d3c5161. +// +// Solidity: function ETHEREUM_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) ETHEREUMRPCURL() (string, error) { + return _GatewayZEVMForkTest.Contract.ETHEREUMRPCURL(&_GatewayZEVMForkTest.CallOpts) +} + +// ETHEREUMRPCURL is a free data retrieval call binding the contract method 0x9d3c5161. +// +// Solidity: function ETHEREUM_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) ETHEREUMRPCURL() (string, error) { + return _GatewayZEVMForkTest.Contract.ETHEREUMRPCURL(&_GatewayZEVMForkTest.CallOpts) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) ISTEST(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "IS_TEST") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) ISTEST() (bool, error) { + return _GatewayZEVMForkTest.Contract.ISTEST(&_GatewayZEVMForkTest.CallOpts) +} + +// ISTEST is a free data retrieval call binding the contract method 0xfa7626d4. +// +// Solidity: function IS_TEST() view returns(bool) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) ISTEST() (bool, error) { + return _GatewayZEVMForkTest.Contract.ISTEST(&_GatewayZEVMForkTest.CallOpts) +} + +// POLYGONRPCURL is a free data retrieval call binding the contract method 0x94897fb1. +// +// Solidity: function POLYGON_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) POLYGONRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "POLYGON_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// POLYGONRPCURL is a free data retrieval call binding the contract method 0x94897fb1. +// +// Solidity: function POLYGON_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) POLYGONRPCURL() (string, error) { + return _GatewayZEVMForkTest.Contract.POLYGONRPCURL(&_GatewayZEVMForkTest.CallOpts) +} + +// POLYGONRPCURL is a free data retrieval call binding the contract method 0x94897fb1. +// +// Solidity: function POLYGON_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) POLYGONRPCURL() (string, error) { + return _GatewayZEVMForkTest.Contract.POLYGONRPCURL(&_GatewayZEVMForkTest.CallOpts) +} + +// ZETACHAINRPCURL is a free data retrieval call binding the contract method 0x3f8f61dd. +// +// Solidity: function ZETACHAIN_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) ZETACHAINRPCURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "ZETACHAIN_RPC_URL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ZETACHAINRPCURL is a free data retrieval call binding the contract method 0x3f8f61dd. +// +// Solidity: function ZETACHAIN_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) ZETACHAINRPCURL() (string, error) { + return _GatewayZEVMForkTest.Contract.ZETACHAINRPCURL(&_GatewayZEVMForkTest.CallOpts) +} + +// ZETACHAINRPCURL is a free data retrieval call binding the contract method 0x3f8f61dd. +// +// Solidity: function ZETACHAIN_RPC_URL() view returns(string) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) ZETACHAINRPCURL() (string, error) { + return _GatewayZEVMForkTest.Contract.ZETACHAINRPCURL(&_GatewayZEVMForkTest.CallOpts) +} + +// Chains is a free data retrieval call binding the contract method 0x550325b5. +// +// Solidity: function chains(uint256 ) view returns(uint256 forkId, address contractAddress, address admin, string rpcUrl, string name) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) Chains(opts *bind.CallOpts, arg0 *big.Int) (struct { + ForkId *big.Int + ContractAddress common.Address + Admin common.Address + RpcUrl string + Name string +}, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "chains", arg0) + + outstruct := new(struct { + ForkId *big.Int + ContractAddress common.Address + Admin common.Address + RpcUrl string + Name string + }) + if err != nil { + return *outstruct, err + } + + outstruct.ForkId = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.ContractAddress = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) + outstruct.Admin = *abi.ConvertType(out[2], new(common.Address)).(*common.Address) + outstruct.RpcUrl = *abi.ConvertType(out[3], new(string)).(*string) + outstruct.Name = *abi.ConvertType(out[4], new(string)).(*string) + + return *outstruct, err + +} + +// Chains is a free data retrieval call binding the contract method 0x550325b5. +// +// Solidity: function chains(uint256 ) view returns(uint256 forkId, address contractAddress, address admin, string rpcUrl, string name) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) Chains(arg0 *big.Int) (struct { + ForkId *big.Int + ContractAddress common.Address + Admin common.Address + RpcUrl string + Name string +}, error) { + return _GatewayZEVMForkTest.Contract.Chains(&_GatewayZEVMForkTest.CallOpts, arg0) +} + +// Chains is a free data retrieval call binding the contract method 0x550325b5. +// +// Solidity: function chains(uint256 ) view returns(uint256 forkId, address contractAddress, address admin, string rpcUrl, string name) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) Chains(arg0 *big.Int) (struct { + ForkId *big.Int + ContractAddress common.Address + Admin common.Address + RpcUrl string + Name string +}, error) { + return _GatewayZEVMForkTest.Contract.Chains(&_GatewayZEVMForkTest.CallOpts, arg0) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) ExcludeArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "excludeArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) ExcludeArtifacts() ([]string, error) { + return _GatewayZEVMForkTest.Contract.ExcludeArtifacts(&_GatewayZEVMForkTest.CallOpts) +} + +// ExcludeArtifacts is a free data retrieval call binding the contract method 0xb5508aa9. +// +// Solidity: function excludeArtifacts() view returns(string[] excludedArtifacts_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) ExcludeArtifacts() ([]string, error) { + return _GatewayZEVMForkTest.Contract.ExcludeArtifacts(&_GatewayZEVMForkTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) ExcludeContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "excludeContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) ExcludeContracts() ([]common.Address, error) { + return _GatewayZEVMForkTest.Contract.ExcludeContracts(&_GatewayZEVMForkTest.CallOpts) +} + +// ExcludeContracts is a free data retrieval call binding the contract method 0xe20c9f71. +// +// Solidity: function excludeContracts() view returns(address[] excludedContracts_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) ExcludeContracts() ([]common.Address, error) { + return _GatewayZEVMForkTest.Contract.ExcludeContracts(&_GatewayZEVMForkTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) ExcludeSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "excludeSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayZEVMForkTest.Contract.ExcludeSelectors(&_GatewayZEVMForkTest.CallOpts) +} + +// ExcludeSelectors is a free data retrieval call binding the contract method 0xb0464fdc. +// +// Solidity: function excludeSelectors() view returns((address,bytes4[])[] excludedSelectors_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) ExcludeSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayZEVMForkTest.Contract.ExcludeSelectors(&_GatewayZEVMForkTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) ExcludeSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "excludeSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) ExcludeSenders() ([]common.Address, error) { + return _GatewayZEVMForkTest.Contract.ExcludeSenders(&_GatewayZEVMForkTest.CallOpts) +} + +// ExcludeSenders is a free data retrieval call binding the contract method 0x1ed7831c. +// +// Solidity: function excludeSenders() view returns(address[] excludedSenders_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) ExcludeSenders() ([]common.Address, error) { + return _GatewayZEVMForkTest.Contract.ExcludeSenders(&_GatewayZEVMForkTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) Failed(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "failed") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) Failed() (bool, error) { + return _GatewayZEVMForkTest.Contract.Failed(&_GatewayZEVMForkTest.CallOpts) +} + +// Failed is a free data retrieval call binding the contract method 0xba414fa6. +// +// Solidity: function failed() view returns(bool) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) Failed() (bool, error) { + return _GatewayZEVMForkTest.Contract.Failed(&_GatewayZEVMForkTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) TargetArtifactSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzArtifactSelector, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "targetArtifactSelectors") + + if err != nil { + return *new([]StdInvariantFuzzArtifactSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzArtifactSelector)).(*[]StdInvariantFuzzArtifactSelector) + + return out0, err + +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _GatewayZEVMForkTest.Contract.TargetArtifactSelectors(&_GatewayZEVMForkTest.CallOpts) +} + +// TargetArtifactSelectors is a free data retrieval call binding the contract method 0x66d9a9a0. +// +// Solidity: function targetArtifactSelectors() view returns((string,bytes4[])[] targetedArtifactSelectors_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) TargetArtifactSelectors() ([]StdInvariantFuzzArtifactSelector, error) { + return _GatewayZEVMForkTest.Contract.TargetArtifactSelectors(&_GatewayZEVMForkTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) TargetArtifacts(opts *bind.CallOpts) ([]string, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "targetArtifacts") + + if err != nil { + return *new([]string), err + } + + out0 := *abi.ConvertType(out[0], new([]string)).(*[]string) + + return out0, err + +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) TargetArtifacts() ([]string, error) { + return _GatewayZEVMForkTest.Contract.TargetArtifacts(&_GatewayZEVMForkTest.CallOpts) +} + +// TargetArtifacts is a free data retrieval call binding the contract method 0x85226c81. +// +// Solidity: function targetArtifacts() view returns(string[] targetedArtifacts_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) TargetArtifacts() ([]string, error) { + return _GatewayZEVMForkTest.Contract.TargetArtifacts(&_GatewayZEVMForkTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) TargetContracts(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "targetContracts") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) TargetContracts() ([]common.Address, error) { + return _GatewayZEVMForkTest.Contract.TargetContracts(&_GatewayZEVMForkTest.CallOpts) +} + +// TargetContracts is a free data retrieval call binding the contract method 0x3f7286f4. +// +// Solidity: function targetContracts() view returns(address[] targetedContracts_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) TargetContracts() ([]common.Address, error) { + return _GatewayZEVMForkTest.Contract.TargetContracts(&_GatewayZEVMForkTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) TargetInterfaces(opts *bind.CallOpts) ([]StdInvariantFuzzInterface, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "targetInterfaces") + + if err != nil { + return *new([]StdInvariantFuzzInterface), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzInterface)).(*[]StdInvariantFuzzInterface) + + return out0, err + +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _GatewayZEVMForkTest.Contract.TargetInterfaces(&_GatewayZEVMForkTest.CallOpts) +} + +// TargetInterfaces is a free data retrieval call binding the contract method 0x2ade3880. +// +// Solidity: function targetInterfaces() view returns((address,string[])[] targetedInterfaces_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) TargetInterfaces() ([]StdInvariantFuzzInterface, error) { + return _GatewayZEVMForkTest.Contract.TargetInterfaces(&_GatewayZEVMForkTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) TargetSelectors(opts *bind.CallOpts) ([]StdInvariantFuzzSelector, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "targetSelectors") + + if err != nil { + return *new([]StdInvariantFuzzSelector), err + } + + out0 := *abi.ConvertType(out[0], new([]StdInvariantFuzzSelector)).(*[]StdInvariantFuzzSelector) + + return out0, err + +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayZEVMForkTest.Contract.TargetSelectors(&_GatewayZEVMForkTest.CallOpts) +} + +// TargetSelectors is a free data retrieval call binding the contract method 0x916a17c6. +// +// Solidity: function targetSelectors() view returns((address,bytes4[])[] targetedSelectors_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) TargetSelectors() ([]StdInvariantFuzzSelector, error) { + return _GatewayZEVMForkTest.Contract.TargetSelectors(&_GatewayZEVMForkTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) TargetSenders(opts *bind.CallOpts) ([]common.Address, error) { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "targetSenders") + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) TargetSenders() ([]common.Address, error) { + return _GatewayZEVMForkTest.Contract.TargetSenders(&_GatewayZEVMForkTest.CallOpts) +} + +// TargetSenders is a free data retrieval call binding the contract method 0x3e5e3c23. +// +// Solidity: function targetSenders() view returns(address[] targetedSenders_) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) TargetSenders() ([]common.Address, error) { + return _GatewayZEVMForkTest.Contract.TargetSenders(&_GatewayZEVMForkTest.CallOpts) +} + +// TestForkIdDiffer is a free data retrieval call binding the contract method 0x6cf73eea. +// +// Solidity: function testForkIdDiffer() view returns() +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCaller) TestForkIdDiffer(opts *bind.CallOpts) error { + var out []interface{} + err := _GatewayZEVMForkTest.contract.Call(opts, &out, "testForkIdDiffer") + + if err != nil { + return err + } + + return err + +} + +// TestForkIdDiffer is a free data retrieval call binding the contract method 0x6cf73eea. +// +// Solidity: function testForkIdDiffer() view returns() +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) TestForkIdDiffer() error { + return _GatewayZEVMForkTest.Contract.TestForkIdDiffer(&_GatewayZEVMForkTest.CallOpts) +} + +// TestForkIdDiffer is a free data retrieval call binding the contract method 0x6cf73eea. +// +// Solidity: function testForkIdDiffer() view returns() +func (_GatewayZEVMForkTest *GatewayZEVMForkTestCallerSession) TestForkIdDiffer() error { + return _GatewayZEVMForkTest.Contract.TestForkIdDiffer(&_GatewayZEVMForkTest.CallOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayZEVMForkTest *GatewayZEVMForkTestTransactor) SetUp(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMForkTest.contract.Transact(opts, "setUp") +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) SetUp() (*types.Transaction, error) { + return _GatewayZEVMForkTest.Contract.SetUp(&_GatewayZEVMForkTest.TransactOpts) +} + +// SetUp is a paid mutator transaction binding the contract method 0x0a9254e4. +// +// Solidity: function setUp() returns() +func (_GatewayZEVMForkTest *GatewayZEVMForkTestTransactorSession) SetUp() (*types.Transaction, error) { + return _GatewayZEVMForkTest.Contract.SetUp(&_GatewayZEVMForkTest.TransactOpts) +} + +// TestCanSwitchForks is a paid mutator transaction binding the contract method 0x8cf03dbc. +// +// Solidity: function testCanSwitchForks() returns() +func (_GatewayZEVMForkTest *GatewayZEVMForkTestTransactor) TestCanSwitchForks(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMForkTest.contract.Transact(opts, "testCanSwitchForks") +} + +// TestCanSwitchForks is a paid mutator transaction binding the contract method 0x8cf03dbc. +// +// Solidity: function testCanSwitchForks() returns() +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) TestCanSwitchForks() (*types.Transaction, error) { + return _GatewayZEVMForkTest.Contract.TestCanSwitchForks(&_GatewayZEVMForkTest.TransactOpts) +} + +// TestCanSwitchForks is a paid mutator transaction binding the contract method 0x8cf03dbc. +// +// Solidity: function testCanSwitchForks() returns() +func (_GatewayZEVMForkTest *GatewayZEVMForkTestTransactorSession) TestCanSwitchForks() (*types.Transaction, error) { + return _GatewayZEVMForkTest.Contract.TestCanSwitchForks(&_GatewayZEVMForkTest.TransactOpts) +} + +// TestUpgradeGatewayOnAllChains is a paid mutator transaction binding the contract method 0x03b965ec. +// +// Solidity: function testUpgradeGatewayOnAllChains() returns() +func (_GatewayZEVMForkTest *GatewayZEVMForkTestTransactor) TestUpgradeGatewayOnAllChains(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GatewayZEVMForkTest.contract.Transact(opts, "testUpgradeGatewayOnAllChains") +} + +// TestUpgradeGatewayOnAllChains is a paid mutator transaction binding the contract method 0x03b965ec. +// +// Solidity: function testUpgradeGatewayOnAllChains() returns() +func (_GatewayZEVMForkTest *GatewayZEVMForkTestSession) TestUpgradeGatewayOnAllChains() (*types.Transaction, error) { + return _GatewayZEVMForkTest.Contract.TestUpgradeGatewayOnAllChains(&_GatewayZEVMForkTest.TransactOpts) +} + +// TestUpgradeGatewayOnAllChains is a paid mutator transaction binding the contract method 0x03b965ec. +// +// Solidity: function testUpgradeGatewayOnAllChains() returns() +func (_GatewayZEVMForkTest *GatewayZEVMForkTestTransactorSession) TestUpgradeGatewayOnAllChains() (*types.Transaction, error) { + return _GatewayZEVMForkTest.Contract.TestUpgradeGatewayOnAllChains(&_GatewayZEVMForkTest.TransactOpts) +} + +// GatewayZEVMForkTestLogIterator is returned from FilterLog and is used to iterate over the raw logs and unpacked data for Log events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogIterator struct { + Event *GatewayZEVMForkTestLog // 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 *GatewayZEVMForkTestLogIterator) 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(GatewayZEVMForkTestLog) + 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(GatewayZEVMForkTestLog) + 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 *GatewayZEVMForkTestLogIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLog represents a Log event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLog struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLog is a free log retrieval operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLog(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogIterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogIterator{contract: _GatewayZEVMForkTest.contract, event: "log", logs: logs, sub: sub}, nil +} + +// WatchLog is a free log subscription operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLog(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLog) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log") + 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(GatewayZEVMForkTestLog) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log", 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 +} + +// ParseLog is a log parse operation binding the contract event 0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50. +// +// Solidity: event log(string arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLog(log types.Log) (*GatewayZEVMForkTestLog, error) { + event := new(GatewayZEVMForkTestLog) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogAddressIterator is returned from FilterLogAddress and is used to iterate over the raw logs and unpacked data for LogAddress events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogAddressIterator struct { + Event *GatewayZEVMForkTestLogAddress // 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 *GatewayZEVMForkTestLogAddressIterator) 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(GatewayZEVMForkTestLogAddress) + 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(GatewayZEVMForkTestLogAddress) + 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 *GatewayZEVMForkTestLogAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogAddress represents a LogAddress event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogAddress struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogAddress is a free log retrieval operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogAddress(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogAddressIterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_address") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogAddressIterator{contract: _GatewayZEVMForkTest.contract, event: "log_address", logs: logs, sub: sub}, nil +} + +// WatchLogAddress is a free log subscription operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogAddress(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogAddress) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_address") + 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(GatewayZEVMForkTestLogAddress) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_address", 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 +} + +// ParseLogAddress is a log parse operation binding the contract event 0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3. +// +// Solidity: event log_address(address arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogAddress(log types.Log) (*GatewayZEVMForkTestLogAddress, error) { + event := new(GatewayZEVMForkTestLogAddress) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogArrayIterator is returned from FilterLogArray and is used to iterate over the raw logs and unpacked data for LogArray events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogArrayIterator struct { + Event *GatewayZEVMForkTestLogArray // 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 *GatewayZEVMForkTestLogArrayIterator) 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(GatewayZEVMForkTestLogArray) + 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(GatewayZEVMForkTestLogArray) + 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 *GatewayZEVMForkTestLogArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogArray represents a LogArray event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogArray struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray is a free log retrieval operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogArray(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogArrayIterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_array") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogArrayIterator{contract: _GatewayZEVMForkTest.contract, event: "log_array", logs: logs, sub: sub}, nil +} + +// WatchLogArray is a free log subscription operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogArray(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogArray) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_array") + 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(GatewayZEVMForkTestLogArray) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_array", 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 +} + +// ParseLogArray is a log parse operation binding the contract event 0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1. +// +// Solidity: event log_array(uint256[] val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogArray(log types.Log) (*GatewayZEVMForkTestLogArray, error) { + event := new(GatewayZEVMForkTestLogArray) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogArray0Iterator is returned from FilterLogArray0 and is used to iterate over the raw logs and unpacked data for LogArray0 events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogArray0Iterator struct { + Event *GatewayZEVMForkTestLogArray0 // 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 *GatewayZEVMForkTestLogArray0Iterator) 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(GatewayZEVMForkTestLogArray0) + 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(GatewayZEVMForkTestLogArray0) + 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 *GatewayZEVMForkTestLogArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogArray0 represents a LogArray0 event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogArray0 struct { + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray0 is a free log retrieval operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogArray0(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogArray0Iterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_array0") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogArray0Iterator{contract: _GatewayZEVMForkTest.contract, event: "log_array0", logs: logs, sub: sub}, nil +} + +// WatchLogArray0 is a free log subscription operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogArray0(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogArray0) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_array0") + 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(GatewayZEVMForkTestLogArray0) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_array0", 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 +} + +// ParseLogArray0 is a log parse operation binding the contract event 0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5. +// +// Solidity: event log_array(int256[] val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogArray0(log types.Log) (*GatewayZEVMForkTestLogArray0, error) { + event := new(GatewayZEVMForkTestLogArray0) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogArray1Iterator is returned from FilterLogArray1 and is used to iterate over the raw logs and unpacked data for LogArray1 events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogArray1Iterator struct { + Event *GatewayZEVMForkTestLogArray1 // 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 *GatewayZEVMForkTestLogArray1Iterator) 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(GatewayZEVMForkTestLogArray1) + 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(GatewayZEVMForkTestLogArray1) + 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 *GatewayZEVMForkTestLogArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogArray1 represents a LogArray1 event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogArray1 struct { + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogArray1 is a free log retrieval operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogArray1(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogArray1Iterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_array1") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogArray1Iterator{contract: _GatewayZEVMForkTest.contract, event: "log_array1", logs: logs, sub: sub}, nil +} + +// WatchLogArray1 is a free log subscription operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogArray1(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogArray1) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_array1") + 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(GatewayZEVMForkTestLogArray1) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_array1", 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 +} + +// ParseLogArray1 is a log parse operation binding the contract event 0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2. +// +// Solidity: event log_array(address[] val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogArray1(log types.Log) (*GatewayZEVMForkTestLogArray1, error) { + event := new(GatewayZEVMForkTestLogArray1) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogBytesIterator is returned from FilterLogBytes and is used to iterate over the raw logs and unpacked data for LogBytes events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogBytesIterator struct { + Event *GatewayZEVMForkTestLogBytes // 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 *GatewayZEVMForkTestLogBytesIterator) 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(GatewayZEVMForkTestLogBytes) + 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(GatewayZEVMForkTestLogBytes) + 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 *GatewayZEVMForkTestLogBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogBytes represents a LogBytes event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogBytes struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes is a free log retrieval operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogBytes(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogBytesIterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_bytes") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogBytesIterator{contract: _GatewayZEVMForkTest.contract, event: "log_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogBytes is a free log subscription operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogBytes(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogBytes) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_bytes") + 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(GatewayZEVMForkTestLogBytes) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_bytes", 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 +} + +// ParseLogBytes is a log parse operation binding the contract event 0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20. +// +// Solidity: event log_bytes(bytes arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogBytes(log types.Log) (*GatewayZEVMForkTestLogBytes, error) { + event := new(GatewayZEVMForkTestLogBytes) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogBytes32Iterator is returned from FilterLogBytes32 and is used to iterate over the raw logs and unpacked data for LogBytes32 events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogBytes32Iterator struct { + Event *GatewayZEVMForkTestLogBytes32 // 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 *GatewayZEVMForkTestLogBytes32Iterator) 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(GatewayZEVMForkTestLogBytes32) + 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(GatewayZEVMForkTestLogBytes32) + 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 *GatewayZEVMForkTestLogBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogBytes32 represents a LogBytes32 event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogBytes32 struct { + Arg0 [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogBytes32 is a free log retrieval operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogBytes32(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogBytes32Iterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_bytes32") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogBytes32Iterator{contract: _GatewayZEVMForkTest.contract, event: "log_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogBytes32 is a free log subscription operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogBytes32(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogBytes32) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_bytes32") + 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(GatewayZEVMForkTestLogBytes32) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_bytes32", 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 +} + +// ParseLogBytes32 is a log parse operation binding the contract event 0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3. +// +// Solidity: event log_bytes32(bytes32 arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogBytes32(log types.Log) (*GatewayZEVMForkTestLogBytes32, error) { + event := new(GatewayZEVMForkTestLogBytes32) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogIntIterator is returned from FilterLogInt and is used to iterate over the raw logs and unpacked data for LogInt events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogIntIterator struct { + Event *GatewayZEVMForkTestLogInt // 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 *GatewayZEVMForkTestLogIntIterator) 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(GatewayZEVMForkTestLogInt) + 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(GatewayZEVMForkTestLogInt) + 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 *GatewayZEVMForkTestLogIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogInt represents a LogInt event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogInt struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogInt is a free log retrieval operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogInt(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogIntIterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_int") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogIntIterator{contract: _GatewayZEVMForkTest.contract, event: "log_int", logs: logs, sub: sub}, nil +} + +// WatchLogInt is a free log subscription operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogInt(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogInt) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_int") + 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(GatewayZEVMForkTestLogInt) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_int", 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 +} + +// ParseLogInt is a log parse operation binding the contract event 0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8. +// +// Solidity: event log_int(int256 arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogInt(log types.Log) (*GatewayZEVMForkTestLogInt, error) { + event := new(GatewayZEVMForkTestLogInt) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogNamedAddressIterator is returned from FilterLogNamedAddress and is used to iterate over the raw logs and unpacked data for LogNamedAddress events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedAddressIterator struct { + Event *GatewayZEVMForkTestLogNamedAddress // 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 *GatewayZEVMForkTestLogNamedAddressIterator) 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(GatewayZEVMForkTestLogNamedAddress) + 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(GatewayZEVMForkTestLogNamedAddress) + 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 *GatewayZEVMForkTestLogNamedAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogNamedAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogNamedAddress represents a LogNamedAddress event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedAddress struct { + Key string + Val common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedAddress is a free log retrieval operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogNamedAddress(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogNamedAddressIterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_named_address") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogNamedAddressIterator{contract: _GatewayZEVMForkTest.contract, event: "log_named_address", logs: logs, sub: sub}, nil +} + +// WatchLogNamedAddress is a free log subscription operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogNamedAddress(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogNamedAddress) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_named_address") + 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(GatewayZEVMForkTestLogNamedAddress) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_address", 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 +} + +// ParseLogNamedAddress is a log parse operation binding the contract event 0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f. +// +// Solidity: event log_named_address(string key, address val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogNamedAddress(log types.Log) (*GatewayZEVMForkTestLogNamedAddress, error) { + event := new(GatewayZEVMForkTestLogNamedAddress) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_address", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogNamedArrayIterator is returned from FilterLogNamedArray and is used to iterate over the raw logs and unpacked data for LogNamedArray events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedArrayIterator struct { + Event *GatewayZEVMForkTestLogNamedArray // 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 *GatewayZEVMForkTestLogNamedArrayIterator) 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(GatewayZEVMForkTestLogNamedArray) + 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(GatewayZEVMForkTestLogNamedArray) + 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 *GatewayZEVMForkTestLogNamedArrayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogNamedArrayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogNamedArray represents a LogNamedArray event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedArray struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray is a free log retrieval operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogNamedArray(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogNamedArrayIterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_named_array") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogNamedArrayIterator{contract: _GatewayZEVMForkTest.contract, event: "log_named_array", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray is a free log subscription operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogNamedArray(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogNamedArray) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_named_array") + 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(GatewayZEVMForkTestLogNamedArray) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_array", 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 +} + +// ParseLogNamedArray is a log parse operation binding the contract event 0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb. +// +// Solidity: event log_named_array(string key, uint256[] val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogNamedArray(log types.Log) (*GatewayZEVMForkTestLogNamedArray, error) { + event := new(GatewayZEVMForkTestLogNamedArray) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_array", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogNamedArray0Iterator is returned from FilterLogNamedArray0 and is used to iterate over the raw logs and unpacked data for LogNamedArray0 events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedArray0Iterator struct { + Event *GatewayZEVMForkTestLogNamedArray0 // 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 *GatewayZEVMForkTestLogNamedArray0Iterator) 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(GatewayZEVMForkTestLogNamedArray0) + 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(GatewayZEVMForkTestLogNamedArray0) + 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 *GatewayZEVMForkTestLogNamedArray0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogNamedArray0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogNamedArray0 represents a LogNamedArray0 event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedArray0 struct { + Key string + Val []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray0 is a free log retrieval operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogNamedArray0(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogNamedArray0Iterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_named_array0") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogNamedArray0Iterator{contract: _GatewayZEVMForkTest.contract, event: "log_named_array0", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray0 is a free log subscription operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogNamedArray0(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogNamedArray0) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_named_array0") + 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(GatewayZEVMForkTestLogNamedArray0) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_array0", 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 +} + +// ParseLogNamedArray0 is a log parse operation binding the contract event 0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57. +// +// Solidity: event log_named_array(string key, int256[] val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogNamedArray0(log types.Log) (*GatewayZEVMForkTestLogNamedArray0, error) { + event := new(GatewayZEVMForkTestLogNamedArray0) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_array0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogNamedArray1Iterator is returned from FilterLogNamedArray1 and is used to iterate over the raw logs and unpacked data for LogNamedArray1 events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedArray1Iterator struct { + Event *GatewayZEVMForkTestLogNamedArray1 // 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 *GatewayZEVMForkTestLogNamedArray1Iterator) 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(GatewayZEVMForkTestLogNamedArray1) + 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(GatewayZEVMForkTestLogNamedArray1) + 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 *GatewayZEVMForkTestLogNamedArray1Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogNamedArray1Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogNamedArray1 represents a LogNamedArray1 event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedArray1 struct { + Key string + Val []common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedArray1 is a free log retrieval operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogNamedArray1(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogNamedArray1Iterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_named_array1") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogNamedArray1Iterator{contract: _GatewayZEVMForkTest.contract, event: "log_named_array1", logs: logs, sub: sub}, nil +} + +// WatchLogNamedArray1 is a free log subscription operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogNamedArray1(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogNamedArray1) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_named_array1") + 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(GatewayZEVMForkTestLogNamedArray1) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_array1", 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 +} + +// ParseLogNamedArray1 is a log parse operation binding the contract event 0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd. +// +// Solidity: event log_named_array(string key, address[] val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogNamedArray1(log types.Log) (*GatewayZEVMForkTestLogNamedArray1, error) { + event := new(GatewayZEVMForkTestLogNamedArray1) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_array1", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogNamedBytesIterator is returned from FilterLogNamedBytes and is used to iterate over the raw logs and unpacked data for LogNamedBytes events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedBytesIterator struct { + Event *GatewayZEVMForkTestLogNamedBytes // 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 *GatewayZEVMForkTestLogNamedBytesIterator) 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(GatewayZEVMForkTestLogNamedBytes) + 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(GatewayZEVMForkTestLogNamedBytes) + 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 *GatewayZEVMForkTestLogNamedBytesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogNamedBytesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogNamedBytes represents a LogNamedBytes event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedBytes struct { + Key string + Val []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes is a free log retrieval operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogNamedBytes(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogNamedBytesIterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_named_bytes") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogNamedBytesIterator{contract: _GatewayZEVMForkTest.contract, event: "log_named_bytes", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes is a free log subscription operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogNamedBytes(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogNamedBytes) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_named_bytes") + 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(GatewayZEVMForkTestLogNamedBytes) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_bytes", 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 +} + +// ParseLogNamedBytes is a log parse operation binding the contract event 0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18. +// +// Solidity: event log_named_bytes(string key, bytes val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogNamedBytes(log types.Log) (*GatewayZEVMForkTestLogNamedBytes, error) { + event := new(GatewayZEVMForkTestLogNamedBytes) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_bytes", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogNamedBytes32Iterator is returned from FilterLogNamedBytes32 and is used to iterate over the raw logs and unpacked data for LogNamedBytes32 events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedBytes32Iterator struct { + Event *GatewayZEVMForkTestLogNamedBytes32 // 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 *GatewayZEVMForkTestLogNamedBytes32Iterator) 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(GatewayZEVMForkTestLogNamedBytes32) + 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(GatewayZEVMForkTestLogNamedBytes32) + 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 *GatewayZEVMForkTestLogNamedBytes32Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogNamedBytes32Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogNamedBytes32 represents a LogNamedBytes32 event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedBytes32 struct { + Key string + Val [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedBytes32 is a free log retrieval operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogNamedBytes32(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogNamedBytes32Iterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_named_bytes32") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogNamedBytes32Iterator{contract: _GatewayZEVMForkTest.contract, event: "log_named_bytes32", logs: logs, sub: sub}, nil +} + +// WatchLogNamedBytes32 is a free log subscription operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogNamedBytes32(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogNamedBytes32) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_named_bytes32") + 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(GatewayZEVMForkTestLogNamedBytes32) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_bytes32", 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 +} + +// ParseLogNamedBytes32 is a log parse operation binding the contract event 0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99. +// +// Solidity: event log_named_bytes32(string key, bytes32 val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogNamedBytes32(log types.Log) (*GatewayZEVMForkTestLogNamedBytes32, error) { + event := new(GatewayZEVMForkTestLogNamedBytes32) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_bytes32", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogNamedDecimalIntIterator is returned from FilterLogNamedDecimalInt and is used to iterate over the raw logs and unpacked data for LogNamedDecimalInt events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedDecimalIntIterator struct { + Event *GatewayZEVMForkTestLogNamedDecimalInt // 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 *GatewayZEVMForkTestLogNamedDecimalIntIterator) 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(GatewayZEVMForkTestLogNamedDecimalInt) + 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(GatewayZEVMForkTestLogNamedDecimalInt) + 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 *GatewayZEVMForkTestLogNamedDecimalIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogNamedDecimalIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogNamedDecimalInt represents a LogNamedDecimalInt event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedDecimalInt struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalInt is a free log retrieval operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogNamedDecimalInt(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogNamedDecimalIntIterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_named_decimal_int") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogNamedDecimalIntIterator{contract: _GatewayZEVMForkTest.contract, event: "log_named_decimal_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalInt is a free log subscription operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogNamedDecimalInt(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogNamedDecimalInt) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_named_decimal_int") + 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(GatewayZEVMForkTestLogNamedDecimalInt) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_decimal_int", 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 +} + +// ParseLogNamedDecimalInt is a log parse operation binding the contract event 0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95. +// +// Solidity: event log_named_decimal_int(string key, int256 val, uint256 decimals) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogNamedDecimalInt(log types.Log) (*GatewayZEVMForkTestLogNamedDecimalInt, error) { + event := new(GatewayZEVMForkTestLogNamedDecimalInt) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_decimal_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogNamedDecimalUintIterator is returned from FilterLogNamedDecimalUint and is used to iterate over the raw logs and unpacked data for LogNamedDecimalUint events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedDecimalUintIterator struct { + Event *GatewayZEVMForkTestLogNamedDecimalUint // 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 *GatewayZEVMForkTestLogNamedDecimalUintIterator) 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(GatewayZEVMForkTestLogNamedDecimalUint) + 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(GatewayZEVMForkTestLogNamedDecimalUint) + 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 *GatewayZEVMForkTestLogNamedDecimalUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogNamedDecimalUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogNamedDecimalUint represents a LogNamedDecimalUint event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedDecimalUint struct { + Key string + Val *big.Int + Decimals *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedDecimalUint is a free log retrieval operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogNamedDecimalUint(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogNamedDecimalUintIterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_named_decimal_uint") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogNamedDecimalUintIterator{contract: _GatewayZEVMForkTest.contract, event: "log_named_decimal_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedDecimalUint is a free log subscription operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogNamedDecimalUint(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogNamedDecimalUint) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_named_decimal_uint") + 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(GatewayZEVMForkTestLogNamedDecimalUint) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_decimal_uint", 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 +} + +// ParseLogNamedDecimalUint is a log parse operation binding the contract event 0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b. +// +// Solidity: event log_named_decimal_uint(string key, uint256 val, uint256 decimals) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogNamedDecimalUint(log types.Log) (*GatewayZEVMForkTestLogNamedDecimalUint, error) { + event := new(GatewayZEVMForkTestLogNamedDecimalUint) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_decimal_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogNamedIntIterator is returned from FilterLogNamedInt and is used to iterate over the raw logs and unpacked data for LogNamedInt events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedIntIterator struct { + Event *GatewayZEVMForkTestLogNamedInt // 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 *GatewayZEVMForkTestLogNamedIntIterator) 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(GatewayZEVMForkTestLogNamedInt) + 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(GatewayZEVMForkTestLogNamedInt) + 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 *GatewayZEVMForkTestLogNamedIntIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogNamedIntIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogNamedInt represents a LogNamedInt event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedInt struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedInt is a free log retrieval operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogNamedInt(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogNamedIntIterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_named_int") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogNamedIntIterator{contract: _GatewayZEVMForkTest.contract, event: "log_named_int", logs: logs, sub: sub}, nil +} + +// WatchLogNamedInt is a free log subscription operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogNamedInt(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogNamedInt) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_named_int") + 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(GatewayZEVMForkTestLogNamedInt) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_int", 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 +} + +// ParseLogNamedInt is a log parse operation binding the contract event 0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168. +// +// Solidity: event log_named_int(string key, int256 val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogNamedInt(log types.Log) (*GatewayZEVMForkTestLogNamedInt, error) { + event := new(GatewayZEVMForkTestLogNamedInt) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_int", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogNamedStringIterator is returned from FilterLogNamedString and is used to iterate over the raw logs and unpacked data for LogNamedString events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedStringIterator struct { + Event *GatewayZEVMForkTestLogNamedString // 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 *GatewayZEVMForkTestLogNamedStringIterator) 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(GatewayZEVMForkTestLogNamedString) + 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(GatewayZEVMForkTestLogNamedString) + 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 *GatewayZEVMForkTestLogNamedStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogNamedStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogNamedString represents a LogNamedString event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedString struct { + Key string + Val string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedString is a free log retrieval operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogNamedString(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogNamedStringIterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_named_string") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogNamedStringIterator{contract: _GatewayZEVMForkTest.contract, event: "log_named_string", logs: logs, sub: sub}, nil +} + +// WatchLogNamedString is a free log subscription operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogNamedString(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogNamedString) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_named_string") + 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(GatewayZEVMForkTestLogNamedString) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_string", 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 +} + +// ParseLogNamedString is a log parse operation binding the contract event 0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583. +// +// Solidity: event log_named_string(string key, string val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogNamedString(log types.Log) (*GatewayZEVMForkTestLogNamedString, error) { + event := new(GatewayZEVMForkTestLogNamedString) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogNamedUintIterator is returned from FilterLogNamedUint and is used to iterate over the raw logs and unpacked data for LogNamedUint events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedUintIterator struct { + Event *GatewayZEVMForkTestLogNamedUint // 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 *GatewayZEVMForkTestLogNamedUintIterator) 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(GatewayZEVMForkTestLogNamedUint) + 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(GatewayZEVMForkTestLogNamedUint) + 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 *GatewayZEVMForkTestLogNamedUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogNamedUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogNamedUint represents a LogNamedUint event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogNamedUint struct { + Key string + Val *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogNamedUint is a free log retrieval operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogNamedUint(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogNamedUintIterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_named_uint") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogNamedUintIterator{contract: _GatewayZEVMForkTest.contract, event: "log_named_uint", logs: logs, sub: sub}, nil +} + +// WatchLogNamedUint is a free log subscription operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogNamedUint(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogNamedUint) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_named_uint") + 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(GatewayZEVMForkTestLogNamedUint) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_uint", 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 +} + +// ParseLogNamedUint is a log parse operation binding the contract event 0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8. +// +// Solidity: event log_named_uint(string key, uint256 val) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogNamedUint(log types.Log) (*GatewayZEVMForkTestLogNamedUint, error) { + event := new(GatewayZEVMForkTestLogNamedUint) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_named_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogStringIterator is returned from FilterLogString and is used to iterate over the raw logs and unpacked data for LogString events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogStringIterator struct { + Event *GatewayZEVMForkTestLogString // 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 *GatewayZEVMForkTestLogStringIterator) 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(GatewayZEVMForkTestLogString) + 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(GatewayZEVMForkTestLogString) + 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 *GatewayZEVMForkTestLogStringIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogStringIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogString represents a LogString event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogString struct { + Arg0 string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogString is a free log retrieval operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogString(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogStringIterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_string") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogStringIterator{contract: _GatewayZEVMForkTest.contract, event: "log_string", logs: logs, sub: sub}, nil +} + +// WatchLogString is a free log subscription operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogString(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogString) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_string") + 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(GatewayZEVMForkTestLogString) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_string", 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 +} + +// ParseLogString is a log parse operation binding the contract event 0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b. +// +// Solidity: event log_string(string arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogString(log types.Log) (*GatewayZEVMForkTestLogString, error) { + event := new(GatewayZEVMForkTestLogString) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_string", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogUintIterator is returned from FilterLogUint and is used to iterate over the raw logs and unpacked data for LogUint events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogUintIterator struct { + Event *GatewayZEVMForkTestLogUint // 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 *GatewayZEVMForkTestLogUintIterator) 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(GatewayZEVMForkTestLogUint) + 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(GatewayZEVMForkTestLogUint) + 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 *GatewayZEVMForkTestLogUintIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogUintIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogUint represents a LogUint event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogUint struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogUint is a free log retrieval operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogUint(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogUintIterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "log_uint") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogUintIterator{contract: _GatewayZEVMForkTest.contract, event: "log_uint", logs: logs, sub: sub}, nil +} + +// WatchLogUint is a free log subscription operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogUint(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogUint) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "log_uint") + 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(GatewayZEVMForkTestLogUint) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_uint", 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 +} + +// ParseLogUint is a log parse operation binding the contract event 0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755. +// +// Solidity: event log_uint(uint256 arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogUint(log types.Log) (*GatewayZEVMForkTestLogUint, error) { + event := new(GatewayZEVMForkTestLogUint) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "log_uint", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GatewayZEVMForkTestLogsIterator is returned from FilterLogs and is used to iterate over the raw logs and unpacked data for Logs events raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogsIterator struct { + Event *GatewayZEVMForkTestLogs // 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 *GatewayZEVMForkTestLogsIterator) 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(GatewayZEVMForkTestLogs) + 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(GatewayZEVMForkTestLogs) + 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 *GatewayZEVMForkTestLogsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GatewayZEVMForkTestLogsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GatewayZEVMForkTestLogs represents a Logs event raised by the GatewayZEVMForkTest contract. +type GatewayZEVMForkTestLogs struct { + Arg0 []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLogs is a free log retrieval operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) FilterLogs(opts *bind.FilterOpts) (*GatewayZEVMForkTestLogsIterator, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.FilterLogs(opts, "logs") + if err != nil { + return nil, err + } + return &GatewayZEVMForkTestLogsIterator{contract: _GatewayZEVMForkTest.contract, event: "logs", logs: logs, sub: sub}, nil +} + +// WatchLogs is a free log subscription operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) WatchLogs(opts *bind.WatchOpts, sink chan<- *GatewayZEVMForkTestLogs) (event.Subscription, error) { + + logs, sub, err := _GatewayZEVMForkTest.contract.WatchLogs(opts, "logs") + 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(GatewayZEVMForkTestLogs) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "logs", 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 +} + +// ParseLogs is a log parse operation binding the contract event 0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4. +// +// Solidity: event logs(bytes arg0) +func (_GatewayZEVMForkTest *GatewayZEVMForkTestFilterer) ParseLogs(log types.Log) (*GatewayZEVMForkTestLogs, error) { + event := new(GatewayZEVMForkTestLogs) + if err := _GatewayZEVMForkTest.contract.UnpackLog(event, "logs", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/scripts/upgrade/SimulateERC20CustodyUpgrade.s.sol b/scripts/upgrade/SimulateERC20CustodyUpgrade.s.sol deleted file mode 100644 index 1e55f11dc..000000000 --- a/scripts/upgrade/SimulateERC20CustodyUpgrade.s.sol +++ /dev/null @@ -1,39 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.26; - -import "forge-std/console.sol"; -import "forge-std/Script.sol"; -import "contracts/evm/ERC20Custody.sol"; - -contract UpgradeSimulation is Script { - function run() external { - // Forked environment - address proxyAddress = vm.envAddress("PROXY_ADDRESS"); - address adminAddress = vm.envAddress("ADMIN_ADDRESS"); - - // Deploy the new implementation contract - bytes32 implSalt = keccak256("ERC20Custody"); - address erc20CustodyImpl = address(new ERC20Custody{salt: implSalt}()); - - ERC20Custody proxy = ERC20Custody(proxyAddress); - - // Get the current state - address gateway = address(proxy.gateway()); - address tssAddress = proxy.tssAddress(); - bool supportsLegacy = proxy.supportsLegacy(); - - // Simulate the upgrade - vm.prank(adminAddress); - proxy.upgradeToAndCall(erc20CustodyImpl, ""); - - // After upgrade, verify that the state is intact - require(gateway == address(proxy.gateway()), "gateway address mismatch"); - require(tssAddress == proxy.tssAddress(), "tss address mismatch"); - require(supportsLegacy == proxy.supportsLegacy(), "supportsLegacy mismatch"); - - console.log("Upgraded contract state:"); - console.log("gateway address:", address(proxy.gateway())); - console.log("tss address:", proxy.tssAddress()); - console.log("supportsLegacy address:", proxy.supportsLegacy()); - } -} \ No newline at end of file diff --git a/scripts/upgrade/SimulateGatewayEVMUpgrade.s.sol b/scripts/upgrade/SimulateGatewayEVMUpgrade.s.sol deleted file mode 100644 index b8ebbe44c..000000000 --- a/scripts/upgrade/SimulateGatewayEVMUpgrade.s.sol +++ /dev/null @@ -1,42 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.26; - -import "forge-std/console.sol"; -import "forge-std/Script.sol"; -import "contracts/evm/GatewayEVM.sol"; - -contract UpgradeSimulation is Script { - function run() external { - // Forked environment - address proxyAddress = vm.envAddress("PROXY_ADDRESS"); - address adminAddress = vm.envAddress("ADMIN_ADDRESS"); - - // Deploy the new implementation contract - bytes32 implSalt = keccak256("GatewayEVM"); - address gatewayImpl = address(new GatewayEVM{salt: implSalt}()); - - GatewayEVM proxy = GatewayEVM(proxyAddress); - - // Get the current state - address custody = proxy.custody(); - address tssAddress = proxy.tssAddress(); - address zetaConnector = proxy.zetaConnector(); - address zetaToken = proxy.zetaToken(); - - // Simulate the upgrade - vm.prank(adminAddress); - proxy.upgradeToAndCall(gatewayImpl, ""); - - // After upgrade, verify that the state is intact - require(custody == proxy.custody(), "custody address mismatch"); - require(tssAddress == proxy.tssAddress(), "tss address mismatch"); - require(zetaConnector == proxy.zetaConnector(), "zetaConnector address mismatch"); - require(zetaToken == proxy.zetaToken(), "zetaToken address mismatch"); - - console.log("Upgraded contract state:"); - console.log("custody address:", proxy.custody()); - console.log("tss address:", proxy.tssAddress()); - console.log("zetaConnector address:", proxy.zetaConnector()); - console.log("zetaToken address:", proxy.zetaToken()); - } -} \ No newline at end of file diff --git a/scripts/upgrade/SimulateGatewayZEVMUpgrade.s.sol b/scripts/upgrade/SimulateGatewayZEVMUpgrade.s.sol deleted file mode 100644 index 849e60533..000000000 --- a/scripts/upgrade/SimulateGatewayZEVMUpgrade.s.sol +++ /dev/null @@ -1,33 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.26; - -import "forge-std/console.sol"; -import "forge-std/Script.sol"; -import "contracts/zevm/GatewayZEVM.sol"; - -contract UpgradeSimulation is Script { - function run() external { - // Forked environment - address payable proxyAddress = payable(vm.envAddress("PROXY_ADDRESS")); - address adminAddress = vm.envAddress("ADMIN_ADDRESS"); - - // Deploy the new implementation contract - bytes32 implSalt = keccak256("GatewayZEVM"); - address gatewayImpl = address(new GatewayZEVM{salt: implSalt}()); - - GatewayZEVM proxy = GatewayZEVM(proxyAddress); - - // Get the current state - address zetaToken = proxy.zetaToken(); - - // Simulate the upgrade - vm.prank(adminAddress); - proxy.upgradeToAndCall(gatewayImpl, ""); - - // After upgrade, verify that the state is intact - require(zetaToken == proxy.zetaToken(), "zetaToken address mismatch"); - - console.log("Upgraded contract state:"); - console.log("zetaToken address:", proxy.zetaToken()); - } -} \ No newline at end of file diff --git a/test/fork/BaseForkTest.sol b/test/fork/BaseForkTest.sol new file mode 100644 index 000000000..a33f95d50 --- /dev/null +++ b/test/fork/BaseForkTest.sol @@ -0,0 +1,88 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import "forge-std/Test.sol"; +import "forge-std/Vm.sol"; + +abstract contract BaseForkTest is Test { + // RPCs of all supported chains. + string public ETHEREUM_RPC_URL = vm.envString("ETHEREUM_RPC_URL"); + string public BSC_RPC_URL = vm.envString("BSC_RPC_URL"); + string public POLYGON_RPC_URL = vm.envString("POLYGON_RPC_URL"); + string public BASE_RPC_URL = vm.envString("BASE_RPC_URL"); + string public ARBITRUM_RPC_URL = vm.envString("ARBITRUM_RPC_URL"); + string public AVALANCHE_RPC_URL = vm.envString("AVALANCHE_RPC_URL"); + string public ZETACHAIN_RPC_URL = vm.envString("ZETACHAIN_RPC_URL"); + + // The fork identifiers. + uint256 ethereumForkId; + uint256 bscForkId; + uint256 polygonForkId; + uint256 baseForkId; + uint256 arbitrumForkId; + uint256 avalancheForkId; + uint256 zetachainForkId; + + // Mainnet admins. + address constant ETHEREUM_ADMIN = 0xaeB6dDB7708467814D557e340283248be8E43124; + address constant BSC_ADMIN = 0xaf28a257D292e7f0E531073f70a175b57E0261a8; + address constant POLYGON_ADMIN = 0x7828F92E7d79E141189f24C98aceF71Bc07bad3f; + address constant BASE_ADMIN = 0xF43CF8b3F3D22d4cC33f964c59076eaB2F8A108E; + address constant ARBITRUM_ADMIN = 0xdE3fb63723f0EEed8967ff9124e1c3bA89871b03; + address constant AVALANCHE_ADMIN = 0xdE3fb63723f0EEed8967ff9124e1c3bA89871b03; + address constant ZETACHAIN_ADMIN = 0x01d8207AfF7a7d029114Ee35afc72d0e133B7a0A; + + struct ChainConfig { + uint256 forkId; + address contractAddress; + address admin; + string rpcUrl; + string name; + } + + ChainConfig[] public chains; + + function setUp() public virtual { + ethereumForkId = vm.createFork(ETHEREUM_RPC_URL); + bscForkId = vm.createFork(BSC_RPC_URL); + polygonForkId = vm.createFork(POLYGON_RPC_URL); + baseForkId = vm.createFork(BASE_RPC_URL); + arbitrumForkId = vm.createFork(ARBITRUM_RPC_URL); + avalancheForkId = vm.createFork(AVALANCHE_RPC_URL); + zetachainForkId = vm.createFork(ZETACHAIN_RPC_URL); + + _setupChains(); + } + + function _setupChains() internal virtual; + + function testForkIdDiffer() public view { + assert(ethereumForkId != bscForkId); + assert(bscForkId != polygonForkId); + assert(polygonForkId != baseForkId); + assert(baseForkId != arbitrumForkId); + assert(arbitrumForkId != avalancheForkId); + assert(avalancheForkId != zetachainForkId); + } + + function testCanSwitchForks() public { + for (uint256 i = 0; i < chains.length; i++) { + vm.selectFork(chains[i].forkId); + assertEq(vm.activeFork(), chains[i].forkId); + } + } + + function testUpgradeGatewayOnAllChains() public { + for (uint256 i = 0; i < chains.length; i++) { + console.log("\n=== Testing upgrade on", chains[i].name, "==="); + _testUpgradeContract(chains[i]); + } + } + + function _testUpgradeContract(ChainConfig memory config) internal virtual; + + function _getImplementation(address proxy) internal view returns (address) { + bytes32 slot = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; + return address(uint160(uint256(vm.load(proxy, slot)))); + } +} diff --git a/test/fork/ERC20CustodyFork.t.sol b/test/fork/ERC20CustodyFork.t.sol new file mode 100644 index 000000000..903e68eb3 --- /dev/null +++ b/test/fork/ERC20CustodyFork.t.sol @@ -0,0 +1,67 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import { ERC20Custody } from "../../contracts/evm/ERC20Custody.sol"; +import "./BaseForkTest.sol"; + +contract ERC20CustodyForkTest is BaseForkTest { + // ERC20Custody proxy addresses. + address constant ETHEREUM_ERC20CUSTODY_PROXY = 0x0Bad40D9e9C369f2223c835E108f43a45fd223B5; + address constant BSC_ERC20CUSTODY_PROXY = 0x0Bad40D9e9C369f2223c835E108f43a45fd223B5; + address constant POLYGON_ERC20CUSTODY_PROXY = 0x0Bad40D9e9C369f2223c835E108f43a45fd223B5; + address constant BASE_ERC20CUSTODY_PROXY = 0x0Bad40D9e9C369f2223c835E108f43a45fd223B5; + address constant ARBITRUM_ERC20CUSTODY_PROXY = 0xECe33274237E6422f2668eD7dEE5901b16336aA0; + address constant AVALANCHE_ERC20CUSTODY_PROXY = 0xECe33274237E6422f2668eD7dEE5901b16336aA0; + + function _setupChains() internal override { + chains.push( + ChainConfig(ethereumForkId, ETHEREUM_ERC20CUSTODY_PROXY, ETHEREUM_ADMIN, ETHEREUM_RPC_URL, "Ethereum") + ); + chains.push(ChainConfig(bscForkId, BSC_ERC20CUSTODY_PROXY, BSC_ADMIN, BSC_RPC_URL, "BSC")); + chains.push(ChainConfig(polygonForkId, POLYGON_ERC20CUSTODY_PROXY, POLYGON_ADMIN, POLYGON_RPC_URL, "Polygon")); + chains.push(ChainConfig(baseForkId, BASE_ERC20CUSTODY_PROXY, BASE_ADMIN, BASE_RPC_URL, "Base")); + chains.push( + ChainConfig(arbitrumForkId, ARBITRUM_ERC20CUSTODY_PROXY, ARBITRUM_ADMIN, ARBITRUM_RPC_URL, "Arbitrum") + ); + chains.push( + ChainConfig(avalancheForkId, AVALANCHE_ERC20CUSTODY_PROXY, AVALANCHE_ADMIN, AVALANCHE_RPC_URL, "Avalanche") + ); + } + + function _testUpgradeContract(ChainConfig memory config) internal override { + vm.selectFork(config.forkId); + + // Get the current proxy contract. + ERC20Custody custody = ERC20Custody(config.contractAddress); + + // Storage state before the upgrade. + address gatewayBefore = address(custody.gateway()); + address tssAddressBefore = custody.tssAddress(); + bool supportsLegacyBefore = custody.supportsLegacy(); + + // Deploy new implementation. + vm.startPrank(config.admin); + ERC20Custody localNewImplementation = new ERC20Custody(); + + // Upgrade the proxy. + custody.upgradeToAndCall(address(localNewImplementation), ""); + + // Verify upgrade. + address onChainNewImplementation = _getImplementation(address(custody)); + assertEq(onChainNewImplementation, address(localNewImplementation), "Upgrade failed."); + console.log("Successfully upgraded to:", onChainNewImplementation); + + // Verify state preservation. + assertEq(address(custody.gateway()), gatewayBefore, "Gateway address changed."); + assertEq(custody.tssAddress(), tssAddressBefore, "TSS address changed."); + assertEq(custody.supportsLegacy(), supportsLegacyBefore, "Supports legacy changed."); + console.log("State preserved after upgrade"); + + // Check admin still has DEFAULT_ADMIN_ROLE after upgrade. + bytes32 adminRole = custody.DEFAULT_ADMIN_ROLE(); + bool adminHasRoleAfter = custody.hasRole(adminRole, config.admin); + assertTrue(adminHasRoleAfter, "Admin lost DEFAULT_ADMIN_ROLE after upgrade."); + + vm.stopPrank(); + } +} diff --git a/test/fork/GatewayEVMFork.t.sol b/test/fork/GatewayEVMFork.t.sol new file mode 100644 index 000000000..191f317ce --- /dev/null +++ b/test/fork/GatewayEVMFork.t.sol @@ -0,0 +1,65 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import { GatewayEVM } from "../../contracts/evm/GatewayEVM.sol"; +import "./BaseForkTest.sol"; + +contract GatewayEVMForkTest is BaseForkTest { + // GatewayEVM proxy addresses. + address constant ETHEREUM_GATEWAY_PROXY = 0x48B9AACC350b20147001f88821d31731Ba4C30ed; + address constant BSC_GATEWAY_PROXY = 0x48B9AACC350b20147001f88821d31731Ba4C30ed; + address constant POLYGON_GATEWAY_PROXY = 0x48B9AACC350b20147001f88821d31731Ba4C30ed; + address constant BASE_GATEWAY_PROXY = 0x48B9AACC350b20147001f88821d31731Ba4C30ed; + address constant ARBITRUM_GATEWAY_PROXY = 0x1C53e188Bc2E471f9D4A4762CFf843d32C2C8549; + address constant AVALANCHE_GATEWAY_PROXY = 0x1C53e188Bc2E471f9D4A4762CFf843d32C2C8549; + + function _setupChains() internal override { + chains.push(ChainConfig(ethereumForkId, ETHEREUM_GATEWAY_PROXY, ETHEREUM_ADMIN, ETHEREUM_RPC_URL, "Ethereum")); + chains.push(ChainConfig(bscForkId, BSC_GATEWAY_PROXY, BSC_ADMIN, BSC_RPC_URL, "BSC")); + chains.push(ChainConfig(polygonForkId, POLYGON_GATEWAY_PROXY, POLYGON_ADMIN, POLYGON_RPC_URL, "Polygon")); + chains.push(ChainConfig(baseForkId, BASE_GATEWAY_PROXY, BASE_ADMIN, BASE_RPC_URL, "Base")); + chains.push(ChainConfig(arbitrumForkId, ARBITRUM_GATEWAY_PROXY, ARBITRUM_ADMIN, ARBITRUM_RPC_URL, "Arbitrum")); + chains.push( + ChainConfig(avalancheForkId, AVALANCHE_GATEWAY_PROXY, AVALANCHE_ADMIN, AVALANCHE_RPC_URL, "Avalanche") + ); + } + + function _testUpgradeContract(ChainConfig memory config) internal override { + vm.selectFork(config.forkId); + + // Get the current proxy contract. + GatewayEVM gateway = GatewayEVM(config.contractAddress); + + // Storage state before the upgrade. + address custodyBefore = gateway.custody(); + address tssAddressBefore = gateway.tssAddress(); + address zetaConnectorBefore = gateway.zetaConnector(); + address zetaTokenBefore = gateway.zetaToken(); + + // Deploy new implementation. + vm.startPrank(config.admin); + GatewayEVM localNewImplementation = new GatewayEVM(); + + // Upgrade the proxy. + gateway.upgradeToAndCall(address(localNewImplementation), ""); + + // Verify upgrade. + address onChainNewImplementation = _getImplementation(address(gateway)); + assertEq(onChainNewImplementation, address(localNewImplementation), "Upgrade failed."); + console.log("Successfully upgraded to:", onChainNewImplementation); + + // Verify state preservation. + assertEq(gateway.custody(), custodyBefore, "Custody address changed."); + assertEq(gateway.tssAddress(), tssAddressBefore, "TSS address changed."); + assertEq(gateway.zetaConnector(), zetaConnectorBefore, "Connector address changed."); + assertEq(gateway.zetaToken(), zetaTokenBefore, "Zeta token address changed."); + console.log("State preserved after upgrade"); + + // Check admin still has DEFAULT_ADMIN_ROLE after upgrade. + bytes32 adminRole = gateway.DEFAULT_ADMIN_ROLE(); + bool adminHasRoleAfter = gateway.hasRole(adminRole, config.admin); + assertTrue(adminHasRoleAfter, "Admin lost DEFAULT_ADMIN_ROLE after upgrade."); + + vm.stopPrank(); + } +} diff --git a/test/fork/GatewayZEVMFork.t.sol b/test/fork/GatewayZEVMFork.t.sol new file mode 100644 index 000000000..a83c0b491 --- /dev/null +++ b/test/fork/GatewayZEVMFork.t.sol @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import { GatewayZEVM } from "../../contracts/zevm/GatewayZEVM.sol"; +import "./BaseForkTest.sol"; + +contract GatewayZEVMForkTest is BaseForkTest { + // GatewayZEVM proxy address. + address constant ZETACHAIN_GATEWAY_PROXY = 0xfEDD7A6e3Ef1cC470fbfbF955a22D793dDC0F44E; + + function _setupChains() internal override { + chains.push( + ChainConfig(zetachainForkId, ZETACHAIN_GATEWAY_PROXY, ZETACHAIN_ADMIN, ZETACHAIN_RPC_URL, "ZetaChain") + ); + } + + function _testUpgradeContract(ChainConfig memory config) internal override { + vm.selectFork(config.forkId); + + // Get the current proxy contract. + GatewayZEVM gateway = GatewayZEVM(payable(config.contractAddress)); + + // Storage state before the upgrade. + address zetaTokenBefore = gateway.zetaToken(); + + // Deploy new implementation. + vm.startPrank(config.admin); + GatewayZEVM localNewImplementation = new GatewayZEVM(); + + // Upgrade the proxy. + gateway.upgradeToAndCall(address(localNewImplementation), ""); + + // Verify upgrade. + address onChainNewImplementation = _getImplementation(address(gateway)); + assertEq(onChainNewImplementation, address(localNewImplementation), "Upgrade failed."); + console.log("Successfully upgraded to:", onChainNewImplementation); + + // Verify state preservation. + assertEq(gateway.zetaToken(), zetaTokenBefore, "Zeta token address changed."); + console.log("State preserved after upgrade"); + + // Check admin still has DEFAULT_ADMIN_ROLE after upgrade. + bytes32 adminRole = gateway.DEFAULT_ADMIN_ROLE(); + bool adminHasRoleAfter = gateway.hasRole(adminRole, config.admin); + assertTrue(adminHasRoleAfter, "Admin lost DEFAULT_ADMIN_ROLE after upgrade."); + + vm.stopPrank(); + } +} diff --git a/types/BaseForkTest.ts b/types/BaseForkTest.ts new file mode 100644 index 000000000..04d17ad54 --- /dev/null +++ b/types/BaseForkTest.ts @@ -0,0 +1,1149 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + FunctionFragment, + Result, + Interface, + EventFragment, + AddressLike, + ContractRunner, + ContractMethod, + Listener, +} from "ethers"; +import type { + TypedContractEvent, + TypedDeferredTopicFilter, + TypedEventLog, + TypedLogDescription, + TypedListener, + TypedContractMethod, +} from "./common"; + +export declare namespace StdInvariant { + export type FuzzSelectorStruct = { + addr: AddressLike; + selectors: BytesLike[]; + }; + + export type FuzzSelectorStructOutput = [addr: string, selectors: string[]] & { + addr: string; + selectors: string[]; + }; + + export type FuzzArtifactSelectorStruct = { + artifact: string; + selectors: BytesLike[]; + }; + + export type FuzzArtifactSelectorStructOutput = [ + artifact: string, + selectors: string[] + ] & { artifact: string; selectors: string[] }; + + export type FuzzInterfaceStruct = { addr: AddressLike; artifacts: string[] }; + + export type FuzzInterfaceStructOutput = [ + addr: string, + artifacts: string[] + ] & { addr: string; artifacts: string[] }; +} + +export interface BaseForkTestInterface extends Interface { + getFunction( + nameOrSignature: + | "ARBITRUM_RPC_URL" + | "AVALANCHE_RPC_URL" + | "BASE_RPC_URL" + | "BSC_RPC_URL" + | "ETHEREUM_RPC_URL" + | "IS_TEST" + | "POLYGON_RPC_URL" + | "ZETACHAIN_RPC_URL" + | "chains" + | "excludeArtifacts" + | "excludeContracts" + | "excludeSelectors" + | "excludeSenders" + | "failed" + | "setUp" + | "targetArtifactSelectors" + | "targetArtifacts" + | "targetContracts" + | "targetInterfaces" + | "targetSelectors" + | "targetSenders" + | "testCanSwitchForks" + | "testForkIdDiffer" + | "testUpgradeGatewayOnAllChains" + ): FunctionFragment; + + getEvent( + nameOrSignatureOrTopic: + | "log" + | "log_address" + | "log_array(uint256[])" + | "log_array(int256[])" + | "log_array(address[])" + | "log_bytes" + | "log_bytes32" + | "log_int" + | "log_named_address" + | "log_named_array(string,uint256[])" + | "log_named_array(string,int256[])" + | "log_named_array(string,address[])" + | "log_named_bytes" + | "log_named_bytes32" + | "log_named_decimal_int" + | "log_named_decimal_uint" + | "log_named_int" + | "log_named_string" + | "log_named_uint" + | "log_string" + | "log_uint" + | "logs" + ): EventFragment; + + encodeFunctionData( + functionFragment: "ARBITRUM_RPC_URL", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "AVALANCHE_RPC_URL", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "BASE_RPC_URL", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "BSC_RPC_URL", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "ETHEREUM_RPC_URL", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "IS_TEST", values?: undefined): string; + encodeFunctionData( + functionFragment: "POLYGON_RPC_URL", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "ZETACHAIN_RPC_URL", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "chains", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "excludeArtifacts", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "excludeContracts", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "excludeSelectors", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "excludeSenders", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "failed", values?: undefined): string; + encodeFunctionData(functionFragment: "setUp", values?: undefined): string; + encodeFunctionData( + functionFragment: "targetArtifactSelectors", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "targetArtifacts", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "targetContracts", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "targetInterfaces", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "targetSelectors", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "targetSenders", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "testCanSwitchForks", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "testForkIdDiffer", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "testUpgradeGatewayOnAllChains", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "ARBITRUM_RPC_URL", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "AVALANCHE_RPC_URL", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "BASE_RPC_URL", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "BSC_RPC_URL", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "ETHEREUM_RPC_URL", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "IS_TEST", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "POLYGON_RPC_URL", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "ZETACHAIN_RPC_URL", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "chains", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "excludeArtifacts", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "excludeContracts", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "excludeSelectors", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "excludeSenders", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "failed", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "setUp", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "targetArtifactSelectors", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "targetArtifacts", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "targetContracts", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "targetInterfaces", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "targetSelectors", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "targetSenders", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "testCanSwitchForks", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "testForkIdDiffer", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "testUpgradeGatewayOnAllChains", + data: BytesLike + ): Result; +} + +export namespace logEvent { + export type InputTuple = [arg0: string]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_addressEvent { + export type InputTuple = [arg0: AddressLike]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_array_uint256_array_Event { + export type InputTuple = [val: BigNumberish[]]; + export type OutputTuple = [val: bigint[]]; + export interface OutputObject { + val: bigint[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_array_int256_array_Event { + export type InputTuple = [val: BigNumberish[]]; + export type OutputTuple = [val: bigint[]]; + export interface OutputObject { + val: bigint[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_array_address_array_Event { + export type InputTuple = [val: AddressLike[]]; + export type OutputTuple = [val: string[]]; + export interface OutputObject { + val: string[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_bytesEvent { + export type InputTuple = [arg0: BytesLike]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_bytes32Event { + export type InputTuple = [arg0: BytesLike]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_intEvent { + export type InputTuple = [arg0: BigNumberish]; + export type OutputTuple = [arg0: bigint]; + export interface OutputObject { + arg0: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_addressEvent { + export type InputTuple = [key: string, val: AddressLike]; + export type OutputTuple = [key: string, val: string]; + export interface OutputObject { + key: string; + val: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_array_string_uint256_array_Event { + export type InputTuple = [key: string, val: BigNumberish[]]; + export type OutputTuple = [key: string, val: bigint[]]; + export interface OutputObject { + key: string; + val: bigint[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_array_string_int256_array_Event { + export type InputTuple = [key: string, val: BigNumberish[]]; + export type OutputTuple = [key: string, val: bigint[]]; + export interface OutputObject { + key: string; + val: bigint[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_array_string_address_array_Event { + export type InputTuple = [key: string, val: AddressLike[]]; + export type OutputTuple = [key: string, val: string[]]; + export interface OutputObject { + key: string; + val: string[]; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_bytesEvent { + export type InputTuple = [key: string, val: BytesLike]; + export type OutputTuple = [key: string, val: string]; + export interface OutputObject { + key: string; + val: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_bytes32Event { + export type InputTuple = [key: string, val: BytesLike]; + export type OutputTuple = [key: string, val: string]; + export interface OutputObject { + key: string; + val: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_decimal_intEvent { + export type InputTuple = [ + key: string, + val: BigNumberish, + decimals: BigNumberish + ]; + export type OutputTuple = [key: string, val: bigint, decimals: bigint]; + export interface OutputObject { + key: string; + val: bigint; + decimals: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_decimal_uintEvent { + export type InputTuple = [ + key: string, + val: BigNumberish, + decimals: BigNumberish + ]; + export type OutputTuple = [key: string, val: bigint, decimals: bigint]; + export interface OutputObject { + key: string; + val: bigint; + decimals: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_intEvent { + export type InputTuple = [key: string, val: BigNumberish]; + export type OutputTuple = [key: string, val: bigint]; + export interface OutputObject { + key: string; + val: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_stringEvent { + export type InputTuple = [key: string, val: string]; + export type OutputTuple = [key: string, val: string]; + export interface OutputObject { + key: string; + val: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_named_uintEvent { + export type InputTuple = [key: string, val: BigNumberish]; + export type OutputTuple = [key: string, val: bigint]; + export interface OutputObject { + key: string; + val: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_stringEvent { + export type InputTuple = [arg0: string]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace log_uintEvent { + export type InputTuple = [arg0: BigNumberish]; + export type OutputTuple = [arg0: bigint]; + export interface OutputObject { + arg0: bigint; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export namespace logsEvent { + export type InputTuple = [arg0: BytesLike]; + export type OutputTuple = [arg0: string]; + export interface OutputObject { + arg0: string; + } + export type Event = TypedContractEvent; + export type Filter = TypedDeferredTopicFilter; + export type Log = TypedEventLog; + export type LogDescription = TypedLogDescription; +} + +export interface BaseForkTest extends BaseContract { + connect(runner?: ContractRunner | null): BaseForkTest; + waitForDeployment(): Promise; + + interface: BaseForkTestInterface; + + queryFilter( + event: TCEvent, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + queryFilter( + filter: TypedDeferredTopicFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>>; + + on( + event: TCEvent, + listener: TypedListener + ): Promise; + on( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + once( + event: TCEvent, + listener: TypedListener + ): Promise; + once( + filter: TypedDeferredTopicFilter, + listener: TypedListener + ): Promise; + + listeners( + event: TCEvent + ): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners( + event?: TCEvent + ): Promise; + + ARBITRUM_RPC_URL: TypedContractMethod<[], [string], "view">; + + AVALANCHE_RPC_URL: TypedContractMethod<[], [string], "view">; + + BASE_RPC_URL: TypedContractMethod<[], [string], "view">; + + BSC_RPC_URL: TypedContractMethod<[], [string], "view">; + + ETHEREUM_RPC_URL: TypedContractMethod<[], [string], "view">; + + IS_TEST: TypedContractMethod<[], [boolean], "view">; + + POLYGON_RPC_URL: TypedContractMethod<[], [string], "view">; + + ZETACHAIN_RPC_URL: TypedContractMethod<[], [string], "view">; + + chains: TypedContractMethod< + [arg0: BigNumberish], + [ + [bigint, string, string, string, string] & { + forkId: bigint; + contractAddress: string; + admin: string; + rpcUrl: string; + name: string; + } + ], + "view" + >; + + excludeArtifacts: TypedContractMethod<[], [string[]], "view">; + + excludeContracts: TypedContractMethod<[], [string[]], "view">; + + excludeSelectors: TypedContractMethod< + [], + [StdInvariant.FuzzSelectorStructOutput[]], + "view" + >; + + excludeSenders: TypedContractMethod<[], [string[]], "view">; + + failed: TypedContractMethod<[], [boolean], "view">; + + setUp: TypedContractMethod<[], [void], "nonpayable">; + + targetArtifactSelectors: TypedContractMethod< + [], + [StdInvariant.FuzzArtifactSelectorStructOutput[]], + "view" + >; + + targetArtifacts: TypedContractMethod<[], [string[]], "view">; + + targetContracts: TypedContractMethod<[], [string[]], "view">; + + targetInterfaces: TypedContractMethod< + [], + [StdInvariant.FuzzInterfaceStructOutput[]], + "view" + >; + + targetSelectors: TypedContractMethod< + [], + [StdInvariant.FuzzSelectorStructOutput[]], + "view" + >; + + targetSenders: TypedContractMethod<[], [string[]], "view">; + + testCanSwitchForks: TypedContractMethod<[], [void], "nonpayable">; + + testForkIdDiffer: TypedContractMethod<[], [void], "view">; + + testUpgradeGatewayOnAllChains: TypedContractMethod<[], [void], "nonpayable">; + + getFunction( + key: string | FunctionFragment + ): T; + + getFunction( + nameOrSignature: "ARBITRUM_RPC_URL" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "AVALANCHE_RPC_URL" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "BASE_RPC_URL" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "BSC_RPC_URL" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "ETHEREUM_RPC_URL" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "IS_TEST" + ): TypedContractMethod<[], [boolean], "view">; + getFunction( + nameOrSignature: "POLYGON_RPC_URL" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "ZETACHAIN_RPC_URL" + ): TypedContractMethod<[], [string], "view">; + getFunction( + nameOrSignature: "chains" + ): TypedContractMethod< + [arg0: BigNumberish], + [ + [bigint, string, string, string, string] & { + forkId: bigint; + contractAddress: string; + admin: string; + rpcUrl: string; + name: string; + } + ], + "view" + >; + getFunction( + nameOrSignature: "excludeArtifacts" + ): TypedContractMethod<[], [string[]], "view">; + getFunction( + nameOrSignature: "excludeContracts" + ): TypedContractMethod<[], [string[]], "view">; + getFunction( + nameOrSignature: "excludeSelectors" + ): TypedContractMethod<[], [StdInvariant.FuzzSelectorStructOutput[]], "view">; + getFunction( + nameOrSignature: "excludeSenders" + ): TypedContractMethod<[], [string[]], "view">; + getFunction( + nameOrSignature: "failed" + ): TypedContractMethod<[], [boolean], "view">; + getFunction( + nameOrSignature: "setUp" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "targetArtifactSelectors" + ): TypedContractMethod< + [], + [StdInvariant.FuzzArtifactSelectorStructOutput[]], + "view" + >; + getFunction( + nameOrSignature: "targetArtifacts" + ): TypedContractMethod<[], [string[]], "view">; + getFunction( + nameOrSignature: "targetContracts" + ): TypedContractMethod<[], [string[]], "view">; + getFunction( + nameOrSignature: "targetInterfaces" + ): TypedContractMethod< + [], + [StdInvariant.FuzzInterfaceStructOutput[]], + "view" + >; + getFunction( + nameOrSignature: "targetSelectors" + ): TypedContractMethod<[], [StdInvariant.FuzzSelectorStructOutput[]], "view">; + getFunction( + nameOrSignature: "targetSenders" + ): TypedContractMethod<[], [string[]], "view">; + getFunction( + nameOrSignature: "testCanSwitchForks" + ): TypedContractMethod<[], [void], "nonpayable">; + getFunction( + nameOrSignature: "testForkIdDiffer" + ): TypedContractMethod<[], [void], "view">; + getFunction( + nameOrSignature: "testUpgradeGatewayOnAllChains" + ): TypedContractMethod<[], [void], "nonpayable">; + + getEvent( + key: "log" + ): TypedContractEvent< + logEvent.InputTuple, + logEvent.OutputTuple, + logEvent.OutputObject + >; + getEvent( + key: "log_address" + ): TypedContractEvent< + log_addressEvent.InputTuple, + log_addressEvent.OutputTuple, + log_addressEvent.OutputObject + >; + getEvent( + key: "log_array(uint256[])" + ): TypedContractEvent< + log_array_uint256_array_Event.InputTuple, + log_array_uint256_array_Event.OutputTuple, + log_array_uint256_array_Event.OutputObject + >; + getEvent( + key: "log_array(int256[])" + ): TypedContractEvent< + log_array_int256_array_Event.InputTuple, + log_array_int256_array_Event.OutputTuple, + log_array_int256_array_Event.OutputObject + >; + getEvent( + key: "log_array(address[])" + ): TypedContractEvent< + log_array_address_array_Event.InputTuple, + log_array_address_array_Event.OutputTuple, + log_array_address_array_Event.OutputObject + >; + getEvent( + key: "log_bytes" + ): TypedContractEvent< + log_bytesEvent.InputTuple, + log_bytesEvent.OutputTuple, + log_bytesEvent.OutputObject + >; + getEvent( + key: "log_bytes32" + ): TypedContractEvent< + log_bytes32Event.InputTuple, + log_bytes32Event.OutputTuple, + log_bytes32Event.OutputObject + >; + getEvent( + key: "log_int" + ): TypedContractEvent< + log_intEvent.InputTuple, + log_intEvent.OutputTuple, + log_intEvent.OutputObject + >; + getEvent( + key: "log_named_address" + ): TypedContractEvent< + log_named_addressEvent.InputTuple, + log_named_addressEvent.OutputTuple, + log_named_addressEvent.OutputObject + >; + getEvent( + key: "log_named_array(string,uint256[])" + ): TypedContractEvent< + log_named_array_string_uint256_array_Event.InputTuple, + log_named_array_string_uint256_array_Event.OutputTuple, + log_named_array_string_uint256_array_Event.OutputObject + >; + getEvent( + key: "log_named_array(string,int256[])" + ): TypedContractEvent< + log_named_array_string_int256_array_Event.InputTuple, + log_named_array_string_int256_array_Event.OutputTuple, + log_named_array_string_int256_array_Event.OutputObject + >; + getEvent( + key: "log_named_array(string,address[])" + ): TypedContractEvent< + log_named_array_string_address_array_Event.InputTuple, + log_named_array_string_address_array_Event.OutputTuple, + log_named_array_string_address_array_Event.OutputObject + >; + getEvent( + key: "log_named_bytes" + ): TypedContractEvent< + log_named_bytesEvent.InputTuple, + log_named_bytesEvent.OutputTuple, + log_named_bytesEvent.OutputObject + >; + getEvent( + key: "log_named_bytes32" + ): TypedContractEvent< + log_named_bytes32Event.InputTuple, + log_named_bytes32Event.OutputTuple, + log_named_bytes32Event.OutputObject + >; + getEvent( + key: "log_named_decimal_int" + ): TypedContractEvent< + log_named_decimal_intEvent.InputTuple, + log_named_decimal_intEvent.OutputTuple, + log_named_decimal_intEvent.OutputObject + >; + getEvent( + key: "log_named_decimal_uint" + ): TypedContractEvent< + log_named_decimal_uintEvent.InputTuple, + log_named_decimal_uintEvent.OutputTuple, + log_named_decimal_uintEvent.OutputObject + >; + getEvent( + key: "log_named_int" + ): TypedContractEvent< + log_named_intEvent.InputTuple, + log_named_intEvent.OutputTuple, + log_named_intEvent.OutputObject + >; + getEvent( + key: "log_named_string" + ): TypedContractEvent< + log_named_stringEvent.InputTuple, + log_named_stringEvent.OutputTuple, + log_named_stringEvent.OutputObject + >; + getEvent( + key: "log_named_uint" + ): TypedContractEvent< + log_named_uintEvent.InputTuple, + log_named_uintEvent.OutputTuple, + log_named_uintEvent.OutputObject + >; + getEvent( + key: "log_string" + ): TypedContractEvent< + log_stringEvent.InputTuple, + log_stringEvent.OutputTuple, + log_stringEvent.OutputObject + >; + getEvent( + key: "log_uint" + ): TypedContractEvent< + log_uintEvent.InputTuple, + log_uintEvent.OutputTuple, + log_uintEvent.OutputObject + >; + getEvent( + key: "logs" + ): TypedContractEvent< + logsEvent.InputTuple, + logsEvent.OutputTuple, + logsEvent.OutputObject + >; + + filters: { + "log(string)": TypedContractEvent< + logEvent.InputTuple, + logEvent.OutputTuple, + logEvent.OutputObject + >; + log: TypedContractEvent< + logEvent.InputTuple, + logEvent.OutputTuple, + logEvent.OutputObject + >; + + "log_address(address)": TypedContractEvent< + log_addressEvent.InputTuple, + log_addressEvent.OutputTuple, + log_addressEvent.OutputObject + >; + log_address: TypedContractEvent< + log_addressEvent.InputTuple, + log_addressEvent.OutputTuple, + log_addressEvent.OutputObject + >; + + "log_array(uint256[])": TypedContractEvent< + log_array_uint256_array_Event.InputTuple, + log_array_uint256_array_Event.OutputTuple, + log_array_uint256_array_Event.OutputObject + >; + "log_array(int256[])": TypedContractEvent< + log_array_int256_array_Event.InputTuple, + log_array_int256_array_Event.OutputTuple, + log_array_int256_array_Event.OutputObject + >; + "log_array(address[])": TypedContractEvent< + log_array_address_array_Event.InputTuple, + log_array_address_array_Event.OutputTuple, + log_array_address_array_Event.OutputObject + >; + + "log_bytes(bytes)": TypedContractEvent< + log_bytesEvent.InputTuple, + log_bytesEvent.OutputTuple, + log_bytesEvent.OutputObject + >; + log_bytes: TypedContractEvent< + log_bytesEvent.InputTuple, + log_bytesEvent.OutputTuple, + log_bytesEvent.OutputObject + >; + + "log_bytes32(bytes32)": TypedContractEvent< + log_bytes32Event.InputTuple, + log_bytes32Event.OutputTuple, + log_bytes32Event.OutputObject + >; + log_bytes32: TypedContractEvent< + log_bytes32Event.InputTuple, + log_bytes32Event.OutputTuple, + log_bytes32Event.OutputObject + >; + + "log_int(int256)": TypedContractEvent< + log_intEvent.InputTuple, + log_intEvent.OutputTuple, + log_intEvent.OutputObject + >; + log_int: TypedContractEvent< + log_intEvent.InputTuple, + log_intEvent.OutputTuple, + log_intEvent.OutputObject + >; + + "log_named_address(string,address)": TypedContractEvent< + log_named_addressEvent.InputTuple, + log_named_addressEvent.OutputTuple, + log_named_addressEvent.OutputObject + >; + log_named_address: TypedContractEvent< + log_named_addressEvent.InputTuple, + log_named_addressEvent.OutputTuple, + log_named_addressEvent.OutputObject + >; + + "log_named_array(string,uint256[])": TypedContractEvent< + log_named_array_string_uint256_array_Event.InputTuple, + log_named_array_string_uint256_array_Event.OutputTuple, + log_named_array_string_uint256_array_Event.OutputObject + >; + "log_named_array(string,int256[])": TypedContractEvent< + log_named_array_string_int256_array_Event.InputTuple, + log_named_array_string_int256_array_Event.OutputTuple, + log_named_array_string_int256_array_Event.OutputObject + >; + "log_named_array(string,address[])": TypedContractEvent< + log_named_array_string_address_array_Event.InputTuple, + log_named_array_string_address_array_Event.OutputTuple, + log_named_array_string_address_array_Event.OutputObject + >; + + "log_named_bytes(string,bytes)": TypedContractEvent< + log_named_bytesEvent.InputTuple, + log_named_bytesEvent.OutputTuple, + log_named_bytesEvent.OutputObject + >; + log_named_bytes: TypedContractEvent< + log_named_bytesEvent.InputTuple, + log_named_bytesEvent.OutputTuple, + log_named_bytesEvent.OutputObject + >; + + "log_named_bytes32(string,bytes32)": TypedContractEvent< + log_named_bytes32Event.InputTuple, + log_named_bytes32Event.OutputTuple, + log_named_bytes32Event.OutputObject + >; + log_named_bytes32: TypedContractEvent< + log_named_bytes32Event.InputTuple, + log_named_bytes32Event.OutputTuple, + log_named_bytes32Event.OutputObject + >; + + "log_named_decimal_int(string,int256,uint256)": TypedContractEvent< + log_named_decimal_intEvent.InputTuple, + log_named_decimal_intEvent.OutputTuple, + log_named_decimal_intEvent.OutputObject + >; + log_named_decimal_int: TypedContractEvent< + log_named_decimal_intEvent.InputTuple, + log_named_decimal_intEvent.OutputTuple, + log_named_decimal_intEvent.OutputObject + >; + + "log_named_decimal_uint(string,uint256,uint256)": TypedContractEvent< + log_named_decimal_uintEvent.InputTuple, + log_named_decimal_uintEvent.OutputTuple, + log_named_decimal_uintEvent.OutputObject + >; + log_named_decimal_uint: TypedContractEvent< + log_named_decimal_uintEvent.InputTuple, + log_named_decimal_uintEvent.OutputTuple, + log_named_decimal_uintEvent.OutputObject + >; + + "log_named_int(string,int256)": TypedContractEvent< + log_named_intEvent.InputTuple, + log_named_intEvent.OutputTuple, + log_named_intEvent.OutputObject + >; + log_named_int: TypedContractEvent< + log_named_intEvent.InputTuple, + log_named_intEvent.OutputTuple, + log_named_intEvent.OutputObject + >; + + "log_named_string(string,string)": TypedContractEvent< + log_named_stringEvent.InputTuple, + log_named_stringEvent.OutputTuple, + log_named_stringEvent.OutputObject + >; + log_named_string: TypedContractEvent< + log_named_stringEvent.InputTuple, + log_named_stringEvent.OutputTuple, + log_named_stringEvent.OutputObject + >; + + "log_named_uint(string,uint256)": TypedContractEvent< + log_named_uintEvent.InputTuple, + log_named_uintEvent.OutputTuple, + log_named_uintEvent.OutputObject + >; + log_named_uint: TypedContractEvent< + log_named_uintEvent.InputTuple, + log_named_uintEvent.OutputTuple, + log_named_uintEvent.OutputObject + >; + + "log_string(string)": TypedContractEvent< + log_stringEvent.InputTuple, + log_stringEvent.OutputTuple, + log_stringEvent.OutputObject + >; + log_string: TypedContractEvent< + log_stringEvent.InputTuple, + log_stringEvent.OutputTuple, + log_stringEvent.OutputObject + >; + + "log_uint(uint256)": TypedContractEvent< + log_uintEvent.InputTuple, + log_uintEvent.OutputTuple, + log_uintEvent.OutputObject + >; + log_uint: TypedContractEvent< + log_uintEvent.InputTuple, + log_uintEvent.OutputTuple, + log_uintEvent.OutputObject + >; + + "logs(bytes)": TypedContractEvent< + logsEvent.InputTuple, + logsEvent.OutputTuple, + logsEvent.OutputObject + >; + logs: TypedContractEvent< + logsEvent.InputTuple, + logsEvent.OutputTuple, + logsEvent.OutputObject + >; + }; +} diff --git a/types/factories/BaseForkTest__factory.ts b/types/factories/BaseForkTest__factory.ts new file mode 100644 index 000000000..d9f7b452b --- /dev/null +++ b/types/factories/BaseForkTest__factory.ts @@ -0,0 +1,748 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Interface, type ContractRunner } from "ethers"; +import type { BaseForkTest, BaseForkTestInterface } from "../BaseForkTest"; + +const _abi = [ + { + type: "function", + name: "ARBITRUM_RPC_URL", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "AVALANCHE_RPC_URL", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "BASE_RPC_URL", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "BSC_RPC_URL", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "ETHEREUM_RPC_URL", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "IS_TEST", + inputs: [], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "POLYGON_RPC_URL", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "ZETACHAIN_RPC_URL", + inputs: [], + outputs: [ + { + name: "", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "chains", + inputs: [ + { + name: "", + type: "uint256", + internalType: "uint256", + }, + ], + outputs: [ + { + name: "forkId", + type: "uint256", + internalType: "uint256", + }, + { + name: "contractAddress", + type: "address", + internalType: "address", + }, + { + name: "admin", + type: "address", + internalType: "address", + }, + { + name: "rpcUrl", + type: "string", + internalType: "string", + }, + { + name: "name", + type: "string", + internalType: "string", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "excludeArtifacts", + inputs: [], + outputs: [ + { + name: "excludedArtifacts_", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "excludeContracts", + inputs: [], + outputs: [ + { + name: "excludedContracts_", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "excludeSelectors", + inputs: [], + outputs: [ + { + name: "excludedSelectors_", + type: "tuple[]", + internalType: "struct StdInvariant.FuzzSelector[]", + components: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + { + name: "selectors", + type: "bytes4[]", + internalType: "bytes4[]", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "excludeSenders", + inputs: [], + outputs: [ + { + name: "excludedSenders_", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "failed", + inputs: [], + outputs: [ + { + name: "", + type: "bool", + internalType: "bool", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "setUp", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "targetArtifactSelectors", + inputs: [], + outputs: [ + { + name: "targetedArtifactSelectors_", + type: "tuple[]", + internalType: "struct StdInvariant.FuzzArtifactSelector[]", + components: [ + { + name: "artifact", + type: "string", + internalType: "string", + }, + { + name: "selectors", + type: "bytes4[]", + internalType: "bytes4[]", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "targetArtifacts", + inputs: [], + outputs: [ + { + name: "targetedArtifacts_", + type: "string[]", + internalType: "string[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "targetContracts", + inputs: [], + outputs: [ + { + name: "targetedContracts_", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "targetInterfaces", + inputs: [], + outputs: [ + { + name: "targetedInterfaces_", + type: "tuple[]", + internalType: "struct StdInvariant.FuzzInterface[]", + components: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + { + name: "artifacts", + type: "string[]", + internalType: "string[]", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "targetSelectors", + inputs: [], + outputs: [ + { + name: "targetedSelectors_", + type: "tuple[]", + internalType: "struct StdInvariant.FuzzSelector[]", + components: [ + { + name: "addr", + type: "address", + internalType: "address", + }, + { + name: "selectors", + type: "bytes4[]", + internalType: "bytes4[]", + }, + ], + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "targetSenders", + inputs: [], + outputs: [ + { + name: "targetedSenders_", + type: "address[]", + internalType: "address[]", + }, + ], + stateMutability: "view", + }, + { + type: "function", + name: "testCanSwitchForks", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "function", + name: "testForkIdDiffer", + inputs: [], + outputs: [], + stateMutability: "view", + }, + { + type: "function", + name: "testUpgradeGatewayOnAllChains", + inputs: [], + outputs: [], + stateMutability: "nonpayable", + }, + { + type: "event", + name: "log", + inputs: [ + { + name: "", + type: "string", + indexed: false, + internalType: "string", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_address", + inputs: [ + { + name: "", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_array", + inputs: [ + { + name: "val", + type: "uint256[]", + indexed: false, + internalType: "uint256[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_array", + inputs: [ + { + name: "val", + type: "int256[]", + indexed: false, + internalType: "int256[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_array", + inputs: [ + { + name: "val", + type: "address[]", + indexed: false, + internalType: "address[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_bytes", + inputs: [ + { + name: "", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_bytes32", + inputs: [ + { + name: "", + type: "bytes32", + indexed: false, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_int", + inputs: [ + { + name: "", + type: "int256", + indexed: false, + internalType: "int256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_address", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "address", + indexed: false, + internalType: "address", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_array", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "uint256[]", + indexed: false, + internalType: "uint256[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_array", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "int256[]", + indexed: false, + internalType: "int256[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_array", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "address[]", + indexed: false, + internalType: "address[]", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_bytes", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_bytes32", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "bytes32", + indexed: false, + internalType: "bytes32", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_decimal_int", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "int256", + indexed: false, + internalType: "int256", + }, + { + name: "decimals", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_decimal_uint", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + { + name: "decimals", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_int", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "int256", + indexed: false, + internalType: "int256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_string", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "string", + indexed: false, + internalType: "string", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_named_uint", + inputs: [ + { + name: "key", + type: "string", + indexed: false, + internalType: "string", + }, + { + name: "val", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_string", + inputs: [ + { + name: "", + type: "string", + indexed: false, + internalType: "string", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "log_uint", + inputs: [ + { + name: "", + type: "uint256", + indexed: false, + internalType: "uint256", + }, + ], + anonymous: false, + }, + { + type: "event", + name: "logs", + inputs: [ + { + name: "", + type: "bytes", + indexed: false, + internalType: "bytes", + }, + ], + anonymous: false, + }, +] as const; + +export class BaseForkTest__factory { + static readonly abi = _abi; + static createInterface(): BaseForkTestInterface { + return new Interface(_abi) as BaseForkTestInterface; + } + static connect( + address: string, + runner?: ContractRunner | null + ): BaseForkTest { + return new Contract(address, _abi, runner) as unknown as BaseForkTest; + } +} diff --git a/types/factories/index.ts b/types/factories/index.ts index 83e7d7c75..1b49f72fe 100644 --- a/types/factories/index.ts +++ b/types/factories/index.ts @@ -34,6 +34,7 @@ export * as introspection from "./introspection"; export * as utils from "./utils"; export { AccessControlUpgradeable__factory } from "./AccessControlUpgradeable__factory"; export { Address__factory } from "./Address__factory"; +export { BaseForkTest__factory } from "./BaseForkTest__factory"; export { BaseRegistry__factory } from "./BaseRegistry__factory"; export { BeaconProxy__factory } from "./BeaconProxy__factory"; export { ConnectorErrors__factory } from "./ConnectorErrors__factory"; diff --git a/types/index.ts b/types/index.ts index 738bac614..a2454e3c4 100644 --- a/types/index.ts +++ b/types/index.ts @@ -65,6 +65,7 @@ import type * as utils from "./utils"; export type { utils }; export type { AccessControlUpgradeable } from "./AccessControlUpgradeable"; export type { Address } from "./Address"; +export type { BaseForkTest } from "./BaseForkTest"; export type { BaseRegistry } from "./BaseRegistry"; export type { BeaconProxy } from "./BeaconProxy"; export type { ConnectorErrors } from "./ConnectorErrors"; @@ -132,6 +133,7 @@ export type { ZetaNonEth } from "./ZetaNonEth"; export * as factories from "./factories"; export { AccessControlUpgradeable__factory } from "./factories/AccessControlUpgradeable__factory"; export { Address__factory } from "./factories/Address__factory"; +export { BaseForkTest__factory } from "./factories/BaseForkTest__factory"; export { BaseRegistry__factory } from "./factories/BaseRegistry__factory"; export { BeaconProxy__factory } from "./factories/BeaconProxy__factory"; export { ConnectorErrors__factory } from "./factories/ConnectorErrors__factory";