From f6da19d53af105772c0962635074599d1bc66f25 Mon Sep 17 00:00:00 2001 From: Ryan Hall Date: Tue, 20 Jun 2023 13:19:19 -0400 Subject: [PATCH 1/8] fix bug in getTriggerType (#9663) --- contracts/test/v0.8/automation/KeeperRegistry2_1.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contracts/test/v0.8/automation/KeeperRegistry2_1.test.ts b/contracts/test/v0.8/automation/KeeperRegistry2_1.test.ts index 928b42e915a..a284699e573 100644 --- a/contracts/test/v0.8/automation/KeeperRegistry2_1.test.ts +++ b/contracts/test/v0.8/automation/KeeperRegistry2_1.test.ts @@ -192,7 +192,8 @@ async function getUpkeepID(tx: ContractTransaction): Promise { } const getTriggerType = (upkeepId: BigNumber): Trigger => { - const bytes = ethers.utils.arrayify(upkeepId.toHexString()) + const hexBytes = ethers.utils.defaultAbiCoder.encode(['uint256'], [upkeepId]) + const bytes = ethers.utils.arrayify(hexBytes) for (let idx = 4; idx < 15; idx++) { if (bytes[idx] != 0) { return Trigger.CONDITION From 15f07755aadc5c2053bb73bc7d4ae1c0b8a5a238 Mon Sep 17 00:00:00 2001 From: Akshay Aggarwal <71980293+infiloop2@users.noreply.github.com> Date: Tue, 20 Jun 2023 19:35:16 +0100 Subject: [PATCH 2/8] Change update transmitter balance behaviour (#9624) * Change update transmitter balance behaviour * add test * regen go wrappers and address comments * fix tests * skip coverage for flaky test * remove todo * cleanup merge * regen wrapper * revert ine removal * skip coverage --------- Co-authored-by: FelixFan1992 --- .../dev/automation/2_1/KeeperRegistry2_1.sol | 2 + .../automation/2_1/KeeperRegistryBase2_1.sol | 15 +- .../2_1/KeeperRegistryLogicB2_1.sol | 8 +- .../v0.8/automation/KeeperRegistry2_1.test.ts | 257 ++++++++++++++++-- .../keeper_registry_logic_b_wrapper_2_1.go | 2 +- .../keeper_registry_wrapper_2_1.go | 2 +- ...rapper-dependency-versions-do-not-edit.txt | 4 +- 7 files changed, 260 insertions(+), 30 deletions(-) diff --git a/contracts/src/v0.8/dev/automation/2_1/KeeperRegistry2_1.sol b/contracts/src/v0.8/dev/automation/2_1/KeeperRegistry2_1.sol index ffabb4d1adb..aa6c6d83b1d 100644 --- a/contracts/src/v0.8/dev/automation/2_1/KeeperRegistry2_1.sol +++ b/contracts/src/v0.8/dev/automation/2_1/KeeperRegistry2_1.sol @@ -271,6 +271,8 @@ contract KeeperRegistry2_1 is KeeperRegistryBase2_1, OCR2Abstract, Chainable, ER if (transmitter.active) revert RepeatedTransmitter(); transmitter.active = true; transmitter.index = uint8(i); + // new transmitters start afresh from current totalPremium + // some spare change of premium from previous pool will be forfeited transmitter.lastCollected = totalPremium; s_transmitters[temp] = transmitter; } diff --git a/contracts/src/v0.8/dev/automation/2_1/KeeperRegistryBase2_1.sol b/contracts/src/v0.8/dev/automation/2_1/KeeperRegistryBase2_1.sol index 9c2d2bd9d20..0d1d75bb64f 100644 --- a/contracts/src/v0.8/dev/automation/2_1/KeeperRegistryBase2_1.sol +++ b/contracts/src/v0.8/dev/automation/2_1/KeeperRegistryBase2_1.sol @@ -650,14 +650,13 @@ abstract contract KeeperRegistryBase2_1 is ConfirmedOwner, ExecutionPrevention { ) internal returns (uint96) { Transmitter memory transmitter = s_transmitters[transmitterAddress]; - uint96 uncollected = totalPremium - transmitter.lastCollected; - uint96 due = uncollected / payeeCount; - transmitter.balance += due; - transmitter.lastCollected = totalPremium; - - // Transfer spare change to owner - s_storage.ownerLinkBalance += (uncollected - due * payeeCount); - s_transmitters[transmitterAddress] = transmitter; + if (transmitter.active) { + uint96 uncollected = totalPremium - transmitter.lastCollected; + uint96 due = uncollected / payeeCount; + transmitter.balance += due; + transmitter.lastCollected += due * payeeCount; + s_transmitters[transmitterAddress] = transmitter; + } return transmitter.balance; } diff --git a/contracts/src/v0.8/dev/automation/2_1/KeeperRegistryLogicB2_1.sol b/contracts/src/v0.8/dev/automation/2_1/KeeperRegistryLogicB2_1.sol index a8886bcc500..22d393bbc46 100644 --- a/contracts/src/v0.8/dev/automation/2_1/KeeperRegistryLogicB2_1.sol +++ b/contracts/src/v0.8/dev/automation/2_1/KeeperRegistryLogicB2_1.sol @@ -297,8 +297,12 @@ contract KeeperRegistryLogicB2_1 is KeeperRegistryBase2_1 { address query ) external view returns (bool active, uint8 index, uint96 balance, uint96 lastCollected, address payee) { Transmitter memory transmitter = s_transmitters[query]; - uint96 totalDifference = s_hotVars.totalPremium - transmitter.lastCollected; - uint96 pooledShare = totalDifference / uint96(s_transmittersList.length); + + uint96 pooledShare = 0; + if (transmitter.active) { + uint96 totalDifference = s_hotVars.totalPremium - transmitter.lastCollected; + pooledShare = totalDifference / uint96(s_transmittersList.length); + } return ( transmitter.active, diff --git a/contracts/test/v0.8/automation/KeeperRegistry2_1.test.ts b/contracts/test/v0.8/automation/KeeperRegistry2_1.test.ts index a284699e573..34b1bab00e9 100644 --- a/contracts/test/v0.8/automation/KeeperRegistry2_1.test.ts +++ b/contracts/test/v0.8/automation/KeeperRegistry2_1.test.ts @@ -698,8 +698,39 @@ describe('KeeperRegistry2_1', () => { } } + const verifyConsistentAccounting = async ( + maxAllowedSpareChange: BigNumber, + ) => { + let expectedLinkBalance = (await registry.getState()).state + .expectedLinkBalance + let linkTokenBalance = await linkToken.balanceOf(registry.address) + let upkeepIdBalance = (await registry.getUpkeep(upkeepId)).balance + let totalKeeperBalance = BigNumber.from(0) + for (let i = 0; i < keeperAddresses.length; i++) { + totalKeeperBalance = totalKeeperBalance.add( + (await registry.getTransmitterInfo(keeperAddresses[i])).balance, + ) + } + let ownerBalance = (await registry.getState()).state.ownerLinkBalance + assert.isTrue(expectedLinkBalance.eq(linkTokenBalance)) + assert.isTrue( + upkeepIdBalance + .add(totalKeeperBalance) + .add(ownerBalance) + .lte(expectedLinkBalance), + ) + assert.isTrue( + expectedLinkBalance + .sub(upkeepIdBalance) + .sub(totalKeeperBalance) + .sub(ownerBalance) + .lte(maxAllowedSpareChange), + ) + } + interface GetTransmitTXOptions { numSigners?: number + startingSignerIndex?: number gasLimit?: BigNumberish gasPrice?: BigNumberish executeGas?: BigNumberish @@ -721,6 +752,7 @@ describe('KeeperRegistry2_1', () => { const configDigest = (await registry.getState()).state.latestConfigDigest const config = { numSigners: f + 1, + startingSignerIndex: 0, performData: '0x', executeGas, checkBlockNum: latestBlock.number, @@ -764,7 +796,10 @@ describe('KeeperRegistry2_1', () => { const sigs = signReport( reportContext, report, - signers.slice(0, config.numSigners), + signers.slice( + config.startingSignerIndex, + config.startingSignerIndex + config.numSigners, + ), ) type txOverride = { @@ -3679,9 +3714,11 @@ describe('KeeperRegistry2_1', () => { ) assert((await registry.getTransmitterInfo(transmitter)).index == i) assert( - ( - await registry.getTransmitterInfo(transmitter) - ).lastCollected.toString() == oldState.totalPremium.toString(), + (await registry.getTransmitterInfo(transmitter)).lastCollected.eq( + oldState.totalPremium.sub( + oldState.totalPremium.mod(keeperAddresses.length), + ), + ), ) } } @@ -3691,9 +3728,9 @@ describe('KeeperRegistry2_1', () => { assert((await registry.getTransmitterInfo(transmitter)).active == true) assert((await registry.getTransmitterInfo(transmitter)).index == i) assert( - ( - await registry.getTransmitterInfo(transmitter) - ).lastCollected.toString() == oldState.totalPremium.toString(), + (await registry.getTransmitterInfo(transmitter)).lastCollected.eq( + oldState.totalPremium, + ), ) } @@ -5145,17 +5182,18 @@ describe('KeeperRegistry2_1', () => { // registry total premium should not change assert.isTrue(registryPremiumBefore.eq(registryPremiumAfter)) - // Last collected should be updated - assert.equal( - keeperAfter.lastCollected.toString(), - registryPremiumBefore.toString(), - ) - const spareChange = registryPremiumBefore.mod( - BigNumber.from(keeperAddresses.length), + // Last collected should be updated to premium-change + assert.isTrue( + keeperAfter.lastCollected.eq( + registryPremiumBefore.sub( + registryPremiumBefore.mod(keeperAddresses.length), + ), + ), ) - // spare change should go to owner - assert.isTrue(ownerAfter.sub(spareChange).eq(ownerBefore)) + + // owner balance should remain unchanged + assert.isTrue(ownerAfter.eq(ownerBefore)) assert.isTrue(keeperAfter.balance.eq(BigNumber.from(0))) assert.isTrue(registrationBefore.eq(registrationAfter)) @@ -5263,4 +5301,191 @@ describe('KeeperRegistry2_1', () => { assert.equal(cfg, '0x1234') }) }) + + describe('transmitterPremiumSplit [ @skip-coverage ]', () => { + beforeEach(async () => { + await linkToken.connect(owner).approve(registry.address, toWei('100')) + await registry.connect(owner).addFunds(upkeepId, toWei('100')) + }) + + it('splits premium evenly across transmitters', async () => { + // Do a transmit from keeper1 + await getTransmitTx(registry, keeper1, [upkeepId]) + + const registryPremium = (await registry.getState()).state.totalPremium + assert.isTrue(registryPremium.gt(BigNumber.from(0))) + + const premiumPerTransmitter = registryPremium.div( + BigNumber.from(keeperAddresses.length), + ) + const k1Balance = ( + await registry.getTransmitterInfo(await keeper1.getAddress()) + ).balance + // transmitter should be reimbursed for gas and get the premium + assert.isTrue(k1Balance.gt(premiumPerTransmitter)) + const k1GasReimbursement = k1Balance.sub(premiumPerTransmitter) + + const k2Balance = ( + await registry.getTransmitterInfo(await keeper2.getAddress()) + ).balance + // non transmitter should get its share of premium + assert.isTrue(k2Balance.eq(premiumPerTransmitter)) + + // Now do a transmit from keeper 2 + await getTransmitTx(registry, keeper2, [upkeepId]) + const registryPremiumNew = (await registry.getState()).state.totalPremium + assert.isTrue(registryPremiumNew.gt(registryPremium)) + const premiumPerTransmitterNew = registryPremiumNew.div( + BigNumber.from(keeperAddresses.length), + ) + const additionalPremium = premiumPerTransmitterNew.sub( + premiumPerTransmitter, + ) + + const k1BalanceNew = ( + await registry.getTransmitterInfo(await keeper1.getAddress()) + ).balance + // k1 should get the new premium + assert.isTrue( + k1BalanceNew.eq(k1GasReimbursement.add(premiumPerTransmitterNew)), + ) + + const k2BalanceNew = ( + await registry.getTransmitterInfo(await keeper2.getAddress()) + ).balance + // k2 should get gas reimbursement in addition to new premium + assert.isTrue(k2BalanceNew.gt(k2Balance.add(additionalPremium))) + }) + + it('updates last collected upon payment withdrawn', async () => { + // Do a transmit from keeper1 + await getTransmitTx(registry, keeper1, [upkeepId]) + + const registryPremium = (await registry.getState()).state.totalPremium + let k1 = await registry.getTransmitterInfo(await keeper1.getAddress()) + let k2 = await registry.getTransmitterInfo(await keeper2.getAddress()) + + // Withdrawing for first time, last collected = 0 + assert.isTrue(k1.lastCollected.eq(BigNumber.from(0))) + assert.isTrue(k2.lastCollected.eq(BigNumber.from(0))) + + //// Do the thing + await registry + .connect(payee1) + .withdrawPayment( + await keeper1.getAddress(), + await nonkeeper.getAddress(), + ) + + const k1New = await registry.getTransmitterInfo( + await keeper1.getAddress(), + ) + const k2New = await registry.getTransmitterInfo( + await keeper2.getAddress(), + ) + + // transmitter info lastCollected should be updated for k1, not for k2 + assert.isTrue( + k1New.lastCollected.eq( + registryPremium.sub(registryPremium.mod(keeperAddresses.length)), + ), + ) + assert.isTrue(k2New.lastCollected.eq(BigNumber.from(0))) + }) + + it('maintains consistent balance information across all parties', async () => { + // throughout transmits, withdrawals, setConfigs total claim on balances should remain less than expected balance + // some spare change can get lost but it should be less than maxAllowedSpareChange + + let maxAllowedSpareChange = BigNumber.from('0') + await verifyConsistentAccounting(maxAllowedSpareChange) + + await getTransmitTx(registry, keeper1, [upkeepId]) + maxAllowedSpareChange = maxAllowedSpareChange.add(BigNumber.from('31')) + await verifyConsistentAccounting(maxAllowedSpareChange) + + await registry + .connect(payee1) + .withdrawPayment( + await keeper1.getAddress(), + await nonkeeper.getAddress(), + ) + await verifyConsistentAccounting(maxAllowedSpareChange) + + await registry + .connect(payee2) + .withdrawPayment( + await keeper2.getAddress(), + await nonkeeper.getAddress(), + ) + await verifyConsistentAccounting(maxAllowedSpareChange) + + await getTransmitTx(registry, keeper1, [upkeepId]) + maxAllowedSpareChange = maxAllowedSpareChange.add(BigNumber.from('31')) + await verifyConsistentAccounting(maxAllowedSpareChange) + + await registry.connect(owner).setConfig( + signerAddresses.slice(2, 15), // only use 2-14th index keepers + keeperAddresses.slice(2, 15), + f, + encodeConfig(config), + offchainVersion, + offchainBytes, + ) + await verifyConsistentAccounting(maxAllowedSpareChange) + + await getTransmitTx(registry, keeper3, [upkeepId], { + startingSignerIndex: 2, + }) + maxAllowedSpareChange = maxAllowedSpareChange.add(BigNumber.from('13')) + await verifyConsistentAccounting(maxAllowedSpareChange) + + await registry + .connect(payee1) + .withdrawPayment( + await keeper1.getAddress(), + await nonkeeper.getAddress(), + ) + await verifyConsistentAccounting(maxAllowedSpareChange) + + await registry + .connect(payee3) + .withdrawPayment( + await keeper3.getAddress(), + await nonkeeper.getAddress(), + ) + await verifyConsistentAccounting(maxAllowedSpareChange) + + await registry.connect(owner).setConfig( + signerAddresses.slice(0, 4), // only use 0-3rd index keepers + keeperAddresses.slice(0, 4), + f, + encodeConfig(config), + offchainVersion, + offchainBytes, + ) + await verifyConsistentAccounting(maxAllowedSpareChange) + await getTransmitTx(registry, keeper1, [upkeepId]) + maxAllowedSpareChange = maxAllowedSpareChange.add(BigNumber.from('4')) + await getTransmitTx(registry, keeper3, [upkeepId]) + maxAllowedSpareChange = maxAllowedSpareChange.add(BigNumber.from('4')) + + await verifyConsistentAccounting(maxAllowedSpareChange) + await registry + .connect(payee5) + .withdrawPayment( + await keeper5.getAddress(), + await nonkeeper.getAddress(), + ) + await verifyConsistentAccounting(maxAllowedSpareChange) + + await registry + .connect(payee1) + .withdrawPayment( + await keeper1.getAddress(), + await nonkeeper.getAddress(), + ) + await verifyConsistentAccounting(maxAllowedSpareChange) + }) + }) }) diff --git a/core/gethwrappers/generated/keeper_registry_logic_b_wrapper_2_1/keeper_registry_logic_b_wrapper_2_1.go b/core/gethwrappers/generated/keeper_registry_logic_b_wrapper_2_1/keeper_registry_logic_b_wrapper_2_1.go index 272576d608b..091be0c5dcf 100644 --- a/core/gethwrappers/generated/keeper_registry_logic_b_wrapper_2_1/keeper_registry_logic_b_wrapper_2_1.go +++ b/core/gethwrappers/generated/keeper_registry_logic_b_wrapper_2_1/keeper_registry_logic_b_wrapper_2_1.go @@ -88,7 +88,7 @@ type KeeperRegistryBase21UpkeepInfo struct { var KeeperRegistryLogicBMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Mode\",\"name\":\"mode\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"link\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"linkNativeFeed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fastGasFeed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ArrayHasNoEntries\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotCancel\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ConfigDigestMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateEntry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitOutsideRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfFaultyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDataLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReport\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTrigger\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTriggerType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxCheckDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerformDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MigrationNotPermitted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveTransmitters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByLINKToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrRegistrar\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByUpkeepManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySimulatedBackend\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyUnpausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ParameterLengthError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PaymentGreaterThanAllLINK\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PipelineDataExceedsLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RegistryPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedTransmitter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"TargetCheckReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TranscoderNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepCancelled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotCanceled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotNeeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValueNotChanged\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"CancelledUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"FundsAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"FundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"InsufficientFundsUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"OwnerFundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"payees\",\"type\":\"address[]\"}],\"name\":\"PayeesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payee\",\"type\":\"address\"}],\"name\":\"PaymentWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"ReorgedUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"StaleUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"adminOffchainConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepAdminOffchainConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"atBlockHeight\",\"type\":\"uint64\"}],\"name\":\"UpkeepCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"gasLimit\",\"type\":\"uint96\"}],\"name\":\"UpkeepGasLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"UpkeepMigrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepOffchainConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"totalPayment\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasOverhead\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"UpkeepPerformed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newPipelineData\",\"type\":\"bytes\"}],\"name\":\"UpkeepPipelineDataSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"importedFrom\",\"type\":\"address\"}],\"name\":\"UpkeepReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"executeGas\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"UpkeepRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"triggerConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepTriggerConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepUnpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"}],\"name\":\"acceptPayeeship\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"acceptUpkeepAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endIndex\",\"type\":\"uint256\"}],\"name\":\"getActiveUpkeepIDs\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endIndex\",\"type\":\"uint256\"},{\"internalType\":\"enumKeeperRegistryBase2_1.Trigger\",\"name\":\"trigger\",\"type\":\"uint8\"}],\"name\":\"getActiveUpkeepIDsByType\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getBlockTriggerConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"checkCadance\",\"type\":\"uint32\"}],\"internalType\":\"structKeeperRegistryBase2_1.BlockTriggerConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFastGasFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkNativeFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getLogTriggerConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"filterSelector\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"topic0\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"topic1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"topic2\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"topic3\",\"type\":\"bytes32\"}],\"internalType\":\"structKeeperRegistryBase2_1.LogTriggerConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Trigger\",\"name\":\"triggerType\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"name\":\"getMaxPaymentForGas\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"maxPayment\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getMinBalanceForUpkeep\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"minBalance\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMode\",\"outputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Mode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"peer\",\"type\":\"address\"}],\"name\":\"getPeerRegistryMigrationPermission\",\"outputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.MigrationPermission\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"query\",\"type\":\"address\"}],\"name\":\"getSignerInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"ownerLinkBalance\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"expectedLinkBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"totalPremium\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"numUpkeeps\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"latestConfigBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"latestConfigDigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"latestEpoch\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"internalType\":\"structKeeperRegistryBase2_1.State\",\"name\":\"state\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"paymentPremiumPPB\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"flatFeeMicroLink\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"checkGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"stalenessSeconds\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"gasCeilingMultiplier\",\"type\":\"uint16\"},{\"internalType\":\"uint96\",\"name\":\"minUpkeepSpend\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"maxPerformGas\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxCheckDataSize\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPerformDataSize\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"fallbackGasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fallbackLinkPrice\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"transcoder\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"registrars\",\"type\":\"address[]\"}],\"internalType\":\"structKeeperRegistryBase2_1.OnchainConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"query\",\"type\":\"address\"}],\"name\":\"getTransmitterInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"},{\"internalType\":\"uint96\",\"name\":\"balance\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"lastCollected\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"payee\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getTriggerType\",\"outputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Trigger\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getUpkeep\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"executeGas\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"},{\"internalType\":\"uint96\",\"name\":\"balance\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"maxValidBlocknumber\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"lastPerformedBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"amountSpent\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"internalType\":\"structKeeperRegistryBase2_1.UpkeepInfo\",\"name\":\"upkeepInfo\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getUpkeepAdminOffchainConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUpkeepManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getUpkeepTriggerConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"pauseUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recoverFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"payees\",\"type\":\"address[]\"}],\"name\":\"setPayees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"peer\",\"type\":\"address\"},{\"internalType\":\"enumKeeperRegistryBase2_1.MigrationPermission\",\"name\":\"permission\",\"type\":\"uint8\"}],\"name\":\"setPeerRegistryMigrationPermission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"newAdminOffchainConfig\",\"type\":\"bytes\"}],\"name\":\"setUpkeepAdminOffchainConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"name\":\"setUpkeepGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newUpkeepManager\",\"type\":\"address\"}],\"name\":\"setUpkeepManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"name\":\"setUpkeepOffchainConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"newPipelineData\",\"type\":\"bytes\"}],\"name\":\"setUpkeepPipelineData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposed\",\"type\":\"address\"}],\"name\":\"transferPayeeship\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"proposed\",\"type\":\"address\"}],\"name\":\"transferUpkeepAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"unpauseUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawOwnerFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6101006040523480156200001257600080fd5b5060405162005039380380620050398339810160408190526200003591620001f3565b838383833380600081620000905760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c357620000c3816200012b565b505050836002811115620000db57620000db62000255565b60e0816002811115620000f257620000f262000255565b9052506001600160a01b0392831660805290821660a0521660c0525050601980546001600160a01b03191633179055506200026b915050565b336001600160a01b03821603620001855760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000087565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80516001600160a01b0381168114620001ee57600080fd5b919050565b600080600080608085870312156200020a57600080fd5b8451600381106200021a57600080fd5b93506200022a60208601620001d6565b92506200023a60408601620001d6565b91506200024a60608601620001d6565b905092959194509250565b634e487b7160e01b600052602160045260246000fd5b60805160a05160c05160e051614d4e620002eb600039600081816104e801528181613442015281816139e40152613b77015260008181610579015261323601526000818161063401526133100152600081816106bb01528181611cdc01528181611fb20152818161242a0152818161294c01526129d00152614d4e6000f3fe608060405234801561001057600080fd5b50600436106102d35760003560e01c806379ba509711610186578063b148ab6b116100e3578063d921875c11610097578063ee048eae11610071578063ee048eae14610778578063f2fde38b146107a0578063faa3e996146107b357600080fd5b8063d921875c146106df578063eb5dcd6c146106f2578063ed56b3e11461070557600080fd5b8063b79550be116100c8578063b79550be14610691578063c7c3a19a14610699578063ca30e603146106b957600080fd5b8063b148ab6b1461066b578063b657bc9c1461067e57600080fd5b80638dcf0fe71161013a578063a72aa27e1161011f578063a72aa27e1461061f578063b10b673c14610632578063b121e1471461065857600080fd5b80638dcf0fe7146105f9578063a710b2211461060c57600080fd5b80638456cb591161016b5780638456cb59146105c05780638765ecbe146105c85780638da5cb5b146105db57600080fd5b806379ba5097146105b05780637d9b97e0146105b857600080fd5b80633f4ba83a116102345780635147cd59116101e85780635b6aa71c116101cd5780635b6aa71c146105475780636709d0e514610577578063744bfe611461059d57600080fd5b80635147cd59146105145780635165f2f51461053457600080fd5b8063418d76b611610219578063418d76b61461046d578063421d183b146104805780634b4fd03b146104e657600080fd5b80633f4ba83a146104525780634184e12c1461045a57600080fd5b8063187256e81161028b5780631fffe835116102705780631fffe8351461040c578063207b65161461041f5780633b9cce591461043f57600080fd5b8063187256e8146103e65780631a2af011146103f957600080fd5b80630d4a4fb1116102bc5780630d4a4fb1146103165780630d4cbb7f1461038e5780631865c57d146103cd57600080fd5b806306e3b632146102d85780630d0be14714610301575b600080fd5b6102eb6102e6366004613e54565b6107f9565b6040516102f89190613e76565b60405180910390f35b61031461030f366004613eba565b610904565b005b610329610324366004613f36565b6109a8565b6040516102f89190600060c08201905073ffffffffffffffffffffffffffffffffffffffff835116825260ff602084015116602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b60195473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102f8565b6103d5610aaa565b6040516102f89594939291906140bd565b6103146103f43660046141f4565b610e70565b610314610407366004614231565b610ee1565b61031461041a366004614256565b611034565b61043261042d366004613f36565b611083565b6040516102f891906142e1565b61031461044d3660046142f4565b611125565b61031461137b565b6102eb61046836600461437d565b6113e1565b61043261047b366004613f36565b611535565b61049361048e366004614256565b611552565b60408051951515865260ff90941660208601526bffffffffffffffffffffffff9283169385019390935216606083015273ffffffffffffffffffffffffffffffffffffffff16608082015260a0016102f8565b7f00000000000000000000000000000000000000000000000000000000000000006040516102f891906143e1565b610527610522366004613f36565b611670565b6040516102f891906143fb565b610314610542366004613f36565b61171b565b61055a610555366004614421565b61189d565b6040516bffffffffffffffffffffffff90911681526020016102f8565b7f00000000000000000000000000000000000000000000000000000000000000006103a8565b6103146105ab366004614231565b6119cf565b610314611dd8565b610314611eda565b610314612035565b6103146105d6366004613f36565b6120a6565b60005473ffffffffffffffffffffffffffffffffffffffff166103a8565b610314610607366004613eba565b61222b565b61031461061a36600461444d565b612280565b61031461062d36600461447b565b6124fc565b7f00000000000000000000000000000000000000000000000000000000000000006103a8565b610314610666366004614256565b6125f1565b610314610679366004613f36565b6126e9565b61055a61068c366004613f36565b6128e6565b610314612913565b6106ac6106a7366004613f36565b612a6f565b6040516102f891906144a0565b7f00000000000000000000000000000000000000000000000000000000000000006103a8565b6103146106ed366004613eba565b612db8565b61031461070036600461444d565b612e55565b61075f610713366004614256565b73ffffffffffffffffffffffffffffffffffffffff166000908152600c602090815260409182902082518084019093525460ff8082161515808552610100909204169290910182905291565b60408051921515835260ff9091166020830152016102f8565b61078b610786366004613f36565b612fb3565b604051905163ffffffff1681526020016102f8565b6103146107ae366004614256565b613092565b6107ec6107c1366004614256565b73ffffffffffffffffffffffffffffffffffffffff166000908152601a602052604090205460ff1690565b6040516102f89190614600565b6060600061080760026130a6565b90508083116108165782610818565b805b925082841115610854576040517f1390f2a100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108608585614643565b905060008167ffffffffffffffff81111561087d5761087d614656565b6040519080825280602002602001820160405280156108a6578160200160208202803683370190505b50905060005b828110156108f8576108c96108c18883614685565b6002906130b0565b8282815181106108db576108db614698565b6020908102919091010152806108f0816146c7565b9150506108ac565b50925050505b92915050565b61090d836130c3565b60155463ffffffff1681111561094f576040517f2b49197900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526007602052604090206109688284836147a1565b50827f787b2e556c364148324d7dc0cee4322a048aaf798bda184136c8636c72ed3056838360405161099b9291906148bc565b60405180910390a2505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915260016109e583611670565b60018111156109f6576109f66143b2565b14610a0057600080fd5b6000828152601b602052604090208054610a19906146ff565b80601f0160208091040260200160405190810160405280929190818152602001828054610a45906146ff565b8015610a925780601f10610a6757610100808354040283529160200191610a92565b820191906000526020600020905b815481529060010190602001808311610a7557829003601f168201915b50505050508060200190518101906108fe9190614909565b6040805161014081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810191909152604080516101a08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082018390526101408201839052610160820192909252610180810191909152604080516101408101825260145463ffffffff7401000000000000000000000000000000000000000082041682526bffffffffffffffffffffffff908116602083015260185492820192909252601254700100000000000000000000000000000000900490911660608281019190915290819060009060808101610bea60026130a6565b81526014547801000000000000000000000000000000000000000000000000810463ffffffff9081166020808501919091527c0100000000000000000000000000000000000000000000000000000000808404831660408087019190915260115460608088019190915260125492830485166080808901919091526e010000000000000000000000000000840460ff16151560a09889015282516101a081018452610100808604881682526501000000000086048816968201969096526c010000000000000000000000008089048816948201949094526901000000000000000000850462ffffff16928101929092529282900461ffff16928101929092526013546bffffffffffffffffffffffff811696830196909652700100000000000000000000000000000000909404831660c082015260155480841660e0830152640100000000900490921690820152601654610120820152601754610140820152910473ffffffffffffffffffffffffffffffffffffffff166101608201529095506101808101610d7a6009613177565b9052601254600d80546040805160208084028201810190925282815294985089948994600e9360ff90911692859190830182828015610def57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610dc4575b5050505050925081805480602002602001604051908101604052809291908181526020018280548015610e5857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610e2d575b50505050509150945094509450945094509091929394565b610e78613184565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601a6020526040902080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610ed857610ed86143b2565b02179055505050565b610eea826130c3565b3373ffffffffffffffffffffffffffffffffffffffff821603610f39576040517f8c8728c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610f86576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604090205473ffffffffffffffffffffffffffffffffffffffff8281169116146110305760008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851690811790915590519091339185917fb1cbb2c4b8480034c27e06da5f096b8233a8fd4497028593a41ff6df79726b3591a45b5050565b61103c613184565b601980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000818152601b602052604090208054606091906110a0906146ff565b80601f01602080910402602001604051908101604052809291908181526020018280546110cc906146ff565b80156111195780601f106110ee57610100808354040283529160200191611119565b820191906000526020600020905b8154815290600101906020018083116110fc57829003601f168201915b50505050509050919050565b61112d613184565b600e548114611168576040517fcf54c06a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b600e5481101561133a576000600e828154811061118a5761118a614698565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116808452600f909252604083205491935016908585858181106111d4576111d4614698565b90506020020160208101906111e99190614256565b905073ffffffffffffffffffffffffffffffffffffffff8116158061127c575073ffffffffffffffffffffffffffffffffffffffff82161580159061125a57508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561127c575073ffffffffffffffffffffffffffffffffffffffff81811614155b156112b3576040517fb387a23800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff818116146113245773ffffffffffffffffffffffffffffffffffffffff8381166000908152600f6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169183169190911790555b5050508080611332906146c7565b91505061116b565b507fa46de38886467c59be07a0675f14781206a5477d871628af46c2443822fcb725600e838360405161136f9392919061499b565b60405180910390a15050565b611383613184565b601280547fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff1690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b606060006113ef60026130a6565b90508084116113fe5783611400565b805b93508385111561143c576040517f1390f2a100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114488686614643565b90506000808267ffffffffffffffff81111561146657611466614656565b60405190808252806020026020018201604052801561148f578160200160208202803683370190505b50905060005b8381101561151e5760006114ac6108c18b84614685565b90508760018111156114c0576114c06143b2565b6114c982611670565b60018111156114da576114da6143b2565b0361150b57808385815181106114f2576114f2614698565b602090810291909101015283611507816146c7565b9450505b5080611516816146c7565b915050611495565b5082821461152a578181525b979650505050505050565b6000818152601d602052604090208054606091906110a0906146ff565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602090815260408083208151608081018352905460ff80821615158352610100820416938201939093526bffffffffffffffffffffffff6201000084048116928201929092526e010000000000000000000000000000909204811660608301819052601254849384938493849384926115fe9291700100000000000000000000000000000000900416614a4d565b600e549091506000906116119083614aa1565b90508260000151836020015182856040015161162d9190614acc565b6060959095015173ffffffffffffffffffffffffffffffffffffffff9b8c166000908152600f6020526040902054929c919b959a50985093169550919350505050565b6000818160045b600f8110156116fd577fff0000000000000000000000000000000000000000000000000000000000000082168382602081106116b5576116b5614698565b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146116eb57506000949350505050565b806116f5816146c7565b915050611677565b5081600f1a6001811115611713576117136143b2565b949350505050565b611724816130c3565b60008181526004602090815260409182902082516101008082018552825460ff8116151580845263ffffffff92820483169584019590955265010000000000810482169583019590955273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009095048516606083015260018301546bffffffffffffffffffffffff80821660808501526c0100000000000000000000000082041660a0840152780100000000000000000000000000000000000000000000000090041660c082015260029091015490921660e083015261182e576040517f1b88a78400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561186d600283613207565b5060405182907f7bada562044eb163f6b4003c4553e4e62825344c0418eea087bed5ee05a4745690600090a25050565b604080516101208101825260125460ff808216835263ffffffff6101008084048216602086015265010000000000840482169585019590955262ffffff6901000000000000000000840416606085015261ffff6c0100000000000000000000000084041660808501526e01000000000000000000000000000083048216151560a08501526f010000000000000000000000000000008304909116151560c08401526bffffffffffffffffffffffff70010000000000000000000000000000000083041660e08401527c01000000000000000000000000000000000000000000000000000000009091041691810191909152600090818061199c83613213565b915091506119c5838787601360020160049054906101000a900463ffffffff16868660006133f1565b9695505050505050565b6012546f01000000000000000000000000000000900460ff1615611a1f576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601280547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff166f0100000000000000000000000000000017905573ffffffffffffffffffffffffffffffffffffffff8116611aa6576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020908152604080832081516101008082018452825460ff81161515835263ffffffff91810482168387015265010000000000810482168386015273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009091048116606084015260018401546bffffffffffffffffffffffff80821660808601526c0100000000000000000000000082041660a08501527801000000000000000000000000000000000000000000000000900490911660c0830152600290920154821660e082015286855260059093529220549091163314611bb9576040517fa47c170600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bc161343c565b816040015163ffffffff161115611c04576040517fff84e5dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600460205260409020600101546018546c010000000000000000000000009091046bffffffffffffffffffffffff1690611c44908290614643565b60185560008481526004602081905260409182902060010180547fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff16905590517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116928201929092526bffffffffffffffffffffffff831660248201527f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015611d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4b9190614af1565b50604080516bffffffffffffffffffffffff8316815273ffffffffffffffffffffffffffffffffffffffff8516602082015285917ff3b5906e5672f3e524854103bcafbbdba80dbdfeca2c35e116127b1060a68318910160405180910390a25050601280547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff1690555050565b60015473ffffffffffffffffffffffffffffffffffffffff163314611e5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b611ee2613184565b6014546018546bffffffffffffffffffffffff90911690611f04908290614643565b601855601480547fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001690556040516bffffffffffffffffffffffff821681527f1d07d0b0be43d3e5fee41a80b579af370affee03fa595bf56d5d4c19328162f19060200160405180910390a16040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526bffffffffffffffffffffffff821660248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044015b6020604051808303816000875af1158015612011573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110309190614af1565b61203d613184565b601280547fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff166e0100000000000000000000000000001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016113d7565b6120af816130c3565b60008181526004602090815260409182902082516101008082018552825460ff8116158015845263ffffffff92820483169584019590955265010000000000810482169583019590955273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009095048516606083015260018301546bffffffffffffffffffffffff80821660808501526c0100000000000000000000000082041660a0840152780100000000000000000000000000000000000000000000000090041660c082015260029091015490921660e08301526121b9576040517f514b6c2400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556121fb6002836134f1565b5060405182907f8ab10247ce168c27748e656ecf852b951fcaac790c18106b19aa0ae57a8b741f90600090a25050565b612234836130c3565b6000838152601c6020526040902061224d8284836147a1565b50827f3e8740446213c8a77d40e08f79136ce3f347d13ed270a6ebdf57159e0faf4850838360405161099b9291906148bc565b73ffffffffffffffffffffffffffffffffffffffff81166122cd576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600f602052604090205416331461232d576040517fcebf515b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601254600e5460009161236491859170010000000000000000000000000000000090046bffffffffffffffffffffffff16906134fd565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600b6020526040902080547fffffffffffffffffffffffffffffffffffff000000000000000000000000ffff1690556018549091506123ce906bffffffffffffffffffffffff831690614643565b6018556040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526bffffffffffffffffffffffff831660248301527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015612473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124979190614af1565b5060405133815273ffffffffffffffffffffffffffffffffffffffff808416916bffffffffffffffffffffffff8416918616907f9819093176a1851202c7bcfa46845809b4e47c261866550e94ed3775d2f406989060200160405180910390a4505050565b6108fc8163ffffffff161080612531575060145463ffffffff7001000000000000000000000000000000009091048116908216115b15612568576040517f14c237fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612571826130c3565b60008281526004602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff1661010063ffffffff861690810291909117909155915191825283917fc24c07e655ce79fba8a589778987d3c015bc6af1632bb20cf9182e02a65d972c910160405180910390a25050565b73ffffffffffffffffffffffffffffffffffffffff818116600090815260106020526040902054163314612651576040517f6752e7aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8181166000818152600f602090815260408083208054337fffffffffffffffffffffffff000000000000000000000000000000000000000080831682179093556010909452828520805490921690915590519416939092849290917f78af32efdcad432315431e9b03d27e6cd98fb79c405fdc5af7c1714d9c0f75b39190a45050565b60008181526004602090815260409182902082516101008082018552825460ff81161515835263ffffffff918104821694830194909452650100000000008404811694820185905273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009094048416606083015260018301546bffffffffffffffffffffffff80821660808501526c0100000000000000000000000082041660a084015278010000000000000000000000000000000000000000000000009004811660c083015260029092015490921660e08301529091146127f5576040517f9c0083a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604090205473ffffffffffffffffffffffffffffffffffffffff163314612852576040517f6352a85300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526005602090815260408083208054337fffffffffffffffffffffffff0000000000000000000000000000000000000000808316821790935560069094528285208054909216909155905173ffffffffffffffffffffffffffffffffffffffff90911692839186917f5cff4db96bef051785e999f44bfcd21c18823e034fb92dd376e3db4ce0feeb2c91a4505050565b60006108fe6128f483611670565b600084815260046020526040902054610100900463ffffffff1661189d565b61291b613184565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156129a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129cc9190614b13565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3360185484612a199190614643565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401611ff2565b604080516101608101825260008082526020820181905291810182905260608082018190526080820183905260a0820183905260c0820183905260e082018390526101008201839052610120820192909252610140810191909152600082815260046020908152604080832081516101008082018452825460ff81161515835263ffffffff918104821683870190815265010000000000820483168487015273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009092048216606080860191825260018701546bffffffffffffffffffffffff80821660808901526c0100000000000000000000000082041660a088015278010000000000000000000000000000000000000000000000009004851660c0870152600290960154831660e08601908152875161016081018952905184168152905190921682880152519091168185015287865260079094529190932080549193830191612bd9906146ff565b80601f0160208091040260200160405190810160405280929190818152602001828054612c05906146ff565b8015612c525780601f10612c2757610100808354040283529160200191612c52565b820191906000526020600020905b815481529060010190602001808311612c3557829003601f168201915b505050505081526020018260a001516bffffffffffffffffffffffff1681526020016005600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826040015163ffffffff1667ffffffffffffffff1681526020018260c0015163ffffffff16815260200182608001516bffffffffffffffffffffffff168152602001826000015115158152602001601c60008681526020019081526020016000208054612d2f906146ff565b80601f0160208091040260200160405190810160405280929190818152602001828054612d5b906146ff565b8015612da85780601f10612d7d57610100808354040283529160200191612da8565b820191906000526020600020905b815481529060010190602001808311612d8b57829003601f168201915b5050505050815250915050919050565b60195473ffffffffffffffffffffffffffffffffffffffff163314612e09576040517fee5dc90100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152601d60205260409020612e228284836147a1565b50827f09a658476c5597979b9948f488ec2958cfead97bc8f46b19ca0b21cdab93cdee838360405161099b9291906148bc565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600f6020526040902054163314612eb5576040517fcebf515b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821603612f04576040517f8c8728c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8281166000908152601060205260409020548116908216146110305773ffffffffffffffffffffffffffffffffffffffff82811660008181526010602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169486169485179055513392917f84f7c7c80bb8ed2279b4aab5f61cd05e6374073d38f46d7f32de8c30e9e3836791a45050565b6040805160208101909152600081526001612fcd83611670565b6001811115612fde57612fde6143b2565b14612fe857600080fd5b6000828152601b602052604090208054613001906146ff565b80601f016020809104026020016040519081016040528092919081815260200182805461302d906146ff565b801561307a5780601f1061304f5761010080835404028352916020019161307a565b820191906000526020600020905b81548152906001019060200180831161305d57829003601f168201915b50505050508060200190518101906108fe9190614b2c565b61309a613184565b6130a381613724565b50565b60006108fe825490565b60006130bc8383613819565b9392505050565b60008181526005602052604090205473ffffffffffffffffffffffffffffffffffffffff163314613120576040517fa47c170600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526004602052604090205465010000000000900463ffffffff908116146130a3576040517f9c0083a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606060006130bc83613843565b60005473ffffffffffffffffffffffffffffffffffffffff163314613205576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401611e55565b565b60006130bc838361389e565b6000806000836060015162ffffff1690506000808263ffffffff161190506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561329f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c39190614b92565b50945090925050506000811315806132da57508142105b806132fb57508280156132fb57506132f28242614643565b8463ffffffff16105b1561330a57601654955061330e565b8095505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015613379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339d9190614b92565b50945090925050506000811315806133b457508142105b806133d557508280156133d557506133cc8242614643565b8463ffffffff16105b156133e45760175494506133e8565b8094505b50505050915091565b60008061340388878b600001516138ed565b905060008061341e8b8a63ffffffff16858a8a60018b6139af565b909250905061342d8183614acc565b9b9a5050505050505050505050565b600060017f00000000000000000000000000000000000000000000000000000000000000006002811115613472576134726143b2565b036134ec57606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134e79190614b13565b905090565b504390565b60006130bc8383613d5a565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b602090815260408083208151608081018352905460ff80821615158352610100820416938201939093526bffffffffffffffffffffffff6201000084048116928201929092526e010000000000000000000000000000909204166060820181905282906135889086614a4d565b905060006135968583614aa1565b905080836040018181516135aa9190614acc565b6bffffffffffffffffffffffff90811690915287166060850152506135cf8582614be2565b6135d99083614a4d565b601480546000906135f99084906bffffffffffffffffffffffff16614acc565b825461010092830a6bffffffffffffffffffffffff81810219909216928216029190911790925573ffffffffffffffffffffffffffffffffffffffff999099166000908152600b60209081526040918290208751815492890151938901516060909901517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009093169015157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff161760ff909316909b02919091177fffffffffffff000000000000000000000000000000000000000000000000ffff1662010000878416027fffffffffffff000000000000000000000000ffffffffffffffffffffffffffff16176e010000000000000000000000000000919092160217909755509095945050505050565b3373ffffffffffffffffffffffffffffffffffffffff8216036137a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401611e55565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600082600001828154811061383057613830614698565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561111957602002820191906000526020600020905b81548152602001906001019080831161387f5750505050509050919050565b60008181526001830160205260408120546138e5575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108fe565b5060006108fe565b60008080856001811115613903576139036143b2565b03613912575062013880613967565b6001856001811115613926576139266143b2565b036139355750620186a0613967565b6040517ff2b2d41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61397863ffffffff85166014614c16565b613983846001614c53565b6139929060ff16611d4c614c16565b61399c9083614685565b6139a69190614685565b95945050505050565b6000806000896080015161ffff16876139c89190614c16565b90508380156139d65750803a105b156139de57503a5b600060027f00000000000000000000000000000000000000000000000000000000000000006002811115613a1457613a146143b2565b03613b73576040805160008152602081019091528515613a7257600036604051806080016040528060488152602001614cfa60489139604051602001613a5c93929190614c6c565b6040516020818303038152906040529050613ada565b601554613a8e90640100000000900463ffffffff166004614c93565b63ffffffff1667ffffffffffffffff811115613aac57613aac614656565b6040519080825280601f01601f191660200182016040528015613ad6576020820181803683370190505b5090505b6040517f49948e0e00000000000000000000000000000000000000000000000000000000815273420000000000000000000000000000000000000f906349948e0e90613b2a9084906004016142e1565b602060405180830381865afa158015613b47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b6b9190614b13565b915050613c1f565b60017f00000000000000000000000000000000000000000000000000000000000000006002811115613ba757613ba76143b2565b03613c1f57606c73ffffffffffffffffffffffffffffffffffffffff1663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c1c9190614b13565b90505b84613c3b57808b6080015161ffff16613c389190614c16565b90505b613c4961ffff871682614cb6565b905060008782613c598c8e614685565b613c639086614c16565b613c6d9190614685565b613c7f90670de0b6b3a7640000614c16565b613c899190614cb6565b905060008c6040015163ffffffff1664e8d4a51000613ca89190614c16565b898e6020015163ffffffff16858f88613cc19190614c16565b613ccb9190614685565b613cd990633b9aca00614c16565b613ce39190614c16565b613ced9190614cb6565b613cf79190614685565b90506b033b2e3c9fd0803ce8000000613d108284614685565b1115613d48576040517f2ad7547a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b909c909b509950505050505050505050565b60008181526001830160205260408120548015613e43576000613d7e600183614643565b8554909150600090613d9290600190614643565b9050818114613df7576000866000018281548110613db257613db2614698565b9060005260206000200154905080876000018481548110613dd557613dd5614698565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613e0857613e08614cca565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506108fe565b60009150506108fe565b5092915050565b60008060408385031215613e6757600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015613eae57835183529284019291840191600101613e92565b50909695505050505050565b600080600060408486031215613ecf57600080fd5b83359250602084013567ffffffffffffffff80821115613eee57600080fd5b818601915086601f830112613f0257600080fd5b813581811115613f1157600080fd5b876020828501011115613f2357600080fd5b6020830194508093505050509250925092565b600060208284031215613f4857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613f9557815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613f63565b509495945050505050565b805163ffffffff16825260006101a06020830151613fc6602086018263ffffffff169052565b506040830151613fde604086018263ffffffff169052565b506060830151613ff5606086018262ffffff169052565b50608083015161400b608086018261ffff169052565b5060a083015161402b60a08601826bffffffffffffffffffffffff169052565b5060c083015161404360c086018263ffffffff169052565b5060e083015161405b60e086018263ffffffff169052565b506101008381015163ffffffff1690850152610120808401519085015261014080840151908501526101608084015173ffffffffffffffffffffffffffffffffffffffff1690850152610180808401518186018390526119c583870182613f4f565b855163ffffffff16815260006101c060208801516140eb60208501826bffffffffffffffffffffffff169052565b5060408801516040840152606088015161411560608501826bffffffffffffffffffffffff169052565b506080880151608084015260a088015161413760a085018263ffffffff169052565b5060c088015161414f60c085018263ffffffff169052565b5060e088015160e0840152610100808901516141728286018263ffffffff169052565b505061012088810151151590840152610140830181905261419581840188613fa0565b90508281036101608401526141aa8187613f4f565b90508281036101808401526141bf8186613f4f565b9150506119c56101a083018460ff169052565b73ffffffffffffffffffffffffffffffffffffffff811681146130a357600080fd5b6000806040838503121561420757600080fd5b8235614212816141d2565b915060208301356004811061422657600080fd5b809150509250929050565b6000806040838503121561424457600080fd5b823591506020830135614226816141d2565b60006020828403121561426857600080fd5b81356130bc816141d2565b60005b8381101561428e578181015183820152602001614276565b50506000910152565b600081518084526142af816020860160208601614273565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006130bc6020830184614297565b6000806020838503121561430757600080fd5b823567ffffffffffffffff8082111561431f57600080fd5b818501915085601f83011261433357600080fd5b81358181111561434257600080fd5b8660208260051b850101111561435757600080fd5b60209290920196919550909350505050565b80356002811061437857600080fd5b919050565b60008060006060848603121561439257600080fd5b83359250602084013591506143a960408501614369565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106143f5576143f56143b2565b91905290565b60208101600283106143f5576143f56143b2565b63ffffffff811681146130a357600080fd5b6000806040838503121561443457600080fd5b61443d83614369565b915060208301356142268161440f565b6000806040838503121561446057600080fd5b823561446b816141d2565b91506020830135614226816141d2565b6000806040838503121561448e57600080fd5b8235915060208301356142268161440f565b602081526144c760208201835173ffffffffffffffffffffffffffffffffffffffff169052565b600060208301516144f0604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015163ffffffff8116606084015250606083015161016080608085015261451f610180850183614297565b9150608085015161454060a08601826bffffffffffffffffffffffff169052565b5060a085015173ffffffffffffffffffffffffffffffffffffffff811660c08601525060c085015167ffffffffffffffff811660e08601525060e08501516101006145928187018363ffffffff169052565b86015190506101206145b3868201836bffffffffffffffffffffffff169052565b86015190506101406145c88682018315159052565b8601518584037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018387015290506119c58382614297565b60208101600483106143f5576143f56143b2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156108fe576108fe614614565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b808201808211156108fe576108fe614614565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036146f8576146f8614614565b5060010190565b600181811c9082168061471357607f821691505b60208210810361474c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561479c57600081815260208120601f850160051c810160208610156147795750805b601f850160051c820191505b8181101561479857828155600101614785565b5050505b505050565b67ffffffffffffffff8311156147b9576147b9614656565b6147cd836147c783546146ff565b83614752565b6000601f84116001811461481f57600085156147e95750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556148b5565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b8281101561486e578685013582556020948501946001909201910161484e565b50868210156148a9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b600060c0828403121561491b57600080fd5b60405160c0810181811067ffffffffffffffff8211171561493e5761493e614656565b604052825161494c816141d2565b8152602083015160ff8116811461496257600080fd5b8060208301525060408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b6000604082016040835280865480835260608501915087600052602092508260002060005b828110156149f257815473ffffffffffffffffffffffffffffffffffffffff16845292840192600191820191016149c0565b505050838103828501528481528590820160005b86811015614a41578235614a19816141d2565b73ffffffffffffffffffffffffffffffffffffffff1682529183019190830190600101614a06565b50979650505050505050565b6bffffffffffffffffffffffff828116828216039080821115613e4d57613e4d614614565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006bffffffffffffffffffffffff80841680614ac057614ac0614a72565b92169190910492915050565b6bffffffffffffffffffffffff818116838216019080821115613e4d57613e4d614614565b600060208284031215614b0357600080fd5b815180151581146130bc57600080fd5b600060208284031215614b2557600080fd5b5051919050565b600060208284031215614b3e57600080fd5b6040516020810181811067ffffffffffffffff82111715614b6157614b61614656565b6040528251614b6f8161440f565b81529392505050565b805169ffffffffffffffffffff8116811461437857600080fd5b600080600080600060a08688031215614baa57600080fd5b614bb386614b78565b9450602086015193506040860151925060608601519150614bd660808701614b78565b90509295509295909350565b60006bffffffffffffffffffffffff80831681851681830481118215151615614c0d57614c0d614614565b02949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c4e57614c4e614614565b500290565b60ff81811683821601908111156108fe576108fe614614565b828482376000838201600081528351614c89818360208801614273565b0195945050505050565b600063ffffffff80831681851681830481118215151615614c0d57614c0d614614565b600082614cc557614cc5614a72565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666a164736f6c6343000810000a", + Bin: "0x6101006040523480156200001257600080fd5b506040516200502f3803806200502f8339810160408190526200003591620001f3565b838383833380600081620000905760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c357620000c3816200012b565b505050836002811115620000db57620000db62000255565b60e0816002811115620000f257620000f262000255565b9052506001600160a01b0392831660805290821660a0521660c0525050601980546001600160a01b03191633179055506200026b915050565b336001600160a01b03821603620001855760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000087565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80516001600160a01b0381168114620001ee57600080fd5b919050565b600080600080608085870312156200020a57600080fd5b8451600381106200021a57600080fd5b93506200022a60208601620001d6565b92506200023a60408601620001d6565b91506200024a60608601620001d6565b905092959194509250565b634e487b7160e01b600052602160045260246000fd5b60805160a05160c05160e051614d44620002eb600039600081816104e801528181613457015281816139da0152613b6d015260008181610579015261324b01526000818161063401526133250152600081816106bb01528181611cf101528181611fc70152818161243f0152818161296101526129e50152614d446000f3fe608060405234801561001057600080fd5b50600436106102d35760003560e01c806379ba509711610186578063b148ab6b116100e3578063d921875c11610097578063ee048eae11610071578063ee048eae14610778578063f2fde38b146107a0578063faa3e996146107b357600080fd5b8063d921875c146106df578063eb5dcd6c146106f2578063ed56b3e11461070557600080fd5b8063b79550be116100c8578063b79550be14610691578063c7c3a19a14610699578063ca30e603146106b957600080fd5b8063b148ab6b1461066b578063b657bc9c1461067e57600080fd5b80638dcf0fe71161013a578063a72aa27e1161011f578063a72aa27e1461061f578063b10b673c14610632578063b121e1471461065857600080fd5b80638dcf0fe7146105f9578063a710b2211461060c57600080fd5b80638456cb591161016b5780638456cb59146105c05780638765ecbe146105c85780638da5cb5b146105db57600080fd5b806379ba5097146105b05780637d9b97e0146105b857600080fd5b80633f4ba83a116102345780635147cd59116101e85780635b6aa71c116101cd5780635b6aa71c146105475780636709d0e514610577578063744bfe611461059d57600080fd5b80635147cd59146105145780635165f2f51461053457600080fd5b8063418d76b611610219578063418d76b61461046d578063421d183b146104805780634b4fd03b146104e657600080fd5b80633f4ba83a146104525780634184e12c1461045a57600080fd5b8063187256e81161028b5780631fffe835116102705780631fffe8351461040c578063207b65161461041f5780633b9cce591461043f57600080fd5b8063187256e8146103e65780631a2af011146103f957600080fd5b80630d4a4fb1116102bc5780630d4a4fb1146103165780630d4cbb7f1461038e5780631865c57d146103cd57600080fd5b806306e3b632146102d85780630d0be14714610301575b600080fd5b6102eb6102e6366004613e4a565b6107f9565b6040516102f89190613e6c565b60405180910390f35b61031461030f366004613eb0565b610904565b005b610329610324366004613f2c565b6109a8565b6040516102f89190600060c08201905073ffffffffffffffffffffffffffffffffffffffff835116825260ff602084015116602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b60195473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102f8565b6103d5610aaa565b6040516102f89594939291906140b3565b6103146103f43660046141ea565b610e70565b610314610407366004614227565b610ee1565b61031461041a36600461424c565b611034565b61043261042d366004613f2c565b611083565b6040516102f891906142d7565b61031461044d3660046142ea565b611125565b61031461137b565b6102eb610468366004614373565b6113e1565b61043261047b366004613f2c565b611535565b61049361048e36600461424c565b611552565b60408051951515865260ff90941660208601526bffffffffffffffffffffffff9283169385019390935216606083015273ffffffffffffffffffffffffffffffffffffffff16608082015260a0016102f8565b7f00000000000000000000000000000000000000000000000000000000000000006040516102f891906143d7565b610527610522366004613f2c565b611685565b6040516102f891906143f1565b610314610542366004613f2c565b611730565b61055a610555366004614417565b6118b2565b6040516bffffffffffffffffffffffff90911681526020016102f8565b7f00000000000000000000000000000000000000000000000000000000000000006103a8565b6103146105ab366004614227565b6119e4565b610314611ded565b610314611eef565b61031461204a565b6103146105d6366004613f2c565b6120bb565b60005473ffffffffffffffffffffffffffffffffffffffff166103a8565b610314610607366004613eb0565b612240565b61031461061a366004614443565b612295565b61031461062d366004614471565b612511565b7f00000000000000000000000000000000000000000000000000000000000000006103a8565b61031461066636600461424c565b612606565b610314610679366004613f2c565b6126fe565b61055a61068c366004613f2c565b6128fb565b610314612928565b6106ac6106a7366004613f2c565b612a84565b6040516102f89190614496565b7f00000000000000000000000000000000000000000000000000000000000000006103a8565b6103146106ed366004613eb0565b612dcd565b610314610700366004614443565b612e6a565b61075f61071336600461424c565b73ffffffffffffffffffffffffffffffffffffffff166000908152600c602090815260409182902082518084019093525460ff8082161515808552610100909204169290910182905291565b60408051921515835260ff9091166020830152016102f8565b61078b610786366004613f2c565b612fc8565b604051905163ffffffff1681526020016102f8565b6103146107ae36600461424c565b6130a7565b6107ec6107c136600461424c565b73ffffffffffffffffffffffffffffffffffffffff166000908152601a602052604090205460ff1690565b6040516102f891906145f6565b6060600061080760026130bb565b90508083116108165782610818565b805b925082841115610854576040517f1390f2a100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108608585614639565b905060008167ffffffffffffffff81111561087d5761087d61464c565b6040519080825280602002602001820160405280156108a6578160200160208202803683370190505b50905060005b828110156108f8576108c96108c1888361467b565b6002906130c5565b8282815181106108db576108db61468e565b6020908102919091010152806108f0816146bd565b9150506108ac565b50925050505b92915050565b61090d836130d8565b60155463ffffffff1681111561094f576040517f2b49197900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600760205260409020610968828483614797565b50827f787b2e556c364148324d7dc0cee4322a048aaf798bda184136c8636c72ed3056838360405161099b9291906148b2565b60405180910390a2505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915260016109e583611685565b60018111156109f6576109f66143a8565b14610a0057600080fd5b6000828152601b602052604090208054610a19906146f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a45906146f5565b8015610a925780601f10610a6757610100808354040283529160200191610a92565b820191906000526020600020905b815481529060010190602001808311610a7557829003601f168201915b50505050508060200190518101906108fe91906148ff565b6040805161014081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810191909152604080516101a08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082018390526101408201839052610160820192909252610180810191909152604080516101408101825260145463ffffffff7401000000000000000000000000000000000000000082041682526bffffffffffffffffffffffff908116602083015260185492820192909252601254700100000000000000000000000000000000900490911660608281019190915290819060009060808101610bea60026130bb565b81526014547801000000000000000000000000000000000000000000000000810463ffffffff9081166020808501919091527c0100000000000000000000000000000000000000000000000000000000808404831660408087019190915260115460608088019190915260125492830485166080808901919091526e010000000000000000000000000000840460ff16151560a09889015282516101a081018452610100808604881682526501000000000086048816968201969096526c010000000000000000000000008089048816948201949094526901000000000000000000850462ffffff16928101929092529282900461ffff16928101929092526013546bffffffffffffffffffffffff811696830196909652700100000000000000000000000000000000909404831660c082015260155480841660e0830152640100000000900490921690820152601654610120820152601754610140820152910473ffffffffffffffffffffffffffffffffffffffff166101608201529095506101808101610d7a600961318c565b9052601254600d80546040805160208084028201810190925282815294985089948994600e9360ff90911692859190830182828015610def57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610dc4575b5050505050925081805480602002602001604051908101604052809291908181526020018280548015610e5857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610e2d575b50505050509150945094509450945094509091929394565b610e78613199565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601a6020526040902080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610ed857610ed86143a8565b02179055505050565b610eea826130d8565b3373ffffffffffffffffffffffffffffffffffffffff821603610f39576040517f8c8728c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610f86576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604090205473ffffffffffffffffffffffffffffffffffffffff8281169116146110305760008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851690811790915590519091339185917fb1cbb2c4b8480034c27e06da5f096b8233a8fd4497028593a41ff6df79726b3591a45b5050565b61103c613199565b601980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000818152601b602052604090208054606091906110a0906146f5565b80601f01602080910402602001604051908101604052809291908181526020018280546110cc906146f5565b80156111195780601f106110ee57610100808354040283529160200191611119565b820191906000526020600020905b8154815290600101906020018083116110fc57829003601f168201915b50505050509050919050565b61112d613199565b600e548114611168576040517fcf54c06a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b600e5481101561133a576000600e828154811061118a5761118a61468e565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116808452600f909252604083205491935016908585858181106111d4576111d461468e565b90506020020160208101906111e9919061424c565b905073ffffffffffffffffffffffffffffffffffffffff8116158061127c575073ffffffffffffffffffffffffffffffffffffffff82161580159061125a57508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561127c575073ffffffffffffffffffffffffffffffffffffffff81811614155b156112b3576040517fb387a23800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff818116146113245773ffffffffffffffffffffffffffffffffffffffff8381166000908152600f6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169183169190911790555b5050508080611332906146bd565b91505061116b565b507fa46de38886467c59be07a0675f14781206a5477d871628af46c2443822fcb725600e838360405161136f93929190614991565b60405180910390a15050565b611383613199565b601280547fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff1690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b606060006113ef60026130bb565b90508084116113fe5783611400565b805b93508385111561143c576040517f1390f2a100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114488686614639565b90506000808267ffffffffffffffff8111156114665761146661464c565b60405190808252806020026020018201604052801561148f578160200160208202803683370190505b50905060005b8381101561151e5760006114ac6108c18b8461467b565b90508760018111156114c0576114c06143a8565b6114c982611685565b60018111156114da576114da6143a8565b0361150b57808385815181106114f2576114f261468e565b602090810291909101015283611507816146bd565b9450505b5080611516816146bd565b915050611495565b5082821461152a578181525b979650505050505050565b6000818152601d602052604090208054606091906110a0906146f5565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602090815260408083208151608081018352905460ff80821615801584526101008304909116948301949094526bffffffffffffffffffffffff6201000082048116938301939093526e01000000000000000000000000000090049091166060820152829182918291829190829061162c5760608201516012546000916116189170010000000000000000000000000000000090046bffffffffffffffffffffffff16614a43565b600e549091506116289082614a97565b9150505b815160208301516040840151611643908490614ac2565b6060949094015173ffffffffffffffffffffffffffffffffffffffff9a8b166000908152600f6020526040902054929b919a9499509750921694509092505050565b6000818160045b600f811015611712577fff0000000000000000000000000000000000000000000000000000000000000082168382602081106116ca576116ca61468e565b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461170057506000949350505050565b8061170a816146bd565b91505061168c565b5081600f1a6001811115611728576117286143a8565b949350505050565b611739816130d8565b60008181526004602090815260409182902082516101008082018552825460ff8116151580845263ffffffff92820483169584019590955265010000000000810482169583019590955273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009095048516606083015260018301546bffffffffffffffffffffffff80821660808501526c0100000000000000000000000082041660a0840152780100000000000000000000000000000000000000000000000090041660c082015260029091015490921660e0830152611843576040517f1b88a78400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561188260028361321c565b5060405182907f7bada562044eb163f6b4003c4553e4e62825344c0418eea087bed5ee05a4745690600090a25050565b604080516101208101825260125460ff808216835263ffffffff6101008084048216602086015265010000000000840482169585019590955262ffffff6901000000000000000000840416606085015261ffff6c0100000000000000000000000084041660808501526e01000000000000000000000000000083048216151560a08501526f010000000000000000000000000000008304909116151560c08401526bffffffffffffffffffffffff70010000000000000000000000000000000083041660e08401527c0100000000000000000000000000000000000000000000000000000000909104169181019190915260009081806119b183613228565b915091506119da838787601360020160049054906101000a900463ffffffff1686866000613406565b9695505050505050565b6012546f01000000000000000000000000000000900460ff1615611a34576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601280547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff166f0100000000000000000000000000000017905573ffffffffffffffffffffffffffffffffffffffff8116611abb576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020908152604080832081516101008082018452825460ff81161515835263ffffffff91810482168387015265010000000000810482168386015273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009091048116606084015260018401546bffffffffffffffffffffffff80821660808601526c0100000000000000000000000082041660a08501527801000000000000000000000000000000000000000000000000900490911660c0830152600290920154821660e082015286855260059093529220549091163314611bce576040517fa47c170600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bd6613451565b816040015163ffffffff161115611c19576040517fff84e5dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600460205260409020600101546018546c010000000000000000000000009091046bffffffffffffffffffffffff1690611c59908290614639565b60185560008481526004602081905260409182902060010180547fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff16905590517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116928201929092526bffffffffffffffffffffffff831660248201527f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015611d3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d609190614ae7565b50604080516bffffffffffffffffffffffff8316815273ffffffffffffffffffffffffffffffffffffffff8516602082015285917ff3b5906e5672f3e524854103bcafbbdba80dbdfeca2c35e116127b1060a68318910160405180910390a25050601280547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff1690555050565b60015473ffffffffffffffffffffffffffffffffffffffff163314611e73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b611ef7613199565b6014546018546bffffffffffffffffffffffff90911690611f19908290614639565b601855601480547fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001690556040516bffffffffffffffffffffffff821681527f1d07d0b0be43d3e5fee41a80b579af370affee03fa595bf56d5d4c19328162f19060200160405180910390a16040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526bffffffffffffffffffffffff821660248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044015b6020604051808303816000875af1158015612026573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110309190614ae7565b612052613199565b601280547fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff166e0100000000000000000000000000001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016113d7565b6120c4816130d8565b60008181526004602090815260409182902082516101008082018552825460ff8116158015845263ffffffff92820483169584019590955265010000000000810482169583019590955273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009095048516606083015260018301546bffffffffffffffffffffffff80821660808501526c0100000000000000000000000082041660a0840152780100000000000000000000000000000000000000000000000090041660c082015260029091015490921660e08301526121ce576040517f514b6c2400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055612210600283613506565b5060405182907f8ab10247ce168c27748e656ecf852b951fcaac790c18106b19aa0ae57a8b741f90600090a25050565b612249836130d8565b6000838152601c60205260409020612262828483614797565b50827f3e8740446213c8a77d40e08f79136ce3f347d13ed270a6ebdf57159e0faf4850838360405161099b9291906148b2565b73ffffffffffffffffffffffffffffffffffffffff81166122e2576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600f6020526040902054163314612342576040517fcebf515b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601254600e5460009161237991859170010000000000000000000000000000000090046bffffffffffffffffffffffff1690613512565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600b6020526040902080547fffffffffffffffffffffffffffffffffffff000000000000000000000000ffff1690556018549091506123e3906bffffffffffffffffffffffff831690614639565b6018556040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526bffffffffffffffffffffffff831660248301527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015612488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ac9190614ae7565b5060405133815273ffffffffffffffffffffffffffffffffffffffff808416916bffffffffffffffffffffffff8416918616907f9819093176a1851202c7bcfa46845809b4e47c261866550e94ed3775d2f406989060200160405180910390a4505050565b6108fc8163ffffffff161080612546575060145463ffffffff7001000000000000000000000000000000009091048116908216115b1561257d576040517f14c237fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612586826130d8565b60008281526004602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff1661010063ffffffff861690810291909117909155915191825283917fc24c07e655ce79fba8a589778987d3c015bc6af1632bb20cf9182e02a65d972c910160405180910390a25050565b73ffffffffffffffffffffffffffffffffffffffff818116600090815260106020526040902054163314612666576040517f6752e7aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8181166000818152600f602090815260408083208054337fffffffffffffffffffffffff000000000000000000000000000000000000000080831682179093556010909452828520805490921690915590519416939092849290917f78af32efdcad432315431e9b03d27e6cd98fb79c405fdc5af7c1714d9c0f75b39190a45050565b60008181526004602090815260409182902082516101008082018552825460ff81161515835263ffffffff918104821694830194909452650100000000008404811694820185905273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009094048416606083015260018301546bffffffffffffffffffffffff80821660808501526c0100000000000000000000000082041660a084015278010000000000000000000000000000000000000000000000009004811660c083015260029092015490921660e083015290911461280a576040517f9c0083a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604090205473ffffffffffffffffffffffffffffffffffffffff163314612867576040517f6352a85300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526005602090815260408083208054337fffffffffffffffffffffffff0000000000000000000000000000000000000000808316821790935560069094528285208054909216909155905173ffffffffffffffffffffffffffffffffffffffff90911692839186917f5cff4db96bef051785e999f44bfcd21c18823e034fb92dd376e3db4ce0feeb2c91a4505050565b60006108fe61290983611685565b600084815260046020526040902054610100900463ffffffff166118b2565b612930613199565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156129bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e19190614b09565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3360185484612a2e9190614639565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401612007565b604080516101608101825260008082526020820181905291810182905260608082018190526080820183905260a0820183905260c0820183905260e082018390526101008201839052610120820192909252610140810191909152600082815260046020908152604080832081516101008082018452825460ff81161515835263ffffffff918104821683870190815265010000000000820483168487015273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009092048216606080860191825260018701546bffffffffffffffffffffffff80821660808901526c0100000000000000000000000082041660a088015278010000000000000000000000000000000000000000000000009004851660c0870152600290960154831660e08601908152875161016081018952905184168152905190921682880152519091168185015287865260079094529190932080549193830191612bee906146f5565b80601f0160208091040260200160405190810160405280929190818152602001828054612c1a906146f5565b8015612c675780601f10612c3c57610100808354040283529160200191612c67565b820191906000526020600020905b815481529060010190602001808311612c4a57829003601f168201915b505050505081526020018260a001516bffffffffffffffffffffffff1681526020016005600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826040015163ffffffff1667ffffffffffffffff1681526020018260c0015163ffffffff16815260200182608001516bffffffffffffffffffffffff168152602001826000015115158152602001601c60008681526020019081526020016000208054612d44906146f5565b80601f0160208091040260200160405190810160405280929190818152602001828054612d70906146f5565b8015612dbd5780601f10612d9257610100808354040283529160200191612dbd565b820191906000526020600020905b815481529060010190602001808311612da057829003601f168201915b5050505050815250915050919050565b60195473ffffffffffffffffffffffffffffffffffffffff163314612e1e576040517fee5dc90100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152601d60205260409020612e37828483614797565b50827f09a658476c5597979b9948f488ec2958cfead97bc8f46b19ca0b21cdab93cdee838360405161099b9291906148b2565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600f6020526040902054163314612eca576040517fcebf515b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821603612f19576040517f8c8728c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8281166000908152601060205260409020548116908216146110305773ffffffffffffffffffffffffffffffffffffffff82811660008181526010602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169486169485179055513392917f84f7c7c80bb8ed2279b4aab5f61cd05e6374073d38f46d7f32de8c30e9e3836791a45050565b6040805160208101909152600081526001612fe283611685565b6001811115612ff357612ff36143a8565b14612ffd57600080fd5b6000828152601b602052604090208054613016906146f5565b80601f0160208091040260200160405190810160405280929190818152602001828054613042906146f5565b801561308f5780601f106130645761010080835404028352916020019161308f565b820191906000526020600020905b81548152906001019060200180831161307257829003601f168201915b50505050508060200190518101906108fe9190614b22565b6130af613199565b6130b88161371a565b50565b60006108fe825490565b60006130d1838361380f565b9392505050565b60008181526005602052604090205473ffffffffffffffffffffffffffffffffffffffff163314613135576040517fa47c170600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526004602052604090205465010000000000900463ffffffff908116146130b8576040517f9c0083a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606060006130d183613839565b60005473ffffffffffffffffffffffffffffffffffffffff16331461321a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401611e6a565b565b60006130d18383613894565b6000806000836060015162ffffff1690506000808263ffffffff161190506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156132b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d89190614b88565b50945090925050506000811315806132ef57508142105b80613310575082801561331057506133078242614639565b8463ffffffff16105b1561331f576016549550613323565b8095505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561338e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b29190614b88565b50945090925050506000811315806133c957508142105b806133ea57508280156133ea57506133e18242614639565b8463ffffffff16105b156133f95760175494506133fd565b8094505b50505050915091565b60008061341888878b600001516138e3565b90506000806134338b8a63ffffffff16858a8a60018b6139a5565b90925090506134428183614ac2565b9b9a5050505050505050505050565b600060017f00000000000000000000000000000000000000000000000000000000000000006002811115613487576134876143a8565b0361350157606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134fc9190614b09565b905090565b504390565b60006130d18383613d50565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b602090815260408083208151608081018352905460ff80821615801584526101008304909116948301949094526bffffffffffffffffffffffff6201000082048116938301939093526e010000000000000000000000000000900490911660608201529061370e5760008160600151856135aa9190614a43565b905060006135b88583614a97565b905080836040018181516135cc9190614ac2565b6bffffffffffffffffffffffff169052506135e78582614bd8565b836060018181516135f89190614ac2565b6bffffffffffffffffffffffff90811690915273ffffffffffffffffffffffffffffffffffffffff89166000908152600b602090815260409182902087518154928901519389015160608a015186166e010000000000000000000000000000027fffffffffffff000000000000000000000000ffffffffffffffffffffffffffff919096166201000002167fffffffffffff000000000000000000000000000000000000000000000000ffff60ff95909516610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909416939093171792909216179190911790555050505b60400151949350505050565b3373ffffffffffffffffffffffffffffffffffffffff821603613799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401611e6a565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60008260000182815481106138265761382661468e565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561111957602002820191906000526020600020905b8154815260200190600101908083116138755750505050509050919050565b60008181526001830160205260408120546138db575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108fe565b5060006108fe565b600080808560018111156138f9576138f96143a8565b0361390857506201388061395d565b600185600181111561391c5761391c6143a8565b0361392b5750620186a061395d565b6040517ff2b2d41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61396e63ffffffff85166014614c0c565b613979846001614c49565b6139889060ff16611d4c614c0c565b613992908361467b565b61399c919061467b565b95945050505050565b6000806000896080015161ffff16876139be9190614c0c565b90508380156139cc5750803a105b156139d457503a5b600060027f00000000000000000000000000000000000000000000000000000000000000006002811115613a0a57613a0a6143a8565b03613b69576040805160008152602081019091528515613a6857600036604051806080016040528060488152602001614cf060489139604051602001613a5293929190614c62565b6040516020818303038152906040529050613ad0565b601554613a8490640100000000900463ffffffff166004614c89565b63ffffffff1667ffffffffffffffff811115613aa257613aa261464c565b6040519080825280601f01601f191660200182016040528015613acc576020820181803683370190505b5090505b6040517f49948e0e00000000000000000000000000000000000000000000000000000000815273420000000000000000000000000000000000000f906349948e0e90613b209084906004016142d7565b602060405180830381865afa158015613b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b619190614b09565b915050613c15565b60017f00000000000000000000000000000000000000000000000000000000000000006002811115613b9d57613b9d6143a8565b03613c1557606c73ffffffffffffffffffffffffffffffffffffffff1663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c129190614b09565b90505b84613c3157808b6080015161ffff16613c2e9190614c0c565b90505b613c3f61ffff871682614cac565b905060008782613c4f8c8e61467b565b613c599086614c0c565b613c63919061467b565b613c7590670de0b6b3a7640000614c0c565b613c7f9190614cac565b905060008c6040015163ffffffff1664e8d4a51000613c9e9190614c0c565b898e6020015163ffffffff16858f88613cb79190614c0c565b613cc1919061467b565b613ccf90633b9aca00614c0c565b613cd99190614c0c565b613ce39190614cac565b613ced919061467b565b90506b033b2e3c9fd0803ce8000000613d06828461467b565b1115613d3e576040517f2ad7547a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b909c909b509950505050505050505050565b60008181526001830160205260408120548015613e39576000613d74600183614639565b8554909150600090613d8890600190614639565b9050818114613ded576000866000018281548110613da857613da861468e565b9060005260206000200154905080876000018481548110613dcb57613dcb61468e565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613dfe57613dfe614cc0565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506108fe565b60009150506108fe565b5092915050565b60008060408385031215613e5d57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015613ea457835183529284019291840191600101613e88565b50909695505050505050565b600080600060408486031215613ec557600080fd5b83359250602084013567ffffffffffffffff80821115613ee457600080fd5b818601915086601f830112613ef857600080fd5b813581811115613f0757600080fd5b876020828501011115613f1957600080fd5b6020830194508093505050509250925092565b600060208284031215613f3e57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613f8b57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613f59565b509495945050505050565b805163ffffffff16825260006101a06020830151613fbc602086018263ffffffff169052565b506040830151613fd4604086018263ffffffff169052565b506060830151613feb606086018262ffffff169052565b506080830151614001608086018261ffff169052565b5060a083015161402160a08601826bffffffffffffffffffffffff169052565b5060c083015161403960c086018263ffffffff169052565b5060e083015161405160e086018263ffffffff169052565b506101008381015163ffffffff1690850152610120808401519085015261014080840151908501526101608084015173ffffffffffffffffffffffffffffffffffffffff1690850152610180808401518186018390526119da83870182613f45565b855163ffffffff16815260006101c060208801516140e160208501826bffffffffffffffffffffffff169052565b5060408801516040840152606088015161410b60608501826bffffffffffffffffffffffff169052565b506080880151608084015260a088015161412d60a085018263ffffffff169052565b5060c088015161414560c085018263ffffffff169052565b5060e088015160e0840152610100808901516141688286018263ffffffff169052565b505061012088810151151590840152610140830181905261418b81840188613f96565b90508281036101608401526141a08187613f45565b90508281036101808401526141b58186613f45565b9150506119da6101a083018460ff169052565b73ffffffffffffffffffffffffffffffffffffffff811681146130b857600080fd5b600080604083850312156141fd57600080fd5b8235614208816141c8565b915060208301356004811061421c57600080fd5b809150509250929050565b6000806040838503121561423a57600080fd5b82359150602083013561421c816141c8565b60006020828403121561425e57600080fd5b81356130d1816141c8565b60005b8381101561428457818101518382015260200161426c565b50506000910152565b600081518084526142a5816020860160208601614269565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006130d1602083018461428d565b600080602083850312156142fd57600080fd5b823567ffffffffffffffff8082111561431557600080fd5b818501915085601f83011261432957600080fd5b81358181111561433857600080fd5b8660208260051b850101111561434d57600080fd5b60209290920196919550909350505050565b80356002811061436e57600080fd5b919050565b60008060006060848603121561438857600080fd5b833592506020840135915061439f6040850161435f565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106143eb576143eb6143a8565b91905290565b60208101600283106143eb576143eb6143a8565b63ffffffff811681146130b857600080fd5b6000806040838503121561442a57600080fd5b6144338361435f565b9150602083013561421c81614405565b6000806040838503121561445657600080fd5b8235614461816141c8565b9150602083013561421c816141c8565b6000806040838503121561448457600080fd5b82359150602083013561421c81614405565b602081526144bd60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b600060208301516144e6604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015163ffffffff8116606084015250606083015161016080608085015261451561018085018361428d565b9150608085015161453660a08601826bffffffffffffffffffffffff169052565b5060a085015173ffffffffffffffffffffffffffffffffffffffff811660c08601525060c085015167ffffffffffffffff811660e08601525060e08501516101006145888187018363ffffffff169052565b86015190506101206145a9868201836bffffffffffffffffffffffff169052565b86015190506101406145be8682018315159052565b8601518584037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018387015290506119da838261428d565b60208101600483106143eb576143eb6143a8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156108fe576108fe61460a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b808201808211156108fe576108fe61460a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036146ee576146ee61460a565b5060010190565b600181811c9082168061470957607f821691505b602082108103614742577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561479257600081815260208120601f850160051c8101602086101561476f5750805b601f850160051c820191505b8181101561478e5782815560010161477b565b5050505b505050565b67ffffffffffffffff8311156147af576147af61464c565b6147c3836147bd83546146f5565b83614748565b6000601f84116001811461481557600085156147df5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556148ab565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156148645786850135825560209485019460019092019101614844565b508682101561489f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b600060c0828403121561491157600080fd5b60405160c0810181811067ffffffffffffffff821117156149345761493461464c565b6040528251614942816141c8565b8152602083015160ff8116811461495857600080fd5b8060208301525060408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b6000604082016040835280865480835260608501915087600052602092508260002060005b828110156149e857815473ffffffffffffffffffffffffffffffffffffffff16845292840192600191820191016149b6565b505050838103828501528481528590820160005b86811015614a37578235614a0f816141c8565b73ffffffffffffffffffffffffffffffffffffffff16825291830191908301906001016149fc565b50979650505050505050565b6bffffffffffffffffffffffff828116828216039080821115613e4357613e4361460a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006bffffffffffffffffffffffff80841680614ab657614ab6614a68565b92169190910492915050565b6bffffffffffffffffffffffff818116838216019080821115613e4357613e4361460a565b600060208284031215614af957600080fd5b815180151581146130d157600080fd5b600060208284031215614b1b57600080fd5b5051919050565b600060208284031215614b3457600080fd5b6040516020810181811067ffffffffffffffff82111715614b5757614b5761464c565b6040528251614b6581614405565b81529392505050565b805169ffffffffffffffffffff8116811461436e57600080fd5b600080600080600060a08688031215614ba057600080fd5b614ba986614b6e565b9450602086015193506040860151925060608601519150614bcc60808701614b6e565b90509295509295909350565b60006bffffffffffffffffffffffff80831681851681830481118215151615614c0357614c0361460a565b02949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c4457614c4461460a565b500290565b60ff81811683821601908111156108fe576108fe61460a565b828482376000838201600081528351614c7f818360208801614269565b0195945050505050565b600063ffffffff80831681851681830481118215151615614c0357614c0361460a565b600082614cbb57614cbb614a68565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666a164736f6c6343000810000a", } var KeeperRegistryLogicBABI = KeeperRegistryLogicBMetaData.ABI diff --git a/core/gethwrappers/generated/keeper_registry_wrapper_2_1/keeper_registry_wrapper_2_1.go b/core/gethwrappers/generated/keeper_registry_wrapper_2_1/keeper_registry_wrapper_2_1.go index 5fee9592b07..9542ce5f5da 100644 --- a/core/gethwrappers/generated/keeper_registry_wrapper_2_1/keeper_registry_wrapper_2_1.go +++ b/core/gethwrappers/generated/keeper_registry_wrapper_2_1/keeper_registry_wrapper_2_1.go @@ -32,7 +32,7 @@ var ( var KeeperRegistryMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"contractKeeperRegistryLogicA2_1\",\"name\":\"logicA\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ArrayHasNoEntries\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotCancel\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ConfigDigestMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateEntry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitOutsideRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfFaultyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDataLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReport\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTrigger\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTriggerType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxCheckDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerformDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MigrationNotPermitted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveTransmitters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByLINKToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrRegistrar\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByUpkeepManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySimulatedBackend\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyUnpausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ParameterLengthError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PaymentGreaterThanAllLINK\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PipelineDataExceedsLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RegistryPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedTransmitter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"TargetCheckReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TranscoderNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepCancelled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotCanceled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotNeeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValueNotChanged\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"CancelledUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"previousConfigBlockNumber\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"configCount\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"onchainConfig\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"FundsAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"FundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"InsufficientFundsUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"OwnerFundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"payees\",\"type\":\"address[]\"}],\"name\":\"PayeesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payee\",\"type\":\"address\"}],\"name\":\"PaymentWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"ReorgedUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"StaleUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"epoch\",\"type\":\"uint32\"}],\"name\":\"Transmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"adminOffchainConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepAdminOffchainConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"atBlockHeight\",\"type\":\"uint64\"}],\"name\":\"UpkeepCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"gasLimit\",\"type\":\"uint96\"}],\"name\":\"UpkeepGasLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"UpkeepMigrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepOffchainConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"totalPayment\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasOverhead\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"UpkeepPerformed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newPipelineData\",\"type\":\"bytes\"}],\"name\":\"UpkeepPipelineDataSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"importedFrom\",\"type\":\"address\"}],\"name\":\"UpkeepReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"executeGas\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"UpkeepRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"triggerConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepTriggerConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepUnpaused\",\"type\":\"event\"},{\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fallbackTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFastGasFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkNativeFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMode\",\"outputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Mode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getTriggerType\",\"outputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Trigger\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfigDetails\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfigDigestAndEpoch\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"scanLogs\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"epoch\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onTokenTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"onchainConfigBytes\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"}],\"name\":\"simulatePerformUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[3]\",\"name\":\"reportContext\",\"type\":\"bytes32[3]\"},{\"internalType\":\"bytes\",\"name\":\"rawReport\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"rs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"ss\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"rawVs\",\"type\":\"bytes32\"}],\"name\":\"transmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x6101206040523480156200001257600080fd5b5060405162004fac38038062004fac833981016040819052620000359162000386565b80816001600160a01b0316634b4fd03b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009b9190620003ad565b826001600160a01b031663ca30e6036040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000100919062000386565b836001600160a01b031663b10b673c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000165919062000386565b846001600160a01b0316636709d0e56040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca919062000386565b3380600081620002215760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b038481169190911790915581161562000254576200025481620002c2565b5050508360028111156200026c576200026c620003d0565b60e0816002811115620002835762000283620003d0565b9052506001600160a01b0392831660805290821660a052811660c052601980546001600160a01b03191633179055919091166101005250620003e69050565b336001600160a01b038216036200031c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000218565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6001600160a01b03811681146200038357600080fd5b50565b6000602082840312156200039957600080fd5b8151620003a6816200036d565b9392505050565b600060208284031215620003c057600080fd5b815160038110620003a657600080fd5b634e487b7160e01b600052602160045260246000fd5b60805160a05160c05160e05161010051614b576200045560003960008181610102015261019b0152600081816101e201528181612e7e015281816131e401528181613377015261396c01526000610230015260006103770152600081816103b001526105bf0152614b576000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063a4c0ed3611610097578063b1dc65a411610066578063b1dc65a41461039b578063ca30e603146103ae578063e3d0e712146103d4578063f2fde38b146103e757610100565b8063a4c0ed36146102ef578063aed2e92914610302578063afcb95d71461032c578063b10b673c1461037557610100565b80636709d0e5116100d35780636709d0e51461022e57806379ba50971461025457806381ff70481461025c5780638da5cb5b146102d157610100565b8063181f5a7714610147578063349e8cca146101995780634b4fd03b146101e05780635147cd591461020e575b7f00000000000000000000000000000000000000000000000000000000000000003660008037600080366000845af43d6000803e808015610140573d6000f35b3d6000fd5b005b6101836040518060400160405280601481526020017f4b6565706572526567697374727920322e312e3000000000000000000000000081525081565b6040516101909190613beb565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b7f00000000000000000000000000000000000000000000000000000000000000006040516101909190613c2d565b61022161021c366004613c47565b6103fa565b6040516101909190613c60565b7f00000000000000000000000000000000000000000000000000000000000000006101bb565b6101456104a5565b6102ae60145460115463ffffffff780100000000000000000000000000000000000000000000000083048116937c01000000000000000000000000000000000000000000000000000000009093041691565b6040805163ffffffff948516815293909216602084015290820152606001610190565b60005473ffffffffffffffffffffffffffffffffffffffff166101bb565b6101456102fd366004613cdf565b6105a7565b610315610310366004613d3b565b6107c3565b604080519215158352602083019190915201610190565b601154601254604080516000815260208101939093527c010000000000000000000000000000000000000000000000000000000090910463ffffffff1690820152606001610190565b7f00000000000000000000000000000000000000000000000000000000000000006101bb565b6101456103a9366004613dcc565b610939565b7f00000000000000000000000000000000000000000000000000000000000000006101bb565b6101456103e2366004614083565b6114e6565b6101456103f5366004614150565b6122fd565b6000818160045b600f811015610487577fff00000000000000000000000000000000000000000000000000000000000000821683826020811061043f5761043f61416d565b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461047557506000949350505050565b8061047f816141cb565b915050610401565b5081600f1a600181111561049d5761049d613bfe565b949350505050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461052b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610616576040517fc8bad78d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208114610650576040517fdfe9309000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061065e82840184613c47565b60008181526004602052604090205490915065010000000000900463ffffffff908116146106b8576040517f9c0083a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600460205260409020600101546106f39085906c0100000000000000000000000090046bffffffffffffffffffffffff16614203565b600082815260046020526040902060010180546bffffffffffffffffffffffff929092166c01000000000000000000000000027fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff90921691909117905560185461075e908590614228565b6018556040516bffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169082907fafd24114486da8ebfc32f3626dada8863652e187461aa74d4bfa7348915062039060200160405180910390a35050505050565b6000806107ce612311565b6012546e010000000000000000000000000000900460ff161561081d576040517f24522f3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008581526004602090815260409182902082516101008082018552825460ff81161515835263ffffffff918104821683860181905265010000000000820483168488015273ffffffffffffffffffffffffffffffffffffffff690100000000000000000090920482166060850181905260018601546bffffffffffffffffffffffff80821660808801526c0100000000000000000000000082041660a08701527801000000000000000000000000000000000000000000000000900490931660c08501526002909401541660e08301528451601f8901859004850281018501909552878552909361092c93919291899089908190840183828082843760009201919091525061234b92505050565b9097909650945050505050565b60005a604080516101208101825260125460ff808216835261010080830463ffffffff90811660208601526501000000000084048116958501959095526901000000000000000000830462ffffff1660608501526c01000000000000000000000000830461ffff1660808501526e0100000000000000000000000000008304821615801560a08601526f010000000000000000000000000000008404909216151560c085015270010000000000000000000000000000000083046bffffffffffffffffffffffff1660e08501527c010000000000000000000000000000000000000000000000000000000090920490931690820152919250610a67576040517f24522f3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600b602052604090205460ff16610ab0576040517f1099ed7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6011548a3514610aec576040517fdfdcf8e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051610af990600161423b565b60ff1686141580610b0a5750858414155b15610b41576040517f0244f71a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b518a8a8a8a8a8a8a8a61254d565b6000610b928a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127b692505050565b9050600081604001515167ffffffffffffffff811115610bb457610bb4613e83565b604051908082528060200260200182016040528015610c7857816020015b604080516101e081018252600060e08201818152610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c0830182905282526020808301829052928201819052606082018190526080820181905260a0820181905260c082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610bd25790505b5090506000805b8360400151518110156110f6576004600085604001518381518110610ca657610ca661416d565b602090810291909101810151825281810192909252604090810160002081516101008082018452825460ff81161515835263ffffffff91810482169583019590955265010000000000850481169382019390935273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009094048416606082015260018201546bffffffffffffffffffffffff80821660808401526c0100000000000000000000000082041660a08301527801000000000000000000000000000000000000000000000000900490921660c08301526002015490911660e08201528351849083908110610d9857610d9861416d565b602002602001015160000181905250610dcd84604001518281518110610dc057610dc061416d565b60200260200101516103fa565b838281518110610ddf57610ddf61416d565b6020026020010151608001906001811115610dfc57610dfc613bfe565b90816001811115610e0f57610e0f613bfe565b81525050610e8785848381518110610e2957610e2961416d565b602002602001015160800151858481518110610e4757610e4761416d565b602002602001015160000151602001518760a001518581518110610e6d57610e6d61416d565b6020026020010151518860000151896020015160016128a0565b838281518110610e9957610e9961416d565b6020026020010151604001906bffffffffffffffffffffffff1690816bffffffffffffffffffffffff1681525050610f6584604001518281518110610ee057610ee061416d565b6020026020010151848381518110610efa57610efa61416d565b60200260200101516080015186608001518481518110610f1c57610f1c61416d565b6020026020010151868581518110610f3657610f3661416d565b602002602001015160000151878681518110610f5457610f5461416d565b6020026020010151604001516128eb565b838281518110610f7757610f7761416d565b60200260200101516020019015159081151581525050828181518110610f9f57610f9f61416d565b60200260200101516020015115610fc257610fbb600183614254565b9150610fc7565b6110e4565b61102d838281518110610fdc57610fdc61416d565b60200260200101516000015160600151856060015183815181106110025761100261416d565b60200260200101518660a0015184815181106110205761102061416d565b602002602001015161234b565b84838151811061103f5761103f61416d565b602002602001015160600185848151811061105c5761105c61416d565b602002602001015160a00182815250821515151581525050508281815181106110875761108761416d565b602002602001015160a001518661109e919061426f565b95506110e4846040015182815181106110b9576110b961416d565b60200260200101518483815181106110d3576110d361416d565b602002602001015160800151612a33565b806110ee816141cb565b915050610c7f565b508061ffff1660000361110d5750505050506114dc565b835161111a90600161423b565b6111299060ff1661044c614282565b616b6c6111378d6010614282565b5a611142908961426f565b61114c9190614228565b6111569190614228565b6111609190614228565b9450611b5861117361ffff8316876142ee565b61117d9190614228565b945060008060008060005b87604001515181101561137e578681815181106111a7576111a761416d565b6020026020010151602001511561136c576112038a8883815181106111ce576111ce61416d565b6020026020010151608001518a60a0015184815181106111f0576111f061416d565b6020026020010151518c60000151612aba565b8782815181106112155761121561416d565b602002602001015160c0018181525050611271898960400151838151811061123f5761123f61416d565b60200260200101518984815181106112595761125961416d565b60200260200101518b600001518c602001518b612ada565b90935091506112808285614203565b935061128c8386614203565b94508681815181106112a0576112a061416d565b6020026020010151606001511515886040015182815181106112c4576112c461416d565b60200260200101517fad8cc9579b21dfe2c2f6ea35ba15b656e46b4f5b0cb424f52739b8ce5cac9c5b84866112f99190614203565b8a858151811061130b5761130b61416d565b602002602001015160a001518b86815181106113295761132961416d565b602002602001015160c001518d60800151878151811061134b5761134b61416d565b60200260200101516040516113639493929190614302565b60405180910390a35b80611376816141cb565b915050611188565b5050336000908152600b6020526040902080548492506002906113b69084906201000090046bffffffffffffffffffffffff16614203565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080601260000160108282829054906101000a90046bffffffffffffffffffffffff166114109190614203565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060008f6001600381106114535761145361416d565b602002013560001c9050600060088264ffffffffff16901c905087610100015163ffffffff168163ffffffff1611156114d257601280547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff8416021790555b5050505050505050505b5050505050505050565b6114ee612bcd565b601f8651111561152a576040517f25d0209c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360ff16600003611567576040517fe77dba5600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84518651141580611586575061157e84600361433f565b60ff16865111155b156115bd576040517f1d2d1c5800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601254600e547001000000000000000000000000000000009091046bffffffffffffffffffffffff169060005b816bffffffffffffffffffffffff168110156116525761163f600e82815481106116165761161661416d565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff168484612c4e565b508061164a816141cb565b9150506115ea565b5060008060005b836bffffffffffffffffffffffff1681101561175b57600d81815481106116825761168261416d565b600091825260209091200154600e805473ffffffffffffffffffffffffffffffffffffffff909216945090829081106116bd576116bd61416d565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff8681168452600c8352604080852080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001690559116808452600b90925290912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055915080611753816141cb565b915050611659565b50611768600d6000613ac0565b611774600e6000613ac0565b604080516080810182526000808252602082018190529181018290526060810182905290805b8c51811015611af857600c60008e83815181106117b9576117b961416d565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1615611824576040517f77cea0fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180604001604052806001151581526020018260ff16815250600c60008f84815181106118555761185561416d565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260400160002082518154939092015160ff16610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909316929092171790558b518c90829081106118fd576118fd61416d565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff81166000908152600b83526040908190208151608081018352905460ff80821615801584526101008304909116958301959095526bffffffffffffffffffffffff6201000082048116938301939093526e01000000000000000000000000000090049091166060820152945092506119c2576040517f6a7281ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001835260ff80821660208086019182526bffffffffffffffffffffffff808b166060880190815273ffffffffffffffffffffffffffffffffffffffff87166000908152600b909352604092839020885181549551948a0151925184166e010000000000000000000000000000027fffffffffffff000000000000000000000000ffffffffffffffffffffffffffff939094166201000002929092167fffffffffffff000000000000000000000000000000000000000000000000ffff94909616610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009095169490941717919091169290921791909117905580611af0816141cb565b91505061179a565b50508a51611b0e9150600d9060208d0190613ade565b508851611b2290600e9060208c0190613ade565b50600087806020019051810190611b39919061442c565b60145460c082015191925063ffffffff700100000000000000000000000000000000909104811691161015611b9a576040517f39abc10400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60155460e082015163ffffffff91821691161015611be4576040517f1fa9bdcb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60155461010082015163ffffffff640100000000909204821691161015611c37576040517fd1d5faa800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518061012001604052808a60ff168152602001826000015163ffffffff168152602001826020015163ffffffff168152602001826060015162ffffff168152602001826080015161ffff168152602001600015158152602001600015158152602001866bffffffffffffffffffffffff168152602001600063ffffffff16815250601260008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160056101000a81548163ffffffff021916908363ffffffff16021790555060608201518160000160096101000a81548162ffffff021916908362ffffff160217905550608082015181600001600c6101000a81548161ffff021916908361ffff16021790555060a082015181600001600e6101000a81548160ff02191690831515021790555060c082015181600001600f6101000a81548160ff02191690831515021790555060e08201518160000160106101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061010082015181600001601c6101000a81548163ffffffff021916908363ffffffff1602179055509050506040518061014001604052808260a001516bffffffffffffffffffffffff16815260200182610160015173ffffffffffffffffffffffffffffffffffffffff168152602001601360010160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001826040015163ffffffff1681526020018260c0015163ffffffff168152602001601360010160149054906101000a900463ffffffff1663ffffffff168152602001601360010160189054906101000a900463ffffffff1663ffffffff1681526020016013600101601c9054906101000a900463ffffffff1663ffffffff1681526020018260e0015163ffffffff16815260200182610100015163ffffffff16815250601360008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550606082015181600101600c6101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160106101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160010160146101000a81548163ffffffff021916908363ffffffff16021790555060c08201518160010160186101000a81548163ffffffff021916908363ffffffff16021790555060e082015181600101601c6101000a81548163ffffffff021916908363ffffffff1602179055506101008201518160020160006101000a81548163ffffffff021916908363ffffffff1602179055506101208201518160020160046101000a81548163ffffffff021916908363ffffffff16021790555090505080610120015160168190555080610140015160178190555060006013600101601c9054906101000a900463ffffffff169050612134612e78565b601480547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff93841602178082556001926018916121af9185917801000000000000000000000000000000000000000000000000900416614560565b92506101000a81548163ffffffff021916908363ffffffff1602179055506121f94630601360010160189054906101000a900463ffffffff1663ffffffff168f8f8f8f8f8f612f2d565b60115560005b6122096009612fd7565b8110156122395761222661221e600983612fe7565b600990612ff3565b5080612231816141cb565b9150506121ff565b5060005b826101800151518110156122905761227d83610180015182815181106122655761226561416d565b6020026020010151600961301590919063ffffffff16565b5080612288816141cb565b91505061223d565b507f1591690b8638f5fb2dbec82ac741805ac5da8b45dc5263f4875b0496fdce4e0581601154601360010160189054906101000a900463ffffffff168f8f8f8f8f8f6040516122e7999897969594939291906145ce565b60405180910390a1505050505050505050505050565b612305612bcd565b61230e81613037565b50565b3215612349576040517fb60ac5db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60125460009081906f01000000000000000000000000000000900460ff16156123a0576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601280547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff166f010000000000000000000000000000001790555a9050634585e33b60e01b836040516024016123f69190613beb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290517f79188d1600000000000000000000000000000000000000000000000000000000815290935073ffffffffffffffffffffffffffffffffffffffff8616906379188d16906124c99087908790600401614664565b6020604051808303816000875af11580156124e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250c919061467d565b91505a612519908261426f565b9050601280547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff1690559094909350915050565b6000878760405161255f92919061469f565b604051908190038120612576918b906020016146af565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201208383019092526000808452908301819052909250906000805b8881101561274d576001858783602081106125e2576125e261416d565b6125ef91901a601b61423b565b8c8c858181106126015761260161416d565b905060200201358b8b8681811061261a5761261a61416d565b9050602002013560405160008152602001604052604051612657949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015612679573d6000803e3d6000fd5b5050604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081015173ffffffffffffffffffffffffffffffffffffffff81166000908152600c602090815290849020838501909452925460ff8082161515808552610100909204169383019390935290955093509050612727576040517f0f4c073700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826020015160080260ff166001901b840193508080612745906141cb565b9150506125c5565b50827e010101010101010101010101010101010101010101010101010101010101018416146127a8576040517fc103be2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050505050505050565b6127ef6040518060c001604052806000815260200160008152602001606081526020016060815260200160608152602001606081525090565b6000806000806000808780602001905181019061280c91906147dc565b9550955095509550955095508251845114158061282b57508151845114155b8061283857508051845114155b1561286f576040517fb55ac75400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160c0810182529687526020870195909552938501929092526060840152608083015260a082015292915050565b6000806128b288878b6000015161312c565b90506000806128cd8b8a63ffffffff16858a8a60018b6131af565b90925090506128dc8183614203565b9b9a5050505050505050505050565b60008085600181111561290057612900613bfe565b036129215761291086858561355a565b61291c57506000612a2a565b612976565b600185600181111561293557612935613bfe565b0361294457612910868561363e565b6040517ff2b2d41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61297e612e78565b836040015163ffffffff16116129ce57857fc3237c8807c467c1b39b8d0395eff077313e691bf0a7388106792564ebfd5636856040516129be9190613beb565b60405180910390a2506000612a2a565b816bffffffffffffffffffffffff168360a001516bffffffffffffffffffffffff161015612a2657857f377c8b0c126ae5248d27aca1c76fac4608aff85673ee3caf09747e1044549e02856040516129be9190613beb565b5060015b95945050505050565b6000816001811115612a4757612a47613bfe565b03612ab657612a54612e78565b6000838152600460205260409020600101805463ffffffff929092167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790555b5050565b6000612ac784848461312c565b90508085101561049d5750929392505050565b600080612af5888760a001518860c0015188888860016131af565b90925090506000612b068284614203565b600089815260046020526040902060010180549192508291600c90612b4a9084906c0100000000000000000000000090046bffffffffffffffffffffffff1661488e565b82546101009290920a6bffffffffffffffffffffffff81810219909316918316021790915560008a815260046020526040812060010180548594509092612b9391859116614203565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050965096945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314612349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610522565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b602090815260408083208151608081018352905460ff80821615158352610100820416938201939093526bffffffffffffffffffffffff6201000084048116928201929092526e01000000000000000000000000000090920416606082018190528290612cd9908661488e565b90506000612ce785836148b3565b90508083604001818151612cfb9190614203565b6bffffffffffffffffffffffff9081169091528716606085015250612d2085826148de565b612d2a908361488e565b60148054600090612d4a9084906bffffffffffffffffffffffff16614203565b825461010092830a6bffffffffffffffffffffffff81810219909216928216029190911790925573ffffffffffffffffffffffffffffffffffffffff8a166000908152600b602090815260409182902088518154928a0151938a01516060909a01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009093169015157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff161760ff909316909302919091177fffffffffffff000000000000000000000000000000000000000000000000ffff1662010000888516027fffffffffffff000000000000000000000000ffffffffffffffffffffffffffff16176e01000000000000000000000000000091909316029190911790555091925050505b9392505050565b600060017f00000000000000000000000000000000000000000000000000000000000000006002811115612eae57612eae613bfe565b03612f2857606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f239190614912565b905090565b504390565b6000808a8a8a8a8a8a8a8a8a604051602001612f519998979695949392919061492b565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905280516020909101207dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e01000000000000000000000000000000000000000000000000000000000000179b9a5050505050505050505050565b6000612fe1825490565b92915050565b6000612e7183836137f3565b6000612e718373ffffffffffffffffffffffffffffffffffffffff841661381d565b6000612e718373ffffffffffffffffffffffffffffffffffffffff8416613917565b3373ffffffffffffffffffffffffffffffffffffffff8216036130b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610522565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000808085600181111561314257613142613bfe565b03613151575062013880613170565b600185600181111561316557613165613bfe565b036129445750620186a05b61318163ffffffff85166014614282565b61318c84600161423b565b61319b9060ff16611d4c614282565b6131a59083614228565b612a2a9190614228565b6000806000896080015161ffff16876131c89190614282565b90508380156131d65750803a105b156131de57503a5b600060027f0000000000000000000000000000000000000000000000000000000000000000600281111561321457613214613bfe565b0361337357604080516000815260208101909152851561327257600036604051806080016040528060488152602001614b036048913960405160200161325c939291906149c0565b60405160208183030381529060405290506132da565b60155461328e90640100000000900463ffffffff1660046149e7565b63ffffffff1667ffffffffffffffff8111156132ac576132ac613e83565b6040519080825280601f01601f1916602001820160405280156132d6576020820181803683370190505b5090505b6040517f49948e0e00000000000000000000000000000000000000000000000000000000815273420000000000000000000000000000000000000f906349948e0e9061332a908490600401613beb565b602060405180830381865afa158015613347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061336b9190614912565b91505061341f565b60017f000000000000000000000000000000000000000000000000000000000000000060028111156133a7576133a7613bfe565b0361341f57606c73ffffffffffffffffffffffffffffffffffffffff1663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061341c9190614912565b90505b8461343b57808b6080015161ffff166134389190614282565b90505b61344961ffff8716826142ee565b9050600087826134598c8e614228565b6134639086614282565b61346d9190614228565b61347f90670de0b6b3a7640000614282565b61348991906142ee565b905060008c6040015163ffffffff1664e8d4a510006134a89190614282565b898e6020015163ffffffff16858f886134c19190614282565b6134cb9190614228565b6134d990633b9aca00614282565b6134e39190614282565b6134ed91906142ee565b6134f79190614228565b90506b033b2e3c9fd0803ce80000006135108284614228565b1115613548576040517f2ad7547a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b909c909b509950505050505050505050565b600080838060200190518101906135719190614a0a565b90508260c0015163ffffffff16816000015163ffffffff1610156135d157847f405288ea7be309e16cfdf481367f90a413e1d4634fcdaf8966546db9b93012e8856040516135bf9190613beb565b60405180910390a26000915050612e71565b602081015181516135e79063ffffffff16613966565b1415806135fe575043816000015163ffffffff1610155b1561363357847f6aa7f60c176da7af894b384daea2249497448137f5943c1237ada8bc92bdc301856040516135bf9190613beb565b506001949350505050565b600080828060200190518101906136559190614a61565b9050806060015161366f826040015163ffffffff16613966565b141580613686575043816040015163ffffffff1610155b156136cd57837f6aa7f60c176da7af894b384daea2249497448137f5943c1237ada8bc92bdc301846040516136bb9190613beb565b60405180910390a26000915050612fe1565b805160208083015160405160009361371f938993919201928352602083019190915260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016604082015260440190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600890935291205490915060ff16156137b057847f405288ea7be309e16cfdf481367f90a413e1d4634fcdaf8966546db9b93012e88560405161379d9190613beb565b60405180910390a2600092505050612fe1565b600090815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915591505092915050565b600082600001828154811061380a5761380a61416d565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561390657600061384160018361426f565b85549091506000906138559060019061426f565b90508181146138ba5760008660000182815481106138755761387561416d565b90600052602060002001549050808760000184815481106138985761389861416d565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806138cb576138cb614ad3565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612fe1565b6000915050612fe1565b5092915050565b600081815260018301602052604081205461395e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155612fe1565b506000612fe1565b600060017f0000000000000000000000000000000000000000000000000000000000000000600281111561399c5761399c613bfe565b03613ab6576000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a139190614912565b90508083101580613a2e5750610100613a2c848361426f565b115b15613a3c5750600092915050565b6040517f2b407a8200000000000000000000000000000000000000000000000000000000815260048101849052606490632b407a8290602401602060405180830381865afa158015613a92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e719190614912565b504090565b919050565b508054600082559060005260206000209081019061230e9190613b68565b828054828255906000526020600020908101928215613b58579160200282015b82811115613b5857825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190613afe565b50613b64929150613b68565b5090565b5b80821115613b645760008155600101613b69565b60005b83811015613b98578181015183820152602001613b80565b50506000910152565b60008151808452613bb9816020860160208601613b7d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612e716020830184613ba1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310613c4157613c41613bfe565b91905290565b600060208284031215613c5957600080fd5b5035919050565b6020810160028310613c4157613c41613bfe565b73ffffffffffffffffffffffffffffffffffffffff8116811461230e57600080fd5b60008083601f840112613ca857600080fd5b50813567ffffffffffffffff811115613cc057600080fd5b602083019150836020828501011115613cd857600080fd5b9250929050565b60008060008060608587031215613cf557600080fd5b8435613d0081613c74565b935060208501359250604085013567ffffffffffffffff811115613d2357600080fd5b613d2f87828801613c96565b95989497509550505050565b600080600060408486031215613d5057600080fd5b83359250602084013567ffffffffffffffff811115613d6e57600080fd5b613d7a86828701613c96565b9497909650939450505050565b60008083601f840112613d9957600080fd5b50813567ffffffffffffffff811115613db157600080fd5b6020830191508360208260051b8501011115613cd857600080fd5b60008060008060008060008060e0898b031215613de857600080fd5b606089018a811115613df957600080fd5b8998503567ffffffffffffffff80821115613e1357600080fd5b613e1f8c838d01613c96565b909950975060808b0135915080821115613e3857600080fd5b613e448c838d01613d87565b909750955060a08b0135915080821115613e5d57600080fd5b50613e6a8b828c01613d87565b999c989b50969995989497949560c00135949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff81118282101715613ed657613ed6613e83565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613f2357613f23613e83565b604052919050565b600067ffffffffffffffff821115613f4557613f45613e83565b5060051b60200190565b600082601f830112613f6057600080fd5b81356020613f75613f7083613f2b565b613edc565b82815260059290921b84018101918181019086841115613f9457600080fd5b8286015b84811015613fb8578035613fab81613c74565b8352918301918301613f98565b509695505050505050565b803560ff81168114613abb57600080fd5b600067ffffffffffffffff821115613fee57613fee613e83565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261402b57600080fd5b8135614039613f7082613fd4565b81815284602083860101111561404e57600080fd5b816020850160208301376000918101602001919091529392505050565b803567ffffffffffffffff81168114613abb57600080fd5b60008060008060008060c0878903121561409c57600080fd5b863567ffffffffffffffff808211156140b457600080fd5b6140c08a838b01613f4f565b975060208901359150808211156140d657600080fd5b6140e28a838b01613f4f565b96506140f060408a01613fc3565b9550606089013591508082111561410657600080fd5b6141128a838b0161401a565b945061412060808a0161406b565b935060a089013591508082111561413657600080fd5b5061414389828a0161401a565b9150509295509295509295565b60006020828403121561416257600080fd5b8135612e7181613c74565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036141fc576141fc61419c565b5060010190565b6bffffffffffffffffffffffff8181168382160190808211156139105761391061419c565b80820180821115612fe157612fe161419c565b60ff8181168382160190811115612fe157612fe161419c565b61ffff8181168382160190808211156139105761391061419c565b81810381811115612fe157612fe161419c565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142ba576142ba61419c565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826142fd576142fd6142bf565b500490565b6bffffffffffffffffffffffff851681528360208201528260408201526080606082015260006143356080830184613ba1565b9695505050505050565b600060ff821660ff84168160ff04811182151516156143605761436061419c565b029392505050565b805163ffffffff81168114613abb57600080fd5b805162ffffff81168114613abb57600080fd5b805161ffff81168114613abb57600080fd5b80516bffffffffffffffffffffffff81168114613abb57600080fd5b8051613abb81613c74565b600082601f8301126143d957600080fd5b815160206143e9613f7083613f2b565b82815260059290921b8401810191818101908684111561440857600080fd5b8286015b84811015613fb857805161441f81613c74565b835291830191830161440c565b60006020828403121561443e57600080fd5b815167ffffffffffffffff8082111561445657600080fd5b908301906101a0828603121561446b57600080fd5b614473613eb2565b61447c83614368565b815261448a60208401614368565b602082015261449b60408401614368565b60408201526144ac6060840161437c565b60608201526144bd6080840161438f565b60808201526144ce60a084016143a1565b60a08201526144df60c08401614368565b60c08201526144f060e08401614368565b60e0820152610100614503818501614368565b908201526101208381015190820152610140808401519082015261016061452b8185016143bd565b90820152610180838101518381111561454357600080fd5b61454f888287016143c8565b918301919091525095945050505050565b63ffffffff8181168382160190808211156139105761391061419c565b600081518084526020808501945080840160005b838110156145c357815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101614591565b509495945050505050565b600061012063ffffffff808d1684528b6020850152808b166040850152508060608401526145fe8184018a61457d565b90508281036080840152614612818961457d565b905060ff871660a084015282810360c084015261462f8187613ba1565b905067ffffffffffffffff851660e08401528281036101008401526146548185613ba1565b9c9b505050505050505050505050565b82815260406020820152600061049d6040830184613ba1565b60006020828403121561468f57600080fd5b81518015158114612e7157600080fd5b8183823760009101908152919050565b8281526080810160608360208401379392505050565b600082601f8301126146d657600080fd5b815160206146e6613f7083613f2b565b82815260059290921b8401810191818101908684111561470557600080fd5b8286015b84811015613fb85780518352918301918301614709565b600082601f83011261473157600080fd5b81516020614741613f7083613f2b565b82815260059290921b8401810191818101908684111561476057600080fd5b8286015b84811015613fb857805167ffffffffffffffff8111156147845760008081fd5b8701603f810189136147965760008081fd5b8481015160406147a8613f7083613fd4565b8281528b828486010111156147bd5760008081fd5b6147cc83898301848701613b7d565b8652505050918301918301614764565b60008060008060008060c087890312156147f557600080fd5b8651955060208701519450604087015167ffffffffffffffff8082111561481b57600080fd5b6148278a838b016146c5565b9550606089015191508082111561483d57600080fd5b6148498a838b016146c5565b9450608089015191508082111561485f57600080fd5b61486b8a838b01614720565b935060a089015191508082111561488157600080fd5b5061414389828a01614720565b6bffffffffffffffffffffffff8281168282160390808211156139105761391061419c565b60006bffffffffffffffffffffffff808416806148d2576148d26142bf565b92169190910492915050565b60006bffffffffffffffffffffffff808316818516818304811182151516156149095761490961419c565b02949350505050565b60006020828403121561492457600080fd5b5051919050565b60006101208b835273ffffffffffffffffffffffffffffffffffffffff8b16602084015267ffffffffffffffff808b1660408501528160608501526149728285018b61457d565b91508382036080850152614986828a61457d565b915060ff881660a085015283820360c08501526149a38288613ba1565b90861660e085015283810361010085015290506146548185613ba1565b8284823760008382016000815283516149dd818360208801613b7d565b0195945050505050565b600063ffffffff808316818516818304811182151516156149095761490961419c565b600060408284031215614a1c57600080fd5b6040516040810181811067ffffffffffffffff82111715614a3f57614a3f613e83565b604052614a4b83614368565b8152602083015160208201528091505092915050565b600060808284031215614a7357600080fd5b6040516080810181811067ffffffffffffffff82111715614a9657614a96613e83565b60405282518152614aa960208401614368565b6020820152614aba60408401614368565b6040820152606083015160608201528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666a164736f6c6343000810000a", + Bin: "0x6101206040523480156200001257600080fd5b5060405162004f8c38038062004f8c833981016040819052620000359162000386565b80816001600160a01b0316634b4fd03b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009b9190620003ad565b826001600160a01b031663ca30e6036040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000100919062000386565b836001600160a01b031663b10b673c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000165919062000386565b846001600160a01b0316636709d0e56040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca919062000386565b3380600081620002215760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b038481169190911790915581161562000254576200025481620002c2565b5050508360028111156200026c576200026c620003d0565b60e0816002811115620002835762000283620003d0565b9052506001600160a01b0392831660805290821660a052811660c052601980546001600160a01b03191633179055919091166101005250620003e69050565b336001600160a01b038216036200031c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000218565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6001600160a01b03811681146200038357600080fd5b50565b6000602082840312156200039957600080fd5b8151620003a6816200036d565b9392505050565b600060208284031215620003c057600080fd5b815160038110620003a657600080fd5b634e487b7160e01b600052602160045260246000fd5b60805160a05160c05160e05161010051614b376200045560003960008181610102015261019b0152600081816101e201528181612e5e015281816131c401528181613357015261394c01526000610230015260006103770152600081816103b001526105bf0152614b376000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063a4c0ed3611610097578063b1dc65a411610066578063b1dc65a41461039b578063ca30e603146103ae578063e3d0e712146103d4578063f2fde38b146103e757610100565b8063a4c0ed36146102ef578063aed2e92914610302578063afcb95d71461032c578063b10b673c1461037557610100565b80636709d0e5116100d35780636709d0e51461022e57806379ba50971461025457806381ff70481461025c5780638da5cb5b146102d157610100565b8063181f5a7714610147578063349e8cca146101995780634b4fd03b146101e05780635147cd591461020e575b7f00000000000000000000000000000000000000000000000000000000000000003660008037600080366000845af43d6000803e808015610140573d6000f35b3d6000fd5b005b6101836040518060400160405280601481526020017f4b6565706572526567697374727920322e312e3000000000000000000000000081525081565b6040516101909190613bcb565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b7f00000000000000000000000000000000000000000000000000000000000000006040516101909190613c0d565b61022161021c366004613c27565b6103fa565b6040516101909190613c40565b7f00000000000000000000000000000000000000000000000000000000000000006101bb565b6101456104a5565b6102ae60145460115463ffffffff780100000000000000000000000000000000000000000000000083048116937c01000000000000000000000000000000000000000000000000000000009093041691565b6040805163ffffffff948516815293909216602084015290820152606001610190565b60005473ffffffffffffffffffffffffffffffffffffffff166101bb565b6101456102fd366004613cbf565b6105a7565b610315610310366004613d1b565b6107c3565b604080519215158352602083019190915201610190565b601154601254604080516000815260208101939093527c010000000000000000000000000000000000000000000000000000000090910463ffffffff1690820152606001610190565b7f00000000000000000000000000000000000000000000000000000000000000006101bb565b6101456103a9366004613dac565b610939565b7f00000000000000000000000000000000000000000000000000000000000000006101bb565b6101456103e2366004614063565b6114e6565b6101456103f5366004614130565b6122fd565b6000818160045b600f811015610487577fff00000000000000000000000000000000000000000000000000000000000000821683826020811061043f5761043f61414d565b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461047557506000949350505050565b8061047f816141ab565b915050610401565b5081600f1a600181111561049d5761049d613bde565b949350505050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461052b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610616576040517fc8bad78d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208114610650576040517fdfe9309000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061065e82840184613c27565b60008181526004602052604090205490915065010000000000900463ffffffff908116146106b8576040517f9c0083a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600460205260409020600101546106f39085906c0100000000000000000000000090046bffffffffffffffffffffffff166141e3565b600082815260046020526040902060010180546bffffffffffffffffffffffff929092166c01000000000000000000000000027fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff90921691909117905560185461075e908590614208565b6018556040516bffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169082907fafd24114486da8ebfc32f3626dada8863652e187461aa74d4bfa7348915062039060200160405180910390a35050505050565b6000806107ce612311565b6012546e010000000000000000000000000000900460ff161561081d576040517f24522f3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008581526004602090815260409182902082516101008082018552825460ff81161515835263ffffffff918104821683860181905265010000000000820483168488015273ffffffffffffffffffffffffffffffffffffffff690100000000000000000090920482166060850181905260018601546bffffffffffffffffffffffff80821660808801526c0100000000000000000000000082041660a08701527801000000000000000000000000000000000000000000000000900490931660c08501526002909401541660e08301528451601f8901859004850281018501909552878552909361092c93919291899089908190840183828082843760009201919091525061234b92505050565b9097909650945050505050565b60005a604080516101208101825260125460ff808216835261010080830463ffffffff90811660208601526501000000000084048116958501959095526901000000000000000000830462ffffff1660608501526c01000000000000000000000000830461ffff1660808501526e0100000000000000000000000000008304821615801560a08601526f010000000000000000000000000000008404909216151560c085015270010000000000000000000000000000000083046bffffffffffffffffffffffff1660e08501527c010000000000000000000000000000000000000000000000000000000090920490931690820152919250610a67576040517f24522f3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600b602052604090205460ff16610ab0576040517f1099ed7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6011548a3514610aec576040517fdfdcf8e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051610af990600161421b565b60ff1686141580610b0a5750858414155b15610b41576040517f0244f71a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b518a8a8a8a8a8a8a8a61254d565b6000610b928a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127b692505050565b9050600081604001515167ffffffffffffffff811115610bb457610bb4613e63565b604051908082528060200260200182016040528015610c7857816020015b604080516101e081018252600060e08201818152610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c0830182905282526020808301829052928201819052606082018190526080820181905260a0820181905260c082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610bd25790505b5090506000805b8360400151518110156110f6576004600085604001518381518110610ca657610ca661414d565b602090810291909101810151825281810192909252604090810160002081516101008082018452825460ff81161515835263ffffffff91810482169583019590955265010000000000850481169382019390935273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009094048416606082015260018201546bffffffffffffffffffffffff80821660808401526c0100000000000000000000000082041660a08301527801000000000000000000000000000000000000000000000000900490921660c08301526002015490911660e08201528351849083908110610d9857610d9861414d565b602002602001015160000181905250610dcd84604001518281518110610dc057610dc061414d565b60200260200101516103fa565b838281518110610ddf57610ddf61414d565b6020026020010151608001906001811115610dfc57610dfc613bde565b90816001811115610e0f57610e0f613bde565b81525050610e8785848381518110610e2957610e2961414d565b602002602001015160800151858481518110610e4757610e4761414d565b602002602001015160000151602001518760a001518581518110610e6d57610e6d61414d565b6020026020010151518860000151896020015160016128a0565b838281518110610e9957610e9961414d565b6020026020010151604001906bffffffffffffffffffffffff1690816bffffffffffffffffffffffff1681525050610f6584604001518281518110610ee057610ee061414d565b6020026020010151848381518110610efa57610efa61414d565b60200260200101516080015186608001518481518110610f1c57610f1c61414d565b6020026020010151868581518110610f3657610f3661414d565b602002602001015160000151878681518110610f5457610f5461414d565b6020026020010151604001516128eb565b838281518110610f7757610f7761414d565b60200260200101516020019015159081151581525050828181518110610f9f57610f9f61414d565b60200260200101516020015115610fc257610fbb600183614234565b9150610fc7565b6110e4565b61102d838281518110610fdc57610fdc61414d565b60200260200101516000015160600151856060015183815181106110025761100261414d565b60200260200101518660a0015184815181106110205761102061414d565b602002602001015161234b565b84838151811061103f5761103f61414d565b602002602001015160600185848151811061105c5761105c61414d565b602002602001015160a00182815250821515151581525050508281815181106110875761108761414d565b602002602001015160a001518661109e919061424f565b95506110e4846040015182815181106110b9576110b961414d565b60200260200101518483815181106110d3576110d361414d565b602002602001015160800151612a33565b806110ee816141ab565b915050610c7f565b508061ffff1660000361110d5750505050506114dc565b835161111a90600161421b565b6111299060ff1661044c614262565b616b6c6111378d6010614262565b5a611142908961424f565b61114c9190614208565b6111569190614208565b6111609190614208565b9450611b5861117361ffff8316876142ce565b61117d9190614208565b945060008060008060005b87604001515181101561137e578681815181106111a7576111a761414d565b6020026020010151602001511561136c576112038a8883815181106111ce576111ce61414d565b6020026020010151608001518a60a0015184815181106111f0576111f061414d565b6020026020010151518c60000151612aba565b8782815181106112155761121561414d565b602002602001015160c0018181525050611271898960400151838151811061123f5761123f61414d565b60200260200101518984815181106112595761125961414d565b60200260200101518b600001518c602001518b612ada565b909350915061128082856141e3565b935061128c83866141e3565b94508681815181106112a0576112a061414d565b6020026020010151606001511515886040015182815181106112c4576112c461414d565b60200260200101517fad8cc9579b21dfe2c2f6ea35ba15b656e46b4f5b0cb424f52739b8ce5cac9c5b84866112f991906141e3565b8a858151811061130b5761130b61414d565b602002602001015160a001518b86815181106113295761132961414d565b602002602001015160c001518d60800151878151811061134b5761134b61414d565b602002602001015160405161136394939291906142e2565b60405180910390a35b80611376816141ab565b915050611188565b5050336000908152600b6020526040902080548492506002906113b69084906201000090046bffffffffffffffffffffffff166141e3565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080601260000160108282829054906101000a90046bffffffffffffffffffffffff1661141091906141e3565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060008f6001600381106114535761145361414d565b602002013560001c9050600060088264ffffffffff16901c905087610100015163ffffffff168163ffffffff1611156114d257601280547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff8416021790555b5050505050505050505b5050505050505050565b6114ee612bcd565b601f8651111561152a576040517f25d0209c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360ff16600003611567576040517fe77dba5600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84518651141580611586575061157e84600361431f565b60ff16865111155b156115bd576040517f1d2d1c5800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601254600e547001000000000000000000000000000000009091046bffffffffffffffffffffffff169060005b816bffffffffffffffffffffffff168110156116525761163f600e82815481106116165761161661414d565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff168484612c4e565b508061164a816141ab565b9150506115ea565b5060008060005b836bffffffffffffffffffffffff1681101561175b57600d81815481106116825761168261414d565b600091825260209091200154600e805473ffffffffffffffffffffffffffffffffffffffff909216945090829081106116bd576116bd61414d565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff8681168452600c8352604080852080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001690559116808452600b90925290912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055915080611753816141ab565b915050611659565b50611768600d6000613aa0565b611774600e6000613aa0565b604080516080810182526000808252602082018190529181018290526060810182905290805b8c51811015611af857600c60008e83815181106117b9576117b961414d565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1615611824576040517f77cea0fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180604001604052806001151581526020018260ff16815250600c60008f84815181106118555761185561414d565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260400160002082518154939092015160ff16610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909316929092171790558b518c90829081106118fd576118fd61414d565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff81166000908152600b83526040908190208151608081018352905460ff80821615801584526101008304909116958301959095526bffffffffffffffffffffffff6201000082048116938301939093526e01000000000000000000000000000090049091166060820152945092506119c2576040517f6a7281ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001835260ff80821660208086019182526bffffffffffffffffffffffff808b166060880190815273ffffffffffffffffffffffffffffffffffffffff87166000908152600b909352604092839020885181549551948a0151925184166e010000000000000000000000000000027fffffffffffff000000000000000000000000ffffffffffffffffffffffffffff939094166201000002929092167fffffffffffff000000000000000000000000000000000000000000000000ffff94909616610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009095169490941717919091169290921791909117905580611af0816141ab565b91505061179a565b50508a51611b0e9150600d9060208d0190613abe565b508851611b2290600e9060208c0190613abe565b50600087806020019051810190611b39919061440c565b60145460c082015191925063ffffffff700100000000000000000000000000000000909104811691161015611b9a576040517f39abc10400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60155460e082015163ffffffff91821691161015611be4576040517f1fa9bdcb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60155461010082015163ffffffff640100000000909204821691161015611c37576040517fd1d5faa800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518061012001604052808a60ff168152602001826000015163ffffffff168152602001826020015163ffffffff168152602001826060015162ffffff168152602001826080015161ffff168152602001600015158152602001600015158152602001866bffffffffffffffffffffffff168152602001600063ffffffff16815250601260008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160056101000a81548163ffffffff021916908363ffffffff16021790555060608201518160000160096101000a81548162ffffff021916908362ffffff160217905550608082015181600001600c6101000a81548161ffff021916908361ffff16021790555060a082015181600001600e6101000a81548160ff02191690831515021790555060c082015181600001600f6101000a81548160ff02191690831515021790555060e08201518160000160106101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061010082015181600001601c6101000a81548163ffffffff021916908363ffffffff1602179055509050506040518061014001604052808260a001516bffffffffffffffffffffffff16815260200182610160015173ffffffffffffffffffffffffffffffffffffffff168152602001601360010160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001826040015163ffffffff1681526020018260c0015163ffffffff168152602001601360010160149054906101000a900463ffffffff1663ffffffff168152602001601360010160189054906101000a900463ffffffff1663ffffffff1681526020016013600101601c9054906101000a900463ffffffff1663ffffffff1681526020018260e0015163ffffffff16815260200182610100015163ffffffff16815250601360008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550606082015181600101600c6101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160106101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160010160146101000a81548163ffffffff021916908363ffffffff16021790555060c08201518160010160186101000a81548163ffffffff021916908363ffffffff16021790555060e082015181600101601c6101000a81548163ffffffff021916908363ffffffff1602179055506101008201518160020160006101000a81548163ffffffff021916908363ffffffff1602179055506101208201518160020160046101000a81548163ffffffff021916908363ffffffff16021790555090505080610120015160168190555080610140015160178190555060006013600101601c9054906101000a900463ffffffff169050612134612e58565b601480547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff93841602178082556001926018916121af9185917801000000000000000000000000000000000000000000000000900416614540565b92506101000a81548163ffffffff021916908363ffffffff1602179055506121f94630601360010160189054906101000a900463ffffffff1663ffffffff168f8f8f8f8f8f612f0d565b60115560005b6122096009612fb7565b8110156122395761222661221e600983612fc7565b600990612fd3565b5080612231816141ab565b9150506121ff565b5060005b826101800151518110156122905761227d83610180015182815181106122655761226561414d565b60200260200101516009612ff590919063ffffffff16565b5080612288816141ab565b91505061223d565b507f1591690b8638f5fb2dbec82ac741805ac5da8b45dc5263f4875b0496fdce4e0581601154601360010160189054906101000a900463ffffffff168f8f8f8f8f8f6040516122e7999897969594939291906145ae565b60405180910390a1505050505050505050505050565b612305612bcd565b61230e81613017565b50565b3215612349576040517fb60ac5db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60125460009081906f01000000000000000000000000000000900460ff16156123a0576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601280547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff166f010000000000000000000000000000001790555a9050634585e33b60e01b836040516024016123f69190613bcb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290517f79188d1600000000000000000000000000000000000000000000000000000000815290935073ffffffffffffffffffffffffffffffffffffffff8616906379188d16906124c99087908790600401614644565b6020604051808303816000875af11580156124e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250c919061465d565b91505a612519908261424f565b9050601280547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff1690559094909350915050565b6000878760405161255f92919061467f565b604051908190038120612576918b9060200161468f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201208383019092526000808452908301819052909250906000805b8881101561274d576001858783602081106125e2576125e261414d565b6125ef91901a601b61421b565b8c8c858181106126015761260161414d565b905060200201358b8b8681811061261a5761261a61414d565b9050602002013560405160008152602001604052604051612657949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015612679573d6000803e3d6000fd5b5050604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081015173ffffffffffffffffffffffffffffffffffffffff81166000908152600c602090815290849020838501909452925460ff8082161515808552610100909204169383019390935290955093509050612727576040517f0f4c073700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826020015160080260ff166001901b840193508080612745906141ab565b9150506125c5565b50827e010101010101010101010101010101010101010101010101010101010101018416146127a8576040517fc103be2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050505050505050565b6127ef6040518060c001604052806000815260200160008152602001606081526020016060815260200160608152602001606081525090565b6000806000806000808780602001905181019061280c91906147bc565b9550955095509550955095508251845114158061282b57508151845114155b8061283857508051845114155b1561286f576040517fb55ac75400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160c0810182529687526020870195909552938501929092526060840152608083015260a082015292915050565b6000806128b288878b6000015161310c565b90506000806128cd8b8a63ffffffff16858a8a60018b61318f565b90925090506128dc81836141e3565b9b9a5050505050505050505050565b60008085600181111561290057612900613bde565b036129215761291086858561353a565b61291c57506000612a2a565b612976565b600185600181111561293557612935613bde565b0361294457612910868561361e565b6040517ff2b2d41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61297e612e58565b836040015163ffffffff16116129ce57857fc3237c8807c467c1b39b8d0395eff077313e691bf0a7388106792564ebfd5636856040516129be9190613bcb565b60405180910390a2506000612a2a565b816bffffffffffffffffffffffff168360a001516bffffffffffffffffffffffff161015612a2657857f377c8b0c126ae5248d27aca1c76fac4608aff85673ee3caf09747e1044549e02856040516129be9190613bcb565b5060015b95945050505050565b6000816001811115612a4757612a47613bde565b03612ab657612a54612e58565b6000838152600460205260409020600101805463ffffffff929092167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790555b5050565b6000612ac784848461310c565b90508085101561049d5750929392505050565b600080612af5888760a001518860c00151888888600161318f565b90925090506000612b0682846141e3565b600089815260046020526040902060010180549192508291600c90612b4a9084906c0100000000000000000000000090046bffffffffffffffffffffffff1661486e565b82546101009290920a6bffffffffffffffffffffffff81810219909316918316021790915560008a815260046020526040812060010180548594509092612b93918591166141e3565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050965096945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314612349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610522565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b602090815260408083208151608081018352905460ff80821615801584526101008304909116948301949094526bffffffffffffffffffffffff6201000082048116938301939093526e0100000000000000000000000000009004909116606082015290612e4a576000816060015185612ce6919061486e565b90506000612cf48583614893565b90508083604001818151612d0891906141e3565b6bffffffffffffffffffffffff16905250612d2385826148be565b83606001818151612d3491906141e3565b6bffffffffffffffffffffffff90811690915273ffffffffffffffffffffffffffffffffffffffff89166000908152600b602090815260409182902087518154928901519389015160608a015186166e010000000000000000000000000000027fffffffffffff000000000000000000000000ffffffffffffffffffffffffffff919096166201000002167fffffffffffff000000000000000000000000000000000000000000000000ffff60ff95909516610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909416939093171792909216179190911790555050505b6040015190505b9392505050565b600060017f00000000000000000000000000000000000000000000000000000000000000006002811115612e8e57612e8e613bde565b03612f0857606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612edf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0391906148f2565b905090565b504390565b6000808a8a8a8a8a8a8a8a8a604051602001612f319998979695949392919061490b565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905280516020909101207dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e01000000000000000000000000000000000000000000000000000000000000179b9a5050505050505050505050565b6000612fc1825490565b92915050565b6000612e5183836137d3565b6000612e518373ffffffffffffffffffffffffffffffffffffffff84166137fd565b6000612e518373ffffffffffffffffffffffffffffffffffffffff84166138f7565b3373ffffffffffffffffffffffffffffffffffffffff821603613096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610522565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000808085600181111561312257613122613bde565b03613131575062013880613150565b600185600181111561314557613145613bde565b036129445750620186a05b61316163ffffffff85166014614262565b61316c84600161421b565b61317b9060ff16611d4c614262565b6131859083614208565b612a2a9190614208565b6000806000896080015161ffff16876131a89190614262565b90508380156131b65750803a105b156131be57503a5b600060027f000000000000000000000000000000000000000000000000000000000000000060028111156131f4576131f4613bde565b0361335357604080516000815260208101909152851561325257600036604051806080016040528060488152602001614ae36048913960405160200161323c939291906149a0565b60405160208183030381529060405290506132ba565b60155461326e90640100000000900463ffffffff1660046149c7565b63ffffffff1667ffffffffffffffff81111561328c5761328c613e63565b6040519080825280601f01601f1916602001820160405280156132b6576020820181803683370190505b5090505b6040517f49948e0e00000000000000000000000000000000000000000000000000000000815273420000000000000000000000000000000000000f906349948e0e9061330a908490600401613bcb565b602060405180830381865afa158015613327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334b91906148f2565b9150506133ff565b60017f0000000000000000000000000000000000000000000000000000000000000000600281111561338757613387613bde565b036133ff57606c73ffffffffffffffffffffffffffffffffffffffff1663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133fc91906148f2565b90505b8461341b57808b6080015161ffff166134189190614262565b90505b61342961ffff8716826142ce565b9050600087826134398c8e614208565b6134439086614262565b61344d9190614208565b61345f90670de0b6b3a7640000614262565b61346991906142ce565b905060008c6040015163ffffffff1664e8d4a510006134889190614262565b898e6020015163ffffffff16858f886134a19190614262565b6134ab9190614208565b6134b990633b9aca00614262565b6134c39190614262565b6134cd91906142ce565b6134d79190614208565b90506b033b2e3c9fd0803ce80000006134f08284614208565b1115613528576040517f2ad7547a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b909c909b509950505050505050505050565b6000808380602001905181019061355191906149ea565b90508260c0015163ffffffff16816000015163ffffffff1610156135b157847f405288ea7be309e16cfdf481367f90a413e1d4634fcdaf8966546db9b93012e88560405161359f9190613bcb565b60405180910390a26000915050612e51565b602081015181516135c79063ffffffff16613946565b1415806135de575043816000015163ffffffff1610155b1561361357847f6aa7f60c176da7af894b384daea2249497448137f5943c1237ada8bc92bdc3018560405161359f9190613bcb565b506001949350505050565b600080828060200190518101906136359190614a41565b9050806060015161364f826040015163ffffffff16613946565b141580613666575043816040015163ffffffff1610155b156136ad57837f6aa7f60c176da7af894b384daea2249497448137f5943c1237ada8bc92bdc3018460405161369b9190613bcb565b60405180910390a26000915050612fc1565b80516020808301516040516000936136ff938993919201928352602083019190915260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016604082015260440190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600890935291205490915060ff161561379057847f405288ea7be309e16cfdf481367f90a413e1d4634fcdaf8966546db9b93012e88560405161377d9190613bcb565b60405180910390a2600092505050612fc1565b600090815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915591505092915050565b60008260000182815481106137ea576137ea61414d565b9060005260206000200154905092915050565b600081815260018301602052604081205480156138e657600061382160018361424f565b85549091506000906138359060019061424f565b905081811461389a5760008660000182815481106138555761385561414d565b90600052602060002001549050808760000184815481106138785761387861414d565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806138ab576138ab614ab3565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612fc1565b6000915050612fc1565b5092915050565b600081815260018301602052604081205461393e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155612fc1565b506000612fc1565b600060017f0000000000000000000000000000000000000000000000000000000000000000600281111561397c5761397c613bde565b03613a96576000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f391906148f2565b90508083101580613a0e5750610100613a0c848361424f565b115b15613a1c5750600092915050565b6040517f2b407a8200000000000000000000000000000000000000000000000000000000815260048101849052606490632b407a8290602401602060405180830381865afa158015613a72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5191906148f2565b504090565b919050565b508054600082559060005260206000209081019061230e9190613b48565b828054828255906000526020600020908101928215613b38579160200282015b82811115613b3857825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190613ade565b50613b44929150613b48565b5090565b5b80821115613b445760008155600101613b49565b60005b83811015613b78578181015183820152602001613b60565b50506000910152565b60008151808452613b99816020860160208601613b5d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612e516020830184613b81565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310613c2157613c21613bde565b91905290565b600060208284031215613c3957600080fd5b5035919050565b6020810160028310613c2157613c21613bde565b73ffffffffffffffffffffffffffffffffffffffff8116811461230e57600080fd5b60008083601f840112613c8857600080fd5b50813567ffffffffffffffff811115613ca057600080fd5b602083019150836020828501011115613cb857600080fd5b9250929050565b60008060008060608587031215613cd557600080fd5b8435613ce081613c54565b935060208501359250604085013567ffffffffffffffff811115613d0357600080fd5b613d0f87828801613c76565b95989497509550505050565b600080600060408486031215613d3057600080fd5b83359250602084013567ffffffffffffffff811115613d4e57600080fd5b613d5a86828701613c76565b9497909650939450505050565b60008083601f840112613d7957600080fd5b50813567ffffffffffffffff811115613d9157600080fd5b6020830191508360208260051b8501011115613cb857600080fd5b60008060008060008060008060e0898b031215613dc857600080fd5b606089018a811115613dd957600080fd5b8998503567ffffffffffffffff80821115613df357600080fd5b613dff8c838d01613c76565b909950975060808b0135915080821115613e1857600080fd5b613e248c838d01613d67565b909750955060a08b0135915080821115613e3d57600080fd5b50613e4a8b828c01613d67565b999c989b50969995989497949560c00135949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff81118282101715613eb657613eb6613e63565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613f0357613f03613e63565b604052919050565b600067ffffffffffffffff821115613f2557613f25613e63565b5060051b60200190565b600082601f830112613f4057600080fd5b81356020613f55613f5083613f0b565b613ebc565b82815260059290921b84018101918181019086841115613f7457600080fd5b8286015b84811015613f98578035613f8b81613c54565b8352918301918301613f78565b509695505050505050565b803560ff81168114613a9b57600080fd5b600067ffffffffffffffff821115613fce57613fce613e63565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261400b57600080fd5b8135614019613f5082613fb4565b81815284602083860101111561402e57600080fd5b816020850160208301376000918101602001919091529392505050565b803567ffffffffffffffff81168114613a9b57600080fd5b60008060008060008060c0878903121561407c57600080fd5b863567ffffffffffffffff8082111561409457600080fd5b6140a08a838b01613f2f565b975060208901359150808211156140b657600080fd5b6140c28a838b01613f2f565b96506140d060408a01613fa3565b955060608901359150808211156140e657600080fd5b6140f28a838b01613ffa565b945061410060808a0161404b565b935060a089013591508082111561411657600080fd5b5061412389828a01613ffa565b9150509295509295509295565b60006020828403121561414257600080fd5b8135612e5181613c54565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036141dc576141dc61417c565b5060010190565b6bffffffffffffffffffffffff8181168382160190808211156138f0576138f061417c565b80820180821115612fc157612fc161417c565b60ff8181168382160190811115612fc157612fc161417c565b61ffff8181168382160190808211156138f0576138f061417c565b81810381811115612fc157612fc161417c565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561429a5761429a61417c565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826142dd576142dd61429f565b500490565b6bffffffffffffffffffffffff851681528360208201528260408201526080606082015260006143156080830184613b81565b9695505050505050565b600060ff821660ff84168160ff04811182151516156143405761434061417c565b029392505050565b805163ffffffff81168114613a9b57600080fd5b805162ffffff81168114613a9b57600080fd5b805161ffff81168114613a9b57600080fd5b80516bffffffffffffffffffffffff81168114613a9b57600080fd5b8051613a9b81613c54565b600082601f8301126143b957600080fd5b815160206143c9613f5083613f0b565b82815260059290921b840181019181810190868411156143e857600080fd5b8286015b84811015613f985780516143ff81613c54565b83529183019183016143ec565b60006020828403121561441e57600080fd5b815167ffffffffffffffff8082111561443657600080fd5b908301906101a0828603121561444b57600080fd5b614453613e92565b61445c83614348565b815261446a60208401614348565b602082015261447b60408401614348565b604082015261448c6060840161435c565b606082015261449d6080840161436f565b60808201526144ae60a08401614381565b60a08201526144bf60c08401614348565b60c08201526144d060e08401614348565b60e08201526101006144e3818501614348565b908201526101208381015190820152610140808401519082015261016061450b81850161439d565b90820152610180838101518381111561452357600080fd5b61452f888287016143a8565b918301919091525095945050505050565b63ffffffff8181168382160190808211156138f0576138f061417c565b600081518084526020808501945080840160005b838110156145a357815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101614571565b509495945050505050565b600061012063ffffffff808d1684528b6020850152808b166040850152508060608401526145de8184018a61455d565b905082810360808401526145f2818961455d565b905060ff871660a084015282810360c084015261460f8187613b81565b905067ffffffffffffffff851660e08401528281036101008401526146348185613b81565b9c9b505050505050505050505050565b82815260406020820152600061049d6040830184613b81565b60006020828403121561466f57600080fd5b81518015158114612e5157600080fd5b8183823760009101908152919050565b8281526080810160608360208401379392505050565b600082601f8301126146b657600080fd5b815160206146c6613f5083613f0b565b82815260059290921b840181019181810190868411156146e557600080fd5b8286015b84811015613f9857805183529183019183016146e9565b600082601f83011261471157600080fd5b81516020614721613f5083613f0b565b82815260059290921b8401810191818101908684111561474057600080fd5b8286015b84811015613f9857805167ffffffffffffffff8111156147645760008081fd5b8701603f810189136147765760008081fd5b848101516040614788613f5083613fb4565b8281528b8284860101111561479d5760008081fd5b6147ac83898301848701613b5d565b8652505050918301918301614744565b60008060008060008060c087890312156147d557600080fd5b8651955060208701519450604087015167ffffffffffffffff808211156147fb57600080fd5b6148078a838b016146a5565b9550606089015191508082111561481d57600080fd5b6148298a838b016146a5565b9450608089015191508082111561483f57600080fd5b61484b8a838b01614700565b935060a089015191508082111561486157600080fd5b5061412389828a01614700565b6bffffffffffffffffffffffff8281168282160390808211156138f0576138f061417c565b60006bffffffffffffffffffffffff808416806148b2576148b261429f565b92169190910492915050565b60006bffffffffffffffffffffffff808316818516818304811182151516156148e9576148e961417c565b02949350505050565b60006020828403121561490457600080fd5b5051919050565b60006101208b835273ffffffffffffffffffffffffffffffffffffffff8b16602084015267ffffffffffffffff808b1660408501528160608501526149528285018b61455d565b91508382036080850152614966828a61455d565b915060ff881660a085015283820360c08501526149838288613b81565b90861660e085015283810361010085015290506146348185613b81565b8284823760008382016000815283516149bd818360208801613b5d565b0195945050505050565b600063ffffffff808316818516818304811182151516156148e9576148e961417c565b6000604082840312156149fc57600080fd5b6040516040810181811067ffffffffffffffff82111715614a1f57614a1f613e63565b604052614a2b83614348565b8152602083015160208201528091505092915050565b600060808284031215614a5357600080fd5b6040516080810181811067ffffffffffffffff82111715614a7657614a76613e63565b60405282518152614a8960208401614348565b6020820152614a9a60408401614348565b6040820152606083015160608201528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666a164736f6c6343000810000a", } var KeeperRegistryABI = KeeperRegistryMetaData.ABI diff --git a/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt index 49e2c75a3d2..da612cf12af 100644 --- a/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -23,12 +23,12 @@ keeper_registrar_wrapper2_0: ../../contracts/solc/v0.8.6/KeeperRegistrar2_0.abi keeper_registry_logic1_3: ../../contracts/solc/v0.8.6/KeeperRegistryLogic1_3.abi ../../contracts/solc/v0.8.6/KeeperRegistryLogic1_3.bin e1bee66ce7cd0085469f923c46f0eddb58fd45dec207def1bb383b37e413a6ca keeper_registry_logic2_0: ../../contracts/solc/v0.8.6/KeeperRegistryLogic2_0.abi ../../contracts/solc/v0.8.6/KeeperRegistryLogic2_0.bin ba5c23c495c4e1e487560ed56d917632f0047266c06fda4af9edbcda5aca99fa keeper_registry_logic_a_wrapper_2_1: ../../contracts/solc/v0.8.16/KeeperRegistryLogicA2_1.abi ../../contracts/solc/v0.8.16/KeeperRegistryLogicA2_1.bin e2d1c97164ad24945b340d75e9b941f7625a538320a0271415d1903468145703 -keeper_registry_logic_b_wrapper_2_1: ../../contracts/solc/v0.8.16/KeeperRegistryLogicB2_1.abi ../../contracts/solc/v0.8.16/KeeperRegistryLogicB2_1.bin 550bf0020bf0405852977fedbae262e1b0eecb09b6830103e49d1cc9d8fb7c0c +keeper_registry_logic_b_wrapper_2_1: ../../contracts/solc/v0.8.16/KeeperRegistryLogicB2_1.abi ../../contracts/solc/v0.8.16/KeeperRegistryLogicB2_1.bin e69aaafdb403c0e3f3665e0f6a7e3d352369137a1a5f1c0b380b0a9812eb2dcd keeper_registry_wrapper1_1: ../../contracts/solc/v0.7/KeeperRegistry1_1.abi ../../contracts/solc/v0.7/KeeperRegistry1_1.bin 6ce079f2738f015f7374673a2816e8e9787143d00b780ea7652c8aa9ad9e1e20 keeper_registry_wrapper1_2: ../../contracts/solc/v0.8.6/KeeperRegistry1_2.abi ../../contracts/solc/v0.8.6/KeeperRegistry1_2.bin 41faf687ad6a5171cc91e627244d0b3d6f62d393c418ca22d4ba7fc921fd32c6 keeper_registry_wrapper1_3: ../../contracts/solc/v0.8.6/KeeperRegistry1_3.abi ../../contracts/solc/v0.8.6/KeeperRegistry1_3.bin 5e1414eacbc1880b7349a4f253b7eca176f7f6300ef3cd834c493ce795a17e25 keeper_registry_wrapper2_0: ../../contracts/solc/v0.8.6/KeeperRegistry2_0.abi ../../contracts/solc/v0.8.6/KeeperRegistry2_0.bin c32dea7d5ef66b7c58ddc84ddf69aa44df1b3ae8601fbc271c95be4ff5853056 -keeper_registry_wrapper_2_1: ../../contracts/solc/v0.8.16/KeeperRegistry2_1.abi ../../contracts/solc/v0.8.16/KeeperRegistry2_1.bin 01324901da3a6acb0a0d958844f0e85467b0680d376e35dd4deac8fd5c657b3c +keeper_registry_wrapper_2_1: ../../contracts/solc/v0.8.16/KeeperRegistry2_1.abi ../../contracts/solc/v0.8.16/KeeperRegistry2_1.bin d1aef25da6e40bc2564fec544d2bce4cd5222ee1cf78805a0a90a1fbda114a50 keepers_vrf_consumer: ../../contracts/solc/v0.8.6/KeepersVRFConsumer.abi ../../contracts/solc/v0.8.6/KeepersVRFConsumer.bin fa75572e689c9e84705c63e8dbe1b7b8aa1a8fe82d66356c4873d024bb9166e8 llo_feeds: ../../contracts/solc/v0.8.16/VerifierProxy.abi ../../contracts/solc/v0.8.16/VerifierProxy.bin 3b69ffe9c694e8551b5375c02b9e960adc985e2390566740e7fea70c89e436f1 llo_feeds_test: ../../contracts/solc/v0.8.16/ExposedVerifier.abi ../../contracts/solc/v0.8.16/ExposedVerifier.bin 6932cea8f2738e874d3ec9e1a4231d2421704030c071d9e15dd2f7f08482c246 From f4c0f917349943bbcf04f0bd5d87ec73a3e92701 Mon Sep 17 00:00:00 2001 From: FelixFan1992 Date: Tue, 20 Jun 2023 20:02:48 -0400 Subject: [PATCH 3/8] Upkeep manager refactor (#9637) * refactor upkeep administrative manager * remove only * fix * fix go build * regen interface * remove only * fix tests * addressed comments * refactor * fix tests * fix error string * fix tests * fix chaincli --- .../dev/automation/2_1/KeeperRegistry2_1.sol | 1 + .../automation/2_1/KeeperRegistryBase2_1.sol | 11 +- .../2_1/KeeperRegistryLogicB2_1.sol | 36 +- .../2_1/interfaces/IKeeperRegistryMaster.sol | 17 +- .../v0.8/automation/KeeperRegistry2_1.test.ts | 60 ++- .../i_keeper_registry_master_wrapper_2_1.go | 389 ++++++++--------- .../keeper_registry_logic_a_wrapper_2_1.go | 284 ++++++------- .../keeper_registry_logic_b_wrapper_2_1.go | 391 ++++++++---------- .../keeper_registry_wrapper_2_1.go | 284 ++++++------- ...rapper-dependency-versions-do-not-edit.txt | 8 +- core/scripts/chaincli/handler/keeper.go | 10 +- .../plugins/ocr2keeper/evm21/feed_lookup.go | 6 +- .../ocr2keeper/evm21/feed_lookup_test.go | 14 +- .../ocr2keeper/evm21/mocks/registry.go | 4 +- .../ocr2/plugins/ocr2keeper/evm21/registry.go | 2 +- 15 files changed, 707 insertions(+), 810 deletions(-) diff --git a/contracts/src/v0.8/dev/automation/2_1/KeeperRegistry2_1.sol b/contracts/src/v0.8/dev/automation/2_1/KeeperRegistry2_1.sol index aa6c6d83b1d..8913fe1b37a 100644 --- a/contracts/src/v0.8/dev/automation/2_1/KeeperRegistry2_1.sol +++ b/contracts/src/v0.8/dev/automation/2_1/KeeperRegistry2_1.sol @@ -305,6 +305,7 @@ contract KeeperRegistry2_1 is KeeperRegistryBase2_1, OCR2Abstract, Chainable, ER transcoder: onchainConfig.transcoder, maxCheckDataSize: onchainConfig.maxCheckDataSize, maxPerformDataSize: onchainConfig.maxPerformDataSize, + upkeepPrivilegeManager: onchainConfig.upkeepPrivilegeManager, nonce: s_storage.nonce, configCount: s_storage.configCount, latestConfigBlockNumber: s_storage.latestConfigBlockNumber, diff --git a/contracts/src/v0.8/dev/automation/2_1/KeeperRegistryBase2_1.sol b/contracts/src/v0.8/dev/automation/2_1/KeeperRegistryBase2_1.sol index 0d1d75bb64f..7697f8134a5 100644 --- a/contracts/src/v0.8/dev/automation/2_1/KeeperRegistryBase2_1.sol +++ b/contracts/src/v0.8/dev/automation/2_1/KeeperRegistryBase2_1.sol @@ -91,11 +91,10 @@ abstract contract KeeperRegistryBase2_1 is ConfirmedOwner, ExecutionPrevention { uint256 internal s_fallbackGasPrice; uint256 internal s_fallbackLinkPrice; uint256 internal s_expectedLinkBalance; // Used in case of erroneous LINK transfers to contract - address internal s_upkeepManager; mapping(address => MigrationPermission) internal s_peerRegistryMigrationPermission; // Permissions for migration to and fro mapping(uint256 => bytes) internal s_upkeepTriggerConfig; // upkeep triggers mapping(uint256 => bytes) internal s_upkeepOffchainConfig; // general config set by users for each upkeep - mapping(uint256 => bytes) internal s_upkeepAdminOffchainConfig; // general config set by an administrative role + mapping(uint256 => bytes) internal s_upkeepPrivilegeConfig; // general config set by an administrative role error ArrayHasNoEntries(); error CannotCancel(); @@ -119,7 +118,7 @@ abstract contract KeeperRegistryBase2_1 is ConfirmedOwner, ExecutionPrevention { error OnlyCallableByPayee(); error OnlyCallableByProposedAdmin(); error OnlyCallableByProposedPayee(); - error OnlyCallableByUpkeepManager(); + error OnlyCallableByUpkeepPrivilegeManager(); error OnlyPausedUpkeep(); error OnlyUnpausedUpkeep(); error ParameterLengthError(); @@ -195,6 +194,7 @@ abstract contract KeeperRegistryBase2_1 is ConfirmedOwner, ExecutionPrevention { * @member fallbackLinkPrice LINK price used if the LINK price feed is stale * @member transcoder address of the transcoder contract * @member registrar address of the registrar contract + * @member address which can set privilege for upkeeps */ struct OnchainConfig { uint32 paymentPremiumPPB; @@ -210,6 +210,7 @@ abstract contract KeeperRegistryBase2_1 is ConfirmedOwner, ExecutionPrevention { uint256 fallbackLinkPrice; address transcoder; address[] registrars; + address upkeepPrivilegeManager; } /** @@ -322,6 +323,7 @@ abstract contract KeeperRegistryBase2_1 is ConfirmedOwner, ExecutionPrevention { uint32 maxCheckDataSize; // max length of checkData bytes uint32 maxPerformDataSize; // max length of performData bytes // 4 bytes to 3rd EVM word + address upkeepPrivilegeManager; // address which can set privilege for upkeeps } // Report transmitted by OCR to transmit function @@ -408,7 +410,7 @@ abstract contract KeeperRegistryBase2_1 is ConfirmedOwner, ExecutionPrevention { event PayeeshipTransferRequested(address indexed transmitter, address indexed from, address indexed to); event PayeeshipTransferred(address indexed transmitter, address indexed from, address indexed to); event PaymentWithdrawn(address indexed transmitter, uint256 indexed amount, address indexed to, address payee); - event UpkeepAdminOffchainConfigSet(uint256 indexed id, bytes adminOffchainConfig); + event UpkeepPrivilegeConfigSet(uint256 indexed id, bytes privilegeConfig); event UpkeepAdminTransferRequested(uint256 indexed id, address indexed from, address indexed to); event UpkeepAdminTransferred(uint256 indexed id, address indexed from, address indexed to); event UpkeepCanceled(uint256 indexed id, uint64 indexed atBlockHeight); @@ -448,7 +450,6 @@ abstract contract KeeperRegistryBase2_1 is ConfirmedOwner, ExecutionPrevention { i_link = LinkTokenInterface(link); i_linkNativeFeed = AggregatorV3Interface(linkNativeFeed); i_fastGasFeed = AggregatorV3Interface(fastGasFeed); - s_upkeepManager = msg.sender; } ///////////// diff --git a/contracts/src/v0.8/dev/automation/2_1/KeeperRegistryLogicB2_1.sol b/contracts/src/v0.8/dev/automation/2_1/KeeperRegistryLogicB2_1.sol index 22d393bbc46..4356ef9ed3b 100644 --- a/contracts/src/v0.8/dev/automation/2_1/KeeperRegistryLogicB2_1.sol +++ b/contracts/src/v0.8/dev/automation/2_1/KeeperRegistryLogicB2_1.sol @@ -175,22 +175,12 @@ contract KeeperRegistryLogicB2_1 is KeeperRegistryBase2_1 { s_peerRegistryMigrationPermission[peer] = permission; } - /** - * @dev Called through KeeperRegistry main contract - */ - function setUpkeepAdminOffchainConfig(uint256 upkeepId, bytes calldata newAdminOffchainConfig) external { - if (msg.sender != s_upkeepManager) { - revert OnlyCallableByUpkeepManager(); + function setUpkeepPrivilegeConfig(uint256 upkeepId, bytes calldata newPrivilegeConfig) external { + if (msg.sender != s_storage.upkeepPrivilegeManager) { + revert OnlyCallableByUpkeepPrivilegeManager(); } - s_upkeepAdminOffchainConfig[upkeepId] = newAdminOffchainConfig; - emit UpkeepAdminOffchainConfigSet(upkeepId, newAdminOffchainConfig); - } - - /** - * @dev Called through KeeperRegistry main contract - */ - function setUpkeepManager(address newUpkeepManager) external onlyOwner { - s_upkeepManager = newUpkeepManager; + s_upkeepPrivilegeConfig[upkeepId] = newPrivilegeConfig; + emit UpkeepPrivilegeConfigSet(upkeepId, newPrivilegeConfig); } ///////////// @@ -361,7 +351,8 @@ contract KeeperRegistryLogicB2_1 is KeeperRegistryBase2_1 { fallbackGasPrice: s_fallbackGasPrice, fallbackLinkPrice: s_fallbackLinkPrice, transcoder: s_storage.transcoder, - registrars: s_registrars.values() + registrars: s_registrars.values(), + upkeepPrivilegeManager: s_storage.upkeepPrivilegeManager }); return (state, config, s_signersList, s_transmittersList, s_hotVars.f); @@ -394,16 +385,9 @@ contract KeeperRegistryLogicB2_1 is KeeperRegistryBase2_1 { } /** - * @notice returns the upkeep manager address - */ - function getUpkeepManager() external view returns (address) { - return s_upkeepManager; - } - - /** - * @notice returns the upkeep administrative offchain config + * @notice returns the upkeep privilege config */ - function getUpkeepAdminOffchainConfig(uint256 upkeepId) external view returns (bytes memory) { - return s_upkeepAdminOffchainConfig[upkeepId]; + function getUpkeepPrivilegeConfig(uint256 upkeepId) external view returns (bytes memory) { + return s_upkeepPrivilegeConfig[upkeepId]; } } diff --git a/contracts/src/v0.8/dev/automation/2_1/interfaces/IKeeperRegistryMaster.sol b/contracts/src/v0.8/dev/automation/2_1/interfaces/IKeeperRegistryMaster.sol index 431e014ae6e..273c8f13881 100644 --- a/contracts/src/v0.8/dev/automation/2_1/interfaces/IKeeperRegistryMaster.sol +++ b/contracts/src/v0.8/dev/automation/2_1/interfaces/IKeeperRegistryMaster.sol @@ -34,7 +34,7 @@ interface IKeeperRegistryMaster { error OnlyCallableByPayee(); error OnlyCallableByProposedAdmin(); error OnlyCallableByProposedPayee(); - error OnlyCallableByUpkeepManager(); + error OnlyCallableByUpkeepPrivilegeManager(); error OnlyPausedUpkeep(); error OnlySimulatedBackend(); error OnlyUnpausedUpkeep(); @@ -80,7 +80,6 @@ interface IKeeperRegistryMaster { event StaleUpkeepReport(uint256 indexed id, bytes trigger); event Transmitted(bytes32 configDigest, uint32 epoch); event Unpaused(address account); - event UpkeepAdminOffchainConfigSet(uint256 indexed id, bytes adminOffchainConfig); event UpkeepAdminTransferRequested(uint256 indexed id, address indexed from, address indexed to); event UpkeepAdminTransferred(uint256 indexed id, address indexed from, address indexed to); event UpkeepCanceled(uint256 indexed id, uint64 indexed atBlockHeight); @@ -97,6 +96,7 @@ interface IKeeperRegistryMaster { bytes trigger ); event UpkeepPipelineDataSet(uint256 indexed id, bytes newPipelineData); + event UpkeepPrivilegeConfigSet(uint256 indexed id, bytes privilegeConfig); event UpkeepReceived(uint256 indexed id, uint256 startingBalance, address importedFrom); event UpkeepRegistered(uint256 indexed id, uint32 executeGas, address admin); event UpkeepTriggerConfigSet(uint256 indexed id, bytes triggerConfig); @@ -264,9 +264,7 @@ interface IKeeperRegistryMaster { function getUpkeep(uint256 id) external view returns (KeeperRegistryBase2_1.UpkeepInfo memory upkeepInfo); - function getUpkeepAdminOffchainConfig(uint256 upkeepId) external view returns (bytes memory); - - function getUpkeepManager() external view returns (address); + function getUpkeepPrivilegeConfig(uint256 upkeepId) external view returns (bytes memory); function getUpkeepTriggerConfig(uint256 upkeepId) external view returns (bytes memory); @@ -280,16 +278,14 @@ interface IKeeperRegistryMaster { function setPeerRegistryMigrationPermission(address peer, uint8 permission) external; - function setUpkeepAdminOffchainConfig(uint256 upkeepId, bytes memory newAdminOffchainConfig) external; - function setUpkeepGasLimit(uint256 id, uint32 gasLimit) external; - function setUpkeepManager(address newUpkeepManager) external; - function setUpkeepOffchainConfig(uint256 id, bytes memory config) external; function setUpkeepPipelineData(uint256 id, bytes memory newPipelineData) external; + function setUpkeepPrivilegeConfig(uint256 upkeepId, bytes memory newPrivilegeConfig) external; + function transferPayeeship(address transmitter, address proposed) external; function transferUpkeepAdmin(uint256 id, address proposed) external; @@ -346,6 +342,7 @@ interface KeeperRegistryBase2_1 { uint256 fallbackLinkPrice; address transcoder; address[] registrars; + address upkeepPrivilegeManager; } struct UpkeepInfo { @@ -365,5 +362,5 @@ interface KeeperRegistryBase2_1 { // THIS FILE WAS AUTOGENERATED FROM THE FOLLOWING ABI JSON: /* -[{"inputs":[{"internalType":"contract KeeperRegistryLogicA2_1","name":"logicA","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ArrayHasNoEntries","type":"error"},{"inputs":[],"name":"CannotCancel","type":"error"},{"inputs":[],"name":"ConfigDigestMismatch","type":"error"},{"inputs":[],"name":"DuplicateEntry","type":"error"},{"inputs":[],"name":"DuplicateSigners","type":"error"},{"inputs":[],"name":"GasLimitCanOnlyIncrease","type":"error"},{"inputs":[],"name":"GasLimitOutsideRange","type":"error"},{"inputs":[],"name":"IncorrectNumberOfFaultyOracles","type":"error"},{"inputs":[],"name":"IncorrectNumberOfSignatures","type":"error"},{"inputs":[],"name":"IncorrectNumberOfSigners","type":"error"},{"inputs":[],"name":"IndexOutOfRange","type":"error"},{"inputs":[],"name":"InsufficientFunds","type":"error"},{"inputs":[],"name":"InvalidDataLength","type":"error"},{"inputs":[],"name":"InvalidPayee","type":"error"},{"inputs":[],"name":"InvalidRecipient","type":"error"},{"inputs":[],"name":"InvalidReport","type":"error"},{"inputs":[],"name":"InvalidTrigger","type":"error"},{"inputs":[],"name":"InvalidTriggerType","type":"error"},{"inputs":[],"name":"MaxCheckDataSizeCanOnlyIncrease","type":"error"},{"inputs":[],"name":"MaxPerformDataSizeCanOnlyIncrease","type":"error"},{"inputs":[],"name":"MigrationNotPermitted","type":"error"},{"inputs":[],"name":"NotAContract","type":"error"},{"inputs":[],"name":"OnlyActiveSigners","type":"error"},{"inputs":[],"name":"OnlyActiveTransmitters","type":"error"},{"inputs":[],"name":"OnlyCallableByAdmin","type":"error"},{"inputs":[],"name":"OnlyCallableByLINKToken","type":"error"},{"inputs":[],"name":"OnlyCallableByOwnerOrAdmin","type":"error"},{"inputs":[],"name":"OnlyCallableByOwnerOrRegistrar","type":"error"},{"inputs":[],"name":"OnlyCallableByPayee","type":"error"},{"inputs":[],"name":"OnlyCallableByProposedAdmin","type":"error"},{"inputs":[],"name":"OnlyCallableByProposedPayee","type":"error"},{"inputs":[],"name":"OnlyCallableByUpkeepManager","type":"error"},{"inputs":[],"name":"OnlyPausedUpkeep","type":"error"},{"inputs":[],"name":"OnlySimulatedBackend","type":"error"},{"inputs":[],"name":"OnlyUnpausedUpkeep","type":"error"},{"inputs":[],"name":"ParameterLengthError","type":"error"},{"inputs":[],"name":"PaymentGreaterThanAllLINK","type":"error"},{"inputs":[],"name":"PipelineDataExceedsLimit","type":"error"},{"inputs":[],"name":"ReentrantCall","type":"error"},{"inputs":[],"name":"RegistryPaused","type":"error"},{"inputs":[],"name":"RepeatedSigner","type":"error"},{"inputs":[],"name":"RepeatedTransmitter","type":"error"},{"inputs":[{"internalType":"bytes","name":"reason","type":"bytes"}],"name":"TargetCheckReverted","type":"error"},{"inputs":[],"name":"TooManyOracles","type":"error"},{"inputs":[],"name":"TranscoderNotSet","type":"error"},{"inputs":[],"name":"UpkeepAlreadyExists","type":"error"},{"inputs":[],"name":"UpkeepCancelled","type":"error"},{"inputs":[],"name":"UpkeepNotCanceled","type":"error"},{"inputs":[],"name":"UpkeepNotNeeded","type":"error"},{"inputs":[],"name":"ValueNotChanged","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"trigger","type":"bytes"}],"name":"CancelledUpkeepReport","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"previousConfigBlockNumber","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"configDigest","type":"bytes32"},{"indexed":false,"internalType":"uint64","name":"configCount","type":"uint64"},{"indexed":false,"internalType":"address[]","name":"signers","type":"address[]"},{"indexed":false,"internalType":"address[]","name":"transmitters","type":"address[]"},{"indexed":false,"internalType":"uint8","name":"f","type":"uint8"},{"indexed":false,"internalType":"bytes","name":"onchainConfig","type":"bytes"},{"indexed":false,"internalType":"uint64","name":"offchainConfigVersion","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"offchainConfig","type":"bytes"}],"name":"ConfigSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint96","name":"amount","type":"uint96"}],"name":"FundsAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"to","type":"address"}],"name":"FundsWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"trigger","type":"bytes"}],"name":"InsufficientFundsUpkeepReport","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint96","name":"amount","type":"uint96"}],"name":"OwnerFundsWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"transmitters","type":"address[]"},{"indexed":false,"internalType":"address[]","name":"payees","type":"address[]"}],"name":"PayeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"transmitter","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"PayeeshipTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"transmitter","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"PayeeshipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"transmitter","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"address","name":"payee","type":"address"}],"name":"PaymentWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"trigger","type":"bytes"}],"name":"ReorgedUpkeepReport","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"trigger","type":"bytes"}],"name":"StaleUpkeepReport","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"configDigest","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"epoch","type":"uint32"}],"name":"Transmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"adminOffchainConfig","type":"bytes"}],"name":"UpkeepAdminOffchainConfigSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"UpkeepAdminTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"UpkeepAdminTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"uint64","name":"atBlockHeight","type":"uint64"}],"name":"UpkeepCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint96","name":"gasLimit","type":"uint96"}],"name":"UpkeepGasLimitSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"remainingBalance","type":"uint256"},{"indexed":false,"internalType":"address","name":"destination","type":"address"}],"name":"UpkeepMigrated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"offchainConfig","type":"bytes"}],"name":"UpkeepOffchainConfigSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"UpkeepPaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"bool","name":"success","type":"bool"},{"indexed":false,"internalType":"uint96","name":"totalPayment","type":"uint96"},{"indexed":false,"internalType":"uint256","name":"gasUsed","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gasOverhead","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"trigger","type":"bytes"}],"name":"UpkeepPerformed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"newPipelineData","type":"bytes"}],"name":"UpkeepPipelineDataSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"startingBalance","type":"uint256"},{"indexed":false,"internalType":"address","name":"importedFrom","type":"address"}],"name":"UpkeepReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"executeGas","type":"uint32"},{"indexed":false,"internalType":"address","name":"admin","type":"address"}],"name":"UpkeepRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"triggerConfig","type":"bytes"}],"name":"UpkeepTriggerConfigSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"UpkeepUnpaused","type":"event"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fallbackTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFastGasFeedAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLinkAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLinkNativeFeedAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMode","outputs":[{"internalType":"enum KeeperRegistryBase2_1.Mode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"upkeepId","type":"uint256"}],"name":"getTriggerType","outputs":[{"internalType":"enum KeeperRegistryBase2_1.Trigger","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"latestConfigDetails","outputs":[{"internalType":"uint32","name":"configCount","type":"uint32"},{"internalType":"uint32","name":"blockNumber","type":"uint32"},{"internalType":"bytes32","name":"configDigest","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestConfigDigestAndEpoch","outputs":[{"internalType":"bool","name":"scanLogs","type":"bool"},{"internalType":"bytes32","name":"configDigest","type":"bytes32"},{"internalType":"uint32","name":"epoch","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onTokenTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"signers","type":"address[]"},{"internalType":"address[]","name":"transmitters","type":"address[]"},{"internalType":"uint8","name":"f","type":"uint8"},{"internalType":"bytes","name":"onchainConfigBytes","type":"bytes"},{"internalType":"uint64","name":"offchainConfigVersion","type":"uint64"},{"internalType":"bytes","name":"offchainConfig","type":"bytes"}],"name":"setConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"performData","type":"bytes"}],"name":"simulatePerformUpkeep","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"uint256","name":"gasUsed","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[3]","name":"reportContext","type":"bytes32[3]"},{"internalType":"bytes","name":"rawReport","type":"bytes"},{"internalType":"bytes32[]","name":"rs","type":"bytes32[]"},{"internalType":"bytes32[]","name":"ss","type":"bytes32[]"},{"internalType":"bytes32","name":"rawVs","type":"bytes32"}],"name":"transmit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"typeAndVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract KeeperRegistryLogicB2_1","name":"logicB","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint96","name":"amount","type":"uint96"}],"name":"addFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"cancelUpkeep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes[]","name":"values","type":"bytes[]"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"checkCallback","outputs":[{"internalType":"bool","name":"upkeepNeeded","type":"bool"},{"internalType":"bytes","name":"performData","type":"bytes"},{"internalType":"enum KeeperRegistryBase2_1.UpkeepFailureReason","name":"upkeepFailureReason","type":"uint8"},{"internalType":"uint256","name":"gasUsed","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"checkData","type":"bytes"}],"name":"checkUpkeep","outputs":[{"internalType":"bool","name":"upkeepNeeded","type":"bool"},{"internalType":"bytes","name":"performData","type":"bytes"},{"internalType":"enum KeeperRegistryBase2_1.UpkeepFailureReason","name":"upkeepFailureReason","type":"uint8"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"uint256","name":"fastGasWei","type":"uint256"},{"internalType":"uint256","name":"linkNative","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"checkUpkeep","outputs":[{"internalType":"bool","name":"upkeepNeeded","type":"bool"},{"internalType":"bytes","name":"performData","type":"bytes"},{"internalType":"enum KeeperRegistryBase2_1.UpkeepFailureReason","name":"upkeepFailureReason","type":"uint8"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"uint256","name":"fastGasWei","type":"uint256"},{"internalType":"uint256","name":"linkNative","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"payload","type":"bytes"}],"name":"executeCallback","outputs":[{"internalType":"bool","name":"upkeepNeeded","type":"bool"},{"internalType":"bytes","name":"performData","type":"bytes"},{"internalType":"enum KeeperRegistryBase2_1.UpkeepFailureReason","name":"upkeepFailureReason","type":"uint8"},{"internalType":"uint256","name":"gasUsed","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"address","name":"destination","type":"address"}],"name":"migrateUpkeeps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"encodedUpkeeps","type":"bytes"}],"name":"receiveUpkeeps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"address","name":"admin","type":"address"},{"internalType":"enum KeeperRegistryBase2_1.Trigger","name":"triggerType","type":"uint8"},{"internalType":"bytes","name":"checkData","type":"bytes"},{"internalType":"bytes","name":"triggerConfig","type":"bytes"},{"internalType":"bytes","name":"offchainConfig","type":"bytes"}],"name":"registerUpkeep","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"address","name":"admin","type":"address"},{"internalType":"bytes","name":"checkData","type":"bytes"},{"internalType":"bytes","name":"offchainConfig","type":"bytes"}],"name":"registerUpkeep","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"triggerConfig","type":"bytes"}],"name":"setUpkeepTriggerConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"upkeepTranscoderVersion","outputs":[{"internalType":"enum UpkeepFormat","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"upkeepVersion","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum KeeperRegistryBase2_1.Mode","name":"mode","type":"uint8"},{"internalType":"address","name":"link","type":"address"},{"internalType":"address","name":"linkNativeFeed","type":"address"},{"internalType":"address","name":"fastGasFeed","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"transmitter","type":"address"}],"name":"acceptPayeeship","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"acceptUpkeepAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"startIndex","type":"uint256"},{"internalType":"uint256","name":"endIndex","type":"uint256"}],"name":"getActiveUpkeepIDs","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"startIndex","type":"uint256"},{"internalType":"uint256","name":"endIndex","type":"uint256"},{"internalType":"enum KeeperRegistryBase2_1.Trigger","name":"trigger","type":"uint8"}],"name":"getActiveUpkeepIDsByType","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"upkeepId","type":"uint256"}],"name":"getBlockTriggerConfig","outputs":[{"components":[{"internalType":"uint32","name":"checkCadance","type":"uint32"}],"internalType":"struct KeeperRegistryBase2_1.BlockTriggerConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"upkeepId","type":"uint256"}],"name":"getLogTriggerConfig","outputs":[{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint8","name":"filterSelector","type":"uint8"},{"internalType":"bytes32","name":"topic0","type":"bytes32"},{"internalType":"bytes32","name":"topic1","type":"bytes32"},{"internalType":"bytes32","name":"topic2","type":"bytes32"},{"internalType":"bytes32","name":"topic3","type":"bytes32"}],"internalType":"struct KeeperRegistryBase2_1.LogTriggerConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum KeeperRegistryBase2_1.Trigger","name":"triggerType","type":"uint8"},{"internalType":"uint32","name":"gasLimit","type":"uint32"}],"name":"getMaxPaymentForGas","outputs":[{"internalType":"uint96","name":"maxPayment","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getMinBalanceForUpkeep","outputs":[{"internalType":"uint96","name":"minBalance","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"peer","type":"address"}],"name":"getPeerRegistryMigrationPermission","outputs":[{"internalType":"enum KeeperRegistryBase2_1.MigrationPermission","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"query","type":"address"}],"name":"getSignerInfo","outputs":[{"internalType":"bool","name":"active","type":"bool"},{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getState","outputs":[{"components":[{"internalType":"uint32","name":"nonce","type":"uint32"},{"internalType":"uint96","name":"ownerLinkBalance","type":"uint96"},{"internalType":"uint256","name":"expectedLinkBalance","type":"uint256"},{"internalType":"uint96","name":"totalPremium","type":"uint96"},{"internalType":"uint256","name":"numUpkeeps","type":"uint256"},{"internalType":"uint32","name":"configCount","type":"uint32"},{"internalType":"uint32","name":"latestConfigBlockNumber","type":"uint32"},{"internalType":"bytes32","name":"latestConfigDigest","type":"bytes32"},{"internalType":"uint32","name":"latestEpoch","type":"uint32"},{"internalType":"bool","name":"paused","type":"bool"}],"internalType":"struct KeeperRegistryBase2_1.State","name":"state","type":"tuple"},{"components":[{"internalType":"uint32","name":"paymentPremiumPPB","type":"uint32"},{"internalType":"uint32","name":"flatFeeMicroLink","type":"uint32"},{"internalType":"uint32","name":"checkGasLimit","type":"uint32"},{"internalType":"uint24","name":"stalenessSeconds","type":"uint24"},{"internalType":"uint16","name":"gasCeilingMultiplier","type":"uint16"},{"internalType":"uint96","name":"minUpkeepSpend","type":"uint96"},{"internalType":"uint32","name":"maxPerformGas","type":"uint32"},{"internalType":"uint32","name":"maxCheckDataSize","type":"uint32"},{"internalType":"uint32","name":"maxPerformDataSize","type":"uint32"},{"internalType":"uint256","name":"fallbackGasPrice","type":"uint256"},{"internalType":"uint256","name":"fallbackLinkPrice","type":"uint256"},{"internalType":"address","name":"transcoder","type":"address"},{"internalType":"address[]","name":"registrars","type":"address[]"}],"internalType":"struct KeeperRegistryBase2_1.OnchainConfig","name":"config","type":"tuple"},{"internalType":"address[]","name":"signers","type":"address[]"},{"internalType":"address[]","name":"transmitters","type":"address[]"},{"internalType":"uint8","name":"f","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"query","type":"address"}],"name":"getTransmitterInfo","outputs":[{"internalType":"bool","name":"active","type":"bool"},{"internalType":"uint8","name":"index","type":"uint8"},{"internalType":"uint96","name":"balance","type":"uint96"},{"internalType":"uint96","name":"lastCollected","type":"uint96"},{"internalType":"address","name":"payee","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getUpkeep","outputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"uint32","name":"executeGas","type":"uint32"},{"internalType":"bytes","name":"checkData","type":"bytes"},{"internalType":"uint96","name":"balance","type":"uint96"},{"internalType":"address","name":"admin","type":"address"},{"internalType":"uint64","name":"maxValidBlocknumber","type":"uint64"},{"internalType":"uint32","name":"lastPerformedBlockNumber","type":"uint32"},{"internalType":"uint96","name":"amountSpent","type":"uint96"},{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"bytes","name":"offchainConfig","type":"bytes"}],"internalType":"struct KeeperRegistryBase2_1.UpkeepInfo","name":"upkeepInfo","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"upkeepId","type":"uint256"}],"name":"getUpkeepAdminOffchainConfig","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUpkeepManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"upkeepId","type":"uint256"}],"name":"getUpkeepTriggerConfig","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"pauseUpkeep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"payees","type":"address[]"}],"name":"setPayees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"peer","type":"address"},{"internalType":"enum KeeperRegistryBase2_1.MigrationPermission","name":"permission","type":"uint8"}],"name":"setPeerRegistryMigrationPermission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"upkeepId","type":"uint256"},{"internalType":"bytes","name":"newAdminOffchainConfig","type":"bytes"}],"name":"setUpkeepAdminOffchainConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint32","name":"gasLimit","type":"uint32"}],"name":"setUpkeepGasLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newUpkeepManager","type":"address"}],"name":"setUpkeepManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"config","type":"bytes"}],"name":"setUpkeepOffchainConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"newPipelineData","type":"bytes"}],"name":"setUpkeepPipelineData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"transmitter","type":"address"},{"internalType":"address","name":"proposed","type":"address"}],"name":"transferPayeeship","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposed","type":"address"}],"name":"transferUpkeepAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"unpauseUpkeep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawOwnerFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawPayment","outputs":[],"stateMutability":"nonpayable","type":"function"}] +[{"inputs":[{"internalType":"contract KeeperRegistryLogicA2_1","name":"logicA","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ArrayHasNoEntries","type":"error"},{"inputs":[],"name":"CannotCancel","type":"error"},{"inputs":[],"name":"ConfigDigestMismatch","type":"error"},{"inputs":[],"name":"DuplicateEntry","type":"error"},{"inputs":[],"name":"DuplicateSigners","type":"error"},{"inputs":[],"name":"GasLimitCanOnlyIncrease","type":"error"},{"inputs":[],"name":"GasLimitOutsideRange","type":"error"},{"inputs":[],"name":"IncorrectNumberOfFaultyOracles","type":"error"},{"inputs":[],"name":"IncorrectNumberOfSignatures","type":"error"},{"inputs":[],"name":"IncorrectNumberOfSigners","type":"error"},{"inputs":[],"name":"IndexOutOfRange","type":"error"},{"inputs":[],"name":"InsufficientFunds","type":"error"},{"inputs":[],"name":"InvalidDataLength","type":"error"},{"inputs":[],"name":"InvalidPayee","type":"error"},{"inputs":[],"name":"InvalidRecipient","type":"error"},{"inputs":[],"name":"InvalidReport","type":"error"},{"inputs":[],"name":"InvalidTrigger","type":"error"},{"inputs":[],"name":"InvalidTriggerType","type":"error"},{"inputs":[],"name":"MaxCheckDataSizeCanOnlyIncrease","type":"error"},{"inputs":[],"name":"MaxPerformDataSizeCanOnlyIncrease","type":"error"},{"inputs":[],"name":"MigrationNotPermitted","type":"error"},{"inputs":[],"name":"NotAContract","type":"error"},{"inputs":[],"name":"OnlyActiveSigners","type":"error"},{"inputs":[],"name":"OnlyActiveTransmitters","type":"error"},{"inputs":[],"name":"OnlyCallableByAdmin","type":"error"},{"inputs":[],"name":"OnlyCallableByLINKToken","type":"error"},{"inputs":[],"name":"OnlyCallableByOwnerOrAdmin","type":"error"},{"inputs":[],"name":"OnlyCallableByOwnerOrRegistrar","type":"error"},{"inputs":[],"name":"OnlyCallableByPayee","type":"error"},{"inputs":[],"name":"OnlyCallableByProposedAdmin","type":"error"},{"inputs":[],"name":"OnlyCallableByProposedPayee","type":"error"},{"inputs":[],"name":"OnlyCallableByUpkeepPrivilegeManager","type":"error"},{"inputs":[],"name":"OnlyPausedUpkeep","type":"error"},{"inputs":[],"name":"OnlySimulatedBackend","type":"error"},{"inputs":[],"name":"OnlyUnpausedUpkeep","type":"error"},{"inputs":[],"name":"ParameterLengthError","type":"error"},{"inputs":[],"name":"PaymentGreaterThanAllLINK","type":"error"},{"inputs":[],"name":"PipelineDataExceedsLimit","type":"error"},{"inputs":[],"name":"ReentrantCall","type":"error"},{"inputs":[],"name":"RegistryPaused","type":"error"},{"inputs":[],"name":"RepeatedSigner","type":"error"},{"inputs":[],"name":"RepeatedTransmitter","type":"error"},{"inputs":[{"internalType":"bytes","name":"reason","type":"bytes"}],"name":"TargetCheckReverted","type":"error"},{"inputs":[],"name":"TooManyOracles","type":"error"},{"inputs":[],"name":"TranscoderNotSet","type":"error"},{"inputs":[],"name":"UpkeepAlreadyExists","type":"error"},{"inputs":[],"name":"UpkeepCancelled","type":"error"},{"inputs":[],"name":"UpkeepNotCanceled","type":"error"},{"inputs":[],"name":"UpkeepNotNeeded","type":"error"},{"inputs":[],"name":"ValueNotChanged","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"trigger","type":"bytes"}],"name":"CancelledUpkeepReport","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"previousConfigBlockNumber","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"configDigest","type":"bytes32"},{"indexed":false,"internalType":"uint64","name":"configCount","type":"uint64"},{"indexed":false,"internalType":"address[]","name":"signers","type":"address[]"},{"indexed":false,"internalType":"address[]","name":"transmitters","type":"address[]"},{"indexed":false,"internalType":"uint8","name":"f","type":"uint8"},{"indexed":false,"internalType":"bytes","name":"onchainConfig","type":"bytes"},{"indexed":false,"internalType":"uint64","name":"offchainConfigVersion","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"offchainConfig","type":"bytes"}],"name":"ConfigSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint96","name":"amount","type":"uint96"}],"name":"FundsAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"to","type":"address"}],"name":"FundsWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"trigger","type":"bytes"}],"name":"InsufficientFundsUpkeepReport","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint96","name":"amount","type":"uint96"}],"name":"OwnerFundsWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"transmitters","type":"address[]"},{"indexed":false,"internalType":"address[]","name":"payees","type":"address[]"}],"name":"PayeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"transmitter","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"PayeeshipTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"transmitter","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"PayeeshipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"transmitter","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"address","name":"payee","type":"address"}],"name":"PaymentWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"trigger","type":"bytes"}],"name":"ReorgedUpkeepReport","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"trigger","type":"bytes"}],"name":"StaleUpkeepReport","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"configDigest","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"epoch","type":"uint32"}],"name":"Transmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"UpkeepAdminTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"UpkeepAdminTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"uint64","name":"atBlockHeight","type":"uint64"}],"name":"UpkeepCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint96","name":"gasLimit","type":"uint96"}],"name":"UpkeepGasLimitSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"remainingBalance","type":"uint256"},{"indexed":false,"internalType":"address","name":"destination","type":"address"}],"name":"UpkeepMigrated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"offchainConfig","type":"bytes"}],"name":"UpkeepOffchainConfigSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"UpkeepPaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"bool","name":"success","type":"bool"},{"indexed":false,"internalType":"uint96","name":"totalPayment","type":"uint96"},{"indexed":false,"internalType":"uint256","name":"gasUsed","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gasOverhead","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"trigger","type":"bytes"}],"name":"UpkeepPerformed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"newPipelineData","type":"bytes"}],"name":"UpkeepPipelineDataSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"privilegeConfig","type":"bytes"}],"name":"UpkeepPrivilegeConfigSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"startingBalance","type":"uint256"},{"indexed":false,"internalType":"address","name":"importedFrom","type":"address"}],"name":"UpkeepReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"executeGas","type":"uint32"},{"indexed":false,"internalType":"address","name":"admin","type":"address"}],"name":"UpkeepRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"triggerConfig","type":"bytes"}],"name":"UpkeepTriggerConfigSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"UpkeepUnpaused","type":"event"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fallbackTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFastGasFeedAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLinkAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLinkNativeFeedAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMode","outputs":[{"internalType":"enum KeeperRegistryBase2_1.Mode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"upkeepId","type":"uint256"}],"name":"getTriggerType","outputs":[{"internalType":"enum KeeperRegistryBase2_1.Trigger","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"latestConfigDetails","outputs":[{"internalType":"uint32","name":"configCount","type":"uint32"},{"internalType":"uint32","name":"blockNumber","type":"uint32"},{"internalType":"bytes32","name":"configDigest","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestConfigDigestAndEpoch","outputs":[{"internalType":"bool","name":"scanLogs","type":"bool"},{"internalType":"bytes32","name":"configDigest","type":"bytes32"},{"internalType":"uint32","name":"epoch","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onTokenTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"signers","type":"address[]"},{"internalType":"address[]","name":"transmitters","type":"address[]"},{"internalType":"uint8","name":"f","type":"uint8"},{"internalType":"bytes","name":"onchainConfigBytes","type":"bytes"},{"internalType":"uint64","name":"offchainConfigVersion","type":"uint64"},{"internalType":"bytes","name":"offchainConfig","type":"bytes"}],"name":"setConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"performData","type":"bytes"}],"name":"simulatePerformUpkeep","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"uint256","name":"gasUsed","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[3]","name":"reportContext","type":"bytes32[3]"},{"internalType":"bytes","name":"rawReport","type":"bytes"},{"internalType":"bytes32[]","name":"rs","type":"bytes32[]"},{"internalType":"bytes32[]","name":"ss","type":"bytes32[]"},{"internalType":"bytes32","name":"rawVs","type":"bytes32"}],"name":"transmit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"typeAndVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract KeeperRegistryLogicB2_1","name":"logicB","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint96","name":"amount","type":"uint96"}],"name":"addFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"cancelUpkeep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes[]","name":"values","type":"bytes[]"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"checkCallback","outputs":[{"internalType":"bool","name":"upkeepNeeded","type":"bool"},{"internalType":"bytes","name":"performData","type":"bytes"},{"internalType":"enum KeeperRegistryBase2_1.UpkeepFailureReason","name":"upkeepFailureReason","type":"uint8"},{"internalType":"uint256","name":"gasUsed","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"checkData","type":"bytes"}],"name":"checkUpkeep","outputs":[{"internalType":"bool","name":"upkeepNeeded","type":"bool"},{"internalType":"bytes","name":"performData","type":"bytes"},{"internalType":"enum KeeperRegistryBase2_1.UpkeepFailureReason","name":"upkeepFailureReason","type":"uint8"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"uint256","name":"fastGasWei","type":"uint256"},{"internalType":"uint256","name":"linkNative","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"checkUpkeep","outputs":[{"internalType":"bool","name":"upkeepNeeded","type":"bool"},{"internalType":"bytes","name":"performData","type":"bytes"},{"internalType":"enum KeeperRegistryBase2_1.UpkeepFailureReason","name":"upkeepFailureReason","type":"uint8"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"uint256","name":"fastGasWei","type":"uint256"},{"internalType":"uint256","name":"linkNative","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"payload","type":"bytes"}],"name":"executeCallback","outputs":[{"internalType":"bool","name":"upkeepNeeded","type":"bool"},{"internalType":"bytes","name":"performData","type":"bytes"},{"internalType":"enum KeeperRegistryBase2_1.UpkeepFailureReason","name":"upkeepFailureReason","type":"uint8"},{"internalType":"uint256","name":"gasUsed","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"address","name":"destination","type":"address"}],"name":"migrateUpkeeps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"encodedUpkeeps","type":"bytes"}],"name":"receiveUpkeeps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"address","name":"admin","type":"address"},{"internalType":"enum KeeperRegistryBase2_1.Trigger","name":"triggerType","type":"uint8"},{"internalType":"bytes","name":"checkData","type":"bytes"},{"internalType":"bytes","name":"triggerConfig","type":"bytes"},{"internalType":"bytes","name":"offchainConfig","type":"bytes"}],"name":"registerUpkeep","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"address","name":"admin","type":"address"},{"internalType":"bytes","name":"checkData","type":"bytes"},{"internalType":"bytes","name":"offchainConfig","type":"bytes"}],"name":"registerUpkeep","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"triggerConfig","type":"bytes"}],"name":"setUpkeepTriggerConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"upkeepTranscoderVersion","outputs":[{"internalType":"enum UpkeepFormat","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"upkeepVersion","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum KeeperRegistryBase2_1.Mode","name":"mode","type":"uint8"},{"internalType":"address","name":"link","type":"address"},{"internalType":"address","name":"linkNativeFeed","type":"address"},{"internalType":"address","name":"fastGasFeed","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"transmitter","type":"address"}],"name":"acceptPayeeship","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"acceptUpkeepAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"startIndex","type":"uint256"},{"internalType":"uint256","name":"endIndex","type":"uint256"}],"name":"getActiveUpkeepIDs","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"startIndex","type":"uint256"},{"internalType":"uint256","name":"endIndex","type":"uint256"},{"internalType":"enum KeeperRegistryBase2_1.Trigger","name":"trigger","type":"uint8"}],"name":"getActiveUpkeepIDsByType","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"upkeepId","type":"uint256"}],"name":"getBlockTriggerConfig","outputs":[{"components":[{"internalType":"uint32","name":"checkCadance","type":"uint32"}],"internalType":"struct KeeperRegistryBase2_1.BlockTriggerConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"upkeepId","type":"uint256"}],"name":"getLogTriggerConfig","outputs":[{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint8","name":"filterSelector","type":"uint8"},{"internalType":"bytes32","name":"topic0","type":"bytes32"},{"internalType":"bytes32","name":"topic1","type":"bytes32"},{"internalType":"bytes32","name":"topic2","type":"bytes32"},{"internalType":"bytes32","name":"topic3","type":"bytes32"}],"internalType":"struct KeeperRegistryBase2_1.LogTriggerConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum KeeperRegistryBase2_1.Trigger","name":"triggerType","type":"uint8"},{"internalType":"uint32","name":"gasLimit","type":"uint32"}],"name":"getMaxPaymentForGas","outputs":[{"internalType":"uint96","name":"maxPayment","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getMinBalanceForUpkeep","outputs":[{"internalType":"uint96","name":"minBalance","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"peer","type":"address"}],"name":"getPeerRegistryMigrationPermission","outputs":[{"internalType":"enum KeeperRegistryBase2_1.MigrationPermission","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"query","type":"address"}],"name":"getSignerInfo","outputs":[{"internalType":"bool","name":"active","type":"bool"},{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getState","outputs":[{"components":[{"internalType":"uint32","name":"nonce","type":"uint32"},{"internalType":"uint96","name":"ownerLinkBalance","type":"uint96"},{"internalType":"uint256","name":"expectedLinkBalance","type":"uint256"},{"internalType":"uint96","name":"totalPremium","type":"uint96"},{"internalType":"uint256","name":"numUpkeeps","type":"uint256"},{"internalType":"uint32","name":"configCount","type":"uint32"},{"internalType":"uint32","name":"latestConfigBlockNumber","type":"uint32"},{"internalType":"bytes32","name":"latestConfigDigest","type":"bytes32"},{"internalType":"uint32","name":"latestEpoch","type":"uint32"},{"internalType":"bool","name":"paused","type":"bool"}],"internalType":"struct KeeperRegistryBase2_1.State","name":"state","type":"tuple"},{"components":[{"internalType":"uint32","name":"paymentPremiumPPB","type":"uint32"},{"internalType":"uint32","name":"flatFeeMicroLink","type":"uint32"},{"internalType":"uint32","name":"checkGasLimit","type":"uint32"},{"internalType":"uint24","name":"stalenessSeconds","type":"uint24"},{"internalType":"uint16","name":"gasCeilingMultiplier","type":"uint16"},{"internalType":"uint96","name":"minUpkeepSpend","type":"uint96"},{"internalType":"uint32","name":"maxPerformGas","type":"uint32"},{"internalType":"uint32","name":"maxCheckDataSize","type":"uint32"},{"internalType":"uint32","name":"maxPerformDataSize","type":"uint32"},{"internalType":"uint256","name":"fallbackGasPrice","type":"uint256"},{"internalType":"uint256","name":"fallbackLinkPrice","type":"uint256"},{"internalType":"address","name":"transcoder","type":"address"},{"internalType":"address[]","name":"registrars","type":"address[]"},{"internalType":"address","name":"upkeepPrivilegeManager","type":"address"}],"internalType":"struct KeeperRegistryBase2_1.OnchainConfig","name":"config","type":"tuple"},{"internalType":"address[]","name":"signers","type":"address[]"},{"internalType":"address[]","name":"transmitters","type":"address[]"},{"internalType":"uint8","name":"f","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"query","type":"address"}],"name":"getTransmitterInfo","outputs":[{"internalType":"bool","name":"active","type":"bool"},{"internalType":"uint8","name":"index","type":"uint8"},{"internalType":"uint96","name":"balance","type":"uint96"},{"internalType":"uint96","name":"lastCollected","type":"uint96"},{"internalType":"address","name":"payee","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getUpkeep","outputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"uint32","name":"executeGas","type":"uint32"},{"internalType":"bytes","name":"checkData","type":"bytes"},{"internalType":"uint96","name":"balance","type":"uint96"},{"internalType":"address","name":"admin","type":"address"},{"internalType":"uint64","name":"maxValidBlocknumber","type":"uint64"},{"internalType":"uint32","name":"lastPerformedBlockNumber","type":"uint32"},{"internalType":"uint96","name":"amountSpent","type":"uint96"},{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"bytes","name":"offchainConfig","type":"bytes"}],"internalType":"struct KeeperRegistryBase2_1.UpkeepInfo","name":"upkeepInfo","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"upkeepId","type":"uint256"}],"name":"getUpkeepPrivilegeConfig","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"upkeepId","type":"uint256"}],"name":"getUpkeepTriggerConfig","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"pauseUpkeep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"payees","type":"address[]"}],"name":"setPayees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"peer","type":"address"},{"internalType":"enum KeeperRegistryBase2_1.MigrationPermission","name":"permission","type":"uint8"}],"name":"setPeerRegistryMigrationPermission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint32","name":"gasLimit","type":"uint32"}],"name":"setUpkeepGasLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"config","type":"bytes"}],"name":"setUpkeepOffchainConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"newPipelineData","type":"bytes"}],"name":"setUpkeepPipelineData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"upkeepId","type":"uint256"},{"internalType":"bytes","name":"newPrivilegeConfig","type":"bytes"}],"name":"setUpkeepPrivilegeConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"transmitter","type":"address"},{"internalType":"address","name":"proposed","type":"address"}],"name":"transferPayeeship","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposed","type":"address"}],"name":"transferUpkeepAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"unpauseUpkeep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawOwnerFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawPayment","outputs":[],"stateMutability":"nonpayable","type":"function"}] */ diff --git a/contracts/test/v0.8/automation/KeeperRegistry2_1.test.ts b/contracts/test/v0.8/automation/KeeperRegistry2_1.test.ts index 34b1bab00e9..c15ba498024 100644 --- a/contracts/test/v0.8/automation/KeeperRegistry2_1.test.ts +++ b/contracts/test/v0.8/automation/KeeperRegistry2_1.test.ts @@ -216,6 +216,7 @@ type OnchainConfig = { fallbackLinkPrice: BigNumberish transcoder: string registrars: string[] + upkeepPrivilegeManager: string } const encodeConfig = (config: OnchainConfig) => { @@ -224,7 +225,7 @@ const encodeConfig = (config: OnchainConfig) => { 'tuple(uint32 paymentPremiumPPB,uint32 flatFeeMicroLink,uint32 checkGasLimit,uint24 stalenessSeconds\ ,uint16 gasCeilingMultiplier,uint96 minUpkeepSpend,uint32 maxPerformGas,uint32 maxCheckDataSize,\ uint32 maxPerformDataSize,uint256 fallbackGasPrice,uint256 fallbackLinkPrice,address transcoder,\ - address[] registrars)', + address[] registrars,address upkeepPrivilegeManager)', ], [config], ) @@ -455,6 +456,7 @@ describe('KeeperRegistry2_1', () => { let signerAddresses: string[] let config: any let baseConfig: Parameters + let upkeepManager: string before(async () => { personas = (await getUsers()).personas @@ -497,6 +499,7 @@ describe('KeeperRegistry2_1', () => { payee3 = personas.Nick payee4 = personas.Eddy payee5 = personas.Carol + upkeepManager = await personas.Norbert.getAddress() // signers signer1 = new ethers.Wallet( '0x7777777000000000000000000000000000000000000000000000000000000001', @@ -664,6 +667,7 @@ describe('KeeperRegistry2_1', () => { fallbackLinkPrice, transcoder: transcoder.address, registrars: [], + upkeepPrivilegeManager: upkeepManager, }), offchainVersion, offchainBytes, @@ -906,6 +910,7 @@ describe('KeeperRegistry2_1', () => { fallbackLinkPrice, transcoder: transcoder.address, registrars: [], + upkeepPrivilegeManager: upkeepManager, } baseConfig = [ @@ -3363,6 +3368,7 @@ describe('KeeperRegistry2_1', () => { const fbLinkEth = BigNumber.from(8) const newTranscoder = randomAddress() const newRegistrars = [randomAddress(), randomAddress()] + const upkeepManager = randomAddress() const newConfig: OnchainConfig = { paymentPremiumPPB: payment, @@ -3378,6 +3384,7 @@ describe('KeeperRegistry2_1', () => { fallbackLinkPrice: fbLinkEth, transcoder: newTranscoder, registrars: newRegistrars, + upkeepPrivilegeManager: upkeepManager, } it('reverts when called by anyone but the proposed owner', async () => { @@ -3456,6 +3463,7 @@ describe('KeeperRegistry2_1', () => { assert.equal(updatedConfig.transcoder, newTranscoder) assert.deepEqual(updatedConfig.registrars, newRegistrars) + assert.equal(updatedConfig.upkeepPrivilegeManager, upkeepManager) }) it('emits an event', async () => { @@ -4369,6 +4377,7 @@ describe('KeeperRegistry2_1', () => { fallbackLinkPrice, transcoder: transcoder.address, registrars: [], + upkeepPrivilegeManager: upkeepManager, }), offchainVersion, offchainBytes, @@ -4997,6 +5006,7 @@ describe('KeeperRegistry2_1', () => { fallbackLinkPrice, transcoder: transcoder.address, registrars: [], + upkeepPrivilegeManager: upkeepManager, }), offchainVersion, offchainBytes, @@ -5048,6 +5058,7 @@ describe('KeeperRegistry2_1', () => { fallbackLinkPrice, transcoder: transcoder.address, registrars: [], + upkeepPrivilegeManager: upkeepManager, }), offchainVersion, offchainBytes, @@ -5094,6 +5105,7 @@ describe('KeeperRegistry2_1', () => { fallbackLinkPrice, transcoder: transcoder.address, registrars: [], + upkeepPrivilegeManager: upkeepManager, }), offchainVersion, offchainBytes, @@ -5252,52 +5264,28 @@ describe('KeeperRegistry2_1', () => { }) }) - describe('#setUpkeepManager() / #getUpkeepManager()', () => { - it('reverts when non owner tries to set upkeep manager', async () => { + describe('#setUpkeepPrivilegeConfig() / #getUpkeepPrivilegeConfig()', () => { + it('reverts when non manager tries to set privilege config', async () => { await evmRevert( - registry.connect(payee1).setUpkeepManager(await payee2.getAddress()), - 'Only callable by owner', - ) - }) - - it('returns contract owner as the initial upkeep manager', async () => { - assert.equal(await registry.getUpkeepManager(), await registry.owner()) - }) - - it('allows owner to set a new upkeep manager', async () => { - await registry.connect(owner).setUpkeepManager(await payee2.getAddress()) - assert.equal(await registry.getUpkeepManager(), await payee2.getAddress()) - }) - }) - - describe('#setUpkeepAdminOffchainConfig() / #getUpkeepAdminOffchainConfig()', () => { - beforeEach(async () => { - await registry.connect(owner).setUpkeepManager(await payee1.getAddress()) - }) - - it('reverts when non manager tries to set admin offchain config', async () => { - await evmRevert( - registry - .connect(payee2) - .setUpkeepAdminOffchainConfig(upkeepId, '0x1234'), - 'OnlyCallableByUpkeepManager()', + registry.connect(payee3).setUpkeepPrivilegeConfig(upkeepId, '0x1234'), + 'OnlyCallableByUpkeepPrivilegeManager()', ) }) - it('returns empty bytes for upkeep admin offchain config before setting', async () => { - const cfg = await registry.getUpkeepAdminOffchainConfig(upkeepId) + it('returns empty bytes for upkeep privilege config before setting', async () => { + const cfg = await registry.getUpkeepPrivilegeConfig(upkeepId) assert.equal(cfg, '0x') }) - it('allows upkeep manager to set admin offchain config', async () => { + it('allows upkeep manager to set privilege config', async () => { const tx = await registry - .connect(payee1) - .setUpkeepAdminOffchainConfig(upkeepId, '0x1234') + .connect(personas.Norbert) + .setUpkeepPrivilegeConfig(upkeepId, '0x1234') await expect(tx) - .to.emit(registry, 'UpkeepAdminOffchainConfigSet') + .to.emit(registry, 'UpkeepPrivilegeConfigSet') .withArgs(upkeepId, '0x1234') - const cfg = await registry.getUpkeepAdminOffchainConfig(upkeepId) + const cfg = await registry.getUpkeepPrivilegeConfig(upkeepId) assert.equal(cfg, '0x1234') }) }) diff --git a/core/gethwrappers/generated/i_keeper_registry_master_wrapper_2_1/i_keeper_registry_master_wrapper_2_1.go b/core/gethwrappers/generated/i_keeper_registry_master_wrapper_2_1/i_keeper_registry_master_wrapper_2_1.go index 44a7b859a14..fe46844f25e 100644 --- a/core/gethwrappers/generated/i_keeper_registry_master_wrapper_2_1/i_keeper_registry_master_wrapper_2_1.go +++ b/core/gethwrappers/generated/i_keeper_registry_master_wrapper_2_1/i_keeper_registry_master_wrapper_2_1.go @@ -44,19 +44,20 @@ type KeeperRegistryBase21LogTriggerConfig struct { } type KeeperRegistryBase21OnchainConfig struct { - PaymentPremiumPPB uint32 - FlatFeeMicroLink uint32 - CheckGasLimit uint32 - StalenessSeconds *big.Int - GasCeilingMultiplier uint16 - MinUpkeepSpend *big.Int - MaxPerformGas uint32 - MaxCheckDataSize uint32 - MaxPerformDataSize uint32 - FallbackGasPrice *big.Int - FallbackLinkPrice *big.Int - Transcoder common.Address - Registrars []common.Address + PaymentPremiumPPB uint32 + FlatFeeMicroLink uint32 + CheckGasLimit uint32 + StalenessSeconds *big.Int + GasCeilingMultiplier uint16 + MinUpkeepSpend *big.Int + MaxPerformGas uint32 + MaxCheckDataSize uint32 + MaxPerformDataSize uint32 + FallbackGasPrice *big.Int + FallbackLinkPrice *big.Int + Transcoder common.Address + Registrars []common.Address + UpkeepPrivilegeManager common.Address } type KeeperRegistryBase21State struct { @@ -87,7 +88,7 @@ type KeeperRegistryBase21UpkeepInfo struct { } var IKeeperRegistryMasterMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"ArrayHasNoEntries\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotCancel\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ConfigDigestMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateEntry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitOutsideRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfFaultyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDataLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReport\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTrigger\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTriggerType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxCheckDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerformDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MigrationNotPermitted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveTransmitters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByLINKToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrRegistrar\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByUpkeepManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySimulatedBackend\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyUnpausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ParameterLengthError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PaymentGreaterThanAllLINK\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PipelineDataExceedsLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RegistryPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedTransmitter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"TargetCheckReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TranscoderNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepCancelled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotCanceled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotNeeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValueNotChanged\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"CancelledUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"previousConfigBlockNumber\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"configCount\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"onchainConfig\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"FundsAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"FundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"InsufficientFundsUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"OwnerFundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"payees\",\"type\":\"address[]\"}],\"name\":\"PayeesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payee\",\"type\":\"address\"}],\"name\":\"PaymentWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"ReorgedUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"StaleUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"epoch\",\"type\":\"uint32\"}],\"name\":\"Transmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"adminOffchainConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepAdminOffchainConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"atBlockHeight\",\"type\":\"uint64\"}],\"name\":\"UpkeepCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"gasLimit\",\"type\":\"uint96\"}],\"name\":\"UpkeepGasLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"UpkeepMigrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepOffchainConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"totalPayment\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasOverhead\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"UpkeepPerformed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newPipelineData\",\"type\":\"bytes\"}],\"name\":\"UpkeepPipelineDataSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"importedFrom\",\"type\":\"address\"}],\"name\":\"UpkeepReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"executeGas\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"UpkeepRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"triggerConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepTriggerConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepUnpaused\",\"type\":\"event\"},{\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"}],\"name\":\"acceptPayeeship\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"acceptUpkeepAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"addFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"cancelUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"checkCallback\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"upkeepNeeded\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"upkeepFailureReason\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"}],\"name\":\"checkUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"upkeepNeeded\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"upkeepFailureReason\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fastGasWei\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"linkNative\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"checkUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"upkeepNeeded\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"upkeepFailureReason\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fastGasWei\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"linkNative\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"executeCallback\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"upkeepNeeded\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"upkeepFailureReason\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fallbackTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endIndex\",\"type\":\"uint256\"}],\"name\":\"getActiveUpkeepIDs\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"trigger\",\"type\":\"uint8\"}],\"name\":\"getActiveUpkeepIDsByType\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getBlockTriggerConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"checkCadance\",\"type\":\"uint32\"}],\"internalType\":\"structKeeperRegistryBase2_1.BlockTriggerConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFastGasFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkNativeFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getLogTriggerConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"filterSelector\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"topic0\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"topic1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"topic2\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"topic3\",\"type\":\"bytes32\"}],\"internalType\":\"structKeeperRegistryBase2_1.LogTriggerConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"triggerType\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"name\":\"getMaxPaymentForGas\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"maxPayment\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getMinBalanceForUpkeep\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"minBalance\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMode\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"peer\",\"type\":\"address\"}],\"name\":\"getPeerRegistryMigrationPermission\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"query\",\"type\":\"address\"}],\"name\":\"getSignerInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"ownerLinkBalance\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"expectedLinkBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"totalPremium\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"numUpkeeps\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"latestConfigBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"latestConfigDigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"latestEpoch\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"internalType\":\"structKeeperRegistryBase2_1.State\",\"name\":\"state\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"paymentPremiumPPB\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"flatFeeMicroLink\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"checkGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"stalenessSeconds\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"gasCeilingMultiplier\",\"type\":\"uint16\"},{\"internalType\":\"uint96\",\"name\":\"minUpkeepSpend\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"maxPerformGas\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxCheckDataSize\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPerformDataSize\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"fallbackGasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fallbackLinkPrice\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"transcoder\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"registrars\",\"type\":\"address[]\"}],\"internalType\":\"structKeeperRegistryBase2_1.OnchainConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"query\",\"type\":\"address\"}],\"name\":\"getTransmitterInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"},{\"internalType\":\"uint96\",\"name\":\"balance\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"lastCollected\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"payee\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getTriggerType\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getUpkeep\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"executeGas\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"},{\"internalType\":\"uint96\",\"name\":\"balance\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"maxValidBlocknumber\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"lastPerformedBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"amountSpent\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"internalType\":\"structKeeperRegistryBase2_1.UpkeepInfo\",\"name\":\"upkeepInfo\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getUpkeepAdminOffchainConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUpkeepManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getUpkeepTriggerConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfigDetails\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfigDigestAndEpoch\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"scanLogs\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"epoch\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"migrateUpkeeps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onTokenTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"pauseUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedUpkeeps\",\"type\":\"bytes\"}],\"name\":\"receiveUpkeeps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recoverFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"triggerType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"triggerConfig\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"registerUpkeep\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"registerUpkeep\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"onchainConfigBytes\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"payees\",\"type\":\"address[]\"}],\"name\":\"setPayees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"peer\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"permission\",\"type\":\"uint8\"}],\"name\":\"setPeerRegistryMigrationPermission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"newAdminOffchainConfig\",\"type\":\"bytes\"}],\"name\":\"setUpkeepAdminOffchainConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"name\":\"setUpkeepGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newUpkeepManager\",\"type\":\"address\"}],\"name\":\"setUpkeepManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"name\":\"setUpkeepOffchainConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"newPipelineData\",\"type\":\"bytes\"}],\"name\":\"setUpkeepPipelineData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"triggerConfig\",\"type\":\"bytes\"}],\"name\":\"setUpkeepTriggerConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"}],\"name\":\"simulatePerformUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposed\",\"type\":\"address\"}],\"name\":\"transferPayeeship\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"proposed\",\"type\":\"address\"}],\"name\":\"transferUpkeepAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[3]\",\"name\":\"reportContext\",\"type\":\"bytes32[3]\"},{\"internalType\":\"bytes\",\"name\":\"rawReport\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"rs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"ss\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"rawVs\",\"type\":\"bytes32\"}],\"name\":\"transmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"unpauseUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"upkeepTranscoderVersion\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"upkeepVersion\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawOwnerFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[],\"name\":\"ArrayHasNoEntries\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotCancel\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ConfigDigestMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateEntry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitOutsideRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfFaultyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDataLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReport\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTrigger\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTriggerType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxCheckDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerformDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MigrationNotPermitted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveTransmitters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByLINKToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrRegistrar\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByUpkeepPrivilegeManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySimulatedBackend\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyUnpausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ParameterLengthError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PaymentGreaterThanAllLINK\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PipelineDataExceedsLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RegistryPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedTransmitter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"TargetCheckReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TranscoderNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepCancelled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotCanceled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotNeeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValueNotChanged\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"CancelledUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"previousConfigBlockNumber\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"configCount\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"onchainConfig\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"FundsAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"FundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"InsufficientFundsUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"OwnerFundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"payees\",\"type\":\"address[]\"}],\"name\":\"PayeesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payee\",\"type\":\"address\"}],\"name\":\"PaymentWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"ReorgedUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"StaleUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"epoch\",\"type\":\"uint32\"}],\"name\":\"Transmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"atBlockHeight\",\"type\":\"uint64\"}],\"name\":\"UpkeepCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"gasLimit\",\"type\":\"uint96\"}],\"name\":\"UpkeepGasLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"UpkeepMigrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepOffchainConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"totalPayment\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasOverhead\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"UpkeepPerformed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newPipelineData\",\"type\":\"bytes\"}],\"name\":\"UpkeepPipelineDataSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"privilegeConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepPrivilegeConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"importedFrom\",\"type\":\"address\"}],\"name\":\"UpkeepReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"executeGas\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"UpkeepRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"triggerConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepTriggerConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepUnpaused\",\"type\":\"event\"},{\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"}],\"name\":\"acceptPayeeship\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"acceptUpkeepAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"addFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"cancelUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"checkCallback\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"upkeepNeeded\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"upkeepFailureReason\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"}],\"name\":\"checkUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"upkeepNeeded\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"upkeepFailureReason\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fastGasWei\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"linkNative\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"checkUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"upkeepNeeded\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"upkeepFailureReason\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fastGasWei\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"linkNative\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"executeCallback\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"upkeepNeeded\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"upkeepFailureReason\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fallbackTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endIndex\",\"type\":\"uint256\"}],\"name\":\"getActiveUpkeepIDs\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"trigger\",\"type\":\"uint8\"}],\"name\":\"getActiveUpkeepIDsByType\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getBlockTriggerConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"checkCadance\",\"type\":\"uint32\"}],\"internalType\":\"structKeeperRegistryBase2_1.BlockTriggerConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFastGasFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkNativeFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getLogTriggerConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"filterSelector\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"topic0\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"topic1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"topic2\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"topic3\",\"type\":\"bytes32\"}],\"internalType\":\"structKeeperRegistryBase2_1.LogTriggerConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"triggerType\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"name\":\"getMaxPaymentForGas\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"maxPayment\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getMinBalanceForUpkeep\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"minBalance\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMode\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"peer\",\"type\":\"address\"}],\"name\":\"getPeerRegistryMigrationPermission\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"query\",\"type\":\"address\"}],\"name\":\"getSignerInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"ownerLinkBalance\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"expectedLinkBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"totalPremium\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"numUpkeeps\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"latestConfigBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"latestConfigDigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"latestEpoch\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"internalType\":\"structKeeperRegistryBase2_1.State\",\"name\":\"state\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"paymentPremiumPPB\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"flatFeeMicroLink\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"checkGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"stalenessSeconds\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"gasCeilingMultiplier\",\"type\":\"uint16\"},{\"internalType\":\"uint96\",\"name\":\"minUpkeepSpend\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"maxPerformGas\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxCheckDataSize\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPerformDataSize\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"fallbackGasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fallbackLinkPrice\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"transcoder\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"registrars\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"upkeepPrivilegeManager\",\"type\":\"address\"}],\"internalType\":\"structKeeperRegistryBase2_1.OnchainConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"query\",\"type\":\"address\"}],\"name\":\"getTransmitterInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"},{\"internalType\":\"uint96\",\"name\":\"balance\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"lastCollected\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"payee\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getTriggerType\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getUpkeep\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"executeGas\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"},{\"internalType\":\"uint96\",\"name\":\"balance\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"maxValidBlocknumber\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"lastPerformedBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"amountSpent\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"internalType\":\"structKeeperRegistryBase2_1.UpkeepInfo\",\"name\":\"upkeepInfo\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getUpkeepPrivilegeConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getUpkeepTriggerConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfigDetails\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfigDigestAndEpoch\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"scanLogs\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"epoch\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"migrateUpkeeps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onTokenTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"pauseUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedUpkeeps\",\"type\":\"bytes\"}],\"name\":\"receiveUpkeeps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recoverFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"triggerType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"triggerConfig\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"registerUpkeep\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"registerUpkeep\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"onchainConfigBytes\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"payees\",\"type\":\"address[]\"}],\"name\":\"setPayees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"peer\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"permission\",\"type\":\"uint8\"}],\"name\":\"setPeerRegistryMigrationPermission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"name\":\"setUpkeepGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"name\":\"setUpkeepOffchainConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"newPipelineData\",\"type\":\"bytes\"}],\"name\":\"setUpkeepPipelineData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"newPrivilegeConfig\",\"type\":\"bytes\"}],\"name\":\"setUpkeepPrivilegeConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"triggerConfig\",\"type\":\"bytes\"}],\"name\":\"setUpkeepTriggerConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"}],\"name\":\"simulatePerformUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposed\",\"type\":\"address\"}],\"name\":\"transferPayeeship\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"proposed\",\"type\":\"address\"}],\"name\":\"transferUpkeepAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[3]\",\"name\":\"reportContext\",\"type\":\"bytes32[3]\"},{\"internalType\":\"bytes\",\"name\":\"rawReport\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"rs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"ss\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"rawVs\",\"type\":\"bytes32\"}],\"name\":\"transmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"unpauseUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"upkeepTranscoderVersion\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"upkeepVersion\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawOwnerFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } var IKeeperRegistryMasterABI = IKeeperRegistryMasterMetaData.ABI @@ -612,9 +613,9 @@ func (_IKeeperRegistryMaster *IKeeperRegistryMasterCallerSession) GetUpkeep(id * return _IKeeperRegistryMaster.Contract.GetUpkeep(&_IKeeperRegistryMaster.CallOpts, id) } -func (_IKeeperRegistryMaster *IKeeperRegistryMasterCaller) GetUpkeepAdminOffchainConfig(opts *bind.CallOpts, upkeepId *big.Int) ([]byte, error) { +func (_IKeeperRegistryMaster *IKeeperRegistryMasterCaller) GetUpkeepPrivilegeConfig(opts *bind.CallOpts, upkeepId *big.Int) ([]byte, error) { var out []interface{} - err := _IKeeperRegistryMaster.contract.Call(opts, &out, "getUpkeepAdminOffchainConfig", upkeepId) + err := _IKeeperRegistryMaster.contract.Call(opts, &out, "getUpkeepPrivilegeConfig", upkeepId) if err != nil { return *new([]byte), err @@ -626,34 +627,12 @@ func (_IKeeperRegistryMaster *IKeeperRegistryMasterCaller) GetUpkeepAdminOffchai } -func (_IKeeperRegistryMaster *IKeeperRegistryMasterSession) GetUpkeepAdminOffchainConfig(upkeepId *big.Int) ([]byte, error) { - return _IKeeperRegistryMaster.Contract.GetUpkeepAdminOffchainConfig(&_IKeeperRegistryMaster.CallOpts, upkeepId) +func (_IKeeperRegistryMaster *IKeeperRegistryMasterSession) GetUpkeepPrivilegeConfig(upkeepId *big.Int) ([]byte, error) { + return _IKeeperRegistryMaster.Contract.GetUpkeepPrivilegeConfig(&_IKeeperRegistryMaster.CallOpts, upkeepId) } -func (_IKeeperRegistryMaster *IKeeperRegistryMasterCallerSession) GetUpkeepAdminOffchainConfig(upkeepId *big.Int) ([]byte, error) { - return _IKeeperRegistryMaster.Contract.GetUpkeepAdminOffchainConfig(&_IKeeperRegistryMaster.CallOpts, upkeepId) -} - -func (_IKeeperRegistryMaster *IKeeperRegistryMasterCaller) GetUpkeepManager(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _IKeeperRegistryMaster.contract.Call(opts, &out, "getUpkeepManager") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -func (_IKeeperRegistryMaster *IKeeperRegistryMasterSession) GetUpkeepManager() (common.Address, error) { - return _IKeeperRegistryMaster.Contract.GetUpkeepManager(&_IKeeperRegistryMaster.CallOpts) -} - -func (_IKeeperRegistryMaster *IKeeperRegistryMasterCallerSession) GetUpkeepManager() (common.Address, error) { - return _IKeeperRegistryMaster.Contract.GetUpkeepManager(&_IKeeperRegistryMaster.CallOpts) +func (_IKeeperRegistryMaster *IKeeperRegistryMasterCallerSession) GetUpkeepPrivilegeConfig(upkeepId *big.Int) ([]byte, error) { + return _IKeeperRegistryMaster.Contract.GetUpkeepPrivilegeConfig(&_IKeeperRegistryMaster.CallOpts, upkeepId) } func (_IKeeperRegistryMaster *IKeeperRegistryMasterCaller) GetUpkeepTriggerConfig(opts *bind.CallOpts, upkeepId *big.Int) ([]byte, error) { @@ -1068,18 +1047,6 @@ func (_IKeeperRegistryMaster *IKeeperRegistryMasterTransactorSession) SetPeerReg return _IKeeperRegistryMaster.Contract.SetPeerRegistryMigrationPermission(&_IKeeperRegistryMaster.TransactOpts, peer, permission) } -func (_IKeeperRegistryMaster *IKeeperRegistryMasterTransactor) SetUpkeepAdminOffchainConfig(opts *bind.TransactOpts, upkeepId *big.Int, newAdminOffchainConfig []byte) (*types.Transaction, error) { - return _IKeeperRegistryMaster.contract.Transact(opts, "setUpkeepAdminOffchainConfig", upkeepId, newAdminOffchainConfig) -} - -func (_IKeeperRegistryMaster *IKeeperRegistryMasterSession) SetUpkeepAdminOffchainConfig(upkeepId *big.Int, newAdminOffchainConfig []byte) (*types.Transaction, error) { - return _IKeeperRegistryMaster.Contract.SetUpkeepAdminOffchainConfig(&_IKeeperRegistryMaster.TransactOpts, upkeepId, newAdminOffchainConfig) -} - -func (_IKeeperRegistryMaster *IKeeperRegistryMasterTransactorSession) SetUpkeepAdminOffchainConfig(upkeepId *big.Int, newAdminOffchainConfig []byte) (*types.Transaction, error) { - return _IKeeperRegistryMaster.Contract.SetUpkeepAdminOffchainConfig(&_IKeeperRegistryMaster.TransactOpts, upkeepId, newAdminOffchainConfig) -} - func (_IKeeperRegistryMaster *IKeeperRegistryMasterTransactor) SetUpkeepGasLimit(opts *bind.TransactOpts, id *big.Int, gasLimit uint32) (*types.Transaction, error) { return _IKeeperRegistryMaster.contract.Transact(opts, "setUpkeepGasLimit", id, gasLimit) } @@ -1092,18 +1059,6 @@ func (_IKeeperRegistryMaster *IKeeperRegistryMasterTransactorSession) SetUpkeepG return _IKeeperRegistryMaster.Contract.SetUpkeepGasLimit(&_IKeeperRegistryMaster.TransactOpts, id, gasLimit) } -func (_IKeeperRegistryMaster *IKeeperRegistryMasterTransactor) SetUpkeepManager(opts *bind.TransactOpts, newUpkeepManager common.Address) (*types.Transaction, error) { - return _IKeeperRegistryMaster.contract.Transact(opts, "setUpkeepManager", newUpkeepManager) -} - -func (_IKeeperRegistryMaster *IKeeperRegistryMasterSession) SetUpkeepManager(newUpkeepManager common.Address) (*types.Transaction, error) { - return _IKeeperRegistryMaster.Contract.SetUpkeepManager(&_IKeeperRegistryMaster.TransactOpts, newUpkeepManager) -} - -func (_IKeeperRegistryMaster *IKeeperRegistryMasterTransactorSession) SetUpkeepManager(newUpkeepManager common.Address) (*types.Transaction, error) { - return _IKeeperRegistryMaster.Contract.SetUpkeepManager(&_IKeeperRegistryMaster.TransactOpts, newUpkeepManager) -} - func (_IKeeperRegistryMaster *IKeeperRegistryMasterTransactor) SetUpkeepOffchainConfig(opts *bind.TransactOpts, id *big.Int, config []byte) (*types.Transaction, error) { return _IKeeperRegistryMaster.contract.Transact(opts, "setUpkeepOffchainConfig", id, config) } @@ -1128,6 +1083,18 @@ func (_IKeeperRegistryMaster *IKeeperRegistryMasterTransactorSession) SetUpkeepP return _IKeeperRegistryMaster.Contract.SetUpkeepPipelineData(&_IKeeperRegistryMaster.TransactOpts, id, newPipelineData) } +func (_IKeeperRegistryMaster *IKeeperRegistryMasterTransactor) SetUpkeepPrivilegeConfig(opts *bind.TransactOpts, upkeepId *big.Int, newPrivilegeConfig []byte) (*types.Transaction, error) { + return _IKeeperRegistryMaster.contract.Transact(opts, "setUpkeepPrivilegeConfig", upkeepId, newPrivilegeConfig) +} + +func (_IKeeperRegistryMaster *IKeeperRegistryMasterSession) SetUpkeepPrivilegeConfig(upkeepId *big.Int, newPrivilegeConfig []byte) (*types.Transaction, error) { + return _IKeeperRegistryMaster.Contract.SetUpkeepPrivilegeConfig(&_IKeeperRegistryMaster.TransactOpts, upkeepId, newPrivilegeConfig) +} + +func (_IKeeperRegistryMaster *IKeeperRegistryMasterTransactorSession) SetUpkeepPrivilegeConfig(upkeepId *big.Int, newPrivilegeConfig []byte) (*types.Transaction, error) { + return _IKeeperRegistryMaster.Contract.SetUpkeepPrivilegeConfig(&_IKeeperRegistryMaster.TransactOpts, upkeepId, newPrivilegeConfig) +} + func (_IKeeperRegistryMaster *IKeeperRegistryMasterTransactor) SetUpkeepTriggerConfig(opts *bind.TransactOpts, id *big.Int, triggerConfig []byte) (*types.Transaction, error) { return _IKeeperRegistryMaster.contract.Transact(opts, "setUpkeepTriggerConfig", id, triggerConfig) } @@ -3470,134 +3437,6 @@ func (_IKeeperRegistryMaster *IKeeperRegistryMasterFilterer) ParseUnpaused(log t return event, nil } -type IKeeperRegistryMasterUpkeepAdminOffchainConfigSetIterator struct { - Event *IKeeperRegistryMasterUpkeepAdminOffchainConfigSet - - contract *bind.BoundContract - event string - - logs chan types.Log - sub ethereum.Subscription - done bool - fail error -} - -func (it *IKeeperRegistryMasterUpkeepAdminOffchainConfigSetIterator) Next() bool { - - if it.fail != nil { - return false - } - - if it.done { - select { - case log := <-it.logs: - it.Event = new(IKeeperRegistryMasterUpkeepAdminOffchainConfigSet) - 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 - } - } - - select { - case log := <-it.logs: - it.Event = new(IKeeperRegistryMasterUpkeepAdminOffchainConfigSet) - 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() - } -} - -func (it *IKeeperRegistryMasterUpkeepAdminOffchainConfigSetIterator) Error() error { - return it.fail -} - -func (it *IKeeperRegistryMasterUpkeepAdminOffchainConfigSetIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -type IKeeperRegistryMasterUpkeepAdminOffchainConfigSet struct { - Id *big.Int - AdminOffchainConfig []byte - Raw types.Log -} - -func (_IKeeperRegistryMaster *IKeeperRegistryMasterFilterer) FilterUpkeepAdminOffchainConfigSet(opts *bind.FilterOpts, id []*big.Int) (*IKeeperRegistryMasterUpkeepAdminOffchainConfigSetIterator, error) { - - var idRule []interface{} - for _, idItem := range id { - idRule = append(idRule, idItem) - } - - logs, sub, err := _IKeeperRegistryMaster.contract.FilterLogs(opts, "UpkeepAdminOffchainConfigSet", idRule) - if err != nil { - return nil, err - } - return &IKeeperRegistryMasterUpkeepAdminOffchainConfigSetIterator{contract: _IKeeperRegistryMaster.contract, event: "UpkeepAdminOffchainConfigSet", logs: logs, sub: sub}, nil -} - -func (_IKeeperRegistryMaster *IKeeperRegistryMasterFilterer) WatchUpkeepAdminOffchainConfigSet(opts *bind.WatchOpts, sink chan<- *IKeeperRegistryMasterUpkeepAdminOffchainConfigSet, id []*big.Int) (event.Subscription, error) { - - var idRule []interface{} - for _, idItem := range id { - idRule = append(idRule, idItem) - } - - logs, sub, err := _IKeeperRegistryMaster.contract.WatchLogs(opts, "UpkeepAdminOffchainConfigSet", idRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - - event := new(IKeeperRegistryMasterUpkeepAdminOffchainConfigSet) - if err := _IKeeperRegistryMaster.contract.UnpackLog(event, "UpkeepAdminOffchainConfigSet", 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 -} - -func (_IKeeperRegistryMaster *IKeeperRegistryMasterFilterer) ParseUpkeepAdminOffchainConfigSet(log types.Log) (*IKeeperRegistryMasterUpkeepAdminOffchainConfigSet, error) { - event := new(IKeeperRegistryMasterUpkeepAdminOffchainConfigSet) - if err := _IKeeperRegistryMaster.contract.UnpackLog(event, "UpkeepAdminOffchainConfigSet", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - type IKeeperRegistryMasterUpkeepAdminTransferRequestedIterator struct { Event *IKeeperRegistryMasterUpkeepAdminTransferRequested @@ -4804,6 +4643,134 @@ func (_IKeeperRegistryMaster *IKeeperRegistryMasterFilterer) ParseUpkeepPipeline return event, nil } +type IKeeperRegistryMasterUpkeepPrivilegeConfigSetIterator struct { + Event *IKeeperRegistryMasterUpkeepPrivilegeConfigSet + + contract *bind.BoundContract + event string + + logs chan types.Log + sub ethereum.Subscription + done bool + fail error +} + +func (it *IKeeperRegistryMasterUpkeepPrivilegeConfigSetIterator) Next() bool { + + if it.fail != nil { + return false + } + + if it.done { + select { + case log := <-it.logs: + it.Event = new(IKeeperRegistryMasterUpkeepPrivilegeConfigSet) + 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 + } + } + + select { + case log := <-it.logs: + it.Event = new(IKeeperRegistryMasterUpkeepPrivilegeConfigSet) + 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() + } +} + +func (it *IKeeperRegistryMasterUpkeepPrivilegeConfigSetIterator) Error() error { + return it.fail +} + +func (it *IKeeperRegistryMasterUpkeepPrivilegeConfigSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +type IKeeperRegistryMasterUpkeepPrivilegeConfigSet struct { + Id *big.Int + PrivilegeConfig []byte + Raw types.Log +} + +func (_IKeeperRegistryMaster *IKeeperRegistryMasterFilterer) FilterUpkeepPrivilegeConfigSet(opts *bind.FilterOpts, id []*big.Int) (*IKeeperRegistryMasterUpkeepPrivilegeConfigSetIterator, error) { + + var idRule []interface{} + for _, idItem := range id { + idRule = append(idRule, idItem) + } + + logs, sub, err := _IKeeperRegistryMaster.contract.FilterLogs(opts, "UpkeepPrivilegeConfigSet", idRule) + if err != nil { + return nil, err + } + return &IKeeperRegistryMasterUpkeepPrivilegeConfigSetIterator{contract: _IKeeperRegistryMaster.contract, event: "UpkeepPrivilegeConfigSet", logs: logs, sub: sub}, nil +} + +func (_IKeeperRegistryMaster *IKeeperRegistryMasterFilterer) WatchUpkeepPrivilegeConfigSet(opts *bind.WatchOpts, sink chan<- *IKeeperRegistryMasterUpkeepPrivilegeConfigSet, id []*big.Int) (event.Subscription, error) { + + var idRule []interface{} + for _, idItem := range id { + idRule = append(idRule, idItem) + } + + logs, sub, err := _IKeeperRegistryMaster.contract.WatchLogs(opts, "UpkeepPrivilegeConfigSet", idRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + + event := new(IKeeperRegistryMasterUpkeepPrivilegeConfigSet) + if err := _IKeeperRegistryMaster.contract.UnpackLog(event, "UpkeepPrivilegeConfigSet", 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 +} + +func (_IKeeperRegistryMaster *IKeeperRegistryMasterFilterer) ParseUpkeepPrivilegeConfigSet(log types.Log) (*IKeeperRegistryMasterUpkeepPrivilegeConfigSet, error) { + event := new(IKeeperRegistryMasterUpkeepPrivilegeConfigSet) + if err := _IKeeperRegistryMaster.contract.UnpackLog(event, "UpkeepPrivilegeConfigSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + type IKeeperRegistryMasterUpkeepReceivedIterator struct { Event *IKeeperRegistryMasterUpkeepReceived @@ -5382,8 +5349,6 @@ func (_IKeeperRegistryMaster *IKeeperRegistryMaster) ParseLog(log types.Log) (ge return _IKeeperRegistryMaster.ParseTransmitted(log) case _IKeeperRegistryMaster.abi.Events["Unpaused"].ID: return _IKeeperRegistryMaster.ParseUnpaused(log) - case _IKeeperRegistryMaster.abi.Events["UpkeepAdminOffchainConfigSet"].ID: - return _IKeeperRegistryMaster.ParseUpkeepAdminOffchainConfigSet(log) case _IKeeperRegistryMaster.abi.Events["UpkeepAdminTransferRequested"].ID: return _IKeeperRegistryMaster.ParseUpkeepAdminTransferRequested(log) case _IKeeperRegistryMaster.abi.Events["UpkeepAdminTransferred"].ID: @@ -5402,6 +5367,8 @@ func (_IKeeperRegistryMaster *IKeeperRegistryMaster) ParseLog(log types.Log) (ge return _IKeeperRegistryMaster.ParseUpkeepPerformed(log) case _IKeeperRegistryMaster.abi.Events["UpkeepPipelineDataSet"].ID: return _IKeeperRegistryMaster.ParseUpkeepPipelineDataSet(log) + case _IKeeperRegistryMaster.abi.Events["UpkeepPrivilegeConfigSet"].ID: + return _IKeeperRegistryMaster.ParseUpkeepPrivilegeConfigSet(log) case _IKeeperRegistryMaster.abi.Events["UpkeepReceived"].ID: return _IKeeperRegistryMaster.ParseUpkeepReceived(log) case _IKeeperRegistryMaster.abi.Events["UpkeepRegistered"].ID: @@ -5484,10 +5451,6 @@ func (IKeeperRegistryMasterUnpaused) Topic() common.Hash { return common.HexToHash("0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa") } -func (IKeeperRegistryMasterUpkeepAdminOffchainConfigSet) Topic() common.Hash { - return common.HexToHash("0x09a658476c5597979b9948f488ec2958cfead97bc8f46b19ca0b21cdab93cdee") -} - func (IKeeperRegistryMasterUpkeepAdminTransferRequested) Topic() common.Hash { return common.HexToHash("0xb1cbb2c4b8480034c27e06da5f096b8233a8fd4497028593a41ff6df79726b35") } @@ -5524,6 +5487,10 @@ func (IKeeperRegistryMasterUpkeepPipelineDataSet) Topic() common.Hash { return common.HexToHash("0x787b2e556c364148324d7dc0cee4322a048aaf798bda184136c8636c72ed3056") } +func (IKeeperRegistryMasterUpkeepPrivilegeConfigSet) Topic() common.Hash { + return common.HexToHash("0x2fd8d70753a007014349d4591843cc031c2dd7a260d7dd82eca8253686ae7769") +} + func (IKeeperRegistryMasterUpkeepReceived) Topic() common.Hash { return common.HexToHash("0x74931a144e43a50694897f241d973aecb5024c0e910f9bb80a163ea3c1cf5a71") } @@ -5585,9 +5552,7 @@ type IKeeperRegistryMasterInterface interface { GetUpkeep(opts *bind.CallOpts, id *big.Int) (KeeperRegistryBase21UpkeepInfo, error) - GetUpkeepAdminOffchainConfig(opts *bind.CallOpts, upkeepId *big.Int) ([]byte, error) - - GetUpkeepManager(opts *bind.CallOpts) (common.Address, error) + GetUpkeepPrivilegeConfig(opts *bind.CallOpts, upkeepId *big.Int) ([]byte, error) GetUpkeepTriggerConfig(opts *bind.CallOpts, upkeepId *big.Int) ([]byte, error) @@ -5647,16 +5612,14 @@ type IKeeperRegistryMasterInterface interface { SetPeerRegistryMigrationPermission(opts *bind.TransactOpts, peer common.Address, permission uint8) (*types.Transaction, error) - SetUpkeepAdminOffchainConfig(opts *bind.TransactOpts, upkeepId *big.Int, newAdminOffchainConfig []byte) (*types.Transaction, error) - SetUpkeepGasLimit(opts *bind.TransactOpts, id *big.Int, gasLimit uint32) (*types.Transaction, error) - SetUpkeepManager(opts *bind.TransactOpts, newUpkeepManager common.Address) (*types.Transaction, error) - SetUpkeepOffchainConfig(opts *bind.TransactOpts, id *big.Int, config []byte) (*types.Transaction, error) SetUpkeepPipelineData(opts *bind.TransactOpts, id *big.Int, newPipelineData []byte) (*types.Transaction, error) + SetUpkeepPrivilegeConfig(opts *bind.TransactOpts, upkeepId *big.Int, newPrivilegeConfig []byte) (*types.Transaction, error) + SetUpkeepTriggerConfig(opts *bind.TransactOpts, id *big.Int, triggerConfig []byte) (*types.Transaction, error) SimulatePerformUpkeep(opts *bind.TransactOpts, id *big.Int, performData []byte) (*types.Transaction, error) @@ -5783,12 +5746,6 @@ type IKeeperRegistryMasterInterface interface { ParseUnpaused(log types.Log) (*IKeeperRegistryMasterUnpaused, error) - FilterUpkeepAdminOffchainConfigSet(opts *bind.FilterOpts, id []*big.Int) (*IKeeperRegistryMasterUpkeepAdminOffchainConfigSetIterator, error) - - WatchUpkeepAdminOffchainConfigSet(opts *bind.WatchOpts, sink chan<- *IKeeperRegistryMasterUpkeepAdminOffchainConfigSet, id []*big.Int) (event.Subscription, error) - - ParseUpkeepAdminOffchainConfigSet(log types.Log) (*IKeeperRegistryMasterUpkeepAdminOffchainConfigSet, error) - FilterUpkeepAdminTransferRequested(opts *bind.FilterOpts, id []*big.Int, from []common.Address, to []common.Address) (*IKeeperRegistryMasterUpkeepAdminTransferRequestedIterator, error) WatchUpkeepAdminTransferRequested(opts *bind.WatchOpts, sink chan<- *IKeeperRegistryMasterUpkeepAdminTransferRequested, id []*big.Int, from []common.Address, to []common.Address) (event.Subscription, error) @@ -5843,6 +5800,12 @@ type IKeeperRegistryMasterInterface interface { ParseUpkeepPipelineDataSet(log types.Log) (*IKeeperRegistryMasterUpkeepPipelineDataSet, error) + FilterUpkeepPrivilegeConfigSet(opts *bind.FilterOpts, id []*big.Int) (*IKeeperRegistryMasterUpkeepPrivilegeConfigSetIterator, error) + + WatchUpkeepPrivilegeConfigSet(opts *bind.WatchOpts, sink chan<- *IKeeperRegistryMasterUpkeepPrivilegeConfigSet, id []*big.Int) (event.Subscription, error) + + ParseUpkeepPrivilegeConfigSet(log types.Log) (*IKeeperRegistryMasterUpkeepPrivilegeConfigSet, error) + FilterUpkeepReceived(opts *bind.FilterOpts, id []*big.Int) (*IKeeperRegistryMasterUpkeepReceivedIterator, error) WatchUpkeepReceived(opts *bind.WatchOpts, sink chan<- *IKeeperRegistryMasterUpkeepReceived, id []*big.Int) (event.Subscription, error) diff --git a/core/gethwrappers/generated/keeper_registry_logic_a_wrapper_2_1/keeper_registry_logic_a_wrapper_2_1.go b/core/gethwrappers/generated/keeper_registry_logic_a_wrapper_2_1/keeper_registry_logic_a_wrapper_2_1.go index 891104c2e5e..674673714bf 100644 --- a/core/gethwrappers/generated/keeper_registry_logic_a_wrapper_2_1/keeper_registry_logic_a_wrapper_2_1.go +++ b/core/gethwrappers/generated/keeper_registry_logic_a_wrapper_2_1/keeper_registry_logic_a_wrapper_2_1.go @@ -31,8 +31,8 @@ var ( ) var KeeperRegistryLogicAMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"contractKeeperRegistryLogicB2_1\",\"name\":\"logicB\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ArrayHasNoEntries\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotCancel\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ConfigDigestMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateEntry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitOutsideRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfFaultyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDataLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReport\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTrigger\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTriggerType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxCheckDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerformDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MigrationNotPermitted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveTransmitters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByLINKToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrRegistrar\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByUpkeepManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySimulatedBackend\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyUnpausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ParameterLengthError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PaymentGreaterThanAllLINK\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PipelineDataExceedsLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RegistryPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedTransmitter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"TargetCheckReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TranscoderNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepCancelled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotCanceled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotNeeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValueNotChanged\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"CancelledUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"FundsAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"FundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"InsufficientFundsUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"OwnerFundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"payees\",\"type\":\"address[]\"}],\"name\":\"PayeesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payee\",\"type\":\"address\"}],\"name\":\"PaymentWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"ReorgedUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"StaleUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"adminOffchainConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepAdminOffchainConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"atBlockHeight\",\"type\":\"uint64\"}],\"name\":\"UpkeepCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"gasLimit\",\"type\":\"uint96\"}],\"name\":\"UpkeepGasLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"UpkeepMigrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepOffchainConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"totalPayment\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasOverhead\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"UpkeepPerformed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newPipelineData\",\"type\":\"bytes\"}],\"name\":\"UpkeepPipelineDataSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"importedFrom\",\"type\":\"address\"}],\"name\":\"UpkeepReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"executeGas\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"UpkeepRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"triggerConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepTriggerConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepUnpaused\",\"type\":\"event\"},{\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"addFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"cancelUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"checkCallback\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"upkeepNeeded\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"},{\"internalType\":\"enumKeeperRegistryBase2_1.UpkeepFailureReason\",\"name\":\"upkeepFailureReason\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"}],\"name\":\"checkUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"upkeepNeeded\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"},{\"internalType\":\"enumKeeperRegistryBase2_1.UpkeepFailureReason\",\"name\":\"upkeepFailureReason\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fastGasWei\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"linkNative\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"checkUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"upkeepNeeded\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"},{\"internalType\":\"enumKeeperRegistryBase2_1.UpkeepFailureReason\",\"name\":\"upkeepFailureReason\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fastGasWei\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"linkNative\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"executeCallback\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"upkeepNeeded\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"},{\"internalType\":\"enumKeeperRegistryBase2_1.UpkeepFailureReason\",\"name\":\"upkeepFailureReason\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fallbackTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFastGasFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkNativeFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMode\",\"outputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Mode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getTriggerType\",\"outputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Trigger\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"migrateUpkeeps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedUpkeeps\",\"type\":\"bytes\"}],\"name\":\"receiveUpkeeps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"enumKeeperRegistryBase2_1.Trigger\",\"name\":\"triggerType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"triggerConfig\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"registerUpkeep\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"registerUpkeep\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"triggerConfig\",\"type\":\"bytes\"}],\"name\":\"setUpkeepTriggerConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"upkeepTranscoderVersion\",\"outputs\":[{\"internalType\":\"enumUpkeepFormat\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"upkeepVersion\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x6101206040523480156200001257600080fd5b5060405162005e1938038062005e19833981016040819052620000359162000386565b80816001600160a01b0316634b4fd03b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009b9190620003ad565b826001600160a01b031663ca30e6036040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000100919062000386565b836001600160a01b031663b10b673c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000165919062000386565b846001600160a01b0316636709d0e56040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca919062000386565b3380600081620002215760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b038481169190911790915581161562000254576200025481620002c2565b5050508360028111156200026c576200026c620003d0565b60e0816002811115620002835762000283620003d0565b9052506001600160a01b0392831660805290821660a052811660c052601980546001600160a01b03191633179055919091166101005250620003e69050565b336001600160a01b038216036200031c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000218565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6001600160a01b03811681146200038357600080fd5b50565b6000602082840312156200039957600080fd5b8151620003a6816200036d565b9392505050565b600060208284031215620003c057600080fd5b815160038110620003a657600080fd5b634e487b7160e01b600052602160045260246000fd5b60805160a05160c05160e051610100516159af6200046a600039600081816101aa01526102450152600081816102a50152818161343201528181613668015281816138ee0152613a9601526000818161030901526131fe0152600081816103fd01526132e201526000818161043b01528181611feb015261248101526159af6000f3fe60806040523480156200001157600080fd5b5060043610620001a85760003560e01c806385c1b0ba11620000ed578063b10b673c1162000099578063ce7dc5b4116200006f578063ce7dc5b41462000460578063f2fde38b1462000477578063f7d334ba146200048e57620001a8565b8063b10b673c14620003fb578063c80480221462000422578063ca30e603146200043957620001a8565b80638e86139b11620000cf5780638e86139b14620003b1578063948108f714620003c8578063aab9edd614620003df57620001a8565b806385c1b0ba146200037b5780638da5cb5b146200039257620001a8565b80634ee88d3511620001595780636ded9eae116200012f5780636ded9eae146200032e57806371791aa0146200034557806379ba5097146200037157620001a8565b80634ee88d3514620002ca5780635147cd5914620002e15780636709d0e5146200030757620001a8565b8063349e8cca116200018f578063349e8cca146200024357806348013d7b146200028b5780634b4fd03b14620002a357620001a8565b806328f32f3814620001f057806329c5efad146200021a575b7f00000000000000000000000000000000000000000000000000000000000000003660008037600080366000845af43d6000803e808015620001e9573d6000f35b3d6000fd5b005b620002076200020136600462004053565b620004a5565b6040519081526020015b60405180910390f35b620002316200022b36600462004139565b620007c8565b6040516200021194939291906200423c565b7f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200162000211565b62000294600081565b6040516200021191906200428c565b7f000000000000000000000000000000000000000000000000000000000000000062000294565b620001ee620002db366004620042a1565b62000995565b620002f8620002f2366004620042f1565b620009fd565b6040516200021191906200430b565b7f000000000000000000000000000000000000000000000000000000000000000062000265565b620002076200033f36600462004322565b62000ab3565b6200035c6200035636600462004139565b62000b5f565b604051620002119796959493929190620043d5565b620001ee620012fa565b620001ee6200038c36600462004427565b620013fd565b60005473ffffffffffffffffffffffffffffffffffffffff1662000265565b620001ee620003c2366004620044b4565b6200206c565b620001ee620003d936600462004517565b620022af565b620003e8600281565b60405160ff909116815260200162000211565b7f000000000000000000000000000000000000000000000000000000000000000062000265565b620001ee62000433366004620042f1565b62002551565b7f000000000000000000000000000000000000000000000000000000000000000062000265565b620002316200047136600462004602565b62002927565b620001ee6200048836600462004679565b620029f7565b6200035c6200049f366004620042f1565b62002a0f565b6000805473ffffffffffffffffffffffffffffffffffffffff163314801590620004d95750620004d760093362002ae1565b155b1562000511576040517fd48b678b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200051c8662002b15565b90506000818a30604051620005319062003dfd565b92835273ffffffffffffffffffffffffffffffffffffffff9182166020840152166040820152606001604051809103906000f08015801562000577573d6000803e3d6000fd5b5090506200065b826040518061010001604052806000151581526020018c63ffffffff16815260200163ffffffff801681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600063ffffffff1681526020018d73ffffffffffffffffffffffffffffffffffffffff168152508a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92508a915062002cb19050565b6014805474010000000000000000000000000000000000000000900463ffffffff1690806200068a83620046c8565b91906101000a81548163ffffffff021916908363ffffffff16021790555050817fbae366358c023f887e791d7a62f2e4316f1026bd77f6fb49501a917b3bc5d0128a8a6040516200070392919063ffffffff92909216825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b60405180910390a2817f787b2e556c364148324d7dc0cee4322a048aaf798bda184136c8636c72ed305687876040516200073f92919062004737565b60405180910390a2817f2b72ac786c97e68dbab71023ed6f2bdbfc80ad9bb7808941929229d71b7d5664856040516200077991906200474d565b60405180910390a2817f3e8740446213c8a77d40e08f79136ce3f347d13ed270a6ebdf57159e0faf485084604051620007b391906200474d565b60405180910390a25098975050505050505050565b60006060600080620007d9620030ea565b60008681526004602090815260409182902082516101008082018552825460ff81161515835263ffffffff91810482169483019490945265010000000000840481169482019490945273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009093048316606082015260018201546bffffffffffffffffffffffff80821660808401526c0100000000000000000000000082041660a08301527801000000000000000000000000000000000000000000000000900490931660c0840152600201541660e08201525a60e0820151601454604051929450600092839273ffffffffffffffffffffffffffffffffffffffff16916c01000000000000000000000000900463ffffffff1690620008f9908b9062004762565b60006040518083038160008787f1925050503d806000811462000939576040519150601f19603f3d011682016040523d82523d6000602084013e6200093e565b606091505b50915091505a62000950908562004780565b9350816200096257600794506200097e565b80806020019051810190620009789190620047f1565b90975095505b866200098957600494505b50505092959194509250565b620009a08362003125565b6000838152601b60205260409020620009bb828483620048e6565b50827f2b72ac786c97e68dbab71023ed6f2bdbfc80ad9bb7808941929229d71b7d56648383604051620009f092919062004737565b60405180910390a2505050565b6000818160045b600f81101562000a92577fff00000000000000000000000000000000000000000000000000000000000000821683826020811062000a465762000a4662004a0e565b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161462000a7d57506000949350505050565b8062000a898162004a3d565b91505062000a04565b5081600f1a600181111562000aab5762000aab620041f6565b949350505050565b600062000b53888888600089896040518060200160405280600163ffffffff1681525060405160200162000af0915163ffffffff16815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181526020601f8d018190048102840181019092528b835291908c908c9081908401838280828437600092019190915250620004a592505050565b98975050505050505050565b60006060600080600080600062000b75620030ea565b600062000b828a620009fd565b905060006012604051806101200160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160059054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160099054906101000a900462ffffff1662ffffff1662ffffff16815260200160008201600c9054906101000a900461ffff1661ffff1661ffff16815260200160008201600e9054906101000a900460ff1615151515815260200160008201600f9054906101000a900460ff161515151581526020016000820160109054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506000600460008d8152602001908152602001600020604051806101000160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160059054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160099054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016001820160189054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905063ffffffff8016816040015163ffffffff161462000f0a576000604051806020016040528060008152506001600084602001516000808263ffffffff1692509950995099509950995099509950505050620012ee565b80511562000f50576000604051806020016040528060008152506002600084602001516000808263ffffffff1692509950995099509950995099509950505050620012ee565b62000f5b82620031db565b602083015160155492975090955060009162000f8d918591879190640100000000900463ffffffff168a8a87620033cd565b9050806bffffffffffffffffffffffff168260a001516bffffffffffffffffffffffff16101562000ff7576000604051806020016040528060008152506006600085602001516000808263ffffffff1692509a509a509a509a509a509a509a5050505050620012ee565b60019a5060606000856001811115620010145762001014620041f6565b03620010d4576040517f6e04ff0d00000000000000000000000000000000000000000000000000000000906200104f908f906024016200474d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905062001189565b6040517fbe61b775000000000000000000000000000000000000000000000000000000009062001109908f906024016200474d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505b5a98508260e0015173ffffffffffffffffffffffffffffffffffffffff166013600101600c9054906101000a900463ffffffff1663ffffffff1682604051620011d3919062004762565b60006040518083038160008787f1925050503d806000811462001213576040519150601f19603f3d011682016040523d82523d6000602084013e62001218565b606091505b50909c509a505a6200122b908a62004780565b98508b6200123d576003995062001290565b8a806020019051810190620012539190620047f1565b909c509a508b6200129057505060408051602080820190925260008082529290910151919a5098506004975063ffffffff169450620012ee915050565b6015548b5164010000000090910463ffffffff161015620012dd57505060408051602080820190925260008082529290910151919a5098506005975063ffffffff169450620012ee915050565b50506020015163ffffffff16945050505b92959891949750929550565b60015473ffffffffffffffffffffffffffffffffffffffff16331462001381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b600173ffffffffffffffffffffffffffffffffffffffff82166000908152601a602052604090205460ff1660038111156200143c576200143c620041f6565b14158015620014885750600373ffffffffffffffffffffffffffffffffffffffff82166000908152601a602052604090205460ff166003811115620014855762001485620041f6565b14155b15620014c0576040517f0ebeec3c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6013546c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1662001520576040517fd12d7d8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008290036200155c576040517f2c2fc94100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526000808567ffffffffffffffff811115620015bb57620015bb62003f00565b604051908082528060200260200182016040528015620015e5578160200160208202803683370190505b50905060008667ffffffffffffffff81111562001606576200160662003f00565b6040519080825280602002602001820160405280156200169557816020015b604080516101008101825260008082526020808301829052928201819052606082018190526080820181905260a0820181905260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181620016255790505b50905060008767ffffffffffffffff811115620016b657620016b662003f00565b604051908082528060200260200182016040528015620016eb57816020015b6060815260200190600190039081620016d55790505b50905060008867ffffffffffffffff8111156200170c576200170c62003f00565b6040519080825280602002602001820160405280156200174157816020015b60608152602001906001900390816200172b5790505b50905060008967ffffffffffffffff81111562001762576200176262003f00565b6040519080825280602002602001820160405280156200179757816020015b6060815260200190600190039081620017815790505b50905060005b8a81101562001db2578b8b82818110620017bb57620017bb62004a0e565b6020908102929092013560008181526004845260409081902081516101008082018452825460ff81161515835263ffffffff91810482169783019790975265010000000000870481169382019390935273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009096048616606082015260018201546bffffffffffffffffffffffff80821660808401526c0100000000000000000000000082041660a08301527801000000000000000000000000000000000000000000000000900490921660c08301526002015490931660e08401529a50909850620018a790508962003125565b60608801516040517f1a5da6c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c8116600483015290911690631a5da6c890602401600060405180830381600087803b1580156200191757600080fd5b505af11580156200192c573d6000803e3d6000fd5b505050508785828151811062001946576200194662004a0e565b6020026020010181905250600560008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168682815181106200199a576200199a62004a0e565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910182015260008a81526007909152604090208054620019d9906200483e565b80601f016020809104026020016040519081016040528092919081815260200182805462001a07906200483e565b801562001a585780601f1062001a2c5761010080835404028352916020019162001a58565b820191906000526020600020905b81548152906001019060200180831162001a3a57829003601f168201915b505050505084828151811062001a725762001a7262004a0e565b6020026020010181905250601b60008a8152602001908152602001600020805462001a9d906200483e565b80601f016020809104026020016040519081016040528092919081815260200182805462001acb906200483e565b801562001b1c5780601f1062001af05761010080835404028352916020019162001b1c565b820191906000526020600020905b81548152906001019060200180831162001afe57829003601f168201915b505050505083828151811062001b365762001b3662004a0e565b6020026020010181905250601c60008a8152602001908152602001600020805462001b61906200483e565b80601f016020809104026020016040519081016040528092919081815260200182805462001b8f906200483e565b801562001be05780601f1062001bb45761010080835404028352916020019162001be0565b820191906000526020600020905b81548152906001019060200180831162001bc257829003601f168201915b505050505082828151811062001bfa5762001bfa62004a0e565b60200260200101819052508760a001516bffffffffffffffffffffffff168762001c25919062004a78565b60008a815260046020908152604080832080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffff0000000000000000000000000000000000000000000000000000000016905560020180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556007909152812091985062001cc5919062003e0b565b6000898152601b6020526040812062001cde9162003e0b565b6000898152601c6020526040812062001cf79162003e0b565b600089815260066020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905562001d3860028a6200341e565b5060a0880151604080516bffffffffffffffffffffffff909216825273ffffffffffffffffffffffffffffffffffffffff8c1660208301528a917fb38647142fbb1ea4c000fc4569b37a4e9a9f6313317b84ee3e5326c1a6cd06ff910160405180910390a28062001da98162004a3d565b9150506200179d565b508560185462001dc3919062004780565b60185560405160009062001de8908d908d9088908a9089908990899060200162004b3a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260135490915073ffffffffffffffffffffffffffffffffffffffff808c1691638e86139b916c010000000000000000000000009091041663c71249ab60028e73ffffffffffffffffffffffffffffffffffffffff1663aab9edd66040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001ea2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ec8919062004cb4565b866040518463ffffffff1660e01b815260040162001ee99392919062004cd9565b600060405180830381865afa15801562001f07573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262001f4f919081019062004d00565b6040518263ffffffff1660e01b815260040162001f6d91906200474d565b600060405180830381600087803b15801562001f8857600080fd5b505af115801562001f9d573d6000803e3d6000fd5b50506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8d81166004830152602482018b90527f000000000000000000000000000000000000000000000000000000000000000016925063a9059cbb91506044016020604051808303816000875af115801562002037573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200205d919062004d39565b50505050505050505050505050565b6002336000908152601a602052604090205460ff166003811115620020955762002095620041f6565b14158015620020cb57506003336000908152601a602052604090205460ff166003811115620020c857620020c8620041f6565b14155b1562002103576040517f0ebeec3c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008080808080620021188789018962004f39565b95509550955095509550955060005b8651811015620022a457620021e98782815181106200214a576200214a62004a0e565b602002602001015187838151811062002167576200216762004a0e565b602002602001015187848151811062002184576200218462004a0e565b6020026020010151878581518110620021a157620021a162004a0e565b6020026020010151878681518110620021be57620021be62004a0e565b6020026020010151878781518110620021db57620021db62004a0e565b602002602001015162002cb1565b868181518110620021fe57620021fe62004a0e565b60200260200101517f74931a144e43a50694897f241d973aecb5024c0e910f9bb80a163ea3c1cf5a718783815181106200223c576200223c62004a0e565b602002602001015160a0015133604051620022879291906bffffffffffffffffffffffff92909216825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b60405180910390a2806200229b8162004a3d565b91505062002127565b505050505050505050565b60008281526004602090815260409182902082516101008082018552825460ff81161515835263ffffffff918104821694830194909452650100000000008404811694820185905273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009094048416606083015260018301546bffffffffffffffffffffffff80821660808501526c0100000000000000000000000082041660a084015278010000000000000000000000000000000000000000000000009004811660c083015260029092015490921660e0830152909114620023bc576040517f9c0083a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818160a00151620023ce919062005041565b600084815260046020526040902060010180547fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff166c010000000000000000000000006bffffffffffffffffffffffff93841602179055601854620024369184169062004a78565b6018556040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526bffffffffffffffffffffffff831660448201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303816000875af1158015620024e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002506919062004d39565b506040516bffffffffffffffffffffffff83168152339084907fafd24114486da8ebfc32f3626dada8863652e187461aa74d4bfa7348915062039060200160405180910390a3505050565b600081815260046020908152604080832081516101008082018452825460ff81161515835263ffffffff918104821695830195909552650100000000008504811693820184905273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009095048516606083015260018301546bffffffffffffffffffffffff80821660808501526c0100000000000000000000000082041660a084015278010000000000000000000000000000000000000000000000009004811660c083015260029092015490931660e08401529192911415906200264960005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16149050818015620026a45750808015620026a25750620026956200342c565b836040015163ffffffff16115b155b15620026dc576040517ffbc0357800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801580156200270f575060008481526005602052604090205473ffffffffffffffffffffffffffffffffffffffff163314155b1562002747576040517ffbdb8e5600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000620027536200342c565b9050816200276b576200276860328262004a78565b90505b6000858152600460205260409020805463ffffffff80841665010000000000027fffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffff90921691909117909155620027c79060029087906200341e16565b5060135460808501516bffffffffffffffffffffffff918216916000911682111562002830576080860151620027fe908362005069565b90508560a001516bffffffffffffffffffffffff16816bffffffffffffffffffffffff16111562002830575060a08501515b808660a0015162002842919062005069565b600088815260046020526040902060010180547fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff166c010000000000000000000000006bffffffffffffffffffffffff93841602179055601454620028aa9183911662005041565b601480547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff9290921691909117905560405167ffffffffffffffff84169088907f91cb3bb75cfbd718bbfccc56b7f53d92d7048ef4ca39a3b7b7c6d4af1f79118190600090a350505050505050565b6000606060008062002938620030ea565b6000634b56a42e60e01b888888604051602401620029599392919062005091565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050620029e48982620007c8565b929c919b50995090975095505050505050565b62002a01620034e8565b62002a0c816200356b565b50565b60006060600080600080600062002aca88600760008b8152602001908152602001600020805462002a40906200483e565b80601f016020809104026020016040519081016040528092919081815260200182805462002a6e906200483e565b801562002abf5780601f1062002a935761010080835404028352916020019162002abf565b820191906000526020600020905b81548152906001019060200180831162002aa157829003601f168201915b505050505062000b5f565b959e949d50929b5090995097509550909350915050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205415155b90505b92915050565b600080600062002b3c600162002b2a6200342c565b62002b36919062004780565b62003662565b601454604080516020810193909352309083015274010000000000000000000000000000000000000000900463ffffffff166060820152608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083015201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060045b600f81101562002c48578282828151811062002c045762002c0462004a0e565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508062002c3f8162004a3d565b91505062002be4565b5083600181111562002c5e5762002c5e620041f6565b60f81b81600f8151811062002c775762002c7762004a0e565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535062000aab81620050c5565b6012546e010000000000000000000000000000900460ff161562002d01576040517f24522f3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60e085015173ffffffffffffffffffffffffffffffffffffffff163b62002d54576040517f09ee12d500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601554835163ffffffff909116101562002d9a576040517f2b49197900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108fc856020015163ffffffff16108062002dd85750601454602086015163ffffffff70010000000000000000000000000000000090920482169116115b1562002e10576040517f14c237fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008681526004602052604090206002015473ffffffffffffffffffffffffffffffffffffffff161562002e70576040517f6e3b930b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600086815260046020908152604080832088518154848b0151848c015160608d015173ffffffffffffffffffffffffffffffffffffffff9081166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffffff63ffffffff9384166501000000000002167fffffff000000000000000000000000000000000000000000000000ffffffffff948416610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff971515979097167fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009096169590951795909517929092169290921792909217835560808b015160018401805460a08e015160c08f01519094167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff9586166c01000000000000000000000000027fffffffffffffffff0000000000000000000000000000000000000000000000009093169590941694909417179190911691909117905560e08a0151600290920180549282167fffffffffffffffffffffffff0000000000000000000000000000000000000000938416179055600584528285208054918a16919092161790556007909152902062003078848262005108565b508460a001516bffffffffffffffffffffffff166018546200309b919062004a78565b6018556000868152601b60205260409020620030b8838262005108565b506000868152601c60205260409020620030d3828262005108565b50620030e1600287620037d1565b50505050505050565b321562003123576040517fb60ac5db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60008181526005602052604090205473ffffffffffffffffffffffffffffffffffffffff16331462003183576040517fa47c170600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526004602052604090205465010000000000900463ffffffff9081161462002a0c576040517f9c0083a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000836060015162ffffff1690506000808263ffffffff161190506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801562003268573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200328e91906200524a565b5094509092505050600081131580620032a657508142105b80620032cb5750828015620032cb5750620032c2824262004780565b8463ffffffff16105b15620032dc576016549550620032e0565b8095505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156200334c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200337291906200524a565b50945090925050506000811315806200338a57508142105b80620033af5750828015620033af5750620033a6824262004780565b8463ffffffff16105b15620033c0576017549450620033c4565b8094505b50505050915091565b600080620033e188878b60000151620037df565b9050600080620033fe8b8a63ffffffff16858a8a60018b620038b5565b90925090506200340f818362005041565b9b9a5050505050505050505050565b600062002b0c838362003ca0565b600060017f00000000000000000000000000000000000000000000000000000000000000006002811115620034655762003465620041f6565b03620034e357606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620034b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034de91906200529f565b905090565b504390565b60005473ffffffffffffffffffffffffffffffffffffffff16331462003123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015260640162001378565b3373ffffffffffffffffffffffffffffffffffffffff821603620035ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162001378565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600060017f000000000000000000000000000000000000000000000000000000000000000060028111156200369b576200369b620041f6565b03620037c7576000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620036f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200371691906200529f565b9050808310158062003734575061010062003732848362004780565b115b15620037435750600092915050565b6040517f2b407a8200000000000000000000000000000000000000000000000000000000815260048101849052606490632b407a8290602401602060405180830381865afa1580156200379a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037c091906200529f565b9392505050565b504090565b919050565b600062002b0c838362003dab565b60008080856001811115620037f857620037f8620041f6565b036200380957506201388062003863565b6001856001811115620038205762003820620041f6565b03620038315750620186a062003863565b6040517ff2b2d41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200387663ffffffff85166014620052b9565b62003883846001620052f9565b620038949060ff16611d4c620052b9565b620038a0908362004a78565b620038ac919062004a78565b95945050505050565b6000806000896080015161ffff1687620038d09190620052b9565b9050838015620038df5750803a105b15620038e857503a5b600060027f00000000000000000000000000000000000000000000000000000000000000006002811115620039215762003921620041f6565b0362003a9257604080516000815260208101909152851562003985576000366040518060800160405280604881526020016200595b604891396040516020016200396e9392919062005315565b6040516020818303038152906040529050620039f3565b601554620039a390640100000000900463ffffffff1660046200533e565b63ffffffff1667ffffffffffffffff811115620039c457620039c462003f00565b6040519080825280601f01601f191660200182016040528015620039ef576020820181803683370190505b5090505b6040517f49948e0e00000000000000000000000000000000000000000000000000000000815273420000000000000000000000000000000000000f906349948e0e9062003a459084906004016200474d565b602060405180830381865afa15801562003a63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a8991906200529f565b91505062003b45565b60017f0000000000000000000000000000000000000000000000000000000000000000600281111562003ac95762003ac9620041f6565b0362003b4557606c73ffffffffffffffffffffffffffffffffffffffff1663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003b1c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b4291906200529f565b90505b8462003b6457808b6080015161ffff1662003b619190620052b9565b90505b62003b7461ffff8716826200536d565b90506000878262003b868c8e62004a78565b62003b929086620052b9565b62003b9e919062004a78565b62003bb290670de0b6b3a7640000620052b9565b62003bbe91906200536d565b905060008c6040015163ffffffff1664e8d4a5100062003bdf9190620052b9565b898e6020015163ffffffff16858f8862003bfa9190620052b9565b62003c06919062004a78565b62003c1690633b9aca00620052b9565b62003c229190620052b9565b62003c2e91906200536d565b62003c3a919062004a78565b90506b033b2e3c9fd0803ce800000062003c55828462004a78565b111562003c8e576040517f2ad7547a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b909c909b509950505050505050505050565b6000818152600183016020526040812054801562003d9957600062003cc760018362004780565b855490915060009062003cdd9060019062004780565b905081811462003d4957600086600001828154811062003d015762003d0162004a0e565b906000526020600020015490508087600001848154811062003d275762003d2762004a0e565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062003d5d5762003d5d620053a9565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062002b0f565b600091505062002b0f565b5092915050565b600081815260018301602052604081205462003df45750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562002b0f565b50600062002b0f565b61058280620053d983390190565b50805462003e19906200483e565b6000825580601f1062003e2a575050565b601f01602090049060005260206000209081019062002a0c91905b8082111562003e5b576000815560010162003e45565b5090565b73ffffffffffffffffffffffffffffffffffffffff8116811462002a0c57600080fd5b8035620037cc8162003e5f565b803563ffffffff81168114620037cc57600080fd5b803560028110620037cc57600080fd5b60008083601f84011262003ec757600080fd5b50813567ffffffffffffffff81111562003ee057600080fd5b60208301915083602082850101111562003ef957600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff8111828210171562003f565762003f5662003f00565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562003fa65762003fa662003f00565b604052919050565b600067ffffffffffffffff82111562003fcb5762003fcb62003f00565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126200400957600080fd5b8135620040206200401a8262003fae565b62003f5c565b8181528460208386010111156200403657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b0312156200407057600080fd5b88356200407d8162003e5f565b97506200408d60208a0162003e8f565b965060408901356200409f8162003e5f565b9550620040af60608a0162003ea4565b9450608089013567ffffffffffffffff80821115620040cd57600080fd5b620040db8c838d0162003eb4565b909650945060a08b0135915080821115620040f557600080fd5b620041038c838d0162003ff7565b935060c08b01359150808211156200411a57600080fd5b50620041298b828c0162003ff7565b9150509295985092959890939650565b600080604083850312156200414d57600080fd5b82359150602083013567ffffffffffffffff8111156200416c57600080fd5b6200417a8582860162003ff7565b9150509250929050565b60005b83811015620041a157818101518382015260200162004187565b50506000910152565b60008151808452620041c481602086016020860162004184565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60088110620042385762004238620041f6565b9052565b8415158152608060208201526000620042596080830186620041aa565b90506200426a604083018562004225565b82606083015295945050505050565b6003811062002a0c5762002a0c620041f6565b602081016200429b8362004279565b91905290565b600080600060408486031215620042b757600080fd5b83359250602084013567ffffffffffffffff811115620042d657600080fd5b620042e48682870162003eb4565b9497909650939450505050565b6000602082840312156200430457600080fd5b5035919050565b60208101600283106200429b576200429b620041f6565b600080600080600080600060a0888a0312156200433e57600080fd5b87356200434b8162003e5f565b96506200435b6020890162003e8f565b955060408801356200436d8162003e5f565b9450606088013567ffffffffffffffff808211156200438b57600080fd5b620043998b838c0162003eb4565b909650945060808a0135915080821115620043b357600080fd5b50620043c28a828b0162003eb4565b989b979a50959850939692959293505050565b871515815260e060208201526000620043f260e0830189620041aa565b905062004403604083018862004225565b8560608301528460808301528360a08301528260c083015298975050505050505050565b6000806000604084860312156200443d57600080fd5b833567ffffffffffffffff808211156200445657600080fd5b818601915086601f8301126200446b57600080fd5b8135818111156200447b57600080fd5b8760208260051b85010111156200449157600080fd5b60209283019550935050840135620044a98162003e5f565b809150509250925092565b60008060208385031215620044c857600080fd5b823567ffffffffffffffff811115620044e057600080fd5b620044ee8582860162003eb4565b90969095509350505050565b80356bffffffffffffffffffffffff81168114620037cc57600080fd5b600080604083850312156200452b57600080fd5b823591506200453d60208401620044fa565b90509250929050565b600067ffffffffffffffff82111562004563576200456362003f00565b5060051b60200190565b600082601f8301126200457f57600080fd5b81356020620045926200401a8362004546565b82815260059290921b84018101918181019086841115620045b257600080fd5b8286015b84811015620045f757803567ffffffffffffffff811115620045d85760008081fd5b620045e88986838b010162003ff7565b845250918301918301620045b6565b509695505050505050565b600080600080606085870312156200461957600080fd5b84359350602085013567ffffffffffffffff808211156200463957600080fd5b62004647888389016200456d565b945060408701359150808211156200465e57600080fd5b506200466d8782880162003eb4565b95989497509550505050565b6000602082840312156200468c57600080fd5b8135620037c08162003e5f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600063ffffffff808316818103620046e457620046e462004699565b6001019392505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600062000aab602083018486620046ee565b60208152600062002b0c6020830184620041aa565b600082516200477681846020870162004184565b9190910192915050565b8181038181111562002b0f5762002b0f62004699565b801515811462002a0c57600080fd5b600082601f830112620047b757600080fd5b8151620047c86200401a8262003fae565b818152846020838601011115620047de57600080fd5b62000aab82602083016020870162004184565b600080604083850312156200480557600080fd5b8251620048128162004796565b602084015190925067ffffffffffffffff8111156200483057600080fd5b6200417a85828601620047a5565b600181811c908216806200485357607f821691505b6020821081036200488d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115620048e157600081815260208120601f850160051c81016020861015620048bc5750805b601f850160051c820191505b81811015620048dd57828155600101620048c8565b5050505b505050565b67ffffffffffffffff83111562004901576200490162003f00565b62004919836200491283546200483e565b8362004893565b6000601f8411600181146200496e5760008515620049375750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b17835562004a07565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015620049bf57868501358255602094850194600190920191016200499d565b5086821015620049fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362004a715762004a7162004699565b5060010190565b8082018082111562002b0f5762002b0f62004699565b600081518084526020808501945080840160005b8381101562004ad657815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010162004aa2565b509495945050505050565b600081518084526020808501808196508360051b8101915082860160005b8581101562004b2d57828403895262004b1a848351620041aa565b9885019893509084019060010162004aff565b5091979650505050505050565b600060c0808352888184015260e07f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a111562004b7657600080fd5b8960051b808c83870137840184810382016020808701919091528a518383018190528b82019261010092919083019060005b8181101562004c495785518051151584528481015163ffffffff9081168686015260408083015182169086015260608083015173ffffffffffffffffffffffffffffffffffffffff908116918701919091526080808401516bffffffffffffffffffffffff9081169188019190915260a080850151909116908701528a8301519091168a860152908801511687840152948301949184019160010162004ba8565b5050878103604089015262004c5f818d62004a8e565b95505050505050828103606084015262004c7a818762004ae1565b9050828103608084015262004c90818662004ae1565b905082810360a084015262004ca6818562004ae1565b9a9950505050505050505050565b60006020828403121562004cc757600080fd5b815160ff81168114620037c057600080fd5b60ff8416815260ff83166020820152606060408201526000620038ac6060830184620041aa565b60006020828403121562004d1357600080fd5b815167ffffffffffffffff81111562004d2b57600080fd5b62000aab84828501620047a5565b60006020828403121562004d4c57600080fd5b8151620037c08162004796565b600082601f83011262004d6b57600080fd5b8135602062004d7e6200401a8362004546565b82815260059290921b8401810191818101908684111562004d9e57600080fd5b8286015b84811015620045f7578035835291830191830162004da2565b600082601f83011262004dcd57600080fd5b8135602062004de06200401a8362004546565b82815260089290921b8401810191818101908684111562004e0057600080fd5b8286015b84811015620045f757610100818903121562004e205760008081fd5b62004e2a62003f2f565b813562004e378162004796565b815262004e4682860162003e8f565b85820152604062004e5981840162003e8f565b90820152606062004e6c83820162003e82565b90820152608062004e7f838201620044fa565b9082015260a062004e92838201620044fa565b9082015260c062004ea583820162003e8f565b9082015260e062004eb883820162003e82565b908201528352918301916101000162004e04565b600082601f83011262004ede57600080fd5b8135602062004ef16200401a8362004546565b82815260059290921b8401810191818101908684111562004f1157600080fd5b8286015b84811015620045f757803562004f2b8162003e5f565b835291830191830162004f15565b60008060008060008060c0878903121562004f5357600080fd5b863567ffffffffffffffff8082111562004f6c57600080fd5b62004f7a8a838b0162004d59565b9750602089013591508082111562004f9157600080fd5b62004f9f8a838b0162004dbb565b9650604089013591508082111562004fb657600080fd5b62004fc48a838b0162004ecc565b9550606089013591508082111562004fdb57600080fd5b62004fe98a838b016200456d565b945060808901359150808211156200500057600080fd5b6200500e8a838b016200456d565b935060a08901359150808211156200502557600080fd5b506200503489828a016200456d565b9150509295509295509295565b6bffffffffffffffffffffffff81811683821601908082111562003da45762003da462004699565b6bffffffffffffffffffffffff82811682821603908082111562003da45762003da462004699565b604081526000620050a6604083018662004ae1565b8281036020840152620050bb818587620046ee565b9695505050505050565b805160208083015191908110156200488d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b815167ffffffffffffffff81111562005125576200512562003f00565b6200513d816200513684546200483e565b8462004893565b602080601f8311600181146200519357600084156200515c5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555620048dd565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015620051e257888601518255948401946001909101908401620051c1565b50858210156200521f57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b805169ffffffffffffffffffff81168114620037cc57600080fd5b600080600080600060a086880312156200526357600080fd5b6200526e866200522f565b945060208601519350604086015192506060860151915062005293608087016200522f565b90509295509295909350565b600060208284031215620052b257600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620052f457620052f462004699565b500290565b60ff818116838216019081111562002b0f5762002b0f62004699565b8284823760008382016000815283516200533481836020880162004184565b0195945050505050565b600063ffffffff8083168185168183048111821515161562005364576200536462004699565b02949350505050565b600082620053a4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe60c060405234801561001057600080fd5b5060405161058238038061058283398101604081905261002f91610073565b600080546001600160a01b0319166001600160a01b039283161790551660805260a0526100af565b80516001600160a01b038116811461006e57600080fd5b919050565b60008060006060848603121561008857600080fd5b8351925061009860208501610057565b91506100a660408501610057565b90509250925092565b60805160a0516104a76100db6000396000610145015260008181610170015261028001526104a76000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806379188d161161005057806379188d161461011d5780638ee489b214610140578063f00e6a2a1461016e57600080fd5b8063181f5a77146100775780631a5da6c8146100c95780635ab1bd53146100de575b600080fd5b6100b36040518060400160405280601981526020017f4175746f6d6174696f6e466f7277617264657220312e302e300000000000000081525081565b6040516100c091906102e9565b60405180910390f35b6100dc6100d7366004610355565b610194565b005b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100c0565b61013061012b3660046103c1565b61022c565b60405190151581526020016100c0565b6040517f000000000000000000000000000000000000000000000000000000000000000081526020016100c0565b7f00000000000000000000000000000000000000000000000000000000000000006100f8565b60005473ffffffffffffffffffffffffffffffffffffffff1633146101e5576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000805473ffffffffffffffffffffffffffffffffffffffff16331461027e576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000005a6113888110156102af57600080fd5b6113888103905084604082048203116102c757600080fd5b50803b6102d357600080fd5b60008084516020860160008589f1949350505050565b600060208083528351808285015260005b81811015610316578581018301518582016040015282016102fa565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b60006020828403121561036757600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461038b57600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156103d457600080fd5b82359150602083013567ffffffffffffffff808211156103f357600080fd5b818501915085601f83011261040757600080fd5b81358181111561041957610419610392565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561045f5761045f610392565b8160405282815288602084870101111561047857600080fd5b826020860160208301376000602084830101528095505050505050925092905056fea164736f6c6343000810000a307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666a164736f6c6343000810000a", + ABI: "[{\"inputs\":[{\"internalType\":\"contractKeeperRegistryLogicB2_1\",\"name\":\"logicB\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ArrayHasNoEntries\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotCancel\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ConfigDigestMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateEntry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitOutsideRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfFaultyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDataLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReport\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTrigger\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTriggerType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxCheckDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerformDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MigrationNotPermitted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveTransmitters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByLINKToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrRegistrar\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByUpkeepPrivilegeManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySimulatedBackend\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyUnpausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ParameterLengthError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PaymentGreaterThanAllLINK\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PipelineDataExceedsLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RegistryPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedTransmitter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"TargetCheckReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TranscoderNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepCancelled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotCanceled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotNeeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValueNotChanged\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"CancelledUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"FundsAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"FundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"InsufficientFundsUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"OwnerFundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"payees\",\"type\":\"address[]\"}],\"name\":\"PayeesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payee\",\"type\":\"address\"}],\"name\":\"PaymentWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"ReorgedUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"StaleUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"atBlockHeight\",\"type\":\"uint64\"}],\"name\":\"UpkeepCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"gasLimit\",\"type\":\"uint96\"}],\"name\":\"UpkeepGasLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"UpkeepMigrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepOffchainConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"totalPayment\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasOverhead\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"UpkeepPerformed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newPipelineData\",\"type\":\"bytes\"}],\"name\":\"UpkeepPipelineDataSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"privilegeConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepPrivilegeConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"importedFrom\",\"type\":\"address\"}],\"name\":\"UpkeepReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"executeGas\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"UpkeepRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"triggerConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepTriggerConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepUnpaused\",\"type\":\"event\"},{\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"addFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"cancelUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"checkCallback\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"upkeepNeeded\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"},{\"internalType\":\"enumKeeperRegistryBase2_1.UpkeepFailureReason\",\"name\":\"upkeepFailureReason\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"}],\"name\":\"checkUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"upkeepNeeded\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"},{\"internalType\":\"enumKeeperRegistryBase2_1.UpkeepFailureReason\",\"name\":\"upkeepFailureReason\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fastGasWei\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"linkNative\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"checkUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"upkeepNeeded\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"},{\"internalType\":\"enumKeeperRegistryBase2_1.UpkeepFailureReason\",\"name\":\"upkeepFailureReason\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fastGasWei\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"linkNative\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"executeCallback\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"upkeepNeeded\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"},{\"internalType\":\"enumKeeperRegistryBase2_1.UpkeepFailureReason\",\"name\":\"upkeepFailureReason\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fallbackTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFastGasFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkNativeFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMode\",\"outputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Mode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getTriggerType\",\"outputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Trigger\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"migrateUpkeeps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedUpkeeps\",\"type\":\"bytes\"}],\"name\":\"receiveUpkeeps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"enumKeeperRegistryBase2_1.Trigger\",\"name\":\"triggerType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"triggerConfig\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"registerUpkeep\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"registerUpkeep\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"triggerConfig\",\"type\":\"bytes\"}],\"name\":\"setUpkeepTriggerConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"upkeepTranscoderVersion\",\"outputs\":[{\"internalType\":\"enumUpkeepFormat\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"upkeepVersion\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x6101206040523480156200001257600080fd5b5060405162005e0738038062005e07833981016040819052620000359162000374565b80816001600160a01b0316634b4fd03b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009b91906200039b565b826001600160a01b031663ca30e6036040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000100919062000374565b836001600160a01b031663b10b673c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000165919062000374565b846001600160a01b0316636709d0e56040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca919062000374565b3380600081620002215760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b038481169190911790915581161562000254576200025481620002b0565b5050508360028111156200026c576200026c620003be565b60e0816002811115620002835762000283620003be565b9052506001600160a01b0392831660805290821660a052811660c052919091166101005250620003d49050565b336001600160a01b038216036200030a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000218565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6001600160a01b03811681146200037157600080fd5b50565b6000602082840312156200038757600080fd5b815162000394816200035b565b9392505050565b600060208284031215620003ae57600080fd5b8151600381106200039457600080fd5b634e487b7160e01b600052602160045260246000fd5b60805160a05160c05160e051610100516159af62000458600039600081816101aa01526102450152600081816102a50152818161343201528181613668015281816138ee0152613a9601526000818161030901526131fe0152600081816103fd01526132e201526000818161043b01528181611feb015261248101526159af6000f3fe60806040523480156200001157600080fd5b5060043610620001a85760003560e01c806385c1b0ba11620000ed578063b10b673c1162000099578063ce7dc5b4116200006f578063ce7dc5b41462000460578063f2fde38b1462000477578063f7d334ba146200048e57620001a8565b8063b10b673c14620003fb578063c80480221462000422578063ca30e603146200043957620001a8565b80638e86139b11620000cf5780638e86139b14620003b1578063948108f714620003c8578063aab9edd614620003df57620001a8565b806385c1b0ba146200037b5780638da5cb5b146200039257620001a8565b80634ee88d3511620001595780636ded9eae116200012f5780636ded9eae146200032e57806371791aa0146200034557806379ba5097146200037157620001a8565b80634ee88d3514620002ca5780635147cd5914620002e15780636709d0e5146200030757620001a8565b8063349e8cca116200018f578063349e8cca146200024357806348013d7b146200028b5780634b4fd03b14620002a357620001a8565b806328f32f3814620001f057806329c5efad146200021a575b7f00000000000000000000000000000000000000000000000000000000000000003660008037600080366000845af43d6000803e808015620001e9573d6000f35b3d6000fd5b005b620002076200020136600462004053565b620004a5565b6040519081526020015b60405180910390f35b620002316200022b36600462004139565b620007c8565b6040516200021194939291906200423c565b7f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200162000211565b62000294600081565b6040516200021191906200428c565b7f000000000000000000000000000000000000000000000000000000000000000062000294565b620001ee620002db366004620042a1565b62000995565b620002f8620002f2366004620042f1565b620009fd565b6040516200021191906200430b565b7f000000000000000000000000000000000000000000000000000000000000000062000265565b620002076200033f36600462004322565b62000ab3565b6200035c6200035636600462004139565b62000b5f565b604051620002119796959493929190620043d5565b620001ee620012fa565b620001ee6200038c36600462004427565b620013fd565b60005473ffffffffffffffffffffffffffffffffffffffff1662000265565b620001ee620003c2366004620044b4565b6200206c565b620001ee620003d936600462004517565b620022af565b620003e8600281565b60405160ff909116815260200162000211565b7f000000000000000000000000000000000000000000000000000000000000000062000265565b620001ee62000433366004620042f1565b62002551565b7f000000000000000000000000000000000000000000000000000000000000000062000265565b620002316200047136600462004602565b62002927565b620001ee6200048836600462004679565b620029f7565b6200035c6200049f366004620042f1565b62002a0f565b6000805473ffffffffffffffffffffffffffffffffffffffff163314801590620004d95750620004d760093362002ae1565b155b1562000511576040517fd48b678b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200051c8662002b15565b90506000818a30604051620005319062003dfd565b92835273ffffffffffffffffffffffffffffffffffffffff9182166020840152166040820152606001604051809103906000f08015801562000577573d6000803e3d6000fd5b5090506200065b826040518061010001604052806000151581526020018c63ffffffff16815260200163ffffffff801681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600063ffffffff1681526020018d73ffffffffffffffffffffffffffffffffffffffff168152508a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92508a915062002cb19050565b6014805474010000000000000000000000000000000000000000900463ffffffff1690806200068a83620046c8565b91906101000a81548163ffffffff021916908363ffffffff16021790555050817fbae366358c023f887e791d7a62f2e4316f1026bd77f6fb49501a917b3bc5d0128a8a6040516200070392919063ffffffff92909216825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b60405180910390a2817f787b2e556c364148324d7dc0cee4322a048aaf798bda184136c8636c72ed305687876040516200073f92919062004737565b60405180910390a2817f2b72ac786c97e68dbab71023ed6f2bdbfc80ad9bb7808941929229d71b7d5664856040516200077991906200474d565b60405180910390a2817f3e8740446213c8a77d40e08f79136ce3f347d13ed270a6ebdf57159e0faf485084604051620007b391906200474d565b60405180910390a25098975050505050505050565b60006060600080620007d9620030ea565b60008681526004602090815260409182902082516101008082018552825460ff81161515835263ffffffff91810482169483019490945265010000000000840481169482019490945273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009093048316606082015260018201546bffffffffffffffffffffffff80821660808401526c0100000000000000000000000082041660a08301527801000000000000000000000000000000000000000000000000900490931660c0840152600201541660e08201525a60e0820151601454604051929450600092839273ffffffffffffffffffffffffffffffffffffffff16916c01000000000000000000000000900463ffffffff1690620008f9908b9062004762565b60006040518083038160008787f1925050503d806000811462000939576040519150601f19603f3d011682016040523d82523d6000602084013e6200093e565b606091505b50915091505a62000950908562004780565b9350816200096257600794506200097e565b80806020019051810190620009789190620047f1565b90975095505b866200098957600494505b50505092959194509250565b620009a08362003125565b6000838152601a60205260409020620009bb828483620048e6565b50827f2b72ac786c97e68dbab71023ed6f2bdbfc80ad9bb7808941929229d71b7d56648383604051620009f092919062004737565b60405180910390a2505050565b6000818160045b600f81101562000a92577fff00000000000000000000000000000000000000000000000000000000000000821683826020811062000a465762000a4662004a0e565b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161462000a7d57506000949350505050565b8062000a898162004a3d565b91505062000a04565b5081600f1a600181111562000aab5762000aab620041f6565b949350505050565b600062000b53888888600089896040518060200160405280600163ffffffff1681525060405160200162000af0915163ffffffff16815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181526020601f8d018190048102840181019092528b835291908c908c9081908401838280828437600092019190915250620004a592505050565b98975050505050505050565b60006060600080600080600062000b75620030ea565b600062000b828a620009fd565b905060006012604051806101200160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160059054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160099054906101000a900462ffffff1662ffffff1662ffffff16815260200160008201600c9054906101000a900461ffff1661ffff1661ffff16815260200160008201600e9054906101000a900460ff1615151515815260200160008201600f9054906101000a900460ff161515151581526020016000820160109054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506000600460008d8152602001908152602001600020604051806101000160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160059054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160099054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016001820160189054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905063ffffffff8016816040015163ffffffff161462000f0a576000604051806020016040528060008152506001600084602001516000808263ffffffff1692509950995099509950995099509950505050620012ee565b80511562000f50576000604051806020016040528060008152506002600084602001516000808263ffffffff1692509950995099509950995099509950505050620012ee565b62000f5b82620031db565b602083015160155492975090955060009162000f8d918591879190640100000000900463ffffffff168a8a87620033cd565b9050806bffffffffffffffffffffffff168260a001516bffffffffffffffffffffffff16101562000ff7576000604051806020016040528060008152506006600085602001516000808263ffffffff1692509a509a509a509a509a509a509a5050505050620012ee565b60019a5060606000856001811115620010145762001014620041f6565b03620010d4576040517f6e04ff0d00000000000000000000000000000000000000000000000000000000906200104f908f906024016200474d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905062001189565b6040517fbe61b775000000000000000000000000000000000000000000000000000000009062001109908f906024016200474d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505b5a98508260e0015173ffffffffffffffffffffffffffffffffffffffff166013600101600c9054906101000a900463ffffffff1663ffffffff1682604051620011d3919062004762565b60006040518083038160008787f1925050503d806000811462001213576040519150601f19603f3d011682016040523d82523d6000602084013e62001218565b606091505b50909c509a505a6200122b908a62004780565b98508b6200123d576003995062001290565b8a806020019051810190620012539190620047f1565b909c509a508b6200129057505060408051602080820190925260008082529290910151919a5098506004975063ffffffff169450620012ee915050565b6015548b5164010000000090910463ffffffff161015620012dd57505060408051602080820190925260008082529290910151919a5098506005975063ffffffff169450620012ee915050565b50506020015163ffffffff16945050505b92959891949750929550565b60015473ffffffffffffffffffffffffffffffffffffffff16331462001381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b600173ffffffffffffffffffffffffffffffffffffffff821660009081526019602052604090205460ff1660038111156200143c576200143c620041f6565b14158015620014885750600373ffffffffffffffffffffffffffffffffffffffff821660009081526019602052604090205460ff166003811115620014855762001485620041f6565b14155b15620014c0576040517f0ebeec3c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6013546c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1662001520576040517fd12d7d8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008290036200155c576040517f2c2fc94100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526000808567ffffffffffffffff811115620015bb57620015bb62003f00565b604051908082528060200260200182016040528015620015e5578160200160208202803683370190505b50905060008667ffffffffffffffff81111562001606576200160662003f00565b6040519080825280602002602001820160405280156200169557816020015b604080516101008101825260008082526020808301829052928201819052606082018190526080820181905260a0820181905260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181620016255790505b50905060008767ffffffffffffffff811115620016b657620016b662003f00565b604051908082528060200260200182016040528015620016eb57816020015b6060815260200190600190039081620016d55790505b50905060008867ffffffffffffffff8111156200170c576200170c62003f00565b6040519080825280602002602001820160405280156200174157816020015b60608152602001906001900390816200172b5790505b50905060008967ffffffffffffffff81111562001762576200176262003f00565b6040519080825280602002602001820160405280156200179757816020015b6060815260200190600190039081620017815790505b50905060005b8a81101562001db2578b8b82818110620017bb57620017bb62004a0e565b6020908102929092013560008181526004845260409081902081516101008082018452825460ff81161515835263ffffffff91810482169783019790975265010000000000870481169382019390935273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009096048616606082015260018201546bffffffffffffffffffffffff80821660808401526c0100000000000000000000000082041660a08301527801000000000000000000000000000000000000000000000000900490921660c08301526002015490931660e08401529a50909850620018a790508962003125565b60608801516040517f1a5da6c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c8116600483015290911690631a5da6c890602401600060405180830381600087803b1580156200191757600080fd5b505af11580156200192c573d6000803e3d6000fd5b505050508785828151811062001946576200194662004a0e565b6020026020010181905250600560008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168682815181106200199a576200199a62004a0e565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910182015260008a81526007909152604090208054620019d9906200483e565b80601f016020809104026020016040519081016040528092919081815260200182805462001a07906200483e565b801562001a585780601f1062001a2c5761010080835404028352916020019162001a58565b820191906000526020600020905b81548152906001019060200180831162001a3a57829003601f168201915b505050505084828151811062001a725762001a7262004a0e565b6020026020010181905250601a60008a8152602001908152602001600020805462001a9d906200483e565b80601f016020809104026020016040519081016040528092919081815260200182805462001acb906200483e565b801562001b1c5780601f1062001af05761010080835404028352916020019162001b1c565b820191906000526020600020905b81548152906001019060200180831162001afe57829003601f168201915b505050505083828151811062001b365762001b3662004a0e565b6020026020010181905250601b60008a8152602001908152602001600020805462001b61906200483e565b80601f016020809104026020016040519081016040528092919081815260200182805462001b8f906200483e565b801562001be05780601f1062001bb45761010080835404028352916020019162001be0565b820191906000526020600020905b81548152906001019060200180831162001bc257829003601f168201915b505050505082828151811062001bfa5762001bfa62004a0e565b60200260200101819052508760a001516bffffffffffffffffffffffff168762001c25919062004a78565b60008a815260046020908152604080832080547fffffff00000000000000000000000000000000000000000000000000000000001681556001810180547fffffffff0000000000000000000000000000000000000000000000000000000016905560020180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556007909152812091985062001cc5919062003e0b565b6000898152601a6020526040812062001cde9162003e0b565b6000898152601b6020526040812062001cf79162003e0b565b600089815260066020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905562001d3860028a6200341e565b5060a0880151604080516bffffffffffffffffffffffff909216825273ffffffffffffffffffffffffffffffffffffffff8c1660208301528a917fb38647142fbb1ea4c000fc4569b37a4e9a9f6313317b84ee3e5326c1a6cd06ff910160405180910390a28062001da98162004a3d565b9150506200179d565b508560185462001dc3919062004780565b60185560405160009062001de8908d908d9088908a9089908990899060200162004b3a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260135490915073ffffffffffffffffffffffffffffffffffffffff808c1691638e86139b916c010000000000000000000000009091041663c71249ab60028e73ffffffffffffffffffffffffffffffffffffffff1663aab9edd66040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001ea2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ec8919062004cb4565b866040518463ffffffff1660e01b815260040162001ee99392919062004cd9565b600060405180830381865afa15801562001f07573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262001f4f919081019062004d00565b6040518263ffffffff1660e01b815260040162001f6d91906200474d565b600060405180830381600087803b15801562001f8857600080fd5b505af115801562001f9d573d6000803e3d6000fd5b50506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8d81166004830152602482018b90527f000000000000000000000000000000000000000000000000000000000000000016925063a9059cbb91506044016020604051808303816000875af115801562002037573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200205d919062004d39565b50505050505050505050505050565b60023360009081526019602052604090205460ff166003811115620020955762002095620041f6565b14158015620020cb575060033360009081526019602052604090205460ff166003811115620020c857620020c8620041f6565b14155b1562002103576040517f0ebeec3c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008080808080620021188789018962004f39565b95509550955095509550955060005b8651811015620022a457620021e98782815181106200214a576200214a62004a0e565b602002602001015187838151811062002167576200216762004a0e565b602002602001015187848151811062002184576200218462004a0e565b6020026020010151878581518110620021a157620021a162004a0e565b6020026020010151878681518110620021be57620021be62004a0e565b6020026020010151878781518110620021db57620021db62004a0e565b602002602001015162002cb1565b868181518110620021fe57620021fe62004a0e565b60200260200101517f74931a144e43a50694897f241d973aecb5024c0e910f9bb80a163ea3c1cf5a718783815181106200223c576200223c62004a0e565b602002602001015160a0015133604051620022879291906bffffffffffffffffffffffff92909216825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b60405180910390a2806200229b8162004a3d565b91505062002127565b505050505050505050565b60008281526004602090815260409182902082516101008082018552825460ff81161515835263ffffffff918104821694830194909452650100000000008404811694820185905273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009094048416606083015260018301546bffffffffffffffffffffffff80821660808501526c0100000000000000000000000082041660a084015278010000000000000000000000000000000000000000000000009004811660c083015260029092015490921660e0830152909114620023bc576040517f9c0083a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818160a00151620023ce919062005041565b600084815260046020526040902060010180547fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff166c010000000000000000000000006bffffffffffffffffffffffff93841602179055601854620024369184169062004a78565b6018556040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526bffffffffffffffffffffffff831660448201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303816000875af1158015620024e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002506919062004d39565b506040516bffffffffffffffffffffffff83168152339084907fafd24114486da8ebfc32f3626dada8863652e187461aa74d4bfa7348915062039060200160405180910390a3505050565b600081815260046020908152604080832081516101008082018452825460ff81161515835263ffffffff918104821695830195909552650100000000008504811693820184905273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009095048516606083015260018301546bffffffffffffffffffffffff80821660808501526c0100000000000000000000000082041660a084015278010000000000000000000000000000000000000000000000009004811660c083015260029092015490931660e08401529192911415906200264960005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16149050818015620026a45750808015620026a25750620026956200342c565b836040015163ffffffff16115b155b15620026dc576040517ffbc0357800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801580156200270f575060008481526005602052604090205473ffffffffffffffffffffffffffffffffffffffff163314155b1562002747576040517ffbdb8e5600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000620027536200342c565b9050816200276b576200276860328262004a78565b90505b6000858152600460205260409020805463ffffffff80841665010000000000027fffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffff90921691909117909155620027c79060029087906200341e16565b5060135460808501516bffffffffffffffffffffffff918216916000911682111562002830576080860151620027fe908362005069565b90508560a001516bffffffffffffffffffffffff16816bffffffffffffffffffffffff16111562002830575060a08501515b808660a0015162002842919062005069565b600088815260046020526040902060010180547fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff166c010000000000000000000000006bffffffffffffffffffffffff93841602179055601454620028aa9183911662005041565b601480547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff9290921691909117905560405167ffffffffffffffff84169088907f91cb3bb75cfbd718bbfccc56b7f53d92d7048ef4ca39a3b7b7c6d4af1f79118190600090a350505050505050565b6000606060008062002938620030ea565b6000634b56a42e60e01b888888604051602401620029599392919062005091565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050620029e48982620007c8565b929c919b50995090975095505050505050565b62002a01620034e8565b62002a0c816200356b565b50565b60006060600080600080600062002aca88600760008b8152602001908152602001600020805462002a40906200483e565b80601f016020809104026020016040519081016040528092919081815260200182805462002a6e906200483e565b801562002abf5780601f1062002a935761010080835404028352916020019162002abf565b820191906000526020600020905b81548152906001019060200180831162002aa157829003601f168201915b505050505062000b5f565b959e949d50929b5090995097509550909350915050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205415155b90505b92915050565b600080600062002b3c600162002b2a6200342c565b62002b36919062004780565b62003662565b601454604080516020810193909352309083015274010000000000000000000000000000000000000000900463ffffffff166060820152608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083015201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060045b600f81101562002c48578282828151811062002c045762002c0462004a0e565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508062002c3f8162004a3d565b91505062002be4565b5083600181111562002c5e5762002c5e620041f6565b60f81b81600f8151811062002c775762002c7762004a0e565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535062000aab81620050c5565b6012546e010000000000000000000000000000900460ff161562002d01576040517f24522f3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60e085015173ffffffffffffffffffffffffffffffffffffffff163b62002d54576040517f09ee12d500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601554835163ffffffff909116101562002d9a576040517f2b49197900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108fc856020015163ffffffff16108062002dd85750601454602086015163ffffffff70010000000000000000000000000000000090920482169116115b1562002e10576040517f14c237fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008681526004602052604090206002015473ffffffffffffffffffffffffffffffffffffffff161562002e70576040517f6e3b930b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600086815260046020908152604080832088518154848b0151848c015160608d015173ffffffffffffffffffffffffffffffffffffffff9081166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffffff63ffffffff9384166501000000000002167fffffff000000000000000000000000000000000000000000000000ffffffffff948416610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff971515979097167fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009096169590951795909517929092169290921792909217835560808b015160018401805460a08e015160c08f01519094167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff9586166c01000000000000000000000000027fffffffffffffffff0000000000000000000000000000000000000000000000009093169590941694909417179190911691909117905560e08a0151600290920180549282167fffffffffffffffffffffffff0000000000000000000000000000000000000000938416179055600584528285208054918a16919092161790556007909152902062003078848262005108565b508460a001516bffffffffffffffffffffffff166018546200309b919062004a78565b6018556000868152601a60205260409020620030b8838262005108565b506000868152601b60205260409020620030d3828262005108565b50620030e1600287620037d1565b50505050505050565b321562003123576040517fb60ac5db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60008181526005602052604090205473ffffffffffffffffffffffffffffffffffffffff16331462003183576040517fa47c170600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526004602052604090205465010000000000900463ffffffff9081161462002a0c576040517f9c0083a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000836060015162ffffff1690506000808263ffffffff161190506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801562003268573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200328e91906200524a565b5094509092505050600081131580620032a657508142105b80620032cb5750828015620032cb5750620032c2824262004780565b8463ffffffff16105b15620032dc576016549550620032e0565b8095505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156200334c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200337291906200524a565b50945090925050506000811315806200338a57508142105b80620033af5750828015620033af5750620033a6824262004780565b8463ffffffff16105b15620033c0576017549450620033c4565b8094505b50505050915091565b600080620033e188878b60000151620037df565b9050600080620033fe8b8a63ffffffff16858a8a60018b620038b5565b90925090506200340f818362005041565b9b9a5050505050505050505050565b600062002b0c838362003ca0565b600060017f00000000000000000000000000000000000000000000000000000000000000006002811115620034655762003465620041f6565b03620034e357606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620034b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034de91906200529f565b905090565b504390565b60005473ffffffffffffffffffffffffffffffffffffffff16331462003123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015260640162001378565b3373ffffffffffffffffffffffffffffffffffffffff821603620035ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162001378565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600060017f000000000000000000000000000000000000000000000000000000000000000060028111156200369b576200369b620041f6565b03620037c7576000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620036f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200371691906200529f565b9050808310158062003734575061010062003732848362004780565b115b15620037435750600092915050565b6040517f2b407a8200000000000000000000000000000000000000000000000000000000815260048101849052606490632b407a8290602401602060405180830381865afa1580156200379a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037c091906200529f565b9392505050565b504090565b919050565b600062002b0c838362003dab565b60008080856001811115620037f857620037f8620041f6565b036200380957506201388062003863565b6001856001811115620038205762003820620041f6565b03620038315750620186a062003863565b6040517ff2b2d41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200387663ffffffff85166014620052b9565b62003883846001620052f9565b620038949060ff16611d4c620052b9565b620038a0908362004a78565b620038ac919062004a78565b95945050505050565b6000806000896080015161ffff1687620038d09190620052b9565b9050838015620038df5750803a105b15620038e857503a5b600060027f00000000000000000000000000000000000000000000000000000000000000006002811115620039215762003921620041f6565b0362003a9257604080516000815260208101909152851562003985576000366040518060800160405280604881526020016200595b604891396040516020016200396e9392919062005315565b6040516020818303038152906040529050620039f3565b601554620039a390640100000000900463ffffffff1660046200533e565b63ffffffff1667ffffffffffffffff811115620039c457620039c462003f00565b6040519080825280601f01601f191660200182016040528015620039ef576020820181803683370190505b5090505b6040517f49948e0e00000000000000000000000000000000000000000000000000000000815273420000000000000000000000000000000000000f906349948e0e9062003a459084906004016200474d565b602060405180830381865afa15801562003a63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a8991906200529f565b91505062003b45565b60017f0000000000000000000000000000000000000000000000000000000000000000600281111562003ac95762003ac9620041f6565b0362003b4557606c73ffffffffffffffffffffffffffffffffffffffff1663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003b1c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b4291906200529f565b90505b8462003b6457808b6080015161ffff1662003b619190620052b9565b90505b62003b7461ffff8716826200536d565b90506000878262003b868c8e62004a78565b62003b929086620052b9565b62003b9e919062004a78565b62003bb290670de0b6b3a7640000620052b9565b62003bbe91906200536d565b905060008c6040015163ffffffff1664e8d4a5100062003bdf9190620052b9565b898e6020015163ffffffff16858f8862003bfa9190620052b9565b62003c06919062004a78565b62003c1690633b9aca00620052b9565b62003c229190620052b9565b62003c2e91906200536d565b62003c3a919062004a78565b90506b033b2e3c9fd0803ce800000062003c55828462004a78565b111562003c8e576040517f2ad7547a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b909c909b509950505050505050505050565b6000818152600183016020526040812054801562003d9957600062003cc760018362004780565b855490915060009062003cdd9060019062004780565b905081811462003d4957600086600001828154811062003d015762003d0162004a0e565b906000526020600020015490508087600001848154811062003d275762003d2762004a0e565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062003d5d5762003d5d620053a9565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062002b0f565b600091505062002b0f565b5092915050565b600081815260018301602052604081205462003df45750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562002b0f565b50600062002b0f565b61058280620053d983390190565b50805462003e19906200483e565b6000825580601f1062003e2a575050565b601f01602090049060005260206000209081019062002a0c91905b8082111562003e5b576000815560010162003e45565b5090565b73ffffffffffffffffffffffffffffffffffffffff8116811462002a0c57600080fd5b8035620037cc8162003e5f565b803563ffffffff81168114620037cc57600080fd5b803560028110620037cc57600080fd5b60008083601f84011262003ec757600080fd5b50813567ffffffffffffffff81111562003ee057600080fd5b60208301915083602082850101111562003ef957600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff8111828210171562003f565762003f5662003f00565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562003fa65762003fa662003f00565b604052919050565b600067ffffffffffffffff82111562003fcb5762003fcb62003f00565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126200400957600080fd5b8135620040206200401a8262003fae565b62003f5c565b8181528460208386010111156200403657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b0312156200407057600080fd5b88356200407d8162003e5f565b97506200408d60208a0162003e8f565b965060408901356200409f8162003e5f565b9550620040af60608a0162003ea4565b9450608089013567ffffffffffffffff80821115620040cd57600080fd5b620040db8c838d0162003eb4565b909650945060a08b0135915080821115620040f557600080fd5b620041038c838d0162003ff7565b935060c08b01359150808211156200411a57600080fd5b50620041298b828c0162003ff7565b9150509295985092959890939650565b600080604083850312156200414d57600080fd5b82359150602083013567ffffffffffffffff8111156200416c57600080fd5b6200417a8582860162003ff7565b9150509250929050565b60005b83811015620041a157818101518382015260200162004187565b50506000910152565b60008151808452620041c481602086016020860162004184565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60088110620042385762004238620041f6565b9052565b8415158152608060208201526000620042596080830186620041aa565b90506200426a604083018562004225565b82606083015295945050505050565b6003811062002a0c5762002a0c620041f6565b602081016200429b8362004279565b91905290565b600080600060408486031215620042b757600080fd5b83359250602084013567ffffffffffffffff811115620042d657600080fd5b620042e48682870162003eb4565b9497909650939450505050565b6000602082840312156200430457600080fd5b5035919050565b60208101600283106200429b576200429b620041f6565b600080600080600080600060a0888a0312156200433e57600080fd5b87356200434b8162003e5f565b96506200435b6020890162003e8f565b955060408801356200436d8162003e5f565b9450606088013567ffffffffffffffff808211156200438b57600080fd5b620043998b838c0162003eb4565b909650945060808a0135915080821115620043b357600080fd5b50620043c28a828b0162003eb4565b989b979a50959850939692959293505050565b871515815260e060208201526000620043f260e0830189620041aa565b905062004403604083018862004225565b8560608301528460808301528360a08301528260c083015298975050505050505050565b6000806000604084860312156200443d57600080fd5b833567ffffffffffffffff808211156200445657600080fd5b818601915086601f8301126200446b57600080fd5b8135818111156200447b57600080fd5b8760208260051b85010111156200449157600080fd5b60209283019550935050840135620044a98162003e5f565b809150509250925092565b60008060208385031215620044c857600080fd5b823567ffffffffffffffff811115620044e057600080fd5b620044ee8582860162003eb4565b90969095509350505050565b80356bffffffffffffffffffffffff81168114620037cc57600080fd5b600080604083850312156200452b57600080fd5b823591506200453d60208401620044fa565b90509250929050565b600067ffffffffffffffff82111562004563576200456362003f00565b5060051b60200190565b600082601f8301126200457f57600080fd5b81356020620045926200401a8362004546565b82815260059290921b84018101918181019086841115620045b257600080fd5b8286015b84811015620045f757803567ffffffffffffffff811115620045d85760008081fd5b620045e88986838b010162003ff7565b845250918301918301620045b6565b509695505050505050565b600080600080606085870312156200461957600080fd5b84359350602085013567ffffffffffffffff808211156200463957600080fd5b62004647888389016200456d565b945060408701359150808211156200465e57600080fd5b506200466d8782880162003eb4565b95989497509550505050565b6000602082840312156200468c57600080fd5b8135620037c08162003e5f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600063ffffffff808316818103620046e457620046e462004699565b6001019392505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600062000aab602083018486620046ee565b60208152600062002b0c6020830184620041aa565b600082516200477681846020870162004184565b9190910192915050565b8181038181111562002b0f5762002b0f62004699565b801515811462002a0c57600080fd5b600082601f830112620047b757600080fd5b8151620047c86200401a8262003fae565b818152846020838601011115620047de57600080fd5b62000aab82602083016020870162004184565b600080604083850312156200480557600080fd5b8251620048128162004796565b602084015190925067ffffffffffffffff8111156200483057600080fd5b6200417a85828601620047a5565b600181811c908216806200485357607f821691505b6020821081036200488d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115620048e157600081815260208120601f850160051c81016020861015620048bc5750805b601f850160051c820191505b81811015620048dd57828155600101620048c8565b5050505b505050565b67ffffffffffffffff83111562004901576200490162003f00565b62004919836200491283546200483e565b8362004893565b6000601f8411600181146200496e5760008515620049375750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b17835562004a07565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015620049bf57868501358255602094850194600190920191016200499d565b5086821015620049fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362004a715762004a7162004699565b5060010190565b8082018082111562002b0f5762002b0f62004699565b600081518084526020808501945080840160005b8381101562004ad657815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010162004aa2565b509495945050505050565b600081518084526020808501808196508360051b8101915082860160005b8581101562004b2d57828403895262004b1a848351620041aa565b9885019893509084019060010162004aff565b5091979650505050505050565b600060c0808352888184015260e07f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a111562004b7657600080fd5b8960051b808c83870137840184810382016020808701919091528a518383018190528b82019261010092919083019060005b8181101562004c495785518051151584528481015163ffffffff9081168686015260408083015182169086015260608083015173ffffffffffffffffffffffffffffffffffffffff908116918701919091526080808401516bffffffffffffffffffffffff9081169188019190915260a080850151909116908701528a8301519091168a860152908801511687840152948301949184019160010162004ba8565b5050878103604089015262004c5f818d62004a8e565b95505050505050828103606084015262004c7a818762004ae1565b9050828103608084015262004c90818662004ae1565b905082810360a084015262004ca6818562004ae1565b9a9950505050505050505050565b60006020828403121562004cc757600080fd5b815160ff81168114620037c057600080fd5b60ff8416815260ff83166020820152606060408201526000620038ac6060830184620041aa565b60006020828403121562004d1357600080fd5b815167ffffffffffffffff81111562004d2b57600080fd5b62000aab84828501620047a5565b60006020828403121562004d4c57600080fd5b8151620037c08162004796565b600082601f83011262004d6b57600080fd5b8135602062004d7e6200401a8362004546565b82815260059290921b8401810191818101908684111562004d9e57600080fd5b8286015b84811015620045f7578035835291830191830162004da2565b600082601f83011262004dcd57600080fd5b8135602062004de06200401a8362004546565b82815260089290921b8401810191818101908684111562004e0057600080fd5b8286015b84811015620045f757610100818903121562004e205760008081fd5b62004e2a62003f2f565b813562004e378162004796565b815262004e4682860162003e8f565b85820152604062004e5981840162003e8f565b90820152606062004e6c83820162003e82565b90820152608062004e7f838201620044fa565b9082015260a062004e92838201620044fa565b9082015260c062004ea583820162003e8f565b9082015260e062004eb883820162003e82565b908201528352918301916101000162004e04565b600082601f83011262004ede57600080fd5b8135602062004ef16200401a8362004546565b82815260059290921b8401810191818101908684111562004f1157600080fd5b8286015b84811015620045f757803562004f2b8162003e5f565b835291830191830162004f15565b60008060008060008060c0878903121562004f5357600080fd5b863567ffffffffffffffff8082111562004f6c57600080fd5b62004f7a8a838b0162004d59565b9750602089013591508082111562004f9157600080fd5b62004f9f8a838b0162004dbb565b9650604089013591508082111562004fb657600080fd5b62004fc48a838b0162004ecc565b9550606089013591508082111562004fdb57600080fd5b62004fe98a838b016200456d565b945060808901359150808211156200500057600080fd5b6200500e8a838b016200456d565b935060a08901359150808211156200502557600080fd5b506200503489828a016200456d565b9150509295509295509295565b6bffffffffffffffffffffffff81811683821601908082111562003da45762003da462004699565b6bffffffffffffffffffffffff82811682821603908082111562003da45762003da462004699565b604081526000620050a6604083018662004ae1565b8281036020840152620050bb818587620046ee565b9695505050505050565b805160208083015191908110156200488d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b815167ffffffffffffffff81111562005125576200512562003f00565b6200513d816200513684546200483e565b8462004893565b602080601f8311600181146200519357600084156200515c5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555620048dd565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015620051e257888601518255948401946001909101908401620051c1565b50858210156200521f57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b805169ffffffffffffffffffff81168114620037cc57600080fd5b600080600080600060a086880312156200526357600080fd5b6200526e866200522f565b945060208601519350604086015192506060860151915062005293608087016200522f565b90509295509295909350565b600060208284031215620052b257600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620052f457620052f462004699565b500290565b60ff818116838216019081111562002b0f5762002b0f62004699565b8284823760008382016000815283516200533481836020880162004184565b0195945050505050565b600063ffffffff8083168185168183048111821515161562005364576200536462004699565b02949350505050565b600082620053a4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe60c060405234801561001057600080fd5b5060405161058238038061058283398101604081905261002f91610073565b600080546001600160a01b0319166001600160a01b039283161790551660805260a0526100af565b80516001600160a01b038116811461006e57600080fd5b919050565b60008060006060848603121561008857600080fd5b8351925061009860208501610057565b91506100a660408501610057565b90509250925092565b60805160a0516104a76100db6000396000610145015260008181610170015261028001526104a76000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806379188d161161005057806379188d161461011d5780638ee489b214610140578063f00e6a2a1461016e57600080fd5b8063181f5a77146100775780631a5da6c8146100c95780635ab1bd53146100de575b600080fd5b6100b36040518060400160405280601981526020017f4175746f6d6174696f6e466f7277617264657220312e302e300000000000000081525081565b6040516100c091906102e9565b60405180910390f35b6100dc6100d7366004610355565b610194565b005b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100c0565b61013061012b3660046103c1565b61022c565b60405190151581526020016100c0565b6040517f000000000000000000000000000000000000000000000000000000000000000081526020016100c0565b7f00000000000000000000000000000000000000000000000000000000000000006100f8565b60005473ffffffffffffffffffffffffffffffffffffffff1633146101e5576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000805473ffffffffffffffffffffffffffffffffffffffff16331461027e576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000005a6113888110156102af57600080fd5b6113888103905084604082048203116102c757600080fd5b50803b6102d357600080fd5b60008084516020860160008589f1949350505050565b600060208083528351808285015260005b81811015610316578581018301518582016040015282016102fa565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b60006020828403121561036757600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461038b57600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156103d457600080fd5b82359150602083013567ffffffffffffffff808211156103f357600080fd5b818501915085601f83011261040757600080fd5b81358181111561041957610419610392565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561045f5761045f610392565b8160405282815288602084870101111561047857600080fd5b826020860160208301376000602084830101528095505050505050925092905056fea164736f6c6343000810000a307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666a164736f6c6343000810000a", } var KeeperRegistryLogicAABI = KeeperRegistryLogicAMetaData.ABI @@ -2492,134 +2492,6 @@ func (_KeeperRegistryLogicA *KeeperRegistryLogicAFilterer) ParseUnpaused(log typ return event, nil } -type KeeperRegistryLogicAUpkeepAdminOffchainConfigSetIterator struct { - Event *KeeperRegistryLogicAUpkeepAdminOffchainConfigSet - - contract *bind.BoundContract - event string - - logs chan types.Log - sub ethereum.Subscription - done bool - fail error -} - -func (it *KeeperRegistryLogicAUpkeepAdminOffchainConfigSetIterator) Next() bool { - - if it.fail != nil { - return false - } - - if it.done { - select { - case log := <-it.logs: - it.Event = new(KeeperRegistryLogicAUpkeepAdminOffchainConfigSet) - 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 - } - } - - select { - case log := <-it.logs: - it.Event = new(KeeperRegistryLogicAUpkeepAdminOffchainConfigSet) - 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() - } -} - -func (it *KeeperRegistryLogicAUpkeepAdminOffchainConfigSetIterator) Error() error { - return it.fail -} - -func (it *KeeperRegistryLogicAUpkeepAdminOffchainConfigSetIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -type KeeperRegistryLogicAUpkeepAdminOffchainConfigSet struct { - Id *big.Int - AdminOffchainConfig []byte - Raw types.Log -} - -func (_KeeperRegistryLogicA *KeeperRegistryLogicAFilterer) FilterUpkeepAdminOffchainConfigSet(opts *bind.FilterOpts, id []*big.Int) (*KeeperRegistryLogicAUpkeepAdminOffchainConfigSetIterator, error) { - - var idRule []interface{} - for _, idItem := range id { - idRule = append(idRule, idItem) - } - - logs, sub, err := _KeeperRegistryLogicA.contract.FilterLogs(opts, "UpkeepAdminOffchainConfigSet", idRule) - if err != nil { - return nil, err - } - return &KeeperRegistryLogicAUpkeepAdminOffchainConfigSetIterator{contract: _KeeperRegistryLogicA.contract, event: "UpkeepAdminOffchainConfigSet", logs: logs, sub: sub}, nil -} - -func (_KeeperRegistryLogicA *KeeperRegistryLogicAFilterer) WatchUpkeepAdminOffchainConfigSet(opts *bind.WatchOpts, sink chan<- *KeeperRegistryLogicAUpkeepAdminOffchainConfigSet, id []*big.Int) (event.Subscription, error) { - - var idRule []interface{} - for _, idItem := range id { - idRule = append(idRule, idItem) - } - - logs, sub, err := _KeeperRegistryLogicA.contract.WatchLogs(opts, "UpkeepAdminOffchainConfigSet", idRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - - event := new(KeeperRegistryLogicAUpkeepAdminOffchainConfigSet) - if err := _KeeperRegistryLogicA.contract.UnpackLog(event, "UpkeepAdminOffchainConfigSet", 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 -} - -func (_KeeperRegistryLogicA *KeeperRegistryLogicAFilterer) ParseUpkeepAdminOffchainConfigSet(log types.Log) (*KeeperRegistryLogicAUpkeepAdminOffchainConfigSet, error) { - event := new(KeeperRegistryLogicAUpkeepAdminOffchainConfigSet) - if err := _KeeperRegistryLogicA.contract.UnpackLog(event, "UpkeepAdminOffchainConfigSet", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - type KeeperRegistryLogicAUpkeepAdminTransferRequestedIterator struct { Event *KeeperRegistryLogicAUpkeepAdminTransferRequested @@ -3826,6 +3698,134 @@ func (_KeeperRegistryLogicA *KeeperRegistryLogicAFilterer) ParseUpkeepPipelineDa return event, nil } +type KeeperRegistryLogicAUpkeepPrivilegeConfigSetIterator struct { + Event *KeeperRegistryLogicAUpkeepPrivilegeConfigSet + + contract *bind.BoundContract + event string + + logs chan types.Log + sub ethereum.Subscription + done bool + fail error +} + +func (it *KeeperRegistryLogicAUpkeepPrivilegeConfigSetIterator) Next() bool { + + if it.fail != nil { + return false + } + + if it.done { + select { + case log := <-it.logs: + it.Event = new(KeeperRegistryLogicAUpkeepPrivilegeConfigSet) + 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 + } + } + + select { + case log := <-it.logs: + it.Event = new(KeeperRegistryLogicAUpkeepPrivilegeConfigSet) + 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() + } +} + +func (it *KeeperRegistryLogicAUpkeepPrivilegeConfigSetIterator) Error() error { + return it.fail +} + +func (it *KeeperRegistryLogicAUpkeepPrivilegeConfigSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +type KeeperRegistryLogicAUpkeepPrivilegeConfigSet struct { + Id *big.Int + PrivilegeConfig []byte + Raw types.Log +} + +func (_KeeperRegistryLogicA *KeeperRegistryLogicAFilterer) FilterUpkeepPrivilegeConfigSet(opts *bind.FilterOpts, id []*big.Int) (*KeeperRegistryLogicAUpkeepPrivilegeConfigSetIterator, error) { + + var idRule []interface{} + for _, idItem := range id { + idRule = append(idRule, idItem) + } + + logs, sub, err := _KeeperRegistryLogicA.contract.FilterLogs(opts, "UpkeepPrivilegeConfigSet", idRule) + if err != nil { + return nil, err + } + return &KeeperRegistryLogicAUpkeepPrivilegeConfigSetIterator{contract: _KeeperRegistryLogicA.contract, event: "UpkeepPrivilegeConfigSet", logs: logs, sub: sub}, nil +} + +func (_KeeperRegistryLogicA *KeeperRegistryLogicAFilterer) WatchUpkeepPrivilegeConfigSet(opts *bind.WatchOpts, sink chan<- *KeeperRegistryLogicAUpkeepPrivilegeConfigSet, id []*big.Int) (event.Subscription, error) { + + var idRule []interface{} + for _, idItem := range id { + idRule = append(idRule, idItem) + } + + logs, sub, err := _KeeperRegistryLogicA.contract.WatchLogs(opts, "UpkeepPrivilegeConfigSet", idRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + + event := new(KeeperRegistryLogicAUpkeepPrivilegeConfigSet) + if err := _KeeperRegistryLogicA.contract.UnpackLog(event, "UpkeepPrivilegeConfigSet", 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 +} + +func (_KeeperRegistryLogicA *KeeperRegistryLogicAFilterer) ParseUpkeepPrivilegeConfigSet(log types.Log) (*KeeperRegistryLogicAUpkeepPrivilegeConfigSet, error) { + event := new(KeeperRegistryLogicAUpkeepPrivilegeConfigSet) + if err := _KeeperRegistryLogicA.contract.UnpackLog(event, "UpkeepPrivilegeConfigSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + type KeeperRegistryLogicAUpkeepReceivedIterator struct { Event *KeeperRegistryLogicAUpkeepReceived @@ -4371,8 +4371,6 @@ func (_KeeperRegistryLogicA *KeeperRegistryLogicA) ParseLog(log types.Log) (gene return _KeeperRegistryLogicA.ParseStaleUpkeepReport(log) case _KeeperRegistryLogicA.abi.Events["Unpaused"].ID: return _KeeperRegistryLogicA.ParseUnpaused(log) - case _KeeperRegistryLogicA.abi.Events["UpkeepAdminOffchainConfigSet"].ID: - return _KeeperRegistryLogicA.ParseUpkeepAdminOffchainConfigSet(log) case _KeeperRegistryLogicA.abi.Events["UpkeepAdminTransferRequested"].ID: return _KeeperRegistryLogicA.ParseUpkeepAdminTransferRequested(log) case _KeeperRegistryLogicA.abi.Events["UpkeepAdminTransferred"].ID: @@ -4391,6 +4389,8 @@ func (_KeeperRegistryLogicA *KeeperRegistryLogicA) ParseLog(log types.Log) (gene return _KeeperRegistryLogicA.ParseUpkeepPerformed(log) case _KeeperRegistryLogicA.abi.Events["UpkeepPipelineDataSet"].ID: return _KeeperRegistryLogicA.ParseUpkeepPipelineDataSet(log) + case _KeeperRegistryLogicA.abi.Events["UpkeepPrivilegeConfigSet"].ID: + return _KeeperRegistryLogicA.ParseUpkeepPrivilegeConfigSet(log) case _KeeperRegistryLogicA.abi.Events["UpkeepReceived"].ID: return _KeeperRegistryLogicA.ParseUpkeepReceived(log) case _KeeperRegistryLogicA.abi.Events["UpkeepRegistered"].ID: @@ -4465,10 +4465,6 @@ func (KeeperRegistryLogicAUnpaused) Topic() common.Hash { return common.HexToHash("0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa") } -func (KeeperRegistryLogicAUpkeepAdminOffchainConfigSet) Topic() common.Hash { - return common.HexToHash("0x09a658476c5597979b9948f488ec2958cfead97bc8f46b19ca0b21cdab93cdee") -} - func (KeeperRegistryLogicAUpkeepAdminTransferRequested) Topic() common.Hash { return common.HexToHash("0xb1cbb2c4b8480034c27e06da5f096b8233a8fd4497028593a41ff6df79726b35") } @@ -4505,6 +4501,10 @@ func (KeeperRegistryLogicAUpkeepPipelineDataSet) Topic() common.Hash { return common.HexToHash("0x787b2e556c364148324d7dc0cee4322a048aaf798bda184136c8636c72ed3056") } +func (KeeperRegistryLogicAUpkeepPrivilegeConfigSet) Topic() common.Hash { + return common.HexToHash("0x2fd8d70753a007014349d4591843cc031c2dd7a260d7dd82eca8253686ae7769") +} + func (KeeperRegistryLogicAUpkeepReceived) Topic() common.Hash { return common.HexToHash("0x74931a144e43a50694897f241d973aecb5024c0e910f9bb80a163ea3c1cf5a71") } @@ -4662,12 +4662,6 @@ type KeeperRegistryLogicAInterface interface { ParseUnpaused(log types.Log) (*KeeperRegistryLogicAUnpaused, error) - FilterUpkeepAdminOffchainConfigSet(opts *bind.FilterOpts, id []*big.Int) (*KeeperRegistryLogicAUpkeepAdminOffchainConfigSetIterator, error) - - WatchUpkeepAdminOffchainConfigSet(opts *bind.WatchOpts, sink chan<- *KeeperRegistryLogicAUpkeepAdminOffchainConfigSet, id []*big.Int) (event.Subscription, error) - - ParseUpkeepAdminOffchainConfigSet(log types.Log) (*KeeperRegistryLogicAUpkeepAdminOffchainConfigSet, error) - FilterUpkeepAdminTransferRequested(opts *bind.FilterOpts, id []*big.Int, from []common.Address, to []common.Address) (*KeeperRegistryLogicAUpkeepAdminTransferRequestedIterator, error) WatchUpkeepAdminTransferRequested(opts *bind.WatchOpts, sink chan<- *KeeperRegistryLogicAUpkeepAdminTransferRequested, id []*big.Int, from []common.Address, to []common.Address) (event.Subscription, error) @@ -4722,6 +4716,12 @@ type KeeperRegistryLogicAInterface interface { ParseUpkeepPipelineDataSet(log types.Log) (*KeeperRegistryLogicAUpkeepPipelineDataSet, error) + FilterUpkeepPrivilegeConfigSet(opts *bind.FilterOpts, id []*big.Int) (*KeeperRegistryLogicAUpkeepPrivilegeConfigSetIterator, error) + + WatchUpkeepPrivilegeConfigSet(opts *bind.WatchOpts, sink chan<- *KeeperRegistryLogicAUpkeepPrivilegeConfigSet, id []*big.Int) (event.Subscription, error) + + ParseUpkeepPrivilegeConfigSet(log types.Log) (*KeeperRegistryLogicAUpkeepPrivilegeConfigSet, error) + FilterUpkeepReceived(opts *bind.FilterOpts, id []*big.Int) (*KeeperRegistryLogicAUpkeepReceivedIterator, error) WatchUpkeepReceived(opts *bind.WatchOpts, sink chan<- *KeeperRegistryLogicAUpkeepReceived, id []*big.Int) (event.Subscription, error) diff --git a/core/gethwrappers/generated/keeper_registry_logic_b_wrapper_2_1/keeper_registry_logic_b_wrapper_2_1.go b/core/gethwrappers/generated/keeper_registry_logic_b_wrapper_2_1/keeper_registry_logic_b_wrapper_2_1.go index 091be0c5dcf..2d34f3e8767 100644 --- a/core/gethwrappers/generated/keeper_registry_logic_b_wrapper_2_1/keeper_registry_logic_b_wrapper_2_1.go +++ b/core/gethwrappers/generated/keeper_registry_logic_b_wrapper_2_1/keeper_registry_logic_b_wrapper_2_1.go @@ -44,19 +44,20 @@ type KeeperRegistryBase21LogTriggerConfig struct { } type KeeperRegistryBase21OnchainConfig struct { - PaymentPremiumPPB uint32 - FlatFeeMicroLink uint32 - CheckGasLimit uint32 - StalenessSeconds *big.Int - GasCeilingMultiplier uint16 - MinUpkeepSpend *big.Int - MaxPerformGas uint32 - MaxCheckDataSize uint32 - MaxPerformDataSize uint32 - FallbackGasPrice *big.Int - FallbackLinkPrice *big.Int - Transcoder common.Address - Registrars []common.Address + PaymentPremiumPPB uint32 + FlatFeeMicroLink uint32 + CheckGasLimit uint32 + StalenessSeconds *big.Int + GasCeilingMultiplier uint16 + MinUpkeepSpend *big.Int + MaxPerformGas uint32 + MaxCheckDataSize uint32 + MaxPerformDataSize uint32 + FallbackGasPrice *big.Int + FallbackLinkPrice *big.Int + Transcoder common.Address + Registrars []common.Address + UpkeepPrivilegeManager common.Address } type KeeperRegistryBase21State struct { @@ -87,8 +88,8 @@ type KeeperRegistryBase21UpkeepInfo struct { } var KeeperRegistryLogicBMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Mode\",\"name\":\"mode\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"link\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"linkNativeFeed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fastGasFeed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ArrayHasNoEntries\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotCancel\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ConfigDigestMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateEntry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitOutsideRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfFaultyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDataLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReport\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTrigger\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTriggerType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxCheckDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerformDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MigrationNotPermitted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveTransmitters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByLINKToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrRegistrar\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByUpkeepManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySimulatedBackend\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyUnpausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ParameterLengthError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PaymentGreaterThanAllLINK\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PipelineDataExceedsLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RegistryPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedTransmitter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"TargetCheckReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TranscoderNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepCancelled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotCanceled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotNeeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValueNotChanged\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"CancelledUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"FundsAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"FundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"InsufficientFundsUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"OwnerFundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"payees\",\"type\":\"address[]\"}],\"name\":\"PayeesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payee\",\"type\":\"address\"}],\"name\":\"PaymentWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"ReorgedUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"StaleUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"adminOffchainConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepAdminOffchainConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"atBlockHeight\",\"type\":\"uint64\"}],\"name\":\"UpkeepCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"gasLimit\",\"type\":\"uint96\"}],\"name\":\"UpkeepGasLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"UpkeepMigrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepOffchainConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"totalPayment\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasOverhead\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"UpkeepPerformed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newPipelineData\",\"type\":\"bytes\"}],\"name\":\"UpkeepPipelineDataSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"importedFrom\",\"type\":\"address\"}],\"name\":\"UpkeepReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"executeGas\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"UpkeepRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"triggerConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepTriggerConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepUnpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"}],\"name\":\"acceptPayeeship\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"acceptUpkeepAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endIndex\",\"type\":\"uint256\"}],\"name\":\"getActiveUpkeepIDs\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endIndex\",\"type\":\"uint256\"},{\"internalType\":\"enumKeeperRegistryBase2_1.Trigger\",\"name\":\"trigger\",\"type\":\"uint8\"}],\"name\":\"getActiveUpkeepIDsByType\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getBlockTriggerConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"checkCadance\",\"type\":\"uint32\"}],\"internalType\":\"structKeeperRegistryBase2_1.BlockTriggerConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFastGasFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkNativeFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getLogTriggerConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"filterSelector\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"topic0\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"topic1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"topic2\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"topic3\",\"type\":\"bytes32\"}],\"internalType\":\"structKeeperRegistryBase2_1.LogTriggerConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Trigger\",\"name\":\"triggerType\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"name\":\"getMaxPaymentForGas\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"maxPayment\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getMinBalanceForUpkeep\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"minBalance\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMode\",\"outputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Mode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"peer\",\"type\":\"address\"}],\"name\":\"getPeerRegistryMigrationPermission\",\"outputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.MigrationPermission\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"query\",\"type\":\"address\"}],\"name\":\"getSignerInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"ownerLinkBalance\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"expectedLinkBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"totalPremium\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"numUpkeeps\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"latestConfigBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"latestConfigDigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"latestEpoch\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"internalType\":\"structKeeperRegistryBase2_1.State\",\"name\":\"state\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"paymentPremiumPPB\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"flatFeeMicroLink\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"checkGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"stalenessSeconds\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"gasCeilingMultiplier\",\"type\":\"uint16\"},{\"internalType\":\"uint96\",\"name\":\"minUpkeepSpend\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"maxPerformGas\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxCheckDataSize\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPerformDataSize\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"fallbackGasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fallbackLinkPrice\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"transcoder\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"registrars\",\"type\":\"address[]\"}],\"internalType\":\"structKeeperRegistryBase2_1.OnchainConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"query\",\"type\":\"address\"}],\"name\":\"getTransmitterInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"},{\"internalType\":\"uint96\",\"name\":\"balance\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"lastCollected\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"payee\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getTriggerType\",\"outputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Trigger\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getUpkeep\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"executeGas\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"},{\"internalType\":\"uint96\",\"name\":\"balance\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"maxValidBlocknumber\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"lastPerformedBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"amountSpent\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"internalType\":\"structKeeperRegistryBase2_1.UpkeepInfo\",\"name\":\"upkeepInfo\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getUpkeepAdminOffchainConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUpkeepManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getUpkeepTriggerConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"pauseUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recoverFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"payees\",\"type\":\"address[]\"}],\"name\":\"setPayees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"peer\",\"type\":\"address\"},{\"internalType\":\"enumKeeperRegistryBase2_1.MigrationPermission\",\"name\":\"permission\",\"type\":\"uint8\"}],\"name\":\"setPeerRegistryMigrationPermission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"newAdminOffchainConfig\",\"type\":\"bytes\"}],\"name\":\"setUpkeepAdminOffchainConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"name\":\"setUpkeepGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newUpkeepManager\",\"type\":\"address\"}],\"name\":\"setUpkeepManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"name\":\"setUpkeepOffchainConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"newPipelineData\",\"type\":\"bytes\"}],\"name\":\"setUpkeepPipelineData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposed\",\"type\":\"address\"}],\"name\":\"transferPayeeship\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"proposed\",\"type\":\"address\"}],\"name\":\"transferUpkeepAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"unpauseUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawOwnerFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6101006040523480156200001257600080fd5b506040516200502f3803806200502f8339810160408190526200003591620001f3565b838383833380600081620000905760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c357620000c3816200012b565b505050836002811115620000db57620000db62000255565b60e0816002811115620000f257620000f262000255565b9052506001600160a01b0392831660805290821660a0521660c0525050601980546001600160a01b03191633179055506200026b915050565b336001600160a01b03821603620001855760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000087565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80516001600160a01b0381168114620001ee57600080fd5b919050565b600080600080608085870312156200020a57600080fd5b8451600381106200021a57600080fd5b93506200022a60208601620001d6565b92506200023a60408601620001d6565b91506200024a60608601620001d6565b905092959194509250565b634e487b7160e01b600052602160045260246000fd5b60805160a05160c05160e051614d44620002eb600039600081816104e801528181613457015281816139da0152613b6d015260008181610579015261324b01526000818161063401526133250152600081816106bb01528181611cf101528181611fc70152818161243f0152818161296101526129e50152614d446000f3fe608060405234801561001057600080fd5b50600436106102d35760003560e01c806379ba509711610186578063b148ab6b116100e3578063d921875c11610097578063ee048eae11610071578063ee048eae14610778578063f2fde38b146107a0578063faa3e996146107b357600080fd5b8063d921875c146106df578063eb5dcd6c146106f2578063ed56b3e11461070557600080fd5b8063b79550be116100c8578063b79550be14610691578063c7c3a19a14610699578063ca30e603146106b957600080fd5b8063b148ab6b1461066b578063b657bc9c1461067e57600080fd5b80638dcf0fe71161013a578063a72aa27e1161011f578063a72aa27e1461061f578063b10b673c14610632578063b121e1471461065857600080fd5b80638dcf0fe7146105f9578063a710b2211461060c57600080fd5b80638456cb591161016b5780638456cb59146105c05780638765ecbe146105c85780638da5cb5b146105db57600080fd5b806379ba5097146105b05780637d9b97e0146105b857600080fd5b80633f4ba83a116102345780635147cd59116101e85780635b6aa71c116101cd5780635b6aa71c146105475780636709d0e514610577578063744bfe611461059d57600080fd5b80635147cd59146105145780635165f2f51461053457600080fd5b8063418d76b611610219578063418d76b61461046d578063421d183b146104805780634b4fd03b146104e657600080fd5b80633f4ba83a146104525780634184e12c1461045a57600080fd5b8063187256e81161028b5780631fffe835116102705780631fffe8351461040c578063207b65161461041f5780633b9cce591461043f57600080fd5b8063187256e8146103e65780631a2af011146103f957600080fd5b80630d4a4fb1116102bc5780630d4a4fb1146103165780630d4cbb7f1461038e5780631865c57d146103cd57600080fd5b806306e3b632146102d85780630d0be14714610301575b600080fd5b6102eb6102e6366004613e4a565b6107f9565b6040516102f89190613e6c565b60405180910390f35b61031461030f366004613eb0565b610904565b005b610329610324366004613f2c565b6109a8565b6040516102f89190600060c08201905073ffffffffffffffffffffffffffffffffffffffff835116825260ff602084015116602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b60195473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102f8565b6103d5610aaa565b6040516102f89594939291906140b3565b6103146103f43660046141ea565b610e70565b610314610407366004614227565b610ee1565b61031461041a36600461424c565b611034565b61043261042d366004613f2c565b611083565b6040516102f891906142d7565b61031461044d3660046142ea565b611125565b61031461137b565b6102eb610468366004614373565b6113e1565b61043261047b366004613f2c565b611535565b61049361048e36600461424c565b611552565b60408051951515865260ff90941660208601526bffffffffffffffffffffffff9283169385019390935216606083015273ffffffffffffffffffffffffffffffffffffffff16608082015260a0016102f8565b7f00000000000000000000000000000000000000000000000000000000000000006040516102f891906143d7565b610527610522366004613f2c565b611685565b6040516102f891906143f1565b610314610542366004613f2c565b611730565b61055a610555366004614417565b6118b2565b6040516bffffffffffffffffffffffff90911681526020016102f8565b7f00000000000000000000000000000000000000000000000000000000000000006103a8565b6103146105ab366004614227565b6119e4565b610314611ded565b610314611eef565b61031461204a565b6103146105d6366004613f2c565b6120bb565b60005473ffffffffffffffffffffffffffffffffffffffff166103a8565b610314610607366004613eb0565b612240565b61031461061a366004614443565b612295565b61031461062d366004614471565b612511565b7f00000000000000000000000000000000000000000000000000000000000000006103a8565b61031461066636600461424c565b612606565b610314610679366004613f2c565b6126fe565b61055a61068c366004613f2c565b6128fb565b610314612928565b6106ac6106a7366004613f2c565b612a84565b6040516102f89190614496565b7f00000000000000000000000000000000000000000000000000000000000000006103a8565b6103146106ed366004613eb0565b612dcd565b610314610700366004614443565b612e6a565b61075f61071336600461424c565b73ffffffffffffffffffffffffffffffffffffffff166000908152600c602090815260409182902082518084019093525460ff8082161515808552610100909204169290910182905291565b60408051921515835260ff9091166020830152016102f8565b61078b610786366004613f2c565b612fc8565b604051905163ffffffff1681526020016102f8565b6103146107ae36600461424c565b6130a7565b6107ec6107c136600461424c565b73ffffffffffffffffffffffffffffffffffffffff166000908152601a602052604090205460ff1690565b6040516102f891906145f6565b6060600061080760026130bb565b90508083116108165782610818565b805b925082841115610854576040517f1390f2a100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108608585614639565b905060008167ffffffffffffffff81111561087d5761087d61464c565b6040519080825280602002602001820160405280156108a6578160200160208202803683370190505b50905060005b828110156108f8576108c96108c1888361467b565b6002906130c5565b8282815181106108db576108db61468e565b6020908102919091010152806108f0816146bd565b9150506108ac565b50925050505b92915050565b61090d836130d8565b60155463ffffffff1681111561094f576040517f2b49197900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600760205260409020610968828483614797565b50827f787b2e556c364148324d7dc0cee4322a048aaf798bda184136c8636c72ed3056838360405161099b9291906148b2565b60405180910390a2505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915260016109e583611685565b60018111156109f6576109f66143a8565b14610a0057600080fd5b6000828152601b602052604090208054610a19906146f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a45906146f5565b8015610a925780601f10610a6757610100808354040283529160200191610a92565b820191906000526020600020905b815481529060010190602001808311610a7557829003601f168201915b50505050508060200190518101906108fe91906148ff565b6040805161014081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810191909152604080516101a08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082018390526101408201839052610160820192909252610180810191909152604080516101408101825260145463ffffffff7401000000000000000000000000000000000000000082041682526bffffffffffffffffffffffff908116602083015260185492820192909252601254700100000000000000000000000000000000900490911660608281019190915290819060009060808101610bea60026130bb565b81526014547801000000000000000000000000000000000000000000000000810463ffffffff9081166020808501919091527c0100000000000000000000000000000000000000000000000000000000808404831660408087019190915260115460608088019190915260125492830485166080808901919091526e010000000000000000000000000000840460ff16151560a09889015282516101a081018452610100808604881682526501000000000086048816968201969096526c010000000000000000000000008089048816948201949094526901000000000000000000850462ffffff16928101929092529282900461ffff16928101929092526013546bffffffffffffffffffffffff811696830196909652700100000000000000000000000000000000909404831660c082015260155480841660e0830152640100000000900490921690820152601654610120820152601754610140820152910473ffffffffffffffffffffffffffffffffffffffff166101608201529095506101808101610d7a600961318c565b9052601254600d80546040805160208084028201810190925282815294985089948994600e9360ff90911692859190830182828015610def57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610dc4575b5050505050925081805480602002602001604051908101604052809291908181526020018280548015610e5857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610e2d575b50505050509150945094509450945094509091929394565b610e78613199565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601a6020526040902080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610ed857610ed86143a8565b02179055505050565b610eea826130d8565b3373ffffffffffffffffffffffffffffffffffffffff821603610f39576040517f8c8728c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610f86576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604090205473ffffffffffffffffffffffffffffffffffffffff8281169116146110305760008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851690811790915590519091339185917fb1cbb2c4b8480034c27e06da5f096b8233a8fd4497028593a41ff6df79726b3591a45b5050565b61103c613199565b601980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000818152601b602052604090208054606091906110a0906146f5565b80601f01602080910402602001604051908101604052809291908181526020018280546110cc906146f5565b80156111195780601f106110ee57610100808354040283529160200191611119565b820191906000526020600020905b8154815290600101906020018083116110fc57829003601f168201915b50505050509050919050565b61112d613199565b600e548114611168576040517fcf54c06a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b600e5481101561133a576000600e828154811061118a5761118a61468e565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116808452600f909252604083205491935016908585858181106111d4576111d461468e565b90506020020160208101906111e9919061424c565b905073ffffffffffffffffffffffffffffffffffffffff8116158061127c575073ffffffffffffffffffffffffffffffffffffffff82161580159061125a57508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561127c575073ffffffffffffffffffffffffffffffffffffffff81811614155b156112b3576040517fb387a23800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff818116146113245773ffffffffffffffffffffffffffffffffffffffff8381166000908152600f6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169183169190911790555b5050508080611332906146bd565b91505061116b565b507fa46de38886467c59be07a0675f14781206a5477d871628af46c2443822fcb725600e838360405161136f93929190614991565b60405180910390a15050565b611383613199565b601280547fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff1690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b606060006113ef60026130bb565b90508084116113fe5783611400565b805b93508385111561143c576040517f1390f2a100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114488686614639565b90506000808267ffffffffffffffff8111156114665761146661464c565b60405190808252806020026020018201604052801561148f578160200160208202803683370190505b50905060005b8381101561151e5760006114ac6108c18b8461467b565b90508760018111156114c0576114c06143a8565b6114c982611685565b60018111156114da576114da6143a8565b0361150b57808385815181106114f2576114f261468e565b602090810291909101015283611507816146bd565b9450505b5080611516816146bd565b915050611495565b5082821461152a578181525b979650505050505050565b6000818152601d602052604090208054606091906110a0906146f5565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602090815260408083208151608081018352905460ff80821615801584526101008304909116948301949094526bffffffffffffffffffffffff6201000082048116938301939093526e01000000000000000000000000000090049091166060820152829182918291829190829061162c5760608201516012546000916116189170010000000000000000000000000000000090046bffffffffffffffffffffffff16614a43565b600e549091506116289082614a97565b9150505b815160208301516040840151611643908490614ac2565b6060949094015173ffffffffffffffffffffffffffffffffffffffff9a8b166000908152600f6020526040902054929b919a9499509750921694509092505050565b6000818160045b600f811015611712577fff0000000000000000000000000000000000000000000000000000000000000082168382602081106116ca576116ca61468e565b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461170057506000949350505050565b8061170a816146bd565b91505061168c565b5081600f1a6001811115611728576117286143a8565b949350505050565b611739816130d8565b60008181526004602090815260409182902082516101008082018552825460ff8116151580845263ffffffff92820483169584019590955265010000000000810482169583019590955273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009095048516606083015260018301546bffffffffffffffffffffffff80821660808501526c0100000000000000000000000082041660a0840152780100000000000000000000000000000000000000000000000090041660c082015260029091015490921660e0830152611843576040517f1b88a78400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561188260028361321c565b5060405182907f7bada562044eb163f6b4003c4553e4e62825344c0418eea087bed5ee05a4745690600090a25050565b604080516101208101825260125460ff808216835263ffffffff6101008084048216602086015265010000000000840482169585019590955262ffffff6901000000000000000000840416606085015261ffff6c0100000000000000000000000084041660808501526e01000000000000000000000000000083048216151560a08501526f010000000000000000000000000000008304909116151560c08401526bffffffffffffffffffffffff70010000000000000000000000000000000083041660e08401527c0100000000000000000000000000000000000000000000000000000000909104169181019190915260009081806119b183613228565b915091506119da838787601360020160049054906101000a900463ffffffff1686866000613406565b9695505050505050565b6012546f01000000000000000000000000000000900460ff1615611a34576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601280547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff166f0100000000000000000000000000000017905573ffffffffffffffffffffffffffffffffffffffff8116611abb576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020908152604080832081516101008082018452825460ff81161515835263ffffffff91810482168387015265010000000000810482168386015273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009091048116606084015260018401546bffffffffffffffffffffffff80821660808601526c0100000000000000000000000082041660a08501527801000000000000000000000000000000000000000000000000900490911660c0830152600290920154821660e082015286855260059093529220549091163314611bce576040517fa47c170600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bd6613451565b816040015163ffffffff161115611c19576040517fff84e5dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600460205260409020600101546018546c010000000000000000000000009091046bffffffffffffffffffffffff1690611c59908290614639565b60185560008481526004602081905260409182902060010180547fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff16905590517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116928201929092526bffffffffffffffffffffffff831660248201527f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015611d3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d609190614ae7565b50604080516bffffffffffffffffffffffff8316815273ffffffffffffffffffffffffffffffffffffffff8516602082015285917ff3b5906e5672f3e524854103bcafbbdba80dbdfeca2c35e116127b1060a68318910160405180910390a25050601280547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff1690555050565b60015473ffffffffffffffffffffffffffffffffffffffff163314611e73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b611ef7613199565b6014546018546bffffffffffffffffffffffff90911690611f19908290614639565b601855601480547fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001690556040516bffffffffffffffffffffffff821681527f1d07d0b0be43d3e5fee41a80b579af370affee03fa595bf56d5d4c19328162f19060200160405180910390a16040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526bffffffffffffffffffffffff821660248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044015b6020604051808303816000875af1158015612026573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110309190614ae7565b612052613199565b601280547fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff166e0100000000000000000000000000001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016113d7565b6120c4816130d8565b60008181526004602090815260409182902082516101008082018552825460ff8116158015845263ffffffff92820483169584019590955265010000000000810482169583019590955273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009095048516606083015260018301546bffffffffffffffffffffffff80821660808501526c0100000000000000000000000082041660a0840152780100000000000000000000000000000000000000000000000090041660c082015260029091015490921660e08301526121ce576040517f514b6c2400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055612210600283613506565b5060405182907f8ab10247ce168c27748e656ecf852b951fcaac790c18106b19aa0ae57a8b741f90600090a25050565b612249836130d8565b6000838152601c60205260409020612262828483614797565b50827f3e8740446213c8a77d40e08f79136ce3f347d13ed270a6ebdf57159e0faf4850838360405161099b9291906148b2565b73ffffffffffffffffffffffffffffffffffffffff81166122e2576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600f6020526040902054163314612342576040517fcebf515b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601254600e5460009161237991859170010000000000000000000000000000000090046bffffffffffffffffffffffff1690613512565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600b6020526040902080547fffffffffffffffffffffffffffffffffffff000000000000000000000000ffff1690556018549091506123e3906bffffffffffffffffffffffff831690614639565b6018556040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526bffffffffffffffffffffffff831660248301527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015612488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ac9190614ae7565b5060405133815273ffffffffffffffffffffffffffffffffffffffff808416916bffffffffffffffffffffffff8416918616907f9819093176a1851202c7bcfa46845809b4e47c261866550e94ed3775d2f406989060200160405180910390a4505050565b6108fc8163ffffffff161080612546575060145463ffffffff7001000000000000000000000000000000009091048116908216115b1561257d576040517f14c237fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612586826130d8565b60008281526004602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff1661010063ffffffff861690810291909117909155915191825283917fc24c07e655ce79fba8a589778987d3c015bc6af1632bb20cf9182e02a65d972c910160405180910390a25050565b73ffffffffffffffffffffffffffffffffffffffff818116600090815260106020526040902054163314612666576040517f6752e7aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8181166000818152600f602090815260408083208054337fffffffffffffffffffffffff000000000000000000000000000000000000000080831682179093556010909452828520805490921690915590519416939092849290917f78af32efdcad432315431e9b03d27e6cd98fb79c405fdc5af7c1714d9c0f75b39190a45050565b60008181526004602090815260409182902082516101008082018552825460ff81161515835263ffffffff918104821694830194909452650100000000008404811694820185905273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009094048416606083015260018301546bffffffffffffffffffffffff80821660808501526c0100000000000000000000000082041660a084015278010000000000000000000000000000000000000000000000009004811660c083015260029092015490921660e083015290911461280a576040517f9c0083a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604090205473ffffffffffffffffffffffffffffffffffffffff163314612867576040517f6352a85300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526005602090815260408083208054337fffffffffffffffffffffffff0000000000000000000000000000000000000000808316821790935560069094528285208054909216909155905173ffffffffffffffffffffffffffffffffffffffff90911692839186917f5cff4db96bef051785e999f44bfcd21c18823e034fb92dd376e3db4ce0feeb2c91a4505050565b60006108fe61290983611685565b600084815260046020526040902054610100900463ffffffff166118b2565b612930613199565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156129bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e19190614b09565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3360185484612a2e9190614639565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401612007565b604080516101608101825260008082526020820181905291810182905260608082018190526080820183905260a0820183905260c0820183905260e082018390526101008201839052610120820192909252610140810191909152600082815260046020908152604080832081516101008082018452825460ff81161515835263ffffffff918104821683870190815265010000000000820483168487015273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009092048216606080860191825260018701546bffffffffffffffffffffffff80821660808901526c0100000000000000000000000082041660a088015278010000000000000000000000000000000000000000000000009004851660c0870152600290960154831660e08601908152875161016081018952905184168152905190921682880152519091168185015287865260079094529190932080549193830191612bee906146f5565b80601f0160208091040260200160405190810160405280929190818152602001828054612c1a906146f5565b8015612c675780601f10612c3c57610100808354040283529160200191612c67565b820191906000526020600020905b815481529060010190602001808311612c4a57829003601f168201915b505050505081526020018260a001516bffffffffffffffffffffffff1681526020016005600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826040015163ffffffff1667ffffffffffffffff1681526020018260c0015163ffffffff16815260200182608001516bffffffffffffffffffffffff168152602001826000015115158152602001601c60008681526020019081526020016000208054612d44906146f5565b80601f0160208091040260200160405190810160405280929190818152602001828054612d70906146f5565b8015612dbd5780601f10612d9257610100808354040283529160200191612dbd565b820191906000526020600020905b815481529060010190602001808311612da057829003601f168201915b5050505050815250915050919050565b60195473ffffffffffffffffffffffffffffffffffffffff163314612e1e576040517fee5dc90100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152601d60205260409020612e37828483614797565b50827f09a658476c5597979b9948f488ec2958cfead97bc8f46b19ca0b21cdab93cdee838360405161099b9291906148b2565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600f6020526040902054163314612eca576040517fcebf515b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821603612f19576040517f8c8728c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8281166000908152601060205260409020548116908216146110305773ffffffffffffffffffffffffffffffffffffffff82811660008181526010602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169486169485179055513392917f84f7c7c80bb8ed2279b4aab5f61cd05e6374073d38f46d7f32de8c30e9e3836791a45050565b6040805160208101909152600081526001612fe283611685565b6001811115612ff357612ff36143a8565b14612ffd57600080fd5b6000828152601b602052604090208054613016906146f5565b80601f0160208091040260200160405190810160405280929190818152602001828054613042906146f5565b801561308f5780601f106130645761010080835404028352916020019161308f565b820191906000526020600020905b81548152906001019060200180831161307257829003601f168201915b50505050508060200190518101906108fe9190614b22565b6130af613199565b6130b88161371a565b50565b60006108fe825490565b60006130d1838361380f565b9392505050565b60008181526005602052604090205473ffffffffffffffffffffffffffffffffffffffff163314613135576040517fa47c170600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526004602052604090205465010000000000900463ffffffff908116146130b8576040517f9c0083a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606060006130d183613839565b60005473ffffffffffffffffffffffffffffffffffffffff16331461321a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401611e6a565b565b60006130d18383613894565b6000806000836060015162ffffff1690506000808263ffffffff161190506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156132b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d89190614b88565b50945090925050506000811315806132ef57508142105b80613310575082801561331057506133078242614639565b8463ffffffff16105b1561331f576016549550613323565b8095505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561338e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b29190614b88565b50945090925050506000811315806133c957508142105b806133ea57508280156133ea57506133e18242614639565b8463ffffffff16105b156133f95760175494506133fd565b8094505b50505050915091565b60008061341888878b600001516138e3565b90506000806134338b8a63ffffffff16858a8a60018b6139a5565b90925090506134428183614ac2565b9b9a5050505050505050505050565b600060017f00000000000000000000000000000000000000000000000000000000000000006002811115613487576134876143a8565b0361350157606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134fc9190614b09565b905090565b504390565b60006130d18383613d50565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b602090815260408083208151608081018352905460ff80821615801584526101008304909116948301949094526bffffffffffffffffffffffff6201000082048116938301939093526e010000000000000000000000000000900490911660608201529061370e5760008160600151856135aa9190614a43565b905060006135b88583614a97565b905080836040018181516135cc9190614ac2565b6bffffffffffffffffffffffff169052506135e78582614bd8565b836060018181516135f89190614ac2565b6bffffffffffffffffffffffff90811690915273ffffffffffffffffffffffffffffffffffffffff89166000908152600b602090815260409182902087518154928901519389015160608a015186166e010000000000000000000000000000027fffffffffffff000000000000000000000000ffffffffffffffffffffffffffff919096166201000002167fffffffffffff000000000000000000000000000000000000000000000000ffff60ff95909516610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909416939093171792909216179190911790555050505b60400151949350505050565b3373ffffffffffffffffffffffffffffffffffffffff821603613799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401611e6a565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60008260000182815481106138265761382661468e565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561111957602002820191906000526020600020905b8154815260200190600101908083116138755750505050509050919050565b60008181526001830160205260408120546138db575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108fe565b5060006108fe565b600080808560018111156138f9576138f96143a8565b0361390857506201388061395d565b600185600181111561391c5761391c6143a8565b0361392b5750620186a061395d565b6040517ff2b2d41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61396e63ffffffff85166014614c0c565b613979846001614c49565b6139889060ff16611d4c614c0c565b613992908361467b565b61399c919061467b565b95945050505050565b6000806000896080015161ffff16876139be9190614c0c565b90508380156139cc5750803a105b156139d457503a5b600060027f00000000000000000000000000000000000000000000000000000000000000006002811115613a0a57613a0a6143a8565b03613b69576040805160008152602081019091528515613a6857600036604051806080016040528060488152602001614cf060489139604051602001613a5293929190614c62565b6040516020818303038152906040529050613ad0565b601554613a8490640100000000900463ffffffff166004614c89565b63ffffffff1667ffffffffffffffff811115613aa257613aa261464c565b6040519080825280601f01601f191660200182016040528015613acc576020820181803683370190505b5090505b6040517f49948e0e00000000000000000000000000000000000000000000000000000000815273420000000000000000000000000000000000000f906349948e0e90613b209084906004016142d7565b602060405180830381865afa158015613b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b619190614b09565b915050613c15565b60017f00000000000000000000000000000000000000000000000000000000000000006002811115613b9d57613b9d6143a8565b03613c1557606c73ffffffffffffffffffffffffffffffffffffffff1663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c129190614b09565b90505b84613c3157808b6080015161ffff16613c2e9190614c0c565b90505b613c3f61ffff871682614cac565b905060008782613c4f8c8e61467b565b613c599086614c0c565b613c63919061467b565b613c7590670de0b6b3a7640000614c0c565b613c7f9190614cac565b905060008c6040015163ffffffff1664e8d4a51000613c9e9190614c0c565b898e6020015163ffffffff16858f88613cb79190614c0c565b613cc1919061467b565b613ccf90633b9aca00614c0c565b613cd99190614c0c565b613ce39190614cac565b613ced919061467b565b90506b033b2e3c9fd0803ce8000000613d06828461467b565b1115613d3e576040517f2ad7547a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b909c909b509950505050505050505050565b60008181526001830160205260408120548015613e39576000613d74600183614639565b8554909150600090613d8890600190614639565b9050818114613ded576000866000018281548110613da857613da861468e565b9060005260206000200154905080876000018481548110613dcb57613dcb61468e565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613dfe57613dfe614cc0565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506108fe565b60009150506108fe565b5092915050565b60008060408385031215613e5d57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015613ea457835183529284019291840191600101613e88565b50909695505050505050565b600080600060408486031215613ec557600080fd5b83359250602084013567ffffffffffffffff80821115613ee457600080fd5b818601915086601f830112613ef857600080fd5b813581811115613f0757600080fd5b876020828501011115613f1957600080fd5b6020830194508093505050509250925092565b600060208284031215613f3e57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613f8b57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613f59565b509495945050505050565b805163ffffffff16825260006101a06020830151613fbc602086018263ffffffff169052565b506040830151613fd4604086018263ffffffff169052565b506060830151613feb606086018262ffffff169052565b506080830151614001608086018261ffff169052565b5060a083015161402160a08601826bffffffffffffffffffffffff169052565b5060c083015161403960c086018263ffffffff169052565b5060e083015161405160e086018263ffffffff169052565b506101008381015163ffffffff1690850152610120808401519085015261014080840151908501526101608084015173ffffffffffffffffffffffffffffffffffffffff1690850152610180808401518186018390526119da83870182613f45565b855163ffffffff16815260006101c060208801516140e160208501826bffffffffffffffffffffffff169052565b5060408801516040840152606088015161410b60608501826bffffffffffffffffffffffff169052565b506080880151608084015260a088015161412d60a085018263ffffffff169052565b5060c088015161414560c085018263ffffffff169052565b5060e088015160e0840152610100808901516141688286018263ffffffff169052565b505061012088810151151590840152610140830181905261418b81840188613f96565b90508281036101608401526141a08187613f45565b90508281036101808401526141b58186613f45565b9150506119da6101a083018460ff169052565b73ffffffffffffffffffffffffffffffffffffffff811681146130b857600080fd5b600080604083850312156141fd57600080fd5b8235614208816141c8565b915060208301356004811061421c57600080fd5b809150509250929050565b6000806040838503121561423a57600080fd5b82359150602083013561421c816141c8565b60006020828403121561425e57600080fd5b81356130d1816141c8565b60005b8381101561428457818101518382015260200161426c565b50506000910152565b600081518084526142a5816020860160208601614269565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006130d1602083018461428d565b600080602083850312156142fd57600080fd5b823567ffffffffffffffff8082111561431557600080fd5b818501915085601f83011261432957600080fd5b81358181111561433857600080fd5b8660208260051b850101111561434d57600080fd5b60209290920196919550909350505050565b80356002811061436e57600080fd5b919050565b60008060006060848603121561438857600080fd5b833592506020840135915061439f6040850161435f565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106143eb576143eb6143a8565b91905290565b60208101600283106143eb576143eb6143a8565b63ffffffff811681146130b857600080fd5b6000806040838503121561442a57600080fd5b6144338361435f565b9150602083013561421c81614405565b6000806040838503121561445657600080fd5b8235614461816141c8565b9150602083013561421c816141c8565b6000806040838503121561448457600080fd5b82359150602083013561421c81614405565b602081526144bd60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b600060208301516144e6604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015163ffffffff8116606084015250606083015161016080608085015261451561018085018361428d565b9150608085015161453660a08601826bffffffffffffffffffffffff169052565b5060a085015173ffffffffffffffffffffffffffffffffffffffff811660c08601525060c085015167ffffffffffffffff811660e08601525060e08501516101006145888187018363ffffffff169052565b86015190506101206145a9868201836bffffffffffffffffffffffff169052565b86015190506101406145be8682018315159052565b8601518584037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018387015290506119da838261428d565b60208101600483106143eb576143eb6143a8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156108fe576108fe61460a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b808201808211156108fe576108fe61460a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036146ee576146ee61460a565b5060010190565b600181811c9082168061470957607f821691505b602082108103614742577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561479257600081815260208120601f850160051c8101602086101561476f5750805b601f850160051c820191505b8181101561478e5782815560010161477b565b5050505b505050565b67ffffffffffffffff8311156147af576147af61464c565b6147c3836147bd83546146f5565b83614748565b6000601f84116001811461481557600085156147df5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556148ab565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156148645786850135825560209485019460019092019101614844565b508682101561489f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b600060c0828403121561491157600080fd5b60405160c0810181811067ffffffffffffffff821117156149345761493461464c565b6040528251614942816141c8565b8152602083015160ff8116811461495857600080fd5b8060208301525060408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b6000604082016040835280865480835260608501915087600052602092508260002060005b828110156149e857815473ffffffffffffffffffffffffffffffffffffffff16845292840192600191820191016149b6565b505050838103828501528481528590820160005b86811015614a37578235614a0f816141c8565b73ffffffffffffffffffffffffffffffffffffffff16825291830191908301906001016149fc565b50979650505050505050565b6bffffffffffffffffffffffff828116828216039080821115613e4357613e4361460a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006bffffffffffffffffffffffff80841680614ab657614ab6614a68565b92169190910492915050565b6bffffffffffffffffffffffff818116838216019080821115613e4357613e4361460a565b600060208284031215614af957600080fd5b815180151581146130d157600080fd5b600060208284031215614b1b57600080fd5b5051919050565b600060208284031215614b3457600080fd5b6040516020810181811067ffffffffffffffff82111715614b5757614b5761464c565b6040528251614b6581614405565b81529392505050565b805169ffffffffffffffffffff8116811461436e57600080fd5b600080600080600060a08688031215614ba057600080fd5b614ba986614b6e565b9450602086015193506040860151925060608601519150614bcc60808701614b6e565b90509295509295909350565b60006bffffffffffffffffffffffff80831681851681830481118215151615614c0357614c0361460a565b02949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c4457614c4461460a565b500290565b60ff81811683821601908111156108fe576108fe61460a565b828482376000838201600081528351614c7f818360208801614269565b0195945050505050565b600063ffffffff80831681851681830481118215151615614c0357614c0361460a565b600082614cbb57614cbb614a68565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666a164736f6c6343000810000a", + ABI: "[{\"inputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Mode\",\"name\":\"mode\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"link\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"linkNativeFeed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fastGasFeed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ArrayHasNoEntries\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotCancel\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ConfigDigestMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateEntry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitOutsideRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfFaultyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDataLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReport\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTrigger\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTriggerType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxCheckDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerformDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MigrationNotPermitted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveTransmitters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByLINKToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrRegistrar\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByUpkeepPrivilegeManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySimulatedBackend\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyUnpausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ParameterLengthError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PaymentGreaterThanAllLINK\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PipelineDataExceedsLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RegistryPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedTransmitter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"TargetCheckReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TranscoderNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepCancelled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotCanceled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotNeeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValueNotChanged\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"CancelledUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"FundsAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"FundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"InsufficientFundsUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"OwnerFundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"payees\",\"type\":\"address[]\"}],\"name\":\"PayeesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payee\",\"type\":\"address\"}],\"name\":\"PaymentWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"ReorgedUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"StaleUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"atBlockHeight\",\"type\":\"uint64\"}],\"name\":\"UpkeepCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"gasLimit\",\"type\":\"uint96\"}],\"name\":\"UpkeepGasLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"UpkeepMigrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepOffchainConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"totalPayment\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasOverhead\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"UpkeepPerformed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newPipelineData\",\"type\":\"bytes\"}],\"name\":\"UpkeepPipelineDataSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"privilegeConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepPrivilegeConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"importedFrom\",\"type\":\"address\"}],\"name\":\"UpkeepReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"executeGas\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"UpkeepRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"triggerConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepTriggerConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepUnpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"}],\"name\":\"acceptPayeeship\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"acceptUpkeepAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endIndex\",\"type\":\"uint256\"}],\"name\":\"getActiveUpkeepIDs\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endIndex\",\"type\":\"uint256\"},{\"internalType\":\"enumKeeperRegistryBase2_1.Trigger\",\"name\":\"trigger\",\"type\":\"uint8\"}],\"name\":\"getActiveUpkeepIDsByType\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getBlockTriggerConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"checkCadance\",\"type\":\"uint32\"}],\"internalType\":\"structKeeperRegistryBase2_1.BlockTriggerConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFastGasFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkNativeFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getLogTriggerConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"filterSelector\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"topic0\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"topic1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"topic2\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"topic3\",\"type\":\"bytes32\"}],\"internalType\":\"structKeeperRegistryBase2_1.LogTriggerConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Trigger\",\"name\":\"triggerType\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"name\":\"getMaxPaymentForGas\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"maxPayment\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getMinBalanceForUpkeep\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"minBalance\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMode\",\"outputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Mode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"peer\",\"type\":\"address\"}],\"name\":\"getPeerRegistryMigrationPermission\",\"outputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.MigrationPermission\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"query\",\"type\":\"address\"}],\"name\":\"getSignerInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"ownerLinkBalance\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"expectedLinkBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"totalPremium\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"numUpkeeps\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"latestConfigBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"latestConfigDigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"latestEpoch\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"internalType\":\"structKeeperRegistryBase2_1.State\",\"name\":\"state\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"paymentPremiumPPB\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"flatFeeMicroLink\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"checkGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"stalenessSeconds\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"gasCeilingMultiplier\",\"type\":\"uint16\"},{\"internalType\":\"uint96\",\"name\":\"minUpkeepSpend\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"maxPerformGas\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxCheckDataSize\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPerformDataSize\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"fallbackGasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fallbackLinkPrice\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"transcoder\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"registrars\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"upkeepPrivilegeManager\",\"type\":\"address\"}],\"internalType\":\"structKeeperRegistryBase2_1.OnchainConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"query\",\"type\":\"address\"}],\"name\":\"getTransmitterInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"},{\"internalType\":\"uint96\",\"name\":\"balance\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"lastCollected\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"payee\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getTriggerType\",\"outputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Trigger\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getUpkeep\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"executeGas\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"},{\"internalType\":\"uint96\",\"name\":\"balance\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"maxValidBlocknumber\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"lastPerformedBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"amountSpent\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"internalType\":\"structKeeperRegistryBase2_1.UpkeepInfo\",\"name\":\"upkeepInfo\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getUpkeepPrivilegeConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getUpkeepTriggerConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"pauseUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recoverFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"payees\",\"type\":\"address[]\"}],\"name\":\"setPayees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"peer\",\"type\":\"address\"},{\"internalType\":\"enumKeeperRegistryBase2_1.MigrationPermission\",\"name\":\"permission\",\"type\":\"uint8\"}],\"name\":\"setPeerRegistryMigrationPermission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"name\":\"setUpkeepGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"name\":\"setUpkeepOffchainConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"newPipelineData\",\"type\":\"bytes\"}],\"name\":\"setUpkeepPipelineData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"newPrivilegeConfig\",\"type\":\"bytes\"}],\"name\":\"setUpkeepPrivilegeConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposed\",\"type\":\"address\"}],\"name\":\"transferPayeeship\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"proposed\",\"type\":\"address\"}],\"name\":\"transferUpkeepAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"unpauseUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawOwnerFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x6101006040523480156200001257600080fd5b5060405162004fe838038062004fe88339810160408190526200003591620001e1565b838383833380600081620000905760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c357620000c38162000119565b505050836002811115620000db57620000db62000243565b60e0816002811115620000f257620000f262000243565b9052506001600160a01b0392831660805290821660a0521660c05250620002599350505050565b336001600160a01b03821603620001735760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000087565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80516001600160a01b0381168114620001dc57600080fd5b919050565b60008060008060808587031215620001f857600080fd5b8451600381106200020857600080fd5b93506200021860208601620001c4565b92506200022860408601620001c4565b91506200023860608601620001c4565b905092959194509250565b634e487b7160e01b600052602160045260246000fd5b60805160a05160c05160e051614d0f620002d960003960008181610483015281816133ec0152818161396f0152613b0201526000818161051401526131e00152600081816105f001526132ba01526000818161067701528181611d2301528181611ff901528181612471015281816129930152612a170152614d0f6000f3fe608060405234801561001057600080fd5b50600436106102ad5760003560e01c806379ba50971161017b578063b148ab6b116100d8578063eb5dcd6c1161008c578063ee048eae11610071578063ee048eae14610721578063f2fde38b14610749578063faa3e9961461075c57600080fd5b8063eb5dcd6c1461069b578063ed56b3e1146106ae57600080fd5b8063b79550be116100bd578063b79550be1461064d578063c7c3a19a14610655578063ca30e6031461067557600080fd5b8063b148ab6b14610627578063b657bc9c1461063a57600080fd5b80638dcf0fe71161012f578063a72aa27e11610114578063a72aa27e146105db578063b10b673c146105ee578063b121e1471461061457600080fd5b80638dcf0fe7146105b5578063a710b221146105c857600080fd5b80638456cb59116101605780638456cb591461057c5780638765ecbe146105845780638da5cb5b1461059757600080fd5b806379ba50971461056c5780637d9b97e01461057457600080fd5b80633b9cce59116102295780635147cd59116101dd5780635b6aa71c116101c25780635b6aa71c146104e25780636709d0e514610512578063744bfe611461055957600080fd5b80635147cd59146104af5780635165f2f5146104cf57600080fd5b80634184e12c1161020e5780634184e12c14610408578063421d183b1461041b5780634b4fd03b1461048157600080fd5b80633b9cce59146103ed5780633f4ba83a1461040057600080fd5b80631865c57d1161028057806319d97a941161026557806319d97a94146103a75780631a2af011146103c7578063207b6516146103da57600080fd5b80631865c57d1461037b578063187256e81461039457600080fd5b806306e3b632146102b25780630b7d33e6146102db5780630d0be147146102f05780630d4a4fb114610303575b600080fd5b6102c56102c0366004613ddf565b6107a2565b6040516102d29190613e01565b60405180910390f35b6102ee6102e9366004613e45565b6108ad565b005b6102ee6102fe366004613e45565b610963565b610316610311366004613ec1565b6109fa565b6040516102d29190600060c08201905073ffffffffffffffffffffffffffffffffffffffff835116825260ff602084015116602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b610383610afc565b6040516102d295949392919061407e565b6102ee6103a23660046141b5565b610ef1565b6103ba6103b5366004613ec1565b610f62565b6040516102d29190614260565b6102ee6103d5366004614273565b611004565b6103ba6103e8366004613ec1565b611157565b6102ee6103fb366004614298565b611174565b6102ee6113ca565b6102c5610416366004614321565b611430565b61042e610429366004614356565b611584565b60408051951515865260ff90941660208601526bffffffffffffffffffffffff9283169385019390935216606083015273ffffffffffffffffffffffffffffffffffffffff16608082015260a0016102d2565b7f00000000000000000000000000000000000000000000000000000000000000006040516102d291906143a2565b6104c26104bd366004613ec1565b6116b7565b6040516102d291906143bc565b6102ee6104dd366004613ec1565b611762565b6104f56104f03660046143e2565b6118e4565b6040516bffffffffffffffffffffffff90911681526020016102d2565b7f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102d2565b6102ee610567366004614273565b611a16565b6102ee611e1f565b6102ee611f21565b6102ee61207c565b6102ee610592366004613ec1565b6120ed565b60005473ffffffffffffffffffffffffffffffffffffffff16610534565b6102ee6105c3366004613e45565b612272565b6102ee6105d636600461440e565b6122c7565b6102ee6105e936600461443c565b612543565b7f0000000000000000000000000000000000000000000000000000000000000000610534565b6102ee610622366004614356565b612638565b6102ee610635366004613ec1565b612730565b6104f5610648366004613ec1565b61292d565b6102ee61295a565b610668610663366004613ec1565b612ab6565b6040516102d29190614461565b7f0000000000000000000000000000000000000000000000000000000000000000610534565b6102ee6106a936600461440e565b612dff565b6107086106bc366004614356565b73ffffffffffffffffffffffffffffffffffffffff166000908152600c602090815260409182902082518084019093525460ff8082161515808552610100909204169290910182905291565b60408051921515835260ff9091166020830152016102d2565b61073461072f366004613ec1565b612f5d565b604051905163ffffffff1681526020016102d2565b6102ee610757366004614356565b61303c565b61079561076a366004614356565b73ffffffffffffffffffffffffffffffffffffffff1660009081526019602052604090205460ff1690565b6040516102d291906145c1565b606060006107b06002613050565b90508083116107bf57826107c1565b805b9250828411156107fd576040517f1390f2a100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108098585614604565b905060008167ffffffffffffffff81111561082657610826614617565b60405190808252806020026020018201604052801561084f578160200160208202803683370190505b50905060005b828110156108a15761087261086a8883614646565b60029061305a565b82828151811061088457610884614659565b60209081029190910101528061089981614688565b915050610855565b50925050505b92915050565b60155468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16331461090a576040517f77c3599200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152601c60205260409020610923828483614762565b50827f2fd8d70753a007014349d4591843cc031c2dd7a260d7dd82eca8253686ae7769838360405161095692919061487d565b60405180910390a2505050565b61096c8361306d565b60155463ffffffff168111156109ae576040517f2b49197900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526007602052604090206109c7828483614762565b50827f787b2e556c364148324d7dc0cee4322a048aaf798bda184136c8636c72ed3056838360405161095692919061487d565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091526001610a37836116b7565b6001811115610a4857610a48614373565b14610a5257600080fd5b6000828152601a602052604090208054610a6b906146c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a97906146c0565b8015610ae45780601f10610ab957610100808354040283529160200191610ae4565b820191906000526020600020905b815481529060010190602001808311610ac757829003601f168201915b50505050508060200190518101906108a791906148ca565b6040805161014081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810191909152604080516101c08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820183905261016082018390526101808201526101a0810191909152604080516101408101825260145463ffffffff7401000000000000000000000000000000000000000082041682526bffffffffffffffffffffffff908116602083015260185492820192909252601254700100000000000000000000000000000000900490911660608281019190915290819060009060808101610c416002613050565b81526014547801000000000000000000000000000000000000000000000000810463ffffffff9081166020808501919091527c0100000000000000000000000000000000000000000000000000000000808404831660408087019190915260115460608088019190915260125492830485166080808901919091526e010000000000000000000000000000840460ff16151560a09889015282516101c081018452610100808604881682526501000000000086048816968201969096526c010000000000000000000000008089048816948201949094526901000000000000000000850462ffffff16928101929092529282900461ffff16928101929092526013546bffffffffffffffffffffffff811696830196909652700100000000000000000000000000000000909404831660c082015260155480841660e0830152640100000000900490921690820152601654610120820152601754610140820152910473ffffffffffffffffffffffffffffffffffffffff166101608201529095506101808101610dd16009613121565b815260155468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16602091820152601254600d80546040805182860281018601909152818152949850899489949293600e9360ff909116928591830182828015610e7057602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610e45575b5050505050925081805480602002602001604051908101604052809291908181526020018280548015610ed957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610eae575b50505050509150945094509450945094509091929394565b610ef961312e565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260196020526040902080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610f5957610f59614373565b02179055505050565b6000818152601c60205260409020805460609190610f7f906146c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610fab906146c0565b8015610ff85780601f10610fcd57610100808354040283529160200191610ff8565b820191906000526020600020905b815481529060010190602001808311610fdb57829003601f168201915b50505050509050919050565b61100d8261306d565b3373ffffffffffffffffffffffffffffffffffffffff82160361105c576040517f8c8728c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166110a9576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604090205473ffffffffffffffffffffffffffffffffffffffff8281169116146111535760008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851690811790915590519091339185917fb1cbb2c4b8480034c27e06da5f096b8233a8fd4497028593a41ff6df79726b3591a45b5050565b6000818152601a60205260409020805460609190610f7f906146c0565b61117c61312e565b600e5481146111b7576040517fcf54c06a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b600e54811015611389576000600e82815481106111d9576111d9614659565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116808452600f9092526040832054919350169085858581811061122357611223614659565b90506020020160208101906112389190614356565b905073ffffffffffffffffffffffffffffffffffffffff811615806112cb575073ffffffffffffffffffffffffffffffffffffffff8216158015906112a957508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156112cb575073ffffffffffffffffffffffffffffffffffffffff81811614155b15611302576040517fb387a23800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff818116146113735773ffffffffffffffffffffffffffffffffffffffff8381166000908152600f6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169183169190911790555b505050808061138190614688565b9150506111ba565b507fa46de38886467c59be07a0675f14781206a5477d871628af46c2443822fcb725600e83836040516113be9392919061495c565b60405180910390a15050565b6113d261312e565b601280547fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff1690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6060600061143e6002613050565b905080841161144d578361144f565b805b93508385111561148b576040517f1390f2a100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114978686614604565b90506000808267ffffffffffffffff8111156114b5576114b5614617565b6040519080825280602002602001820160405280156114de578160200160208202803683370190505b50905060005b8381101561156d5760006114fb61086a8b84614646565b905087600181111561150f5761150f614373565b611518826116b7565b600181111561152957611529614373565b0361155a578083858151811061154157611541614659565b60209081029190910101528361155681614688565b9450505b508061156581614688565b9150506114e4565b50828214611579578181525b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602090815260408083208151608081018352905460ff80821615801584526101008304909116948301949094526bffffffffffffffffffffffff6201000082048116938301939093526e01000000000000000000000000000090049091166060820152829182918291829190829061165e57606082015160125460009161164a9170010000000000000000000000000000000090046bffffffffffffffffffffffff16614a0e565b600e5490915061165a9082614a62565b9150505b815160208301516040840151611675908490614a8d565b6060949094015173ffffffffffffffffffffffffffffffffffffffff9a8b166000908152600f6020526040902054929b919a9499509750921694509092505050565b6000818160045b600f811015611744577fff0000000000000000000000000000000000000000000000000000000000000082168382602081106116fc576116fc614659565b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461173257506000949350505050565b8061173c81614688565b9150506116be565b5081600f1a600181111561175a5761175a614373565b949350505050565b61176b8161306d565b60008181526004602090815260409182902082516101008082018552825460ff8116151580845263ffffffff92820483169584019590955265010000000000810482169583019590955273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009095048516606083015260018301546bffffffffffffffffffffffff80821660808501526c0100000000000000000000000082041660a0840152780100000000000000000000000000000000000000000000000090041660c082015260029091015490921660e0830152611875576040517f1b88a78400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556118b46002836131b1565b5060405182907f7bada562044eb163f6b4003c4553e4e62825344c0418eea087bed5ee05a4745690600090a25050565b604080516101208101825260125460ff808216835263ffffffff6101008084048216602086015265010000000000840482169585019590955262ffffff6901000000000000000000840416606085015261ffff6c0100000000000000000000000084041660808501526e01000000000000000000000000000083048216151560a08501526f010000000000000000000000000000008304909116151560c08401526bffffffffffffffffffffffff70010000000000000000000000000000000083041660e08401527c0100000000000000000000000000000000000000000000000000000000909104169181019190915260009081806119e3836131bd565b91509150611a0c838787601360020160049054906101000a900463ffffffff168686600061339b565b9695505050505050565b6012546f01000000000000000000000000000000900460ff1615611a66576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601280547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff166f0100000000000000000000000000000017905573ffffffffffffffffffffffffffffffffffffffff8116611aed576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020908152604080832081516101008082018452825460ff81161515835263ffffffff91810482168387015265010000000000810482168386015273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009091048116606084015260018401546bffffffffffffffffffffffff80821660808601526c0100000000000000000000000082041660a08501527801000000000000000000000000000000000000000000000000900490911660c0830152600290920154821660e082015286855260059093529220549091163314611c00576040517fa47c170600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c086133e6565b816040015163ffffffff161115611c4b576040517fff84e5dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600460205260409020600101546018546c010000000000000000000000009091046bffffffffffffffffffffffff1690611c8b908290614604565b60185560008481526004602081905260409182902060010180547fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff16905590517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116928201929092526bffffffffffffffffffffffff831660248201527f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015611d6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d929190614ab2565b50604080516bffffffffffffffffffffffff8316815273ffffffffffffffffffffffffffffffffffffffff8516602082015285917ff3b5906e5672f3e524854103bcafbbdba80dbdfeca2c35e116127b1060a68318910160405180910390a25050601280547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff1690555050565b60015473ffffffffffffffffffffffffffffffffffffffff163314611ea5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b611f2961312e565b6014546018546bffffffffffffffffffffffff90911690611f4b908290614604565b601855601480547fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001690556040516bffffffffffffffffffffffff821681527f1d07d0b0be43d3e5fee41a80b579af370affee03fa595bf56d5d4c19328162f19060200160405180910390a16040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526bffffffffffffffffffffffff821660248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044015b6020604051808303816000875af1158015612058573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111539190614ab2565b61208461312e565b601280547fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff166e0100000000000000000000000000001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611426565b6120f68161306d565b60008181526004602090815260409182902082516101008082018552825460ff8116158015845263ffffffff92820483169584019590955265010000000000810482169583019590955273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009095048516606083015260018301546bffffffffffffffffffffffff80821660808501526c0100000000000000000000000082041660a0840152780100000000000000000000000000000000000000000000000090041660c082015260029091015490921660e0830152612200576040517f514b6c2400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561224260028361349b565b5060405182907f8ab10247ce168c27748e656ecf852b951fcaac790c18106b19aa0ae57a8b741f90600090a25050565b61227b8361306d565b6000838152601b60205260409020612294828483614762565b50827f3e8740446213c8a77d40e08f79136ce3f347d13ed270a6ebdf57159e0faf4850838360405161095692919061487d565b73ffffffffffffffffffffffffffffffffffffffff8116612314576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600f6020526040902054163314612374576040517fcebf515b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601254600e546000916123ab91859170010000000000000000000000000000000090046bffffffffffffffffffffffff16906134a7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600b6020526040902080547fffffffffffffffffffffffffffffffffffff000000000000000000000000ffff169055601854909150612415906bffffffffffffffffffffffff831690614604565b6018556040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526bffffffffffffffffffffffff831660248301527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156124ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124de9190614ab2565b5060405133815273ffffffffffffffffffffffffffffffffffffffff808416916bffffffffffffffffffffffff8416918616907f9819093176a1851202c7bcfa46845809b4e47c261866550e94ed3775d2f406989060200160405180910390a4505050565b6108fc8163ffffffff161080612578575060145463ffffffff7001000000000000000000000000000000009091048116908216115b156125af576040517f14c237fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6125b88261306d565b60008281526004602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff1661010063ffffffff861690810291909117909155915191825283917fc24c07e655ce79fba8a589778987d3c015bc6af1632bb20cf9182e02a65d972c910160405180910390a25050565b73ffffffffffffffffffffffffffffffffffffffff818116600090815260106020526040902054163314612698576040517f6752e7aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8181166000818152600f602090815260408083208054337fffffffffffffffffffffffff000000000000000000000000000000000000000080831682179093556010909452828520805490921690915590519416939092849290917f78af32efdcad432315431e9b03d27e6cd98fb79c405fdc5af7c1714d9c0f75b39190a45050565b60008181526004602090815260409182902082516101008082018552825460ff81161515835263ffffffff918104821694830194909452650100000000008404811694820185905273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009094048416606083015260018301546bffffffffffffffffffffffff80821660808501526c0100000000000000000000000082041660a084015278010000000000000000000000000000000000000000000000009004811660c083015260029092015490921660e083015290911461283c576040517f9c0083a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604090205473ffffffffffffffffffffffffffffffffffffffff163314612899576040517f6352a85300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526005602090815260408083208054337fffffffffffffffffffffffff0000000000000000000000000000000000000000808316821790935560069094528285208054909216909155905173ffffffffffffffffffffffffffffffffffffffff90911692839186917f5cff4db96bef051785e999f44bfcd21c18823e034fb92dd376e3db4ce0feeb2c91a4505050565b60006108a761293b836116b7565b600084815260046020526040902054610100900463ffffffff166118e4565b61296261312e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156129ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a139190614ad4565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3360185484612a609190614604565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401612039565b604080516101608101825260008082526020820181905291810182905260608082018190526080820183905260a0820183905260c0820183905260e082018390526101008201839052610120820192909252610140810191909152600082815260046020908152604080832081516101008082018452825460ff81161515835263ffffffff918104821683870190815265010000000000820483168487015273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009092048216606080860191825260018701546bffffffffffffffffffffffff80821660808901526c0100000000000000000000000082041660a088015278010000000000000000000000000000000000000000000000009004851660c0870152600290960154831660e08601908152875161016081018952905184168152905190921682880152519091168185015287865260079094529190932080549193830191612c20906146c0565b80601f0160208091040260200160405190810160405280929190818152602001828054612c4c906146c0565b8015612c995780601f10612c6e57610100808354040283529160200191612c99565b820191906000526020600020905b815481529060010190602001808311612c7c57829003601f168201915b505050505081526020018260a001516bffffffffffffffffffffffff1681526020016005600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826040015163ffffffff1667ffffffffffffffff1681526020018260c0015163ffffffff16815260200182608001516bffffffffffffffffffffffff168152602001826000015115158152602001601b60008681526020019081526020016000208054612d76906146c0565b80601f0160208091040260200160405190810160405280929190818152602001828054612da2906146c0565b8015612def5780601f10612dc457610100808354040283529160200191612def565b820191906000526020600020905b815481529060010190602001808311612dd257829003601f168201915b5050505050815250915050919050565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600f6020526040902054163314612e5f576040517fcebf515b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821603612eae576040517f8c8728c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8281166000908152601060205260409020548116908216146111535773ffffffffffffffffffffffffffffffffffffffff82811660008181526010602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169486169485179055513392917f84f7c7c80bb8ed2279b4aab5f61cd05e6374073d38f46d7f32de8c30e9e3836791a45050565b6040805160208101909152600081526001612f77836116b7565b6001811115612f8857612f88614373565b14612f9257600080fd5b6000828152601a602052604090208054612fab906146c0565b80601f0160208091040260200160405190810160405280929190818152602001828054612fd7906146c0565b80156130245780601f10612ff957610100808354040283529160200191613024565b820191906000526020600020905b81548152906001019060200180831161300757829003601f168201915b50505050508060200190518101906108a79190614aed565b61304461312e565b61304d816136af565b50565b60006108a7825490565b600061306683836137a4565b9392505050565b60008181526005602052604090205473ffffffffffffffffffffffffffffffffffffffff1633146130ca576040517fa47c170600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526004602052604090205465010000000000900463ffffffff9081161461304d576040517f9c0083a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606000613066836137ce565b60005473ffffffffffffffffffffffffffffffffffffffff1633146131af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401611e9c565b565b60006130668383613829565b6000806000836060015162ffffff1690506000808263ffffffff161190506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015613249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326d9190614b53565b509450909250505060008113158061328457508142105b806132a557508280156132a5575061329c8242614604565b8463ffffffff16105b156132b45760165495506132b8565b8095505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015613323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133479190614b53565b509450909250505060008113158061335e57508142105b8061337f575082801561337f57506133768242614604565b8463ffffffff16105b1561338e576017549450613392565b8094505b50505050915091565b6000806133ad88878b60000151613878565b90506000806133c88b8a63ffffffff16858a8a60018b61393a565b90925090506133d78183614a8d565b9b9a5050505050505050505050565b600060017f0000000000000000000000000000000000000000000000000000000000000000600281111561341c5761341c614373565b0361349657606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561346d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134919190614ad4565b905090565b504390565b60006130668383613ce5565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b602090815260408083208151608081018352905460ff80821615801584526101008304909116948301949094526bffffffffffffffffffffffff6201000082048116938301939093526e01000000000000000000000000000090049091166060820152906136a357600081606001518561353f9190614a0e565b9050600061354d8583614a62565b905080836040018181516135619190614a8d565b6bffffffffffffffffffffffff1690525061357c8582614ba3565b8360600181815161358d9190614a8d565b6bffffffffffffffffffffffff90811690915273ffffffffffffffffffffffffffffffffffffffff89166000908152600b602090815260409182902087518154928901519389015160608a015186166e010000000000000000000000000000027fffffffffffff000000000000000000000000ffffffffffffffffffffffffffff919096166201000002167fffffffffffff000000000000000000000000000000000000000000000000ffff60ff95909516610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909416939093171792909216179190911790555050505b60400151949350505050565b3373ffffffffffffffffffffffffffffffffffffffff82160361372e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401611e9c565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60008260000182815481106137bb576137bb614659565b9060005260206000200154905092915050565b606081600001805480602002602001604051908101604052809291908181526020018280548015610ff857602002820191906000526020600020905b81548152602001906001019080831161380a5750505050509050919050565b6000818152600183016020526040812054613870575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108a7565b5060006108a7565b6000808085600181111561388e5761388e614373565b0361389d5750620138806138f2565b60018560018111156138b1576138b1614373565b036138c05750620186a06138f2565b6040517ff2b2d41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61390363ffffffff85166014614bd7565b61390e846001614c14565b61391d9060ff16611d4c614bd7565b6139279083614646565b6139319190614646565b95945050505050565b6000806000896080015161ffff16876139539190614bd7565b90508380156139615750803a105b1561396957503a5b600060027f0000000000000000000000000000000000000000000000000000000000000000600281111561399f5761399f614373565b03613afe5760408051600081526020810190915285156139fd57600036604051806080016040528060488152602001614cbb604891396040516020016139e793929190614c2d565b6040516020818303038152906040529050613a65565b601554613a1990640100000000900463ffffffff166004614c54565b63ffffffff1667ffffffffffffffff811115613a3757613a37614617565b6040519080825280601f01601f191660200182016040528015613a61576020820181803683370190505b5090505b6040517f49948e0e00000000000000000000000000000000000000000000000000000000815273420000000000000000000000000000000000000f906349948e0e90613ab5908490600401614260565b602060405180830381865afa158015613ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af69190614ad4565b915050613baa565b60017f00000000000000000000000000000000000000000000000000000000000000006002811115613b3257613b32614373565b03613baa57606c73ffffffffffffffffffffffffffffffffffffffff1663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ba79190614ad4565b90505b84613bc657808b6080015161ffff16613bc39190614bd7565b90505b613bd461ffff871682614c77565b905060008782613be48c8e614646565b613bee9086614bd7565b613bf89190614646565b613c0a90670de0b6b3a7640000614bd7565b613c149190614c77565b905060008c6040015163ffffffff1664e8d4a51000613c339190614bd7565b898e6020015163ffffffff16858f88613c4c9190614bd7565b613c569190614646565b613c6490633b9aca00614bd7565b613c6e9190614bd7565b613c789190614c77565b613c829190614646565b90506b033b2e3c9fd0803ce8000000613c9b8284614646565b1115613cd3576040517f2ad7547a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b909c909b509950505050505050505050565b60008181526001830160205260408120548015613dce576000613d09600183614604565b8554909150600090613d1d90600190614604565b9050818114613d82576000866000018281548110613d3d57613d3d614659565b9060005260206000200154905080876000018481548110613d6057613d60614659565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613d9357613d93614c8b565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506108a7565b60009150506108a7565b5092915050565b60008060408385031215613df257600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015613e3957835183529284019291840191600101613e1d565b50909695505050505050565b600080600060408486031215613e5a57600080fd5b83359250602084013567ffffffffffffffff80821115613e7957600080fd5b818601915086601f830112613e8d57600080fd5b813581811115613e9c57600080fd5b876020828501011115613eae57600080fd5b6020830194508093505050509250925092565b600060208284031215613ed357600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613f2057815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613eee565b509495945050505050565b805163ffffffff16825260006101c06020830151613f51602086018263ffffffff169052565b506040830151613f69604086018263ffffffff169052565b506060830151613f80606086018262ffffff169052565b506080830151613f96608086018261ffff169052565b5060a0830151613fb660a08601826bffffffffffffffffffffffff169052565b5060c0830151613fce60c086018263ffffffff169052565b5060e0830151613fe660e086018263ffffffff169052565b506101008381015163ffffffff1690850152610120808401519085015261014080840151908501526101608084015173ffffffffffffffffffffffffffffffffffffffff16908501526101808084015181860183905261404883870182613eda565b925050506101a0808401516140748287018273ffffffffffffffffffffffffffffffffffffffff169052565b5090949350505050565b855163ffffffff16815260006101c060208801516140ac60208501826bffffffffffffffffffffffff169052565b506040880151604084015260608801516140d660608501826bffffffffffffffffffffffff169052565b506080880151608084015260a08801516140f860a085018263ffffffff169052565b5060c088015161411060c085018263ffffffff169052565b5060e088015160e0840152610100808901516141338286018263ffffffff169052565b505061012088810151151590840152610140830181905261415681840188613f2b565b905082810361016084015261416b8187613eda565b90508281036101808401526141808186613eda565b915050611a0c6101a083018460ff169052565b73ffffffffffffffffffffffffffffffffffffffff8116811461304d57600080fd5b600080604083850312156141c857600080fd5b82356141d381614193565b91506020830135600481106141e757600080fd5b809150509250929050565b60005b8381101561420d5781810151838201526020016141f5565b50506000910152565b6000815180845261422e8160208601602086016141f2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006130666020830184614216565b6000806040838503121561428657600080fd5b8235915060208301356141e781614193565b600080602083850312156142ab57600080fd5b823567ffffffffffffffff808211156142c357600080fd5b818501915085601f8301126142d757600080fd5b8135818111156142e657600080fd5b8660208260051b85010111156142fb57600080fd5b60209290920196919550909350505050565b80356002811061431c57600080fd5b919050565b60008060006060848603121561433657600080fd5b833592506020840135915061434d6040850161430d565b90509250925092565b60006020828403121561436857600080fd5b813561306681614193565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106143b6576143b6614373565b91905290565b60208101600283106143b6576143b6614373565b63ffffffff8116811461304d57600080fd5b600080604083850312156143f557600080fd5b6143fe8361430d565b915060208301356141e7816143d0565b6000806040838503121561442157600080fd5b823561442c81614193565b915060208301356141e781614193565b6000806040838503121561444f57600080fd5b8235915060208301356141e7816143d0565b6020815261448860208201835173ffffffffffffffffffffffffffffffffffffffff169052565b600060208301516144b1604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015163ffffffff811660608401525060608301516101608060808501526144e0610180850183614216565b9150608085015161450160a08601826bffffffffffffffffffffffff169052565b5060a085015173ffffffffffffffffffffffffffffffffffffffff811660c08601525060c085015167ffffffffffffffff811660e08601525060e08501516101006145538187018363ffffffff169052565b8601519050610120614574868201836bffffffffffffffffffffffff169052565b86015190506101406145898682018315159052565b8601518584037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001838701529050611a0c8382614216565b60208101600483106143b6576143b6614373565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156108a7576108a76145d5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b808201808211156108a7576108a76145d5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036146b9576146b96145d5565b5060010190565b600181811c908216806146d457607f821691505b60208210810361470d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561475d57600081815260208120601f850160051c8101602086101561473a5750805b601f850160051c820191505b8181101561475957828155600101614746565b5050505b505050565b67ffffffffffffffff83111561477a5761477a614617565b61478e8361478883546146c0565b83614713565b6000601f8411600181146147e057600085156147aa5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355614876565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b8281101561482f578685013582556020948501946001909201910161480f565b508682101561486a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b600060c082840312156148dc57600080fd5b60405160c0810181811067ffffffffffffffff821117156148ff576148ff614617565b604052825161490d81614193565b8152602083015160ff8116811461492357600080fd5b8060208301525060408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b6000604082016040835280865480835260608501915087600052602092508260002060005b828110156149b357815473ffffffffffffffffffffffffffffffffffffffff1684529284019260019182019101614981565b505050838103828501528481528590820160005b86811015614a025782356149da81614193565b73ffffffffffffffffffffffffffffffffffffffff16825291830191908301906001016149c7565b50979650505050505050565b6bffffffffffffffffffffffff828116828216039080821115613dd857613dd86145d5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006bffffffffffffffffffffffff80841680614a8157614a81614a33565b92169190910492915050565b6bffffffffffffffffffffffff818116838216019080821115613dd857613dd86145d5565b600060208284031215614ac457600080fd5b8151801515811461306657600080fd5b600060208284031215614ae657600080fd5b5051919050565b600060208284031215614aff57600080fd5b6040516020810181811067ffffffffffffffff82111715614b2257614b22614617565b6040528251614b30816143d0565b81529392505050565b805169ffffffffffffffffffff8116811461431c57600080fd5b600080600080600060a08688031215614b6b57600080fd5b614b7486614b39565b9450602086015193506040860151925060608601519150614b9760808701614b39565b90509295509295909350565b60006bffffffffffffffffffffffff80831681851681830481118215151615614bce57614bce6145d5565b02949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c0f57614c0f6145d5565b500290565b60ff81811683821601908111156108a7576108a76145d5565b828482376000838201600081528351614c4a8183602088016141f2565b0195945050505050565b600063ffffffff80831681851681830481118215151615614bce57614bce6145d5565b600082614c8657614c86614a33565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666a164736f6c6343000810000a", } var KeeperRegistryLogicBABI = KeeperRegistryLogicBMetaData.ABI @@ -609,9 +610,9 @@ func (_KeeperRegistryLogicB *KeeperRegistryLogicBCallerSession) GetUpkeep(id *bi return _KeeperRegistryLogicB.Contract.GetUpkeep(&_KeeperRegistryLogicB.CallOpts, id) } -func (_KeeperRegistryLogicB *KeeperRegistryLogicBCaller) GetUpkeepAdminOffchainConfig(opts *bind.CallOpts, upkeepId *big.Int) ([]byte, error) { +func (_KeeperRegistryLogicB *KeeperRegistryLogicBCaller) GetUpkeepPrivilegeConfig(opts *bind.CallOpts, upkeepId *big.Int) ([]byte, error) { var out []interface{} - err := _KeeperRegistryLogicB.contract.Call(opts, &out, "getUpkeepAdminOffchainConfig", upkeepId) + err := _KeeperRegistryLogicB.contract.Call(opts, &out, "getUpkeepPrivilegeConfig", upkeepId) if err != nil { return *new([]byte), err @@ -623,34 +624,12 @@ func (_KeeperRegistryLogicB *KeeperRegistryLogicBCaller) GetUpkeepAdminOffchainC } -func (_KeeperRegistryLogicB *KeeperRegistryLogicBSession) GetUpkeepAdminOffchainConfig(upkeepId *big.Int) ([]byte, error) { - return _KeeperRegistryLogicB.Contract.GetUpkeepAdminOffchainConfig(&_KeeperRegistryLogicB.CallOpts, upkeepId) +func (_KeeperRegistryLogicB *KeeperRegistryLogicBSession) GetUpkeepPrivilegeConfig(upkeepId *big.Int) ([]byte, error) { + return _KeeperRegistryLogicB.Contract.GetUpkeepPrivilegeConfig(&_KeeperRegistryLogicB.CallOpts, upkeepId) } -func (_KeeperRegistryLogicB *KeeperRegistryLogicBCallerSession) GetUpkeepAdminOffchainConfig(upkeepId *big.Int) ([]byte, error) { - return _KeeperRegistryLogicB.Contract.GetUpkeepAdminOffchainConfig(&_KeeperRegistryLogicB.CallOpts, upkeepId) -} - -func (_KeeperRegistryLogicB *KeeperRegistryLogicBCaller) GetUpkeepManager(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _KeeperRegistryLogicB.contract.Call(opts, &out, "getUpkeepManager") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -func (_KeeperRegistryLogicB *KeeperRegistryLogicBSession) GetUpkeepManager() (common.Address, error) { - return _KeeperRegistryLogicB.Contract.GetUpkeepManager(&_KeeperRegistryLogicB.CallOpts) -} - -func (_KeeperRegistryLogicB *KeeperRegistryLogicBCallerSession) GetUpkeepManager() (common.Address, error) { - return _KeeperRegistryLogicB.Contract.GetUpkeepManager(&_KeeperRegistryLogicB.CallOpts) +func (_KeeperRegistryLogicB *KeeperRegistryLogicBCallerSession) GetUpkeepPrivilegeConfig(upkeepId *big.Int) ([]byte, error) { + return _KeeperRegistryLogicB.Contract.GetUpkeepPrivilegeConfig(&_KeeperRegistryLogicB.CallOpts, upkeepId) } func (_KeeperRegistryLogicB *KeeperRegistryLogicBCaller) GetUpkeepTriggerConfig(opts *bind.CallOpts, upkeepId *big.Int) ([]byte, error) { @@ -793,18 +772,6 @@ func (_KeeperRegistryLogicB *KeeperRegistryLogicBTransactorSession) SetPeerRegis return _KeeperRegistryLogicB.Contract.SetPeerRegistryMigrationPermission(&_KeeperRegistryLogicB.TransactOpts, peer, permission) } -func (_KeeperRegistryLogicB *KeeperRegistryLogicBTransactor) SetUpkeepAdminOffchainConfig(opts *bind.TransactOpts, upkeepId *big.Int, newAdminOffchainConfig []byte) (*types.Transaction, error) { - return _KeeperRegistryLogicB.contract.Transact(opts, "setUpkeepAdminOffchainConfig", upkeepId, newAdminOffchainConfig) -} - -func (_KeeperRegistryLogicB *KeeperRegistryLogicBSession) SetUpkeepAdminOffchainConfig(upkeepId *big.Int, newAdminOffchainConfig []byte) (*types.Transaction, error) { - return _KeeperRegistryLogicB.Contract.SetUpkeepAdminOffchainConfig(&_KeeperRegistryLogicB.TransactOpts, upkeepId, newAdminOffchainConfig) -} - -func (_KeeperRegistryLogicB *KeeperRegistryLogicBTransactorSession) SetUpkeepAdminOffchainConfig(upkeepId *big.Int, newAdminOffchainConfig []byte) (*types.Transaction, error) { - return _KeeperRegistryLogicB.Contract.SetUpkeepAdminOffchainConfig(&_KeeperRegistryLogicB.TransactOpts, upkeepId, newAdminOffchainConfig) -} - func (_KeeperRegistryLogicB *KeeperRegistryLogicBTransactor) SetUpkeepGasLimit(opts *bind.TransactOpts, id *big.Int, gasLimit uint32) (*types.Transaction, error) { return _KeeperRegistryLogicB.contract.Transact(opts, "setUpkeepGasLimit", id, gasLimit) } @@ -817,18 +784,6 @@ func (_KeeperRegistryLogicB *KeeperRegistryLogicBTransactorSession) SetUpkeepGas return _KeeperRegistryLogicB.Contract.SetUpkeepGasLimit(&_KeeperRegistryLogicB.TransactOpts, id, gasLimit) } -func (_KeeperRegistryLogicB *KeeperRegistryLogicBTransactor) SetUpkeepManager(opts *bind.TransactOpts, newUpkeepManager common.Address) (*types.Transaction, error) { - return _KeeperRegistryLogicB.contract.Transact(opts, "setUpkeepManager", newUpkeepManager) -} - -func (_KeeperRegistryLogicB *KeeperRegistryLogicBSession) SetUpkeepManager(newUpkeepManager common.Address) (*types.Transaction, error) { - return _KeeperRegistryLogicB.Contract.SetUpkeepManager(&_KeeperRegistryLogicB.TransactOpts, newUpkeepManager) -} - -func (_KeeperRegistryLogicB *KeeperRegistryLogicBTransactorSession) SetUpkeepManager(newUpkeepManager common.Address) (*types.Transaction, error) { - return _KeeperRegistryLogicB.Contract.SetUpkeepManager(&_KeeperRegistryLogicB.TransactOpts, newUpkeepManager) -} - func (_KeeperRegistryLogicB *KeeperRegistryLogicBTransactor) SetUpkeepOffchainConfig(opts *bind.TransactOpts, id *big.Int, config []byte) (*types.Transaction, error) { return _KeeperRegistryLogicB.contract.Transact(opts, "setUpkeepOffchainConfig", id, config) } @@ -853,6 +808,18 @@ func (_KeeperRegistryLogicB *KeeperRegistryLogicBTransactorSession) SetUpkeepPip return _KeeperRegistryLogicB.Contract.SetUpkeepPipelineData(&_KeeperRegistryLogicB.TransactOpts, id, newPipelineData) } +func (_KeeperRegistryLogicB *KeeperRegistryLogicBTransactor) SetUpkeepPrivilegeConfig(opts *bind.TransactOpts, upkeepId *big.Int, newPrivilegeConfig []byte) (*types.Transaction, error) { + return _KeeperRegistryLogicB.contract.Transact(opts, "setUpkeepPrivilegeConfig", upkeepId, newPrivilegeConfig) +} + +func (_KeeperRegistryLogicB *KeeperRegistryLogicBSession) SetUpkeepPrivilegeConfig(upkeepId *big.Int, newPrivilegeConfig []byte) (*types.Transaction, error) { + return _KeeperRegistryLogicB.Contract.SetUpkeepPrivilegeConfig(&_KeeperRegistryLogicB.TransactOpts, upkeepId, newPrivilegeConfig) +} + +func (_KeeperRegistryLogicB *KeeperRegistryLogicBTransactorSession) SetUpkeepPrivilegeConfig(upkeepId *big.Int, newPrivilegeConfig []byte) (*types.Transaction, error) { + return _KeeperRegistryLogicB.Contract.SetUpkeepPrivilegeConfig(&_KeeperRegistryLogicB.TransactOpts, upkeepId, newPrivilegeConfig) +} + func (_KeeperRegistryLogicB *KeeperRegistryLogicBTransactor) TransferOwnership(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { return _KeeperRegistryLogicB.contract.Transact(opts, "transferOwnership", to) } @@ -2904,134 +2871,6 @@ func (_KeeperRegistryLogicB *KeeperRegistryLogicBFilterer) ParseUnpaused(log typ return event, nil } -type KeeperRegistryLogicBUpkeepAdminOffchainConfigSetIterator struct { - Event *KeeperRegistryLogicBUpkeepAdminOffchainConfigSet - - contract *bind.BoundContract - event string - - logs chan types.Log - sub ethereum.Subscription - done bool - fail error -} - -func (it *KeeperRegistryLogicBUpkeepAdminOffchainConfigSetIterator) Next() bool { - - if it.fail != nil { - return false - } - - if it.done { - select { - case log := <-it.logs: - it.Event = new(KeeperRegistryLogicBUpkeepAdminOffchainConfigSet) - 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 - } - } - - select { - case log := <-it.logs: - it.Event = new(KeeperRegistryLogicBUpkeepAdminOffchainConfigSet) - 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() - } -} - -func (it *KeeperRegistryLogicBUpkeepAdminOffchainConfigSetIterator) Error() error { - return it.fail -} - -func (it *KeeperRegistryLogicBUpkeepAdminOffchainConfigSetIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -type KeeperRegistryLogicBUpkeepAdminOffchainConfigSet struct { - Id *big.Int - AdminOffchainConfig []byte - Raw types.Log -} - -func (_KeeperRegistryLogicB *KeeperRegistryLogicBFilterer) FilterUpkeepAdminOffchainConfigSet(opts *bind.FilterOpts, id []*big.Int) (*KeeperRegistryLogicBUpkeepAdminOffchainConfigSetIterator, error) { - - var idRule []interface{} - for _, idItem := range id { - idRule = append(idRule, idItem) - } - - logs, sub, err := _KeeperRegistryLogicB.contract.FilterLogs(opts, "UpkeepAdminOffchainConfigSet", idRule) - if err != nil { - return nil, err - } - return &KeeperRegistryLogicBUpkeepAdminOffchainConfigSetIterator{contract: _KeeperRegistryLogicB.contract, event: "UpkeepAdminOffchainConfigSet", logs: logs, sub: sub}, nil -} - -func (_KeeperRegistryLogicB *KeeperRegistryLogicBFilterer) WatchUpkeepAdminOffchainConfigSet(opts *bind.WatchOpts, sink chan<- *KeeperRegistryLogicBUpkeepAdminOffchainConfigSet, id []*big.Int) (event.Subscription, error) { - - var idRule []interface{} - for _, idItem := range id { - idRule = append(idRule, idItem) - } - - logs, sub, err := _KeeperRegistryLogicB.contract.WatchLogs(opts, "UpkeepAdminOffchainConfigSet", idRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - - event := new(KeeperRegistryLogicBUpkeepAdminOffchainConfigSet) - if err := _KeeperRegistryLogicB.contract.UnpackLog(event, "UpkeepAdminOffchainConfigSet", 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 -} - -func (_KeeperRegistryLogicB *KeeperRegistryLogicBFilterer) ParseUpkeepAdminOffchainConfigSet(log types.Log) (*KeeperRegistryLogicBUpkeepAdminOffchainConfigSet, error) { - event := new(KeeperRegistryLogicBUpkeepAdminOffchainConfigSet) - if err := _KeeperRegistryLogicB.contract.UnpackLog(event, "UpkeepAdminOffchainConfigSet", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - type KeeperRegistryLogicBUpkeepAdminTransferRequestedIterator struct { Event *KeeperRegistryLogicBUpkeepAdminTransferRequested @@ -4238,6 +4077,134 @@ func (_KeeperRegistryLogicB *KeeperRegistryLogicBFilterer) ParseUpkeepPipelineDa return event, nil } +type KeeperRegistryLogicBUpkeepPrivilegeConfigSetIterator struct { + Event *KeeperRegistryLogicBUpkeepPrivilegeConfigSet + + contract *bind.BoundContract + event string + + logs chan types.Log + sub ethereum.Subscription + done bool + fail error +} + +func (it *KeeperRegistryLogicBUpkeepPrivilegeConfigSetIterator) Next() bool { + + if it.fail != nil { + return false + } + + if it.done { + select { + case log := <-it.logs: + it.Event = new(KeeperRegistryLogicBUpkeepPrivilegeConfigSet) + 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 + } + } + + select { + case log := <-it.logs: + it.Event = new(KeeperRegistryLogicBUpkeepPrivilegeConfigSet) + 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() + } +} + +func (it *KeeperRegistryLogicBUpkeepPrivilegeConfigSetIterator) Error() error { + return it.fail +} + +func (it *KeeperRegistryLogicBUpkeepPrivilegeConfigSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +type KeeperRegistryLogicBUpkeepPrivilegeConfigSet struct { + Id *big.Int + PrivilegeConfig []byte + Raw types.Log +} + +func (_KeeperRegistryLogicB *KeeperRegistryLogicBFilterer) FilterUpkeepPrivilegeConfigSet(opts *bind.FilterOpts, id []*big.Int) (*KeeperRegistryLogicBUpkeepPrivilegeConfigSetIterator, error) { + + var idRule []interface{} + for _, idItem := range id { + idRule = append(idRule, idItem) + } + + logs, sub, err := _KeeperRegistryLogicB.contract.FilterLogs(opts, "UpkeepPrivilegeConfigSet", idRule) + if err != nil { + return nil, err + } + return &KeeperRegistryLogicBUpkeepPrivilegeConfigSetIterator{contract: _KeeperRegistryLogicB.contract, event: "UpkeepPrivilegeConfigSet", logs: logs, sub: sub}, nil +} + +func (_KeeperRegistryLogicB *KeeperRegistryLogicBFilterer) WatchUpkeepPrivilegeConfigSet(opts *bind.WatchOpts, sink chan<- *KeeperRegistryLogicBUpkeepPrivilegeConfigSet, id []*big.Int) (event.Subscription, error) { + + var idRule []interface{} + for _, idItem := range id { + idRule = append(idRule, idItem) + } + + logs, sub, err := _KeeperRegistryLogicB.contract.WatchLogs(opts, "UpkeepPrivilegeConfigSet", idRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + + event := new(KeeperRegistryLogicBUpkeepPrivilegeConfigSet) + if err := _KeeperRegistryLogicB.contract.UnpackLog(event, "UpkeepPrivilegeConfigSet", 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 +} + +func (_KeeperRegistryLogicB *KeeperRegistryLogicBFilterer) ParseUpkeepPrivilegeConfigSet(log types.Log) (*KeeperRegistryLogicBUpkeepPrivilegeConfigSet, error) { + event := new(KeeperRegistryLogicBUpkeepPrivilegeConfigSet) + if err := _KeeperRegistryLogicB.contract.UnpackLog(event, "UpkeepPrivilegeConfigSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + type KeeperRegistryLogicBUpkeepReceivedIterator struct { Event *KeeperRegistryLogicBUpkeepReceived @@ -4802,8 +4769,6 @@ func (_KeeperRegistryLogicB *KeeperRegistryLogicB) ParseLog(log types.Log) (gene return _KeeperRegistryLogicB.ParseStaleUpkeepReport(log) case _KeeperRegistryLogicB.abi.Events["Unpaused"].ID: return _KeeperRegistryLogicB.ParseUnpaused(log) - case _KeeperRegistryLogicB.abi.Events["UpkeepAdminOffchainConfigSet"].ID: - return _KeeperRegistryLogicB.ParseUpkeepAdminOffchainConfigSet(log) case _KeeperRegistryLogicB.abi.Events["UpkeepAdminTransferRequested"].ID: return _KeeperRegistryLogicB.ParseUpkeepAdminTransferRequested(log) case _KeeperRegistryLogicB.abi.Events["UpkeepAdminTransferred"].ID: @@ -4822,6 +4787,8 @@ func (_KeeperRegistryLogicB *KeeperRegistryLogicB) ParseLog(log types.Log) (gene return _KeeperRegistryLogicB.ParseUpkeepPerformed(log) case _KeeperRegistryLogicB.abi.Events["UpkeepPipelineDataSet"].ID: return _KeeperRegistryLogicB.ParseUpkeepPipelineDataSet(log) + case _KeeperRegistryLogicB.abi.Events["UpkeepPrivilegeConfigSet"].ID: + return _KeeperRegistryLogicB.ParseUpkeepPrivilegeConfigSet(log) case _KeeperRegistryLogicB.abi.Events["UpkeepReceived"].ID: return _KeeperRegistryLogicB.ParseUpkeepReceived(log) case _KeeperRegistryLogicB.abi.Events["UpkeepRegistered"].ID: @@ -4896,10 +4863,6 @@ func (KeeperRegistryLogicBUnpaused) Topic() common.Hash { return common.HexToHash("0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa") } -func (KeeperRegistryLogicBUpkeepAdminOffchainConfigSet) Topic() common.Hash { - return common.HexToHash("0x09a658476c5597979b9948f488ec2958cfead97bc8f46b19ca0b21cdab93cdee") -} - func (KeeperRegistryLogicBUpkeepAdminTransferRequested) Topic() common.Hash { return common.HexToHash("0xb1cbb2c4b8480034c27e06da5f096b8233a8fd4497028593a41ff6df79726b35") } @@ -4936,6 +4899,10 @@ func (KeeperRegistryLogicBUpkeepPipelineDataSet) Topic() common.Hash { return common.HexToHash("0x787b2e556c364148324d7dc0cee4322a048aaf798bda184136c8636c72ed3056") } +func (KeeperRegistryLogicBUpkeepPrivilegeConfigSet) Topic() common.Hash { + return common.HexToHash("0x2fd8d70753a007014349d4591843cc031c2dd7a260d7dd82eca8253686ae7769") +} + func (KeeperRegistryLogicBUpkeepReceived) Topic() common.Hash { return common.HexToHash("0x74931a144e43a50694897f241d973aecb5024c0e910f9bb80a163ea3c1cf5a71") } @@ -4995,9 +4962,7 @@ type KeeperRegistryLogicBInterface interface { GetUpkeep(opts *bind.CallOpts, id *big.Int) (KeeperRegistryBase21UpkeepInfo, error) - GetUpkeepAdminOffchainConfig(opts *bind.CallOpts, upkeepId *big.Int) ([]byte, error) - - GetUpkeepManager(opts *bind.CallOpts) (common.Address, error) + GetUpkeepPrivilegeConfig(opts *bind.CallOpts, upkeepId *big.Int) ([]byte, error) GetUpkeepTriggerConfig(opts *bind.CallOpts, upkeepId *big.Int) ([]byte, error) @@ -5019,16 +4984,14 @@ type KeeperRegistryLogicBInterface interface { SetPeerRegistryMigrationPermission(opts *bind.TransactOpts, peer common.Address, permission uint8) (*types.Transaction, error) - SetUpkeepAdminOffchainConfig(opts *bind.TransactOpts, upkeepId *big.Int, newAdminOffchainConfig []byte) (*types.Transaction, error) - SetUpkeepGasLimit(opts *bind.TransactOpts, id *big.Int, gasLimit uint32) (*types.Transaction, error) - SetUpkeepManager(opts *bind.TransactOpts, newUpkeepManager common.Address) (*types.Transaction, error) - SetUpkeepOffchainConfig(opts *bind.TransactOpts, id *big.Int, config []byte) (*types.Transaction, error) SetUpkeepPipelineData(opts *bind.TransactOpts, id *big.Int, newPipelineData []byte) (*types.Transaction, error) + SetUpkeepPrivilegeConfig(opts *bind.TransactOpts, upkeepId *big.Int, newPrivilegeConfig []byte) (*types.Transaction, error) + TransferOwnership(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) TransferPayeeship(opts *bind.TransactOpts, transmitter common.Address, proposed common.Address) (*types.Transaction, error) @@ -5135,12 +5098,6 @@ type KeeperRegistryLogicBInterface interface { ParseUnpaused(log types.Log) (*KeeperRegistryLogicBUnpaused, error) - FilterUpkeepAdminOffchainConfigSet(opts *bind.FilterOpts, id []*big.Int) (*KeeperRegistryLogicBUpkeepAdminOffchainConfigSetIterator, error) - - WatchUpkeepAdminOffchainConfigSet(opts *bind.WatchOpts, sink chan<- *KeeperRegistryLogicBUpkeepAdminOffchainConfigSet, id []*big.Int) (event.Subscription, error) - - ParseUpkeepAdminOffchainConfigSet(log types.Log) (*KeeperRegistryLogicBUpkeepAdminOffchainConfigSet, error) - FilterUpkeepAdminTransferRequested(opts *bind.FilterOpts, id []*big.Int, from []common.Address, to []common.Address) (*KeeperRegistryLogicBUpkeepAdminTransferRequestedIterator, error) WatchUpkeepAdminTransferRequested(opts *bind.WatchOpts, sink chan<- *KeeperRegistryLogicBUpkeepAdminTransferRequested, id []*big.Int, from []common.Address, to []common.Address) (event.Subscription, error) @@ -5195,6 +5152,12 @@ type KeeperRegistryLogicBInterface interface { ParseUpkeepPipelineDataSet(log types.Log) (*KeeperRegistryLogicBUpkeepPipelineDataSet, error) + FilterUpkeepPrivilegeConfigSet(opts *bind.FilterOpts, id []*big.Int) (*KeeperRegistryLogicBUpkeepPrivilegeConfigSetIterator, error) + + WatchUpkeepPrivilegeConfigSet(opts *bind.WatchOpts, sink chan<- *KeeperRegistryLogicBUpkeepPrivilegeConfigSet, id []*big.Int) (event.Subscription, error) + + ParseUpkeepPrivilegeConfigSet(log types.Log) (*KeeperRegistryLogicBUpkeepPrivilegeConfigSet, error) + FilterUpkeepReceived(opts *bind.FilterOpts, id []*big.Int) (*KeeperRegistryLogicBUpkeepReceivedIterator, error) WatchUpkeepReceived(opts *bind.WatchOpts, sink chan<- *KeeperRegistryLogicBUpkeepReceived, id []*big.Int) (event.Subscription, error) diff --git a/core/gethwrappers/generated/keeper_registry_wrapper_2_1/keeper_registry_wrapper_2_1.go b/core/gethwrappers/generated/keeper_registry_wrapper_2_1/keeper_registry_wrapper_2_1.go index 9542ce5f5da..e22a95f0c45 100644 --- a/core/gethwrappers/generated/keeper_registry_wrapper_2_1/keeper_registry_wrapper_2_1.go +++ b/core/gethwrappers/generated/keeper_registry_wrapper_2_1/keeper_registry_wrapper_2_1.go @@ -31,8 +31,8 @@ var ( ) var KeeperRegistryMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"contractKeeperRegistryLogicA2_1\",\"name\":\"logicA\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ArrayHasNoEntries\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotCancel\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ConfigDigestMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateEntry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitOutsideRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfFaultyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDataLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReport\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTrigger\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTriggerType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxCheckDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerformDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MigrationNotPermitted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveTransmitters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByLINKToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrRegistrar\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByUpkeepManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySimulatedBackend\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyUnpausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ParameterLengthError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PaymentGreaterThanAllLINK\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PipelineDataExceedsLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RegistryPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedTransmitter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"TargetCheckReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TranscoderNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepCancelled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotCanceled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotNeeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValueNotChanged\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"CancelledUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"previousConfigBlockNumber\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"configCount\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"onchainConfig\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"FundsAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"FundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"InsufficientFundsUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"OwnerFundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"payees\",\"type\":\"address[]\"}],\"name\":\"PayeesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payee\",\"type\":\"address\"}],\"name\":\"PaymentWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"ReorgedUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"StaleUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"epoch\",\"type\":\"uint32\"}],\"name\":\"Transmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"adminOffchainConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepAdminOffchainConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"atBlockHeight\",\"type\":\"uint64\"}],\"name\":\"UpkeepCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"gasLimit\",\"type\":\"uint96\"}],\"name\":\"UpkeepGasLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"UpkeepMigrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepOffchainConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"totalPayment\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasOverhead\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"UpkeepPerformed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newPipelineData\",\"type\":\"bytes\"}],\"name\":\"UpkeepPipelineDataSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"importedFrom\",\"type\":\"address\"}],\"name\":\"UpkeepReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"executeGas\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"UpkeepRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"triggerConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepTriggerConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepUnpaused\",\"type\":\"event\"},{\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fallbackTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFastGasFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkNativeFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMode\",\"outputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Mode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getTriggerType\",\"outputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Trigger\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfigDetails\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfigDigestAndEpoch\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"scanLogs\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"epoch\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onTokenTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"onchainConfigBytes\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"}],\"name\":\"simulatePerformUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[3]\",\"name\":\"reportContext\",\"type\":\"bytes32[3]\"},{\"internalType\":\"bytes\",\"name\":\"rawReport\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"rs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"ss\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"rawVs\",\"type\":\"bytes32\"}],\"name\":\"transmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x6101206040523480156200001257600080fd5b5060405162004f8c38038062004f8c833981016040819052620000359162000386565b80816001600160a01b0316634b4fd03b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009b9190620003ad565b826001600160a01b031663ca30e6036040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000100919062000386565b836001600160a01b031663b10b673c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000165919062000386565b846001600160a01b0316636709d0e56040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca919062000386565b3380600081620002215760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b038481169190911790915581161562000254576200025481620002c2565b5050508360028111156200026c576200026c620003d0565b60e0816002811115620002835762000283620003d0565b9052506001600160a01b0392831660805290821660a052811660c052601980546001600160a01b03191633179055919091166101005250620003e69050565b336001600160a01b038216036200031c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000218565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6001600160a01b03811681146200038357600080fd5b50565b6000602082840312156200039957600080fd5b8151620003a6816200036d565b9392505050565b600060208284031215620003c057600080fd5b815160038110620003a657600080fd5b634e487b7160e01b600052602160045260246000fd5b60805160a05160c05160e05161010051614b376200045560003960008181610102015261019b0152600081816101e201528181612e5e015281816131c401528181613357015261394c01526000610230015260006103770152600081816103b001526105bf0152614b376000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063a4c0ed3611610097578063b1dc65a411610066578063b1dc65a41461039b578063ca30e603146103ae578063e3d0e712146103d4578063f2fde38b146103e757610100565b8063a4c0ed36146102ef578063aed2e92914610302578063afcb95d71461032c578063b10b673c1461037557610100565b80636709d0e5116100d35780636709d0e51461022e57806379ba50971461025457806381ff70481461025c5780638da5cb5b146102d157610100565b8063181f5a7714610147578063349e8cca146101995780634b4fd03b146101e05780635147cd591461020e575b7f00000000000000000000000000000000000000000000000000000000000000003660008037600080366000845af43d6000803e808015610140573d6000f35b3d6000fd5b005b6101836040518060400160405280601481526020017f4b6565706572526567697374727920322e312e3000000000000000000000000081525081565b6040516101909190613bcb565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b7f00000000000000000000000000000000000000000000000000000000000000006040516101909190613c0d565b61022161021c366004613c27565b6103fa565b6040516101909190613c40565b7f00000000000000000000000000000000000000000000000000000000000000006101bb565b6101456104a5565b6102ae60145460115463ffffffff780100000000000000000000000000000000000000000000000083048116937c01000000000000000000000000000000000000000000000000000000009093041691565b6040805163ffffffff948516815293909216602084015290820152606001610190565b60005473ffffffffffffffffffffffffffffffffffffffff166101bb565b6101456102fd366004613cbf565b6105a7565b610315610310366004613d1b565b6107c3565b604080519215158352602083019190915201610190565b601154601254604080516000815260208101939093527c010000000000000000000000000000000000000000000000000000000090910463ffffffff1690820152606001610190565b7f00000000000000000000000000000000000000000000000000000000000000006101bb565b6101456103a9366004613dac565b610939565b7f00000000000000000000000000000000000000000000000000000000000000006101bb565b6101456103e2366004614063565b6114e6565b6101456103f5366004614130565b6122fd565b6000818160045b600f811015610487577fff00000000000000000000000000000000000000000000000000000000000000821683826020811061043f5761043f61414d565b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461047557506000949350505050565b8061047f816141ab565b915050610401565b5081600f1a600181111561049d5761049d613bde565b949350505050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461052b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610616576040517fc8bad78d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208114610650576040517fdfe9309000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061065e82840184613c27565b60008181526004602052604090205490915065010000000000900463ffffffff908116146106b8576040517f9c0083a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600460205260409020600101546106f39085906c0100000000000000000000000090046bffffffffffffffffffffffff166141e3565b600082815260046020526040902060010180546bffffffffffffffffffffffff929092166c01000000000000000000000000027fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff90921691909117905560185461075e908590614208565b6018556040516bffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169082907fafd24114486da8ebfc32f3626dada8863652e187461aa74d4bfa7348915062039060200160405180910390a35050505050565b6000806107ce612311565b6012546e010000000000000000000000000000900460ff161561081d576040517f24522f3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008581526004602090815260409182902082516101008082018552825460ff81161515835263ffffffff918104821683860181905265010000000000820483168488015273ffffffffffffffffffffffffffffffffffffffff690100000000000000000090920482166060850181905260018601546bffffffffffffffffffffffff80821660808801526c0100000000000000000000000082041660a08701527801000000000000000000000000000000000000000000000000900490931660c08501526002909401541660e08301528451601f8901859004850281018501909552878552909361092c93919291899089908190840183828082843760009201919091525061234b92505050565b9097909650945050505050565b60005a604080516101208101825260125460ff808216835261010080830463ffffffff90811660208601526501000000000084048116958501959095526901000000000000000000830462ffffff1660608501526c01000000000000000000000000830461ffff1660808501526e0100000000000000000000000000008304821615801560a08601526f010000000000000000000000000000008404909216151560c085015270010000000000000000000000000000000083046bffffffffffffffffffffffff1660e08501527c010000000000000000000000000000000000000000000000000000000090920490931690820152919250610a67576040517f24522f3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600b602052604090205460ff16610ab0576040517f1099ed7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6011548a3514610aec576040517fdfdcf8e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051610af990600161421b565b60ff1686141580610b0a5750858414155b15610b41576040517f0244f71a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b518a8a8a8a8a8a8a8a61254d565b6000610b928a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127b692505050565b9050600081604001515167ffffffffffffffff811115610bb457610bb4613e63565b604051908082528060200260200182016040528015610c7857816020015b604080516101e081018252600060e08201818152610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c0830182905282526020808301829052928201819052606082018190526080820181905260a0820181905260c082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610bd25790505b5090506000805b8360400151518110156110f6576004600085604001518381518110610ca657610ca661414d565b602090810291909101810151825281810192909252604090810160002081516101008082018452825460ff81161515835263ffffffff91810482169583019590955265010000000000850481169382019390935273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009094048416606082015260018201546bffffffffffffffffffffffff80821660808401526c0100000000000000000000000082041660a08301527801000000000000000000000000000000000000000000000000900490921660c08301526002015490911660e08201528351849083908110610d9857610d9861414d565b602002602001015160000181905250610dcd84604001518281518110610dc057610dc061414d565b60200260200101516103fa565b838281518110610ddf57610ddf61414d565b6020026020010151608001906001811115610dfc57610dfc613bde565b90816001811115610e0f57610e0f613bde565b81525050610e8785848381518110610e2957610e2961414d565b602002602001015160800151858481518110610e4757610e4761414d565b602002602001015160000151602001518760a001518581518110610e6d57610e6d61414d565b6020026020010151518860000151896020015160016128a0565b838281518110610e9957610e9961414d565b6020026020010151604001906bffffffffffffffffffffffff1690816bffffffffffffffffffffffff1681525050610f6584604001518281518110610ee057610ee061414d565b6020026020010151848381518110610efa57610efa61414d565b60200260200101516080015186608001518481518110610f1c57610f1c61414d565b6020026020010151868581518110610f3657610f3661414d565b602002602001015160000151878681518110610f5457610f5461414d565b6020026020010151604001516128eb565b838281518110610f7757610f7761414d565b60200260200101516020019015159081151581525050828181518110610f9f57610f9f61414d565b60200260200101516020015115610fc257610fbb600183614234565b9150610fc7565b6110e4565b61102d838281518110610fdc57610fdc61414d565b60200260200101516000015160600151856060015183815181106110025761100261414d565b60200260200101518660a0015184815181106110205761102061414d565b602002602001015161234b565b84838151811061103f5761103f61414d565b602002602001015160600185848151811061105c5761105c61414d565b602002602001015160a00182815250821515151581525050508281815181106110875761108761414d565b602002602001015160a001518661109e919061424f565b95506110e4846040015182815181106110b9576110b961414d565b60200260200101518483815181106110d3576110d361414d565b602002602001015160800151612a33565b806110ee816141ab565b915050610c7f565b508061ffff1660000361110d5750505050506114dc565b835161111a90600161421b565b6111299060ff1661044c614262565b616b6c6111378d6010614262565b5a611142908961424f565b61114c9190614208565b6111569190614208565b6111609190614208565b9450611b5861117361ffff8316876142ce565b61117d9190614208565b945060008060008060005b87604001515181101561137e578681815181106111a7576111a761414d565b6020026020010151602001511561136c576112038a8883815181106111ce576111ce61414d565b6020026020010151608001518a60a0015184815181106111f0576111f061414d565b6020026020010151518c60000151612aba565b8782815181106112155761121561414d565b602002602001015160c0018181525050611271898960400151838151811061123f5761123f61414d565b60200260200101518984815181106112595761125961414d565b60200260200101518b600001518c602001518b612ada565b909350915061128082856141e3565b935061128c83866141e3565b94508681815181106112a0576112a061414d565b6020026020010151606001511515886040015182815181106112c4576112c461414d565b60200260200101517fad8cc9579b21dfe2c2f6ea35ba15b656e46b4f5b0cb424f52739b8ce5cac9c5b84866112f991906141e3565b8a858151811061130b5761130b61414d565b602002602001015160a001518b86815181106113295761132961414d565b602002602001015160c001518d60800151878151811061134b5761134b61414d565b602002602001015160405161136394939291906142e2565b60405180910390a35b80611376816141ab565b915050611188565b5050336000908152600b6020526040902080548492506002906113b69084906201000090046bffffffffffffffffffffffff166141e3565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080601260000160108282829054906101000a90046bffffffffffffffffffffffff1661141091906141e3565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060008f6001600381106114535761145361414d565b602002013560001c9050600060088264ffffffffff16901c905087610100015163ffffffff168163ffffffff1611156114d257601280547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff8416021790555b5050505050505050505b5050505050505050565b6114ee612bcd565b601f8651111561152a576040517f25d0209c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360ff16600003611567576040517fe77dba5600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84518651141580611586575061157e84600361431f565b60ff16865111155b156115bd576040517f1d2d1c5800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601254600e547001000000000000000000000000000000009091046bffffffffffffffffffffffff169060005b816bffffffffffffffffffffffff168110156116525761163f600e82815481106116165761161661414d565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff168484612c4e565b508061164a816141ab565b9150506115ea565b5060008060005b836bffffffffffffffffffffffff1681101561175b57600d81815481106116825761168261414d565b600091825260209091200154600e805473ffffffffffffffffffffffffffffffffffffffff909216945090829081106116bd576116bd61414d565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff8681168452600c8352604080852080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001690559116808452600b90925290912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055915080611753816141ab565b915050611659565b50611768600d6000613aa0565b611774600e6000613aa0565b604080516080810182526000808252602082018190529181018290526060810182905290805b8c51811015611af857600c60008e83815181106117b9576117b961414d565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1615611824576040517f77cea0fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180604001604052806001151581526020018260ff16815250600c60008f84815181106118555761185561414d565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260400160002082518154939092015160ff16610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909316929092171790558b518c90829081106118fd576118fd61414d565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff81166000908152600b83526040908190208151608081018352905460ff80821615801584526101008304909116958301959095526bffffffffffffffffffffffff6201000082048116938301939093526e01000000000000000000000000000090049091166060820152945092506119c2576040517f6a7281ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001835260ff80821660208086019182526bffffffffffffffffffffffff808b166060880190815273ffffffffffffffffffffffffffffffffffffffff87166000908152600b909352604092839020885181549551948a0151925184166e010000000000000000000000000000027fffffffffffff000000000000000000000000ffffffffffffffffffffffffffff939094166201000002929092167fffffffffffff000000000000000000000000000000000000000000000000ffff94909616610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009095169490941717919091169290921791909117905580611af0816141ab565b91505061179a565b50508a51611b0e9150600d9060208d0190613abe565b508851611b2290600e9060208c0190613abe565b50600087806020019051810190611b39919061440c565b60145460c082015191925063ffffffff700100000000000000000000000000000000909104811691161015611b9a576040517f39abc10400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60155460e082015163ffffffff91821691161015611be4576040517f1fa9bdcb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60155461010082015163ffffffff640100000000909204821691161015611c37576040517fd1d5faa800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518061012001604052808a60ff168152602001826000015163ffffffff168152602001826020015163ffffffff168152602001826060015162ffffff168152602001826080015161ffff168152602001600015158152602001600015158152602001866bffffffffffffffffffffffff168152602001600063ffffffff16815250601260008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160056101000a81548163ffffffff021916908363ffffffff16021790555060608201518160000160096101000a81548162ffffff021916908362ffffff160217905550608082015181600001600c6101000a81548161ffff021916908361ffff16021790555060a082015181600001600e6101000a81548160ff02191690831515021790555060c082015181600001600f6101000a81548160ff02191690831515021790555060e08201518160000160106101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061010082015181600001601c6101000a81548163ffffffff021916908363ffffffff1602179055509050506040518061014001604052808260a001516bffffffffffffffffffffffff16815260200182610160015173ffffffffffffffffffffffffffffffffffffffff168152602001601360010160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001826040015163ffffffff1681526020018260c0015163ffffffff168152602001601360010160149054906101000a900463ffffffff1663ffffffff168152602001601360010160189054906101000a900463ffffffff1663ffffffff1681526020016013600101601c9054906101000a900463ffffffff1663ffffffff1681526020018260e0015163ffffffff16815260200182610100015163ffffffff16815250601360008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550606082015181600101600c6101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160106101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160010160146101000a81548163ffffffff021916908363ffffffff16021790555060c08201518160010160186101000a81548163ffffffff021916908363ffffffff16021790555060e082015181600101601c6101000a81548163ffffffff021916908363ffffffff1602179055506101008201518160020160006101000a81548163ffffffff021916908363ffffffff1602179055506101208201518160020160046101000a81548163ffffffff021916908363ffffffff16021790555090505080610120015160168190555080610140015160178190555060006013600101601c9054906101000a900463ffffffff169050612134612e58565b601480547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff93841602178082556001926018916121af9185917801000000000000000000000000000000000000000000000000900416614540565b92506101000a81548163ffffffff021916908363ffffffff1602179055506121f94630601360010160189054906101000a900463ffffffff1663ffffffff168f8f8f8f8f8f612f0d565b60115560005b6122096009612fb7565b8110156122395761222661221e600983612fc7565b600990612fd3565b5080612231816141ab565b9150506121ff565b5060005b826101800151518110156122905761227d83610180015182815181106122655761226561414d565b60200260200101516009612ff590919063ffffffff16565b5080612288816141ab565b91505061223d565b507f1591690b8638f5fb2dbec82ac741805ac5da8b45dc5263f4875b0496fdce4e0581601154601360010160189054906101000a900463ffffffff168f8f8f8f8f8f6040516122e7999897969594939291906145ae565b60405180910390a1505050505050505050505050565b612305612bcd565b61230e81613017565b50565b3215612349576040517fb60ac5db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60125460009081906f01000000000000000000000000000000900460ff16156123a0576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601280547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff166f010000000000000000000000000000001790555a9050634585e33b60e01b836040516024016123f69190613bcb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290517f79188d1600000000000000000000000000000000000000000000000000000000815290935073ffffffffffffffffffffffffffffffffffffffff8616906379188d16906124c99087908790600401614644565b6020604051808303816000875af11580156124e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250c919061465d565b91505a612519908261424f565b9050601280547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff1690559094909350915050565b6000878760405161255f92919061467f565b604051908190038120612576918b9060200161468f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201208383019092526000808452908301819052909250906000805b8881101561274d576001858783602081106125e2576125e261414d565b6125ef91901a601b61421b565b8c8c858181106126015761260161414d565b905060200201358b8b8681811061261a5761261a61414d565b9050602002013560405160008152602001604052604051612657949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015612679573d6000803e3d6000fd5b5050604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081015173ffffffffffffffffffffffffffffffffffffffff81166000908152600c602090815290849020838501909452925460ff8082161515808552610100909204169383019390935290955093509050612727576040517f0f4c073700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826020015160080260ff166001901b840193508080612745906141ab565b9150506125c5565b50827e010101010101010101010101010101010101010101010101010101010101018416146127a8576040517fc103be2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050505050505050565b6127ef6040518060c001604052806000815260200160008152602001606081526020016060815260200160608152602001606081525090565b6000806000806000808780602001905181019061280c91906147bc565b9550955095509550955095508251845114158061282b57508151845114155b8061283857508051845114155b1561286f576040517fb55ac75400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160c0810182529687526020870195909552938501929092526060840152608083015260a082015292915050565b6000806128b288878b6000015161310c565b90506000806128cd8b8a63ffffffff16858a8a60018b61318f565b90925090506128dc81836141e3565b9b9a5050505050505050505050565b60008085600181111561290057612900613bde565b036129215761291086858561353a565b61291c57506000612a2a565b612976565b600185600181111561293557612935613bde565b0361294457612910868561361e565b6040517ff2b2d41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61297e612e58565b836040015163ffffffff16116129ce57857fc3237c8807c467c1b39b8d0395eff077313e691bf0a7388106792564ebfd5636856040516129be9190613bcb565b60405180910390a2506000612a2a565b816bffffffffffffffffffffffff168360a001516bffffffffffffffffffffffff161015612a2657857f377c8b0c126ae5248d27aca1c76fac4608aff85673ee3caf09747e1044549e02856040516129be9190613bcb565b5060015b95945050505050565b6000816001811115612a4757612a47613bde565b03612ab657612a54612e58565b6000838152600460205260409020600101805463ffffffff929092167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790555b5050565b6000612ac784848461310c565b90508085101561049d5750929392505050565b600080612af5888760a001518860c00151888888600161318f565b90925090506000612b0682846141e3565b600089815260046020526040902060010180549192508291600c90612b4a9084906c0100000000000000000000000090046bffffffffffffffffffffffff1661486e565b82546101009290920a6bffffffffffffffffffffffff81810219909316918316021790915560008a815260046020526040812060010180548594509092612b93918591166141e3565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050965096945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314612349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610522565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b602090815260408083208151608081018352905460ff80821615801584526101008304909116948301949094526bffffffffffffffffffffffff6201000082048116938301939093526e0100000000000000000000000000009004909116606082015290612e4a576000816060015185612ce6919061486e565b90506000612cf48583614893565b90508083604001818151612d0891906141e3565b6bffffffffffffffffffffffff16905250612d2385826148be565b83606001818151612d3491906141e3565b6bffffffffffffffffffffffff90811690915273ffffffffffffffffffffffffffffffffffffffff89166000908152600b602090815260409182902087518154928901519389015160608a015186166e010000000000000000000000000000027fffffffffffff000000000000000000000000ffffffffffffffffffffffffffff919096166201000002167fffffffffffff000000000000000000000000000000000000000000000000ffff60ff95909516610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909416939093171792909216179190911790555050505b6040015190505b9392505050565b600060017f00000000000000000000000000000000000000000000000000000000000000006002811115612e8e57612e8e613bde565b03612f0857606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612edf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0391906148f2565b905090565b504390565b6000808a8a8a8a8a8a8a8a8a604051602001612f319998979695949392919061490b565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905280516020909101207dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e01000000000000000000000000000000000000000000000000000000000000179b9a5050505050505050505050565b6000612fc1825490565b92915050565b6000612e5183836137d3565b6000612e518373ffffffffffffffffffffffffffffffffffffffff84166137fd565b6000612e518373ffffffffffffffffffffffffffffffffffffffff84166138f7565b3373ffffffffffffffffffffffffffffffffffffffff821603613096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610522565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000808085600181111561312257613122613bde565b03613131575062013880613150565b600185600181111561314557613145613bde565b036129445750620186a05b61316163ffffffff85166014614262565b61316c84600161421b565b61317b9060ff16611d4c614262565b6131859083614208565b612a2a9190614208565b6000806000896080015161ffff16876131a89190614262565b90508380156131b65750803a105b156131be57503a5b600060027f000000000000000000000000000000000000000000000000000000000000000060028111156131f4576131f4613bde565b0361335357604080516000815260208101909152851561325257600036604051806080016040528060488152602001614ae36048913960405160200161323c939291906149a0565b60405160208183030381529060405290506132ba565b60155461326e90640100000000900463ffffffff1660046149c7565b63ffffffff1667ffffffffffffffff81111561328c5761328c613e63565b6040519080825280601f01601f1916602001820160405280156132b6576020820181803683370190505b5090505b6040517f49948e0e00000000000000000000000000000000000000000000000000000000815273420000000000000000000000000000000000000f906349948e0e9061330a908490600401613bcb565b602060405180830381865afa158015613327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334b91906148f2565b9150506133ff565b60017f0000000000000000000000000000000000000000000000000000000000000000600281111561338757613387613bde565b036133ff57606c73ffffffffffffffffffffffffffffffffffffffff1663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133fc91906148f2565b90505b8461341b57808b6080015161ffff166134189190614262565b90505b61342961ffff8716826142ce565b9050600087826134398c8e614208565b6134439086614262565b61344d9190614208565b61345f90670de0b6b3a7640000614262565b61346991906142ce565b905060008c6040015163ffffffff1664e8d4a510006134889190614262565b898e6020015163ffffffff16858f886134a19190614262565b6134ab9190614208565b6134b990633b9aca00614262565b6134c39190614262565b6134cd91906142ce565b6134d79190614208565b90506b033b2e3c9fd0803ce80000006134f08284614208565b1115613528576040517f2ad7547a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b909c909b509950505050505050505050565b6000808380602001905181019061355191906149ea565b90508260c0015163ffffffff16816000015163ffffffff1610156135b157847f405288ea7be309e16cfdf481367f90a413e1d4634fcdaf8966546db9b93012e88560405161359f9190613bcb565b60405180910390a26000915050612e51565b602081015181516135c79063ffffffff16613946565b1415806135de575043816000015163ffffffff1610155b1561361357847f6aa7f60c176da7af894b384daea2249497448137f5943c1237ada8bc92bdc3018560405161359f9190613bcb565b506001949350505050565b600080828060200190518101906136359190614a41565b9050806060015161364f826040015163ffffffff16613946565b141580613666575043816040015163ffffffff1610155b156136ad57837f6aa7f60c176da7af894b384daea2249497448137f5943c1237ada8bc92bdc3018460405161369b9190613bcb565b60405180910390a26000915050612fc1565b80516020808301516040516000936136ff938993919201928352602083019190915260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016604082015260440190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600890935291205490915060ff161561379057847f405288ea7be309e16cfdf481367f90a413e1d4634fcdaf8966546db9b93012e88560405161377d9190613bcb565b60405180910390a2600092505050612fc1565b600090815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915591505092915050565b60008260000182815481106137ea576137ea61414d565b9060005260206000200154905092915050565b600081815260018301602052604081205480156138e657600061382160018361424f565b85549091506000906138359060019061424f565b905081811461389a5760008660000182815481106138555761385561414d565b90600052602060002001549050808760000184815481106138785761387861414d565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806138ab576138ab614ab3565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612fc1565b6000915050612fc1565b5092915050565b600081815260018301602052604081205461393e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155612fc1565b506000612fc1565b600060017f0000000000000000000000000000000000000000000000000000000000000000600281111561397c5761397c613bde565b03613a96576000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f391906148f2565b90508083101580613a0e5750610100613a0c848361424f565b115b15613a1c5750600092915050565b6040517f2b407a8200000000000000000000000000000000000000000000000000000000815260048101849052606490632b407a8290602401602060405180830381865afa158015613a72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5191906148f2565b504090565b919050565b508054600082559060005260206000209081019061230e9190613b48565b828054828255906000526020600020908101928215613b38579160200282015b82811115613b3857825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190613ade565b50613b44929150613b48565b5090565b5b80821115613b445760008155600101613b49565b60005b83811015613b78578181015183820152602001613b60565b50506000910152565b60008151808452613b99816020860160208601613b5d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612e516020830184613b81565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310613c2157613c21613bde565b91905290565b600060208284031215613c3957600080fd5b5035919050565b6020810160028310613c2157613c21613bde565b73ffffffffffffffffffffffffffffffffffffffff8116811461230e57600080fd5b60008083601f840112613c8857600080fd5b50813567ffffffffffffffff811115613ca057600080fd5b602083019150836020828501011115613cb857600080fd5b9250929050565b60008060008060608587031215613cd557600080fd5b8435613ce081613c54565b935060208501359250604085013567ffffffffffffffff811115613d0357600080fd5b613d0f87828801613c76565b95989497509550505050565b600080600060408486031215613d3057600080fd5b83359250602084013567ffffffffffffffff811115613d4e57600080fd5b613d5a86828701613c76565b9497909650939450505050565b60008083601f840112613d7957600080fd5b50813567ffffffffffffffff811115613d9157600080fd5b6020830191508360208260051b8501011115613cb857600080fd5b60008060008060008060008060e0898b031215613dc857600080fd5b606089018a811115613dd957600080fd5b8998503567ffffffffffffffff80821115613df357600080fd5b613dff8c838d01613c76565b909950975060808b0135915080821115613e1857600080fd5b613e248c838d01613d67565b909750955060a08b0135915080821115613e3d57600080fd5b50613e4a8b828c01613d67565b999c989b50969995989497949560c00135949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff81118282101715613eb657613eb6613e63565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613f0357613f03613e63565b604052919050565b600067ffffffffffffffff821115613f2557613f25613e63565b5060051b60200190565b600082601f830112613f4057600080fd5b81356020613f55613f5083613f0b565b613ebc565b82815260059290921b84018101918181019086841115613f7457600080fd5b8286015b84811015613f98578035613f8b81613c54565b8352918301918301613f78565b509695505050505050565b803560ff81168114613a9b57600080fd5b600067ffffffffffffffff821115613fce57613fce613e63565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261400b57600080fd5b8135614019613f5082613fb4565b81815284602083860101111561402e57600080fd5b816020850160208301376000918101602001919091529392505050565b803567ffffffffffffffff81168114613a9b57600080fd5b60008060008060008060c0878903121561407c57600080fd5b863567ffffffffffffffff8082111561409457600080fd5b6140a08a838b01613f2f565b975060208901359150808211156140b657600080fd5b6140c28a838b01613f2f565b96506140d060408a01613fa3565b955060608901359150808211156140e657600080fd5b6140f28a838b01613ffa565b945061410060808a0161404b565b935060a089013591508082111561411657600080fd5b5061412389828a01613ffa565b9150509295509295509295565b60006020828403121561414257600080fd5b8135612e5181613c54565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036141dc576141dc61417c565b5060010190565b6bffffffffffffffffffffffff8181168382160190808211156138f0576138f061417c565b80820180821115612fc157612fc161417c565b60ff8181168382160190811115612fc157612fc161417c565b61ffff8181168382160190808211156138f0576138f061417c565b81810381811115612fc157612fc161417c565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561429a5761429a61417c565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826142dd576142dd61429f565b500490565b6bffffffffffffffffffffffff851681528360208201528260408201526080606082015260006143156080830184613b81565b9695505050505050565b600060ff821660ff84168160ff04811182151516156143405761434061417c565b029392505050565b805163ffffffff81168114613a9b57600080fd5b805162ffffff81168114613a9b57600080fd5b805161ffff81168114613a9b57600080fd5b80516bffffffffffffffffffffffff81168114613a9b57600080fd5b8051613a9b81613c54565b600082601f8301126143b957600080fd5b815160206143c9613f5083613f0b565b82815260059290921b840181019181810190868411156143e857600080fd5b8286015b84811015613f985780516143ff81613c54565b83529183019183016143ec565b60006020828403121561441e57600080fd5b815167ffffffffffffffff8082111561443657600080fd5b908301906101a0828603121561444b57600080fd5b614453613e92565b61445c83614348565b815261446a60208401614348565b602082015261447b60408401614348565b604082015261448c6060840161435c565b606082015261449d6080840161436f565b60808201526144ae60a08401614381565b60a08201526144bf60c08401614348565b60c08201526144d060e08401614348565b60e08201526101006144e3818501614348565b908201526101208381015190820152610140808401519082015261016061450b81850161439d565b90820152610180838101518381111561452357600080fd5b61452f888287016143a8565b918301919091525095945050505050565b63ffffffff8181168382160190808211156138f0576138f061417c565b600081518084526020808501945080840160005b838110156145a357815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101614571565b509495945050505050565b600061012063ffffffff808d1684528b6020850152808b166040850152508060608401526145de8184018a61455d565b905082810360808401526145f2818961455d565b905060ff871660a084015282810360c084015261460f8187613b81565b905067ffffffffffffffff851660e08401528281036101008401526146348185613b81565b9c9b505050505050505050505050565b82815260406020820152600061049d6040830184613b81565b60006020828403121561466f57600080fd5b81518015158114612e5157600080fd5b8183823760009101908152919050565b8281526080810160608360208401379392505050565b600082601f8301126146b657600080fd5b815160206146c6613f5083613f0b565b82815260059290921b840181019181810190868411156146e557600080fd5b8286015b84811015613f9857805183529183019183016146e9565b600082601f83011261471157600080fd5b81516020614721613f5083613f0b565b82815260059290921b8401810191818101908684111561474057600080fd5b8286015b84811015613f9857805167ffffffffffffffff8111156147645760008081fd5b8701603f810189136147765760008081fd5b848101516040614788613f5083613fb4565b8281528b8284860101111561479d5760008081fd5b6147ac83898301848701613b5d565b8652505050918301918301614744565b60008060008060008060c087890312156147d557600080fd5b8651955060208701519450604087015167ffffffffffffffff808211156147fb57600080fd5b6148078a838b016146a5565b9550606089015191508082111561481d57600080fd5b6148298a838b016146a5565b9450608089015191508082111561483f57600080fd5b61484b8a838b01614700565b935060a089015191508082111561486157600080fd5b5061412389828a01614700565b6bffffffffffffffffffffffff8281168282160390808211156138f0576138f061417c565b60006bffffffffffffffffffffffff808416806148b2576148b261429f565b92169190910492915050565b60006bffffffffffffffffffffffff808316818516818304811182151516156148e9576148e961417c565b02949350505050565b60006020828403121561490457600080fd5b5051919050565b60006101208b835273ffffffffffffffffffffffffffffffffffffffff8b16602084015267ffffffffffffffff808b1660408501528160608501526149528285018b61455d565b91508382036080850152614966828a61455d565b915060ff881660a085015283820360c08501526149838288613b81565b90861660e085015283810361010085015290506146348185613b81565b8284823760008382016000815283516149bd818360208801613b5d565b0195945050505050565b600063ffffffff808316818516818304811182151516156148e9576148e961417c565b6000604082840312156149fc57600080fd5b6040516040810181811067ffffffffffffffff82111715614a1f57614a1f613e63565b604052614a2b83614348565b8152602083015160208201528091505092915050565b600060808284031215614a5357600080fd5b6040516080810181811067ffffffffffffffff82111715614a7657614a76613e63565b60405282518152614a8960208401614348565b6020820152614a9a60408401614348565b6040820152606083015160608201528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666a164736f6c6343000810000a", + ABI: "[{\"inputs\":[{\"internalType\":\"contractKeeperRegistryLogicA2_1\",\"name\":\"logicA\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ArrayHasNoEntries\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotCancel\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ConfigDigestMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateEntry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitOutsideRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfFaultyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDataLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReport\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTrigger\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTriggerType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxCheckDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPerformDataSizeCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MigrationNotPermitted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveTransmitters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByLINKToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrRegistrar\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByUpkeepPrivilegeManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySimulatedBackend\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyUnpausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ParameterLengthError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PaymentGreaterThanAllLINK\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PipelineDataExceedsLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RegistryPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedTransmitter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"TargetCheckReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TranscoderNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepCancelled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotCanceled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotNeeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValueNotChanged\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"CancelledUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"previousConfigBlockNumber\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"configCount\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"onchainConfig\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"FundsAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"FundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"InsufficientFundsUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"OwnerFundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"payees\",\"type\":\"address[]\"}],\"name\":\"PayeesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payee\",\"type\":\"address\"}],\"name\":\"PaymentWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"ReorgedUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"StaleUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"epoch\",\"type\":\"uint32\"}],\"name\":\"Transmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"atBlockHeight\",\"type\":\"uint64\"}],\"name\":\"UpkeepCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"gasLimit\",\"type\":\"uint96\"}],\"name\":\"UpkeepGasLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"UpkeepMigrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepOffchainConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"totalPayment\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasOverhead\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"UpkeepPerformed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newPipelineData\",\"type\":\"bytes\"}],\"name\":\"UpkeepPipelineDataSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"privilegeConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepPrivilegeConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"importedFrom\",\"type\":\"address\"}],\"name\":\"UpkeepReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"executeGas\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"UpkeepRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"triggerConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepTriggerConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepUnpaused\",\"type\":\"event\"},{\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fallbackTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFastGasFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLinkNativeFeedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMode\",\"outputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Mode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getTriggerType\",\"outputs\":[{\"internalType\":\"enumKeeperRegistryBase2_1.Trigger\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfigDetails\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfigDigestAndEpoch\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"scanLogs\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"epoch\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onTokenTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"onchainConfigBytes\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"}],\"name\":\"simulatePerformUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[3]\",\"name\":\"reportContext\",\"type\":\"bytes32[3]\"},{\"internalType\":\"bytes\",\"name\":\"rawReport\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"rs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"ss\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"rawVs\",\"type\":\"bytes32\"}],\"name\":\"transmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x6101206040523480156200001257600080fd5b5060405162004ff738038062004ff7833981016040819052620000359162000374565b80816001600160a01b0316634b4fd03b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009b91906200039b565b826001600160a01b031663ca30e6036040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000100919062000374565b836001600160a01b031663b10b673c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000165919062000374565b846001600160a01b0316636709d0e56040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca919062000374565b3380600081620002215760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b038481169190911790915581161562000254576200025481620002b0565b5050508360028111156200026c576200026c620003be565b60e0816002811115620002835762000283620003be565b9052506001600160a01b0392831660805290821660a052811660c052919091166101005250620003d49050565b336001600160a01b038216036200030a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000218565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6001600160a01b03811681146200037157600080fd5b50565b6000602082840312156200038757600080fd5b815162000394816200035b565b9392505050565b600060208284031215620003ae57600080fd5b8151600381106200039457600080fd5b634e487b7160e01b600052602160045260246000fd5b60805160a05160c05160e05161010051614bb46200044360003960008181610102015261019b0152600081816101e201528181612ec70152818161322d015281816133c001526139b501526000610230015260006103770152600081816103b001526105bf0152614bb46000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063a4c0ed3611610097578063b1dc65a411610066578063b1dc65a41461039b578063ca30e603146103ae578063e3d0e712146103d4578063f2fde38b146103e757610100565b8063a4c0ed36146102ef578063aed2e92914610302578063afcb95d71461032c578063b10b673c1461037557610100565b80636709d0e5116100d35780636709d0e51461022e57806379ba50971461025457806381ff70481461025c5780638da5cb5b146102d157610100565b8063181f5a7714610147578063349e8cca146101995780634b4fd03b146101e05780635147cd591461020e575b7f00000000000000000000000000000000000000000000000000000000000000003660008037600080366000845af43d6000803e808015610140573d6000f35b3d6000fd5b005b6101836040518060400160405280601481526020017f4b6565706572526567697374727920322e312e3000000000000000000000000081525081565b6040516101909190613c34565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b7f00000000000000000000000000000000000000000000000000000000000000006040516101909190613c76565b61022161021c366004613c90565b6103fa565b6040516101909190613ca9565b7f00000000000000000000000000000000000000000000000000000000000000006101bb565b6101456104a5565b6102ae60145460115463ffffffff780100000000000000000000000000000000000000000000000083048116937c01000000000000000000000000000000000000000000000000000000009093041691565b6040805163ffffffff948516815293909216602084015290820152606001610190565b60005473ffffffffffffffffffffffffffffffffffffffff166101bb565b6101456102fd366004613d28565b6105a7565b610315610310366004613d84565b6107c3565b604080519215158352602083019190915201610190565b601154601254604080516000815260208101939093527c010000000000000000000000000000000000000000000000000000000090910463ffffffff1690820152606001610190565b7f00000000000000000000000000000000000000000000000000000000000000006101bb565b6101456103a9366004613e15565b610939565b7f00000000000000000000000000000000000000000000000000000000000000006101bb565b6101456103e23660046140cc565b6114e6565b6101456103f5366004614199565b612366565b6000818160045b600f811015610487577fff00000000000000000000000000000000000000000000000000000000000000821683826020811061043f5761043f6141b6565b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461047557506000949350505050565b8061047f81614214565b915050610401565b5081600f1a600181111561049d5761049d613c47565b949350505050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461052b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610616576040517fc8bad78d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208114610650576040517fdfe9309000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061065e82840184613c90565b60008181526004602052604090205490915065010000000000900463ffffffff908116146106b8576040517f9c0083a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600460205260409020600101546106f39085906c0100000000000000000000000090046bffffffffffffffffffffffff1661424c565b600082815260046020526040902060010180546bffffffffffffffffffffffff929092166c01000000000000000000000000027fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff90921691909117905560185461075e908590614271565b6018556040516bffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff86169082907fafd24114486da8ebfc32f3626dada8863652e187461aa74d4bfa7348915062039060200160405180910390a35050505050565b6000806107ce61237a565b6012546e010000000000000000000000000000900460ff161561081d576040517f24522f3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008581526004602090815260409182902082516101008082018552825460ff81161515835263ffffffff918104821683860181905265010000000000820483168488015273ffffffffffffffffffffffffffffffffffffffff690100000000000000000090920482166060850181905260018601546bffffffffffffffffffffffff80821660808801526c0100000000000000000000000082041660a08701527801000000000000000000000000000000000000000000000000900490931660c08501526002909401541660e08301528451601f8901859004850281018501909552878552909361092c9391929189908990819084018382808284376000920191909152506123b492505050565b9097909650945050505050565b60005a604080516101208101825260125460ff808216835261010080830463ffffffff90811660208601526501000000000084048116958501959095526901000000000000000000830462ffffff1660608501526c01000000000000000000000000830461ffff1660808501526e0100000000000000000000000000008304821615801560a08601526f010000000000000000000000000000008404909216151560c085015270010000000000000000000000000000000083046bffffffffffffffffffffffff1660e08501527c010000000000000000000000000000000000000000000000000000000090920490931690820152919250610a67576040517f24522f3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600b602052604090205460ff16610ab0576040517f1099ed7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6011548a3514610aec576040517fdfdcf8e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051610af9906001614284565b60ff1686141580610b0a5750858414155b15610b41576040517f0244f71a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b518a8a8a8a8a8a8a8a6125b6565b6000610b928a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061281f92505050565b9050600081604001515167ffffffffffffffff811115610bb457610bb4613ecc565b604051908082528060200260200182016040528015610c7857816020015b604080516101e081018252600060e08201818152610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c0830182905282526020808301829052928201819052606082018190526080820181905260a0820181905260c082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610bd25790505b5090506000805b8360400151518110156110f6576004600085604001518381518110610ca657610ca66141b6565b602090810291909101810151825281810192909252604090810160002081516101008082018452825460ff81161515835263ffffffff91810482169583019590955265010000000000850481169382019390935273ffffffffffffffffffffffffffffffffffffffff69010000000000000000009094048416606082015260018201546bffffffffffffffffffffffff80821660808401526c0100000000000000000000000082041660a08301527801000000000000000000000000000000000000000000000000900490921660c08301526002015490911660e08201528351849083908110610d9857610d986141b6565b602002602001015160000181905250610dcd84604001518281518110610dc057610dc06141b6565b60200260200101516103fa565b838281518110610ddf57610ddf6141b6565b6020026020010151608001906001811115610dfc57610dfc613c47565b90816001811115610e0f57610e0f613c47565b81525050610e8785848381518110610e2957610e296141b6565b602002602001015160800151858481518110610e4757610e476141b6565b602002602001015160000151602001518760a001518581518110610e6d57610e6d6141b6565b602002602001015151886000015189602001516001612909565b838281518110610e9957610e996141b6565b6020026020010151604001906bffffffffffffffffffffffff1690816bffffffffffffffffffffffff1681525050610f6584604001518281518110610ee057610ee06141b6565b6020026020010151848381518110610efa57610efa6141b6565b60200260200101516080015186608001518481518110610f1c57610f1c6141b6565b6020026020010151868581518110610f3657610f366141b6565b602002602001015160000151878681518110610f5457610f546141b6565b602002602001015160400151612954565b838281518110610f7757610f776141b6565b60200260200101516020019015159081151581525050828181518110610f9f57610f9f6141b6565b60200260200101516020015115610fc257610fbb60018361429d565b9150610fc7565b6110e4565b61102d838281518110610fdc57610fdc6141b6565b6020026020010151600001516060015185606001518381518110611002576110026141b6565b60200260200101518660a001518481518110611020576110206141b6565b60200260200101516123b4565b84838151811061103f5761103f6141b6565b602002602001015160600185848151811061105c5761105c6141b6565b602002602001015160a0018281525082151515158152505050828181518110611087576110876141b6565b602002602001015160a001518661109e91906142b8565b95506110e4846040015182815181106110b9576110b96141b6565b60200260200101518483815181106110d3576110d36141b6565b602002602001015160800151612a9c565b806110ee81614214565b915050610c7f565b508061ffff1660000361110d5750505050506114dc565b835161111a906001614284565b6111299060ff1661044c6142cb565b616b6c6111378d60106142cb565b5a61114290896142b8565b61114c9190614271565b6111569190614271565b6111609190614271565b9450611b5861117361ffff831687614337565b61117d9190614271565b945060008060008060005b87604001515181101561137e578681815181106111a7576111a76141b6565b6020026020010151602001511561136c576112038a8883815181106111ce576111ce6141b6565b6020026020010151608001518a60a0015184815181106111f0576111f06141b6565b6020026020010151518c60000151612b23565b878281518110611215576112156141b6565b602002602001015160c0018181525050611271898960400151838151811061123f5761123f6141b6565b6020026020010151898481518110611259576112596141b6565b60200260200101518b600001518c602001518b612b43565b9093509150611280828561424c565b935061128c838661424c565b94508681815181106112a0576112a06141b6565b6020026020010151606001511515886040015182815181106112c4576112c46141b6565b60200260200101517fad8cc9579b21dfe2c2f6ea35ba15b656e46b4f5b0cb424f52739b8ce5cac9c5b84866112f9919061424c565b8a858151811061130b5761130b6141b6565b602002602001015160a001518b8681518110611329576113296141b6565b602002602001015160c001518d60800151878151811061134b5761134b6141b6565b6020026020010151604051611363949392919061434b565b60405180910390a35b8061137681614214565b915050611188565b5050336000908152600b6020526040902080548492506002906113b69084906201000090046bffffffffffffffffffffffff1661424c565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080601260000160108282829054906101000a90046bffffffffffffffffffffffff16611410919061424c565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060008f600160038110611453576114536141b6565b602002013560001c9050600060088264ffffffffff16901c905087610100015163ffffffff168163ffffffff1611156114d257601280547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff8416021790555b5050505050505050505b5050505050505050565b6114ee612c36565b601f8651111561152a576040517f25d0209c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360ff16600003611567576040517fe77dba5600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84518651141580611586575061157e846003614388565b60ff16865111155b156115bd576040517f1d2d1c5800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601254600e547001000000000000000000000000000000009091046bffffffffffffffffffffffff169060005b816bffffffffffffffffffffffff168110156116525761163f600e8281548110611616576116166141b6565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff168484612cb7565b508061164a81614214565b9150506115ea565b5060008060005b836bffffffffffffffffffffffff1681101561175b57600d8181548110611682576116826141b6565b600091825260209091200154600e805473ffffffffffffffffffffffffffffffffffffffff909216945090829081106116bd576116bd6141b6565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff8681168452600c8352604080852080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001690559116808452600b90925290912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905591508061175381614214565b915050611659565b50611768600d6000613b09565b611774600e6000613b09565b604080516080810182526000808252602082018190529181018290526060810182905290805b8c51811015611af857600c60008e83815181106117b9576117b96141b6565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1615611824576040517f77cea0fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180604001604052806001151581526020018260ff16815250600c60008f8481518110611855576118556141b6565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260400160002082518154939092015160ff16610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909316929092171790558b518c90829081106118fd576118fd6141b6565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff81166000908152600b83526040908190208151608081018352905460ff80821615801584526101008304909116958301959095526bffffffffffffffffffffffff6201000082048116938301939093526e01000000000000000000000000000090049091166060820152945092506119c2576040517f6a7281ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001835260ff80821660208086019182526bffffffffffffffffffffffff808b166060880190815273ffffffffffffffffffffffffffffffffffffffff87166000908152600b909352604092839020885181549551948a0151925184166e010000000000000000000000000000027fffffffffffff000000000000000000000000ffffffffffffffffffffffffffff939094166201000002929092167fffffffffffff000000000000000000000000000000000000000000000000ffff94909616610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009095169490941717919091169290921791909117905580611af081614214565b91505061179a565b50508a51611b0e9150600d9060208d0190613b27565b508851611b2290600e9060208c0190613b27565b50600087806020019051810190611b399190614475565b60145460c082015191925063ffffffff700100000000000000000000000000000000909104811691161015611b9a576040517f39abc10400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60155460e082015163ffffffff91821691161015611be4576040517f1fa9bdcb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60155461010082015163ffffffff640100000000909204821691161015611c37576040517fd1d5faa800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518061012001604052808a60ff168152602001826000015163ffffffff168152602001826020015163ffffffff168152602001826060015162ffffff168152602001826080015161ffff168152602001600015158152602001600015158152602001866bffffffffffffffffffffffff168152602001600063ffffffff16815250601260008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160056101000a81548163ffffffff021916908363ffffffff16021790555060608201518160000160096101000a81548162ffffff021916908362ffffff160217905550608082015181600001600c6101000a81548161ffff021916908361ffff16021790555060a082015181600001600e6101000a81548160ff02191690831515021790555060c082015181600001600f6101000a81548160ff02191690831515021790555060e08201518160000160106101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061010082015181600001601c6101000a81548163ffffffff021916908363ffffffff1602179055509050506040518061016001604052808260a001516bffffffffffffffffffffffff16815260200182610160015173ffffffffffffffffffffffffffffffffffffffff168152602001601360010160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001826040015163ffffffff1681526020018260c0015163ffffffff168152602001601360010160149054906101000a900463ffffffff1663ffffffff168152602001601360010160189054906101000a900463ffffffff1663ffffffff1681526020016013600101601c9054906101000a900463ffffffff1663ffffffff1681526020018260e0015163ffffffff16815260200182610100015163ffffffff168152602001826101a0015173ffffffffffffffffffffffffffffffffffffffff16815250601360008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550606082015181600101600c6101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160106101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160010160146101000a81548163ffffffff021916908363ffffffff16021790555060c08201518160010160186101000a81548163ffffffff021916908363ffffffff16021790555060e082015181600101601c6101000a81548163ffffffff021916908363ffffffff1602179055506101008201518160020160006101000a81548163ffffffff021916908363ffffffff1602179055506101208201518160020160046101000a81548163ffffffff021916908363ffffffff1602179055506101408201518160020160086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555090505080610120015160168190555080610140015160178190555060006013600101601c9054906101000a900463ffffffff16905061219d612ec1565b601480547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff938416021780825560019260189161221891859178010000000000000000000000000000000000000000000000009004166145bd565b92506101000a81548163ffffffff021916908363ffffffff1602179055506122624630601360010160189054906101000a900463ffffffff1663ffffffff168f8f8f8f8f8f612f76565b60115560005b6122726009613020565b8110156122a25761228f612287600983613030565b60099061303c565b508061229a81614214565b915050612268565b5060005b826101800151518110156122f9576122e683610180015182815181106122ce576122ce6141b6565b6020026020010151600961305e90919063ffffffff16565b50806122f181614214565b9150506122a6565b507f1591690b8638f5fb2dbec82ac741805ac5da8b45dc5263f4875b0496fdce4e0581601154601360010160189054906101000a900463ffffffff168f8f8f8f8f8f6040516123509998979695949392919061462b565b60405180910390a1505050505050505050505050565b61236e612c36565b61237781613080565b50565b32156123b2576040517fb60ac5db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60125460009081906f01000000000000000000000000000000900460ff1615612409576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601280547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff166f010000000000000000000000000000001790555a9050634585e33b60e01b8360405160240161245f9190613c34565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290517f79188d1600000000000000000000000000000000000000000000000000000000815290935073ffffffffffffffffffffffffffffffffffffffff8616906379188d169061253290879087906004016146c1565b6020604051808303816000875af1158015612551573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257591906146da565b91505a61258290826142b8565b9050601280547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff1690559094909350915050565b600087876040516125c89291906146fc565b6040519081900381206125df918b9060200161470c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201208383019092526000808452908301819052909250906000805b888110156127b65760018587836020811061264b5761264b6141b6565b61265891901a601b614284565b8c8c8581811061266a5761266a6141b6565b905060200201358b8b86818110612683576126836141b6565b90506020020135604051600081526020016040526040516126c0949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa1580156126e2573d6000803e3d6000fd5b5050604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081015173ffffffffffffffffffffffffffffffffffffffff81166000908152600c602090815290849020838501909452925460ff8082161515808552610100909204169383019390935290955093509050612790576040517f0f4c073700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826020015160080260ff166001901b8401935080806127ae90614214565b91505061262e565b50827e01010101010101010101010101010101010101010101010101010101010101841614612811576040517fc103be2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050505050505050565b6128586040518060c001604052806000815260200160008152602001606081526020016060815260200160608152602001606081525090565b600080600080600080878060200190518101906128759190614839565b9550955095509550955095508251845114158061289457508151845114155b806128a157508051845114155b156128d8576040517fb55ac75400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160c0810182529687526020870195909552938501929092526060840152608083015260a082015292915050565b60008061291b88878b60000151613175565b90506000806129368b8a63ffffffff16858a8a60018b6131f8565b9092509050612945818361424c565b9b9a5050505050505050505050565b60008085600181111561296957612969613c47565b0361298a576129798685856135a3565b61298557506000612a93565b6129df565b600185600181111561299e5761299e613c47565b036129ad576129798685613687565b6040517ff2b2d41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129e7612ec1565b836040015163ffffffff1611612a3757857fc3237c8807c467c1b39b8d0395eff077313e691bf0a7388106792564ebfd563685604051612a279190613c34565b60405180910390a2506000612a93565b816bffffffffffffffffffffffff168360a001516bffffffffffffffffffffffff161015612a8f57857f377c8b0c126ae5248d27aca1c76fac4608aff85673ee3caf09747e1044549e0285604051612a279190613c34565b5060015b95945050505050565b6000816001811115612ab057612ab0613c47565b03612b1f57612abd612ec1565b6000838152600460205260409020600101805463ffffffff929092167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790555b5050565b6000612b30848484613175565b90508085101561049d5750929392505050565b600080612b5e888760a001518860c0015188888860016131f8565b90925090506000612b6f828461424c565b600089815260046020526040902060010180549192508291600c90612bb39084906c0100000000000000000000000090046bffffffffffffffffffffffff166148eb565b82546101009290920a6bffffffffffffffffffffffff81810219909316918316021790915560008a815260046020526040812060010180548594509092612bfc9185911661424c565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050965096945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146123b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610522565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b602090815260408083208151608081018352905460ff80821615801584526101008304909116948301949094526bffffffffffffffffffffffff6201000082048116938301939093526e0100000000000000000000000000009004909116606082015290612eb3576000816060015185612d4f91906148eb565b90506000612d5d8583614910565b90508083604001818151612d71919061424c565b6bffffffffffffffffffffffff16905250612d8c858261493b565b83606001818151612d9d919061424c565b6bffffffffffffffffffffffff90811690915273ffffffffffffffffffffffffffffffffffffffff89166000908152600b602090815260409182902087518154928901519389015160608a015186166e010000000000000000000000000000027fffffffffffff000000000000000000000000ffffffffffffffffffffffffffff919096166201000002167fffffffffffff000000000000000000000000000000000000000000000000ffff60ff95909516610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909416939093171792909216179190911790555050505b6040015190505b9392505050565b600060017f00000000000000000000000000000000000000000000000000000000000000006002811115612ef757612ef7613c47565b03612f7157606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6c919061496f565b905090565b504390565b6000808a8a8a8a8a8a8a8a8a604051602001612f9a99989796959493929190614988565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905280516020909101207dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e01000000000000000000000000000000000000000000000000000000000000179b9a5050505050505050505050565b600061302a825490565b92915050565b6000612eba838361383c565b6000612eba8373ffffffffffffffffffffffffffffffffffffffff8416613866565b6000612eba8373ffffffffffffffffffffffffffffffffffffffff8416613960565b3373ffffffffffffffffffffffffffffffffffffffff8216036130ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610522565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000808085600181111561318b5761318b613c47565b0361319a5750620138806131b9565b60018560018111156131ae576131ae613c47565b036129ad5750620186a05b6131ca63ffffffff851660146142cb565b6131d5846001614284565b6131e49060ff16611d4c6142cb565b6131ee9083614271565b612a939190614271565b6000806000896080015161ffff168761321191906142cb565b905083801561321f5750803a105b1561322757503a5b600060027f0000000000000000000000000000000000000000000000000000000000000000600281111561325d5761325d613c47565b036133bc5760408051600081526020810190915285156132bb57600036604051806080016040528060488152602001614b60604891396040516020016132a593929190614a1d565b6040516020818303038152906040529050613323565b6015546132d790640100000000900463ffffffff166004614a44565b63ffffffff1667ffffffffffffffff8111156132f5576132f5613ecc565b6040519080825280601f01601f19166020018201604052801561331f576020820181803683370190505b5090505b6040517f49948e0e00000000000000000000000000000000000000000000000000000000815273420000000000000000000000000000000000000f906349948e0e90613373908490600401613c34565b602060405180830381865afa158015613390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b4919061496f565b915050613468565b60017f000000000000000000000000000000000000000000000000000000000000000060028111156133f0576133f0613c47565b0361346857606c73ffffffffffffffffffffffffffffffffffffffff1663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613441573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613465919061496f565b90505b8461348457808b6080015161ffff1661348191906142cb565b90505b61349261ffff871682614337565b9050600087826134a28c8e614271565b6134ac90866142cb565b6134b69190614271565b6134c890670de0b6b3a76400006142cb565b6134d29190614337565b905060008c6040015163ffffffff1664e8d4a510006134f191906142cb565b898e6020015163ffffffff16858f8861350a91906142cb565b6135149190614271565b61352290633b9aca006142cb565b61352c91906142cb565b6135369190614337565b6135409190614271565b90506b033b2e3c9fd0803ce80000006135598284614271565b1115613591576040517f2ad7547a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b909c909b509950505050505050505050565b600080838060200190518101906135ba9190614a67565b90508260c0015163ffffffff16816000015163ffffffff16101561361a57847f405288ea7be309e16cfdf481367f90a413e1d4634fcdaf8966546db9b93012e8856040516136089190613c34565b60405180910390a26000915050612eba565b602081015181516136309063ffffffff166139af565b141580613647575043816000015163ffffffff1610155b1561367c57847f6aa7f60c176da7af894b384daea2249497448137f5943c1237ada8bc92bdc301856040516136089190613c34565b506001949350505050565b6000808280602001905181019061369e9190614abe565b905080606001516136b8826040015163ffffffff166139af565b1415806136cf575043816040015163ffffffff1610155b1561371657837f6aa7f60c176da7af894b384daea2249497448137f5943c1237ada8bc92bdc301846040516137049190613c34565b60405180910390a2600091505061302a565b8051602080830151604051600093613768938993919201928352602083019190915260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016604082015260440190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600890935291205490915060ff16156137f957847f405288ea7be309e16cfdf481367f90a413e1d4634fcdaf8966546db9b93012e8856040516137e69190613c34565b60405180910390a260009250505061302a565b600090815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915591505092915050565b6000826000018281548110613853576138536141b6565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561394f57600061388a6001836142b8565b855490915060009061389e906001906142b8565b90508181146139035760008660000182815481106138be576138be6141b6565b90600052602060002001549050808760000184815481106138e1576138e16141b6565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061391457613914614b30565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061302a565b600091505061302a565b5092915050565b60008181526001830160205260408120546139a75750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561302a565b50600061302a565b600060017f000000000000000000000000000000000000000000000000000000000000000060028111156139e5576139e5613c47565b03613aff576000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5c919061496f565b90508083101580613a775750610100613a7584836142b8565b115b15613a855750600092915050565b6040517f2b407a8200000000000000000000000000000000000000000000000000000000815260048101849052606490632b407a8290602401602060405180830381865afa158015613adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eba919061496f565b504090565b919050565b50805460008255906000526020600020908101906123779190613bb1565b828054828255906000526020600020908101928215613ba1579160200282015b82811115613ba157825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190613b47565b50613bad929150613bb1565b5090565b5b80821115613bad5760008155600101613bb2565b60005b83811015613be1578181015183820152602001613bc9565b50506000910152565b60008151808452613c02816020860160208601613bc6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612eba6020830184613bea565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310613c8a57613c8a613c47565b91905290565b600060208284031215613ca257600080fd5b5035919050565b6020810160028310613c8a57613c8a613c47565b73ffffffffffffffffffffffffffffffffffffffff8116811461237757600080fd5b60008083601f840112613cf157600080fd5b50813567ffffffffffffffff811115613d0957600080fd5b602083019150836020828501011115613d2157600080fd5b9250929050565b60008060008060608587031215613d3e57600080fd5b8435613d4981613cbd565b935060208501359250604085013567ffffffffffffffff811115613d6c57600080fd5b613d7887828801613cdf565b95989497509550505050565b600080600060408486031215613d9957600080fd5b83359250602084013567ffffffffffffffff811115613db757600080fd5b613dc386828701613cdf565b9497909650939450505050565b60008083601f840112613de257600080fd5b50813567ffffffffffffffff811115613dfa57600080fd5b6020830191508360208260051b8501011115613d2157600080fd5b60008060008060008060008060e0898b031215613e3157600080fd5b606089018a811115613e4257600080fd5b8998503567ffffffffffffffff80821115613e5c57600080fd5b613e688c838d01613cdf565b909950975060808b0135915080821115613e8157600080fd5b613e8d8c838d01613dd0565b909750955060a08b0135915080821115613ea657600080fd5b50613eb38b828c01613dd0565b999c989b50969995989497949560c00135949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101c0810167ffffffffffffffff81118282101715613f1f57613f1f613ecc565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613f6c57613f6c613ecc565b604052919050565b600067ffffffffffffffff821115613f8e57613f8e613ecc565b5060051b60200190565b600082601f830112613fa957600080fd5b81356020613fbe613fb983613f74565b613f25565b82815260059290921b84018101918181019086841115613fdd57600080fd5b8286015b84811015614001578035613ff481613cbd565b8352918301918301613fe1565b509695505050505050565b803560ff81168114613b0457600080fd5b600067ffffffffffffffff82111561403757614037613ecc565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261407457600080fd5b8135614082613fb98261401d565b81815284602083860101111561409757600080fd5b816020850160208301376000918101602001919091529392505050565b803567ffffffffffffffff81168114613b0457600080fd5b60008060008060008060c087890312156140e557600080fd5b863567ffffffffffffffff808211156140fd57600080fd5b6141098a838b01613f98565b9750602089013591508082111561411f57600080fd5b61412b8a838b01613f98565b965061413960408a0161400c565b9550606089013591508082111561414f57600080fd5b61415b8a838b01614063565b945061416960808a016140b4565b935060a089013591508082111561417f57600080fd5b5061418c89828a01614063565b9150509295509295509295565b6000602082840312156141ab57600080fd5b8135612eba81613cbd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614245576142456141e5565b5060010190565b6bffffffffffffffffffffffff818116838216019080821115613959576139596141e5565b8082018082111561302a5761302a6141e5565b60ff818116838216019081111561302a5761302a6141e5565b61ffff818116838216019080821115613959576139596141e5565b8181038181111561302a5761302a6141e5565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614303576143036141e5565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261434657614346614308565b500490565b6bffffffffffffffffffffffff8516815283602082015282604082015260806060820152600061437e6080830184613bea565b9695505050505050565b600060ff821660ff84168160ff04811182151516156143a9576143a96141e5565b029392505050565b805163ffffffff81168114613b0457600080fd5b805162ffffff81168114613b0457600080fd5b805161ffff81168114613b0457600080fd5b80516bffffffffffffffffffffffff81168114613b0457600080fd5b8051613b0481613cbd565b600082601f83011261442257600080fd5b81516020614432613fb983613f74565b82815260059290921b8401810191818101908684111561445157600080fd5b8286015b8481101561400157805161446881613cbd565b8352918301918301614455565b60006020828403121561448757600080fd5b815167ffffffffffffffff8082111561449f57600080fd5b908301906101c082860312156144b457600080fd5b6144bc613efb565b6144c5836143b1565b81526144d3602084016143b1565b60208201526144e4604084016143b1565b60408201526144f5606084016143c5565b6060820152614506608084016143d8565b608082015261451760a084016143ea565b60a082015261452860c084016143b1565b60c082015261453960e084016143b1565b60e082015261010061454c8185016143b1565b9082015261012083810151908201526101408084015190820152610160614574818501614406565b90820152610180838101518381111561458c57600080fd5b61459888828701614411565b8284015250506101a091506145ae828401614406565b91810191909152949350505050565b63ffffffff818116838216019080821115613959576139596141e5565b600081518084526020808501945080840160005b8381101561462057815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016145ee565b509495945050505050565b600061012063ffffffff808d1684528b6020850152808b1660408501525080606084015261465b8184018a6145da565b9050828103608084015261466f81896145da565b905060ff871660a084015282810360c084015261468c8187613bea565b905067ffffffffffffffff851660e08401528281036101008401526146b18185613bea565b9c9b505050505050505050505050565b82815260406020820152600061049d6040830184613bea565b6000602082840312156146ec57600080fd5b81518015158114612eba57600080fd5b8183823760009101908152919050565b8281526080810160608360208401379392505050565b600082601f83011261473357600080fd5b81516020614743613fb983613f74565b82815260059290921b8401810191818101908684111561476257600080fd5b8286015b848110156140015780518352918301918301614766565b600082601f83011261478e57600080fd5b8151602061479e613fb983613f74565b82815260059290921b840181019181810190868411156147bd57600080fd5b8286015b8481101561400157805167ffffffffffffffff8111156147e15760008081fd5b8701603f810189136147f35760008081fd5b848101516040614805613fb98361401d565b8281528b8284860101111561481a5760008081fd5b61482983898301848701613bc6565b86525050509183019183016147c1565b60008060008060008060c0878903121561485257600080fd5b8651955060208701519450604087015167ffffffffffffffff8082111561487857600080fd5b6148848a838b01614722565b9550606089015191508082111561489a57600080fd5b6148a68a838b01614722565b945060808901519150808211156148bc57600080fd5b6148c88a838b0161477d565b935060a08901519150808211156148de57600080fd5b5061418c89828a0161477d565b6bffffffffffffffffffffffff828116828216039080821115613959576139596141e5565b60006bffffffffffffffffffffffff8084168061492f5761492f614308565b92169190910492915050565b60006bffffffffffffffffffffffff80831681851681830481118215151615614966576149666141e5565b02949350505050565b60006020828403121561498157600080fd5b5051919050565b60006101208b835273ffffffffffffffffffffffffffffffffffffffff8b16602084015267ffffffffffffffff808b1660408501528160608501526149cf8285018b6145da565b915083820360808501526149e3828a6145da565b915060ff881660a085015283820360c0850152614a008288613bea565b90861660e085015283810361010085015290506146b18185613bea565b828482376000838201600081528351614a3a818360208801613bc6565b0195945050505050565b600063ffffffff80831681851681830481118215151615614966576149666141e5565b600060408284031215614a7957600080fd5b6040516040810181811067ffffffffffffffff82111715614a9c57614a9c613ecc565b604052614aa8836143b1565b8152602083015160208201528091505092915050565b600060808284031215614ad057600080fd5b6040516080810181811067ffffffffffffffff82111715614af357614af3613ecc565b60405282518152614b06602084016143b1565b6020820152614b17604084016143b1565b6040820152606083015160608201528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666a164736f6c6343000810000a", } var KeeperRegistryABI = KeeperRegistryMetaData.ABI @@ -2691,134 +2691,6 @@ func (_KeeperRegistry *KeeperRegistryFilterer) ParseUnpaused(log types.Log) (*Ke return event, nil } -type KeeperRegistryUpkeepAdminOffchainConfigSetIterator struct { - Event *KeeperRegistryUpkeepAdminOffchainConfigSet - - contract *bind.BoundContract - event string - - logs chan types.Log - sub ethereum.Subscription - done bool - fail error -} - -func (it *KeeperRegistryUpkeepAdminOffchainConfigSetIterator) Next() bool { - - if it.fail != nil { - return false - } - - if it.done { - select { - case log := <-it.logs: - it.Event = new(KeeperRegistryUpkeepAdminOffchainConfigSet) - 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 - } - } - - select { - case log := <-it.logs: - it.Event = new(KeeperRegistryUpkeepAdminOffchainConfigSet) - 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() - } -} - -func (it *KeeperRegistryUpkeepAdminOffchainConfigSetIterator) Error() error { - return it.fail -} - -func (it *KeeperRegistryUpkeepAdminOffchainConfigSetIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -type KeeperRegistryUpkeepAdminOffchainConfigSet struct { - Id *big.Int - AdminOffchainConfig []byte - Raw types.Log -} - -func (_KeeperRegistry *KeeperRegistryFilterer) FilterUpkeepAdminOffchainConfigSet(opts *bind.FilterOpts, id []*big.Int) (*KeeperRegistryUpkeepAdminOffchainConfigSetIterator, error) { - - var idRule []interface{} - for _, idItem := range id { - idRule = append(idRule, idItem) - } - - logs, sub, err := _KeeperRegistry.contract.FilterLogs(opts, "UpkeepAdminOffchainConfigSet", idRule) - if err != nil { - return nil, err - } - return &KeeperRegistryUpkeepAdminOffchainConfigSetIterator{contract: _KeeperRegistry.contract, event: "UpkeepAdminOffchainConfigSet", logs: logs, sub: sub}, nil -} - -func (_KeeperRegistry *KeeperRegistryFilterer) WatchUpkeepAdminOffchainConfigSet(opts *bind.WatchOpts, sink chan<- *KeeperRegistryUpkeepAdminOffchainConfigSet, id []*big.Int) (event.Subscription, error) { - - var idRule []interface{} - for _, idItem := range id { - idRule = append(idRule, idItem) - } - - logs, sub, err := _KeeperRegistry.contract.WatchLogs(opts, "UpkeepAdminOffchainConfigSet", idRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - - event := new(KeeperRegistryUpkeepAdminOffchainConfigSet) - if err := _KeeperRegistry.contract.UnpackLog(event, "UpkeepAdminOffchainConfigSet", 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 -} - -func (_KeeperRegistry *KeeperRegistryFilterer) ParseUpkeepAdminOffchainConfigSet(log types.Log) (*KeeperRegistryUpkeepAdminOffchainConfigSet, error) { - event := new(KeeperRegistryUpkeepAdminOffchainConfigSet) - if err := _KeeperRegistry.contract.UnpackLog(event, "UpkeepAdminOffchainConfigSet", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - type KeeperRegistryUpkeepAdminTransferRequestedIterator struct { Event *KeeperRegistryUpkeepAdminTransferRequested @@ -4025,6 +3897,134 @@ func (_KeeperRegistry *KeeperRegistryFilterer) ParseUpkeepPipelineDataSet(log ty return event, nil } +type KeeperRegistryUpkeepPrivilegeConfigSetIterator struct { + Event *KeeperRegistryUpkeepPrivilegeConfigSet + + contract *bind.BoundContract + event string + + logs chan types.Log + sub ethereum.Subscription + done bool + fail error +} + +func (it *KeeperRegistryUpkeepPrivilegeConfigSetIterator) Next() bool { + + if it.fail != nil { + return false + } + + if it.done { + select { + case log := <-it.logs: + it.Event = new(KeeperRegistryUpkeepPrivilegeConfigSet) + 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 + } + } + + select { + case log := <-it.logs: + it.Event = new(KeeperRegistryUpkeepPrivilegeConfigSet) + 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() + } +} + +func (it *KeeperRegistryUpkeepPrivilegeConfigSetIterator) Error() error { + return it.fail +} + +func (it *KeeperRegistryUpkeepPrivilegeConfigSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +type KeeperRegistryUpkeepPrivilegeConfigSet struct { + Id *big.Int + PrivilegeConfig []byte + Raw types.Log +} + +func (_KeeperRegistry *KeeperRegistryFilterer) FilterUpkeepPrivilegeConfigSet(opts *bind.FilterOpts, id []*big.Int) (*KeeperRegistryUpkeepPrivilegeConfigSetIterator, error) { + + var idRule []interface{} + for _, idItem := range id { + idRule = append(idRule, idItem) + } + + logs, sub, err := _KeeperRegistry.contract.FilterLogs(opts, "UpkeepPrivilegeConfigSet", idRule) + if err != nil { + return nil, err + } + return &KeeperRegistryUpkeepPrivilegeConfigSetIterator{contract: _KeeperRegistry.contract, event: "UpkeepPrivilegeConfigSet", logs: logs, sub: sub}, nil +} + +func (_KeeperRegistry *KeeperRegistryFilterer) WatchUpkeepPrivilegeConfigSet(opts *bind.WatchOpts, sink chan<- *KeeperRegistryUpkeepPrivilegeConfigSet, id []*big.Int) (event.Subscription, error) { + + var idRule []interface{} + for _, idItem := range id { + idRule = append(idRule, idItem) + } + + logs, sub, err := _KeeperRegistry.contract.WatchLogs(opts, "UpkeepPrivilegeConfigSet", idRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + + event := new(KeeperRegistryUpkeepPrivilegeConfigSet) + if err := _KeeperRegistry.contract.UnpackLog(event, "UpkeepPrivilegeConfigSet", 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 +} + +func (_KeeperRegistry *KeeperRegistryFilterer) ParseUpkeepPrivilegeConfigSet(log types.Log) (*KeeperRegistryUpkeepPrivilegeConfigSet, error) { + event := new(KeeperRegistryUpkeepPrivilegeConfigSet) + if err := _KeeperRegistry.contract.UnpackLog(event, "UpkeepPrivilegeConfigSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + type KeeperRegistryUpkeepReceivedIterator struct { Event *KeeperRegistryUpkeepReceived @@ -4585,8 +4585,6 @@ func (_KeeperRegistry *KeeperRegistry) ParseLog(log types.Log) (generated.Abigen return _KeeperRegistry.ParseTransmitted(log) case _KeeperRegistry.abi.Events["Unpaused"].ID: return _KeeperRegistry.ParseUnpaused(log) - case _KeeperRegistry.abi.Events["UpkeepAdminOffchainConfigSet"].ID: - return _KeeperRegistry.ParseUpkeepAdminOffchainConfigSet(log) case _KeeperRegistry.abi.Events["UpkeepAdminTransferRequested"].ID: return _KeeperRegistry.ParseUpkeepAdminTransferRequested(log) case _KeeperRegistry.abi.Events["UpkeepAdminTransferred"].ID: @@ -4605,6 +4603,8 @@ func (_KeeperRegistry *KeeperRegistry) ParseLog(log types.Log) (generated.Abigen return _KeeperRegistry.ParseUpkeepPerformed(log) case _KeeperRegistry.abi.Events["UpkeepPipelineDataSet"].ID: return _KeeperRegistry.ParseUpkeepPipelineDataSet(log) + case _KeeperRegistry.abi.Events["UpkeepPrivilegeConfigSet"].ID: + return _KeeperRegistry.ParseUpkeepPrivilegeConfigSet(log) case _KeeperRegistry.abi.Events["UpkeepReceived"].ID: return _KeeperRegistry.ParseUpkeepReceived(log) case _KeeperRegistry.abi.Events["UpkeepRegistered"].ID: @@ -4687,10 +4687,6 @@ func (KeeperRegistryUnpaused) Topic() common.Hash { return common.HexToHash("0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa") } -func (KeeperRegistryUpkeepAdminOffchainConfigSet) Topic() common.Hash { - return common.HexToHash("0x09a658476c5597979b9948f488ec2958cfead97bc8f46b19ca0b21cdab93cdee") -} - func (KeeperRegistryUpkeepAdminTransferRequested) Topic() common.Hash { return common.HexToHash("0xb1cbb2c4b8480034c27e06da5f096b8233a8fd4497028593a41ff6df79726b35") } @@ -4727,6 +4723,10 @@ func (KeeperRegistryUpkeepPipelineDataSet) Topic() common.Hash { return common.HexToHash("0x787b2e556c364148324d7dc0cee4322a048aaf798bda184136c8636c72ed3056") } +func (KeeperRegistryUpkeepPrivilegeConfigSet) Topic() common.Hash { + return common.HexToHash("0x2fd8d70753a007014349d4591843cc031c2dd7a260d7dd82eca8253686ae7769") +} + func (KeeperRegistryUpkeepReceived) Topic() common.Hash { return common.HexToHash("0x74931a144e43a50694897f241d973aecb5024c0e910f9bb80a163ea3c1cf5a71") } @@ -4888,12 +4888,6 @@ type KeeperRegistryInterface interface { ParseUnpaused(log types.Log) (*KeeperRegistryUnpaused, error) - FilterUpkeepAdminOffchainConfigSet(opts *bind.FilterOpts, id []*big.Int) (*KeeperRegistryUpkeepAdminOffchainConfigSetIterator, error) - - WatchUpkeepAdminOffchainConfigSet(opts *bind.WatchOpts, sink chan<- *KeeperRegistryUpkeepAdminOffchainConfigSet, id []*big.Int) (event.Subscription, error) - - ParseUpkeepAdminOffchainConfigSet(log types.Log) (*KeeperRegistryUpkeepAdminOffchainConfigSet, error) - FilterUpkeepAdminTransferRequested(opts *bind.FilterOpts, id []*big.Int, from []common.Address, to []common.Address) (*KeeperRegistryUpkeepAdminTransferRequestedIterator, error) WatchUpkeepAdminTransferRequested(opts *bind.WatchOpts, sink chan<- *KeeperRegistryUpkeepAdminTransferRequested, id []*big.Int, from []common.Address, to []common.Address) (event.Subscription, error) @@ -4948,6 +4942,12 @@ type KeeperRegistryInterface interface { ParseUpkeepPipelineDataSet(log types.Log) (*KeeperRegistryUpkeepPipelineDataSet, error) + FilterUpkeepPrivilegeConfigSet(opts *bind.FilterOpts, id []*big.Int) (*KeeperRegistryUpkeepPrivilegeConfigSetIterator, error) + + WatchUpkeepPrivilegeConfigSet(opts *bind.WatchOpts, sink chan<- *KeeperRegistryUpkeepPrivilegeConfigSet, id []*big.Int) (event.Subscription, error) + + ParseUpkeepPrivilegeConfigSet(log types.Log) (*KeeperRegistryUpkeepPrivilegeConfigSet, error) + FilterUpkeepReceived(opts *bind.FilterOpts, id []*big.Int) (*KeeperRegistryUpkeepReceivedIterator, error) WatchUpkeepReceived(opts *bind.WatchOpts, sink chan<- *KeeperRegistryUpkeepReceived, id []*big.Int) (event.Subscription, error) diff --git a/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt index da612cf12af..a8e3e1ac3f4 100644 --- a/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -17,18 +17,18 @@ flux_aggregator_wrapper: ../../contracts/solc/v0.6/FluxAggregator.abi ../../cont functions_billing_registry_events_mock: ../../contracts/solc/v0.8.6/FunctionsBillingRegistryEventsMock.abi ../../contracts/solc/v0.8.6/FunctionsBillingRegistryEventsMock.bin 50deeb883bd9c3729702be335c0388f9d8553bab4be5e26ecacac496a89e2b77 functions_oracle_events_mock: ../../contracts/solc/v0.8.6/FunctionsOracleEventsMock.abi ../../contracts/solc/v0.8.6/FunctionsOracleEventsMock.bin 3ca70f966f8fe751987f0ccb50bebb6aa5be77e4a9f835d1ae99e0e9bfb7d52c gas_wrapper: ../../contracts/solc/v0.8.6/KeeperRegistryCheckUpkeepGasUsageWrapper1_2.abi ../../contracts/solc/v0.8.6/KeeperRegistryCheckUpkeepGasUsageWrapper1_2.bin 4a5dcdac486d18fcd58e3488c15c1710ae76b977556a3f3191bd269a4bc75723 -i_keeper_registry_master_wrapper_2_1: ../../contracts/solc/v0.8.16/IKeeperRegistryMaster.abi ../../contracts/solc/v0.8.16/IKeeperRegistryMaster.bin e86539381d4a35997e09db982366b46749887d71910722723bb94aa40284545a +i_keeper_registry_master_wrapper_2_1: ../../contracts/solc/v0.8.16/IKeeperRegistryMaster.abi ../../contracts/solc/v0.8.16/IKeeperRegistryMaster.bin e3d0375a6988c04e91ffb9cd6ef8e4a151d130699f485dbd80baa898a96166af keeper_registrar_wrapper1_2: ../../contracts/solc/v0.8.6/KeeperRegistrar.abi ../../contracts/solc/v0.8.6/KeeperRegistrar.bin e49b2f8b23da17af1ed2209b8ae0968cc04350554d636711e6c24a3ad3118692 keeper_registrar_wrapper2_0: ../../contracts/solc/v0.8.6/KeeperRegistrar2_0.abi ../../contracts/solc/v0.8.6/KeeperRegistrar2_0.bin 647f125c2f0dafabcdc545cb77b15dc2ec3ea9429357806813179b1fd555c2d2 keeper_registry_logic1_3: ../../contracts/solc/v0.8.6/KeeperRegistryLogic1_3.abi ../../contracts/solc/v0.8.6/KeeperRegistryLogic1_3.bin e1bee66ce7cd0085469f923c46f0eddb58fd45dec207def1bb383b37e413a6ca keeper_registry_logic2_0: ../../contracts/solc/v0.8.6/KeeperRegistryLogic2_0.abi ../../contracts/solc/v0.8.6/KeeperRegistryLogic2_0.bin ba5c23c495c4e1e487560ed56d917632f0047266c06fda4af9edbcda5aca99fa -keeper_registry_logic_a_wrapper_2_1: ../../contracts/solc/v0.8.16/KeeperRegistryLogicA2_1.abi ../../contracts/solc/v0.8.16/KeeperRegistryLogicA2_1.bin e2d1c97164ad24945b340d75e9b941f7625a538320a0271415d1903468145703 -keeper_registry_logic_b_wrapper_2_1: ../../contracts/solc/v0.8.16/KeeperRegistryLogicB2_1.abi ../../contracts/solc/v0.8.16/KeeperRegistryLogicB2_1.bin e69aaafdb403c0e3f3665e0f6a7e3d352369137a1a5f1c0b380b0a9812eb2dcd +keeper_registry_logic_a_wrapper_2_1: ../../contracts/solc/v0.8.16/KeeperRegistryLogicA2_1.abi ../../contracts/solc/v0.8.16/KeeperRegistryLogicA2_1.bin 683f72747fdd19aba8480e8486028ac7ad1bb936f01bd2e9e05f8d099db955f8 +keeper_registry_logic_b_wrapper_2_1: ../../contracts/solc/v0.8.16/KeeperRegistryLogicB2_1.abi ../../contracts/solc/v0.8.16/KeeperRegistryLogicB2_1.bin da9b5dab6e3669431576f6335e37e9e010c863ba775b83f12c39205823ff8a6f keeper_registry_wrapper1_1: ../../contracts/solc/v0.7/KeeperRegistry1_1.abi ../../contracts/solc/v0.7/KeeperRegistry1_1.bin 6ce079f2738f015f7374673a2816e8e9787143d00b780ea7652c8aa9ad9e1e20 keeper_registry_wrapper1_2: ../../contracts/solc/v0.8.6/KeeperRegistry1_2.abi ../../contracts/solc/v0.8.6/KeeperRegistry1_2.bin 41faf687ad6a5171cc91e627244d0b3d6f62d393c418ca22d4ba7fc921fd32c6 keeper_registry_wrapper1_3: ../../contracts/solc/v0.8.6/KeeperRegistry1_3.abi ../../contracts/solc/v0.8.6/KeeperRegistry1_3.bin 5e1414eacbc1880b7349a4f253b7eca176f7f6300ef3cd834c493ce795a17e25 keeper_registry_wrapper2_0: ../../contracts/solc/v0.8.6/KeeperRegistry2_0.abi ../../contracts/solc/v0.8.6/KeeperRegistry2_0.bin c32dea7d5ef66b7c58ddc84ddf69aa44df1b3ae8601fbc271c95be4ff5853056 -keeper_registry_wrapper_2_1: ../../contracts/solc/v0.8.16/KeeperRegistry2_1.abi ../../contracts/solc/v0.8.16/KeeperRegistry2_1.bin d1aef25da6e40bc2564fec544d2bce4cd5222ee1cf78805a0a90a1fbda114a50 +keeper_registry_wrapper_2_1: ../../contracts/solc/v0.8.16/KeeperRegistry2_1.abi ../../contracts/solc/v0.8.16/KeeperRegistry2_1.bin 5d374c2d15681443dafc4ff963e7c0e0ab2c8de89d0fda8eb504e78dc7f346fc keepers_vrf_consumer: ../../contracts/solc/v0.8.6/KeepersVRFConsumer.abi ../../contracts/solc/v0.8.6/KeepersVRFConsumer.bin fa75572e689c9e84705c63e8dbe1b7b8aa1a8fe82d66356c4873d024bb9166e8 llo_feeds: ../../contracts/solc/v0.8.16/VerifierProxy.abi ../../contracts/solc/v0.8.16/VerifierProxy.bin 3b69ffe9c694e8551b5375c02b9e960adc985e2390566740e7fea70c89e436f1 llo_feeds_test: ../../contracts/solc/v0.8.16/ExposedVerifier.abi ../../contracts/solc/v0.8.16/ExposedVerifier.bin 6932cea8f2738e874d3ec9e1a4231d2421704030c071d9e15dd2f7f08482c246 diff --git a/core/scripts/chaincli/handler/keeper.go b/core/scripts/chaincli/handler/keeper.go index 5bd2e9d1f0d..e82bb8cf250 100644 --- a/core/scripts/chaincli/handler/keeper.go +++ b/core/scripts/chaincli/handler/keeper.go @@ -687,7 +687,7 @@ func (k *Keeper) deployUpkeeps(ctx context.Context, registryAddr common.Address, log.Println(upkeepId, upkeepAddr.Hex(), ": Upkeep funded - ", helpers.ExplorerLink(k.cfg.ChainID, addFundsTx.Hash())) } - // set administrative offchain config for mercury upkeeps + // set upkeep privilege config for mercury upkeeps if k.cfg.UpkeepType == config.Mercury && k.cfg.RegistryVersion == keeper.RegistryVersion_2_1 { reg21, err := iregistry21.NewIKeeperRegistryMaster(registryAddr, k.client) if err != nil { @@ -704,19 +704,19 @@ func (k *Keeper) deployUpkeeps(ctx context.Context, registryAddr common.Address, MercuryEnabled: true, }) if err != nil { - log.Fatalf("failed to marshal admin offchain config: %v", err) + log.Fatalf("failed to marshal upkeep privilege config: %v", err) } for _, id := range activeUpkeepIds { - tx, err := reg21.SetUpkeepAdminOffchainConfig(k.buildTxOpts(ctx), id, adminBytes) + tx, err := reg21.SetUpkeepPrivilegeConfig(k.buildTxOpts(ctx), id, adminBytes) if err != nil { - log.Fatalf("failed to set admin offchain config: %v", err) + log.Fatalf("failed to upkeep privilege config: %v", err) } err = k.waitTx(ctx, tx) if err != nil { log.Fatalf("failed to wait for tx: %v", err) } else { - log.Printf("admin offchain config is set for %s", id.String()) + log.Printf("upkeep privilege config is set for %s", id.String()) } info, err := reg21.GetUpkeep(nil, id) diff --git a/core/services/ocr2/plugins/ocr2keeper/evm21/feed_lookup.go b/core/services/ocr2/plugins/ocr2keeper/evm21/feed_lookup.go index 254a188c2a6..80528cdb94a 100644 --- a/core/services/ocr2/plugins/ocr2keeper/evm21/feed_lookup.go +++ b/core/services/ocr2/plugins/ocr2keeper/evm21/feed_lookup.go @@ -152,15 +152,15 @@ func (r *EvmRegistry) allowedToUseMercury(opts *bind.CallOpts, upkeepId *big.Int return allowed.(bool), nil } - cfg, err := r.registry.GetUpkeepAdminOffchainConfig(opts, upkeepId) + cfg, err := r.registry.GetUpkeepPrivilegeConfig(opts, upkeepId) if err != nil { - return false, fmt.Errorf("failed to get upkeep admin offchain config for upkeep ID %s: %v", upkeepId, err) + return false, fmt.Errorf("failed to get upkeep privilege config for upkeep ID %s: %v", upkeepId, err) } var a AdminOffchainConfig err = json.Unmarshal(cfg, &a) if err != nil { - return false, fmt.Errorf("failed to unmarshal admin offchain config for upkeep ID %s: %v", upkeepId, err) + return false, fmt.Errorf("failed to unmarshal privilege config for upkeep ID %s: %v", upkeepId, err) } r.mercury.allowListCache.Set(upkeepId.String(), a.MercuryEnabled, cache.DefaultExpiration) return a.MercuryEnabled, nil diff --git a/core/services/ocr2/plugins/ocr2keeper/evm21/feed_lookup_test.go b/core/services/ocr2/plugins/ocr2keeper/evm21/feed_lookup_test.go index bee73ceef59..8ac06583738 100644 --- a/core/services/ocr2/plugins/ocr2keeper/evm21/feed_lookup_test.go +++ b/core/services/ocr2/plugins/ocr2keeper/evm21/feed_lookup_test.go @@ -180,7 +180,7 @@ func TestEvmRegistry_FeedLookup(t *testing.T) { cfg := AdminOffchainConfig{MercuryEnabled: tt.hasPermission} b, err := json.Marshal(cfg) assert.Nil(t, err) - mockRegistry.On("GetUpkeepAdminOffchainConfig", mock.Anything, upkeepId).Return(b, nil) + mockRegistry.On("GetUpkeepPrivilegeConfig", mock.Anything, upkeepId).Return(b, nil) r.registry = mockRegistry } @@ -275,7 +275,7 @@ func TestEvmRegistry_AllowedToUseMercury(t *testing.T) { allowed: true, }, { - name: "success - allowed via fetching admin offchain config", + name: "success - allowed via fetching privilege config", cached: false, allowed: true, }, @@ -285,14 +285,14 @@ func TestEvmRegistry_AllowedToUseMercury(t *testing.T) { allowed: false, }, { - name: "success - not allowed via fetching admin offchain config", + name: "success - not allowed via fetching privilege config", cached: false, allowed: false, }, { - name: "failure - cannot unmarshal admin offchain config", + name: "failure - cannot unmarshal privilege config", cached: false, - errorMessage: "failed to unmarshal admin offchain config for upkeep ID 123456789: invalid character '\\x00' looking for beginning of value", + errorMessage: "failed to unmarshal privilege config for upkeep ID 123456789: invalid character '\\x00' looking for beginning of value", }, } @@ -302,7 +302,7 @@ func TestEvmRegistry_AllowedToUseMercury(t *testing.T) { if tt.errorMessage != "" { mockRegistry := mocks.NewRegistry(t) - mockRegistry.On("GetUpkeepAdminOffchainConfig", mock.Anything, upkeepId).Return([]byte{0, 1}, nil) + mockRegistry.On("GetUpkeepPrivilegeConfig", mock.Anything, upkeepId).Return([]byte{0, 1}, nil) r.registry = mockRegistry } else { if tt.cached { @@ -312,7 +312,7 @@ func TestEvmRegistry_AllowedToUseMercury(t *testing.T) { cfg := AdminOffchainConfig{MercuryEnabled: tt.allowed} b, err := json.Marshal(cfg) assert.Nil(t, err) - mockRegistry.On("GetUpkeepAdminOffchainConfig", mock.Anything, upkeepId).Return(b, nil) + mockRegistry.On("GetUpkeepPrivilegeConfig", mock.Anything, upkeepId).Return(b, nil) r.registry = mockRegistry } } diff --git a/core/services/ocr2/plugins/ocr2keeper/evm21/mocks/registry.go b/core/services/ocr2/plugins/ocr2keeper/evm21/mocks/registry.go index dfe6c9d2a4d..51bf4b2261c 100644 --- a/core/services/ocr2/plugins/ocr2keeper/evm21/mocks/registry.go +++ b/core/services/ocr2/plugins/ocr2keeper/evm21/mocks/registry.go @@ -147,8 +147,8 @@ func (_m *Registry) GetUpkeep(opts *bind.CallOpts, id *big.Int) (i_keeper_regist return r0, r1 } -// GetUpkeepAdminOffchainConfig provides a mock function with given fields: opts, upkeepId -func (_m *Registry) GetUpkeepAdminOffchainConfig(opts *bind.CallOpts, upkeepId *big.Int) ([]byte, error) { +// GetUpkeepPrivilegeConfig provides a mock function with given fields: opts, upkeepId +func (_m *Registry) GetUpkeepPrivilegeConfig(opts *bind.CallOpts, upkeepId *big.Int) ([]byte, error) { ret := _m.Called(opts, upkeepId) var r0 []byte diff --git a/core/services/ocr2/plugins/ocr2keeper/evm21/registry.go b/core/services/ocr2/plugins/ocr2keeper/evm21/registry.go index 6c19ab1db2c..8b351700fdc 100644 --- a/core/services/ocr2/plugins/ocr2keeper/evm21/registry.go +++ b/core/services/ocr2/plugins/ocr2keeper/evm21/registry.go @@ -62,7 +62,7 @@ type Registry interface { GetState(opts *bind.CallOpts) (iregistry21.GetState, error) GetActiveUpkeepIDs(opts *bind.CallOpts, startIndex *big.Int, maxCount *big.Int) ([]*big.Int, error) GetActiveUpkeepIDsByType(opts *bind.CallOpts, startIndex *big.Int, endIndex *big.Int, trigger uint8) ([]*big.Int, error) - GetUpkeepAdminOffchainConfig(opts *bind.CallOpts, upkeepId *big.Int) ([]byte, error) + GetUpkeepPrivilegeConfig(opts *bind.CallOpts, upkeepId *big.Int) ([]byte, error) GetUpkeepTriggerConfig(opts *bind.CallOpts, upkeepId *big.Int) ([]byte, error) CheckCallback(opts *bind.TransactOpts, id *big.Int, values [][]byte, extraData []byte) (*coreTypes.Transaction, error) ParseLog(log coreTypes.Log) (generated.AbigenLog, error) From ead9727e2d6083018cc9629747d6c973137127cf Mon Sep 17 00:00:00 2001 From: Adam Hamrick Date: Tue, 20 Jun 2023 20:07:22 -0400 Subject: [PATCH 4/8] Fixes When to Run Live Tests (#9666) --- .github/workflows/integration-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index 5fd21c0b169..9ff7c8f4a5c 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -576,7 +576,7 @@ jobs: ### Start Live Testnet Section testnet-smoke-tests-matrix: - if: startsWith(github.ref, 'refs/tags/') || ${{ github.event_name == 'schedule' }} ## Only run live tests on new tags and nightly + if: ${{ github.event_name == 'schedule' || (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')) }} ## Only run live tests on new tags and nightly environment: integration permissions: checks: write From ec454bbe3322e93f2ee898b8ddf8e93ed88ac312 Mon Sep 17 00:00:00 2001 From: Adam Hamrick Date: Tue, 20 Jun 2023 22:10:25 -0400 Subject: [PATCH 5/8] Update AWS action (#9672) --- .github/workflows/integration-tests.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index 9ff7c8f4a5c..b74bb9af138 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -86,7 +86,7 @@ jobs: - name: Check if image exists if: needs.changes.outputs.src == 'true' id: check-image - uses: smartcontractkit/chainlink-github-actions/docker/image-exists@bc6e3b5cf369b76e361d372ceb7d144525635ce0 # v2.2.0 + uses: smartcontractkit/chainlink-github-actions/docker/image-exists@336617ae6d70fec60c15cc3382e17a4d2615a801 # v2.2.0 with: repository: chainlink tag: ${{ github.sha }}${{ matrix.image.tag-suffix }} @@ -94,7 +94,7 @@ jobs: AWS_ROLE_TO_ASSUME: ${{ secrets.QA_AWS_ROLE_TO_ASSUME }} - name: Build Image if: steps.check-image.outputs.exists == 'false' && needs.changes.outputs.src == 'true' - uses: smartcontractkit/chainlink-github-actions/chainlink-testing-framework/build-image@bc6e3b5cf369b76e361d372ceb7d144525635ce0 # v2.2.0 + uses: smartcontractkit/chainlink-github-actions/chainlink-testing-framework/build-image@336617ae6d70fec60c15cc3382e17a4d2615a801 # v2.2.0 with: cl_repo: smartcontractkit/chainlink cl_ref: ${{ github.sha }} @@ -209,7 +209,7 @@ jobs: ## Run this step when changes that require tests to be run are made - name: Run Tests if: needs.changes.outputs.src == 'true' - uses: smartcontractkit/chainlink-github-actions/chainlink-testing-framework/run-tests@bc6e3b5cf369b76e361d372ceb7d144525635ce0 # v2.2.0 + uses: smartcontractkit/chainlink-github-actions/chainlink-testing-framework/run-tests@336617ae6d70fec60c15cc3382e17a4d2615a801 # v2.2.0 env: PYROSCOPE_SERVER: ${{ matrix.product.pyroscope_env == '' && '' || !startsWith(github.ref, 'refs/tags/') && '' || secrets.QA_PYROSCOPE_INSTANCE }} # Avoid sending blank envs https://github.com/orgs/community/discussions/25725 PYROSCOPE_ENVIRONMENT: ${{ matrix.product.pyroscope_env }} @@ -230,7 +230,7 @@ jobs: ## Run this step when changes that do not need the test to run are made - name: Run Setup if: needs.changes.outputs.src == 'false' - uses: smartcontractkit/chainlink-github-actions/chainlink-testing-framework/setup-run-tests-environment@bc6e3b5cf369b76e361d372ceb7d144525635ce0 # v2.2.0 + uses: smartcontractkit/chainlink-github-actions/chainlink-testing-framework/setup-run-tests-environment@336617ae6d70fec60c15cc3382e17a4d2615a801 # v2.2.0 with: test_download_vendor_packages_command: cd ./integration-tests && go mod download go_mod_path: ./integration-tests/go.mod @@ -314,7 +314,7 @@ jobs: run: | echo "Running migration tests from version '${{ steps.get_latest_version.outputs.latest_version }}' to: '${{ github.sha }}'" - name: Run Migration Tests - uses: smartcontractkit/chainlink-github-actions/chainlink-testing-framework/run-tests@bc6e3b5cf369b76e361d372ceb7d144525635ce0 # v2.2.0 + uses: smartcontractkit/chainlink-github-actions/chainlink-testing-framework/run-tests@336617ae6d70fec60c15cc3382e17a4d2615a801 # v2.2.0 with: test_command_to_run: make test_need_operator_assets && cd ./integration-tests && go test -timeout 30m -count=1 -json ./migration 2>&1 | tee /tmp/gotest.log | gotestfmt test_download_vendor_packages_command: cd ./integration-tests && go mod download @@ -412,7 +412,7 @@ jobs: steps: - name: Check if image exists id: check-image - uses: smartcontractkit/chainlink-github-actions/docker/image-exists@bc6e3b5cf369b76e361d372ceb7d144525635ce0 # v2.2.0 + uses: smartcontractkit/chainlink-github-actions/docker/image-exists@336617ae6d70fec60c15cc3382e17a4d2615a801 # v2.2.0 with: repository: chainlink-solana-tests tag: ${{ needs.get_solana_sha.outputs.sha }} @@ -551,7 +551,7 @@ jobs: ref: ${{ needs.get_solana_sha.outputs.sha }} - name: Run Tests if: needs.changes.outputs.src == 'true' - uses: smartcontractkit/chainlink-github-actions/chainlink-testing-framework/run-tests@bc6e3b5cf369b76e361d372ceb7d144525635ce0 # v2.2.0 + uses: smartcontractkit/chainlink-github-actions/chainlink-testing-framework/run-tests@336617ae6d70fec60c15cc3382e17a4d2615a801 # v2.2.0 with: test_command_to_run: export ENV_JOB_IMAGE=${{ secrets.QA_AWS_ACCOUNT_NUMBER }}.dkr.ecr.${{ secrets.QA_AWS_REGION }}.amazonaws.com/chainlink-solana-tests:${{ needs.get_solana_sha.outputs.sha }} && make test_smoke cl_repo: ${{ env.CHAINLINK_IMAGE }} @@ -619,7 +619,7 @@ jobs: ref: ${{ github.event.pull_request.head.sha || github.event.merge_group.head_sha }} ## Only run OCR smoke test for now - name: Run Tests - uses: smartcontractkit/chainlink-github-actions/chainlink-testing-framework/run-tests@bc6e3b5cf369b76e361d372ceb7d144525635ce0 # v2.2.0 + uses: smartcontractkit/chainlink-github-actions/chainlink-testing-framework/run-tests@336617ae6d70fec60c15cc3382e17a4d2615a801 # v2.2.0 env: PYROSCOPE_SERVER: ${{ secrets.QA_PYROSCOPE_INSTANCE }} PYROSCOPE_ENVIRONMENT: ci-smoke-ocr-evm-${{ matrix.testnet }} # TODO: Only for OCR for now From a1a8f3389a68f35db49cfb6ec03cc6c12a9a97de Mon Sep 17 00:00:00 2001 From: FelixFan1992 Date: Wed, 21 Jun 2023 01:00:18 -0400 Subject: [PATCH 6/8] update VL contracts to work with 2.1 (#9673) * update VL contracts to work with 2.1 * fix --- .../src/v0.8/tests/VerifiableLoadBase.sol | 27 +++++++------- .../tests/VerifiableLoadMercuryUpkeep.sol | 2 +- .../src/v0.8/tests/VerifiableLoadUpkeep.sol | 2 +- .../verifiable_load_mercury_upkeep_wrapper.go | 32 ++++++++--------- .../verifiable_load_upkeep_wrapper.go | 32 ++++++++--------- ...rapper-dependency-versions-do-not-edit.txt | 4 +-- core/scripts/chaincli/config/config.go | 35 ++++++++++--------- core/scripts/chaincli/handler/keeper.go | 8 ++--- .../chaincli/handler/keeper_deployer.go | 31 ++++++++-------- 9 files changed, 89 insertions(+), 84 deletions(-) diff --git a/contracts/src/v0.8/tests/VerifiableLoadBase.sol b/contracts/src/v0.8/tests/VerifiableLoadBase.sol index c0033d12d71..37115cb7a5f 100644 --- a/contracts/src/v0.8/tests/VerifiableLoadBase.sol +++ b/contracts/src/v0.8/tests/VerifiableLoadBase.sol @@ -3,7 +3,8 @@ pragma solidity ^0.8.6; import "../vendor/openzeppelin-solidity/v4.7.3/contracts/utils/structs/EnumerableSet.sol"; import "../automation/2_0/KeeperRegistrar2_0.sol"; -import "../automation/2_0/KeeperRegistry2_0.sol"; +import "../dev/automation/2_1/interfaces/IKeeperRegistryMaster.sol"; +import {ArbSys} from "../dev/vendor/@arbitrum/nitro-contracts/src/precompiles/ArbSys.sol"; abstract contract VerifiableLoadBase is ConfirmedOwner { error IndexOutOfRange(); @@ -41,7 +42,7 @@ abstract contract VerifiableLoadBase is ConfirmedOwner { EnumerableSet.UintSet internal s_upkeepIDs; KeeperRegistrar2_0 public registrar; LinkTokenInterface public linkToken; - KeeperRegistry2_0 public registry; + IKeeperRegistryMaster public registry; // check if an upkeep is eligible for adding funds at this interval uint256 public upkeepTopUpCheckInterval = 5; // an upkeep will get this amount of LINK for every top up @@ -63,7 +64,7 @@ abstract contract VerifiableLoadBase is ConfirmedOwner { constructor(address registrarAddress, bool useArb) ConfirmedOwner(msg.sender) { registrar = KeeperRegistrar2_0(registrarAddress); (, , , address registryAddress, ) = registrar.getRegistrationConfig(); - registry = KeeperRegistry2_0(payable(address(registryAddress))); + registry = IKeeperRegistryMaster(payable(address(registryAddress))); linkToken = registrar.LINK(); useArbitrumBlockNum = useArb; } @@ -95,7 +96,7 @@ abstract contract VerifiableLoadBase is ConfirmedOwner { function setConfig(KeeperRegistrar2_0 newRegistrar) external { registrar = newRegistrar; (, , , address registryAddress, ) = registrar.getRegistrationConfig(); - registry = KeeperRegistry2_0(payable(address(registryAddress))); + registry = IKeeperRegistryMaster(payable(address(registryAddress))); linkToken = registrar.LINK(); emit RegistrarSet(address(registrar)); @@ -154,7 +155,7 @@ abstract contract VerifiableLoadBase is ConfirmedOwner { upkeepContract: address(this), gasLimit: gasLimit, adminAddress: address(this), // use address of this contract as the admin - checkData: bytes(""), // update check data later bc upkeep id is not available now + checkData: bytes(""), // update pipeline data later bc upkeep id is not available now offchainConfig: bytes(""), amount: amount }); @@ -183,13 +184,13 @@ abstract contract VerifiableLoadBase is ConfirmedOwner { } /** - * @notice updates check data for an upkeep. In order for the upkeep to be performed, the check data must be the abi encoded upkeep ID. + * @notice updates pipeline data for an upkeep. In order for the upkeep to be performed, the pipeline data must be the abi encoded upkeep ID. * @param upkeepId the upkeep ID - * @param checkData the new check data for the upkeep + * @param pipelineData the new pipeline data for the upkeep */ - function updateCheckData(uint256 upkeepId, bytes calldata checkData) external { - registry.updateCheckData(upkeepId, checkData); - checkDatas[upkeepId] = checkData; + function updateUpkeepPipelineData(uint256 upkeepId, bytes calldata pipelineData) external { + registry.setUpkeepPipelineData(upkeepId, pipelineData); + checkDatas[upkeepId] = pipelineData; } function withdrawLinks(uint256 upkeepId) external { @@ -297,14 +298,14 @@ abstract contract VerifiableLoadBase is ConfirmedOwner { } /** - * @notice batch updating check data for all upkeeps. + * @notice batch updating pipeline data for all upkeeps. * @param upkeepIds an array of upkeep IDs */ - function batchUpdateCheckData(uint256[] calldata upkeepIds) external { + function batchUpdatePipelineData(uint256[] calldata upkeepIds) external { uint256 len = upkeepIds.length; for (uint256 i = 0; i < len; i++) { uint256 upkeepId = upkeepIds[i]; - this.updateCheckData(upkeepId, abi.encode(upkeepId)); + this.updateUpkeepPipelineData(upkeepId, abi.encode(upkeepId)); } } diff --git a/contracts/src/v0.8/tests/VerifiableLoadMercuryUpkeep.sol b/contracts/src/v0.8/tests/VerifiableLoadMercuryUpkeep.sol index 7b4ecd49b54..67eb8301891 100644 --- a/contracts/src/v0.8/tests/VerifiableLoadMercuryUpkeep.sol +++ b/contracts/src/v0.8/tests/VerifiableLoadMercuryUpkeep.sol @@ -100,7 +100,7 @@ contract VerifiableLoadMercuryUpkeep is VerifiableLoadBase, FeedLookupCompatible // minBalanceThresholdMultiplier (20) * min balance. If not, add addLinkAmount (0.2) to the upkeep // upkeepTopUpCheckInterval, minBalanceThresholdMultiplier, and addLinkAmount are configurable if (blockNum - lastTopUpBlocks[upkeepId] > upkeepTopUpCheckInterval) { - UpkeepInfo memory info = registry.getUpkeep(upkeepId); + KeeperRegistryBase2_1.UpkeepInfo memory info = registry.getUpkeep(upkeepId); uint96 minBalance = registry.getMinBalanceForUpkeep(upkeepId); if (info.balance < minBalanceThresholdMultiplier * minBalance) { this.addFunds(upkeepId, addLinkAmount); diff --git a/contracts/src/v0.8/tests/VerifiableLoadUpkeep.sol b/contracts/src/v0.8/tests/VerifiableLoadUpkeep.sol index fc767a42308..595c49fdd7a 100644 --- a/contracts/src/v0.8/tests/VerifiableLoadUpkeep.sol +++ b/contracts/src/v0.8/tests/VerifiableLoadUpkeep.sol @@ -65,7 +65,7 @@ contract VerifiableLoadUpkeep is VerifiableLoadBase { // minBalanceThresholdMultiplier (20) * min balance. If not, add addLinkAmount (0.2) to the upkeep // upkeepTopUpCheckInterval, minBalanceThresholdMultiplier, and addLinkAmount are configurable if (blockNum - lastTopUpBlocks[upkeepId] > upkeepTopUpCheckInterval) { - UpkeepInfo memory info = registry.getUpkeep(upkeepId); + KeeperRegistryBase2_1.UpkeepInfo memory info = registry.getUpkeep(upkeepId); uint96 minBalance = registry.getMinBalanceForUpkeep(upkeepId); if (info.balance < minBalanceThresholdMultiplier * minBalance) { this.addFunds(upkeepId, addLinkAmount); diff --git a/core/gethwrappers/generated/verifiable_load_mercury_upkeep_wrapper/verifiable_load_mercury_upkeep_wrapper.go b/core/gethwrappers/generated/verifiable_load_mercury_upkeep_wrapper/verifiable_load_mercury_upkeep_wrapper.go index 3ace3879cf0..04d2e51b675 100644 --- a/core/gethwrappers/generated/verifiable_load_mercury_upkeep_wrapper/verifiable_load_mercury_upkeep_wrapper.go +++ b/core/gethwrappers/generated/verifiable_load_mercury_upkeep_wrapper/verifiable_load_mercury_upkeep_wrapper.go @@ -31,8 +31,8 @@ var ( ) var VerifiableLoadMercuryUpkeepMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrarAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useArb\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"feedParamKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"feeds\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"timeParamKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"FeedLookup\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfRange\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"FundsAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNum\",\"type\":\"uint256\"}],\"name\":\"InsufficientFunds\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"origin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"v0\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ed\",\"type\":\"bytes\"}],\"name\":\"MercuryPerformEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"firstPerformBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"}],\"name\":\"PerformingUpkeep\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Received\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRegistrar\",\"type\":\"address\"}],\"name\":\"RegistrarSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNum\",\"type\":\"uint256\"}],\"name\":\"UpkeepTopUp\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"UpkeepsCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"UpkeepsRegistered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BUCKET_SIZE\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TIMESTAMP_INTERVAL\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"addFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addLinkAmount\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"batchCancelUpkeeps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"number\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"checkGasToBurn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"performGasToBurn\",\"type\":\"uint256\"}],\"name\":\"batchRegisterUpkeeps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint32\",\"name\":\"interval\",\"type\":\"uint32\"}],\"name\":\"batchSetIntervals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"batchUpdateCheckData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"batchWithdrawLinks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"bucketedDelays\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"buckets\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"cancelUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"checkCallback\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"checkDatas\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"checkGasToBurns\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"}],\"name\":\"checkUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"counters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"delays\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"dummyMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"eligible\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feedParamKey\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"feedsHex\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"firstPerformBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gasLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxCount\",\"type\":\"uint256\"}],\"name\":\"getActiveUpkeepIDs\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"bucket\",\"type\":\"uint16\"}],\"name\":\"getBucketedDelays\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getBucketedDelaysLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getDelays\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getDelaysLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"bucket\",\"type\":\"uint16\"}],\"name\":\"getDelaysLengthAtBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"timestampBucket\",\"type\":\"uint16\"}],\"name\":\"getDelaysLengthAtTimestampBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"}],\"name\":\"getPxBucketedDelaysForAllUpkeeps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"}],\"name\":\"getPxDelayForAllUpkeeps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"bucket\",\"type\":\"uint16\"}],\"name\":\"getPxDelayInBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"timestampBucket\",\"type\":\"uint16\"}],\"name\":\"getPxDelayInTimestampBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"getPxDelayLastNPerforms\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"getSumBucketedDelayLastNPerforms\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"bucket\",\"type\":\"uint16\"}],\"name\":\"getSumDelayInBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"timestampBucket\",\"type\":\"uint16\"}],\"name\":\"getSumDelayInTimestampBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"getSumDelayLastNPerforms\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"getSumTimestampBucketedDelayLastNPerforms\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getTimestampBucketedDelaysLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"timestampBucket\",\"type\":\"uint16\"}],\"name\":\"getTimestampDelays\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"intervals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lastTopUpBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkToken\",\"outputs\":[{\"internalType\":\"contractLinkTokenInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minBalanceThresholdMultiplier\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"performDataSizes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"performGasToBurns\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"}],\"name\":\"performUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"previousPerformBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registrar\",\"outputs\":[{\"internalType\":\"contractKeeperRegistrar2_0\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contractKeeperRegistry2_0\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"setAddLinkAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setCheckGasToBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractKeeperRegistrar2_0\",\"name\":\"newRegistrar\",\"type\":\"address\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"newFeeds\",\"type\":\"string[]\"}],\"name\":\"setFeedsHex\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_interval\",\"type\":\"uint256\"}],\"name\":\"setInterval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"newMinBalanceThresholdMultiplier\",\"type\":\"uint8\"}],\"name\":\"setMinBalanceThresholdMultiplier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setPerformDataSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setPerformGasToBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"name\":\"setUpkeepGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newInterval\",\"type\":\"uint256\"}],\"name\":\"setUpkeepTopUpCheckInterval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"timeParamKey\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestampBuckets\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestampDelays\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"}],\"name\":\"updateCheckData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"upkeepTopUpCheckInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"useArbitrumBlockNum\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawLinks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"withdrawLinks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x6005601855601980546001600160681b0319166c140000000002c68af0bb140000179055601960f21b60a05260e160f41b60c0526101c0604052604261014081815260e09182919062005da261016039815260200160405180608001604052806042815260200162005de460429139815260200160405180608001604052806042815260200162005e266042913990526200009f90601a9060036200036e565b50348015620000ad57600080fd5b5060405162005e6838038062005e68833981016040819052620000d091620004f1565b81813380600081620001295760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b03848116919091179091558116156200015c576200015c81620002c2565b5050601580546001600160a01b0319166001600160a01b0385169081179091556040805163850af0cb60e01b815290516000935063850af0cb9160048082019260a092909190829003018186803b158015620001b757600080fd5b505afa158015620001cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f291906200055b565b50601780546001600160a01b0319166001600160a01b038381169190911790915560155460408051631b6b6d2360e01b8152905193975091169450631b6b6d2393506004808201935060209291829003018186803b1580156200025457600080fd5b505afa15801562000269573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028f919062000534565b601680546001600160a01b0319166001600160a01b039290921691909117905550151560f81b608052506200061e915050565b6001600160a01b0381163314156200031d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000120565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b828054828255906000526020600020908101928215620003c0579160200282015b82811115620003c05782518051620003af918491602090910190620003d2565b50916020019190600101906200038f565b50620003ce9291506200045d565b5090565b828054620003e090620005cb565b90600052602060002090601f0160209004810192826200040457600085556200044f565b82601f106200041f57805160ff19168380011785556200044f565b828001600101855582156200044f579182015b828111156200044f57825182559160200191906001019062000432565b50620003ce9291506200047e565b80821115620003ce57600062000474828262000495565b506001016200045d565b5b80821115620003ce57600081556001016200047f565b508054620004a390620005cb565b6000825580601f10620004b4575050565b601f016020900490600052602060002090810190620004d491906200047e565b50565b805163ffffffff81168114620004ec57600080fd5b919050565b600080604083850312156200050557600080fd5b8251620005128162000608565b602084015190925080151581146200052957600080fd5b809150509250929050565b6000602082840312156200054757600080fd5b8151620005548162000608565b9392505050565b600080600080600060a086880312156200057457600080fd5b8551600381106200058457600080fd5b94506200059460208701620004d7565b9350620005a460408701620004d7565b92506060860151620005b68162000608565b80925050608086015190509295509295909350565b600181811c90821680620005e057607f821691505b602082108114156200060257634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b0381168114620004d457600080fd5b60805160f81c60a05160f01c60c05160f01c6157366200066c600039600081816106f40152611b480152600081816105cc0152611c5c0152600081816109d10152613ba801526157366000f3fe6080604052600436106104f05760003560e01c80637b10399911610294578063a72aa27e1161015e578063d3558528116100d6578063f2fde38b1161008a578063fba7ffa31161006f578063fba7ffa314611134578063fbfb4f7614611161578063fcdc1f631461118157600080fd5b8063f2fde38b146110f4578063fb0ceb041461111457600080fd5b8063dbef701e116100bb578063dbef701e14611091578063e0114adb146110b1578063e4553083146110de57600080fd5b8063d355852814611012578063d6051a721461107157600080fd5b8063b0971e1a1161012d578063c357f1f311610112578063c357f1f314610f4f578063c804802214610fa9578063c98f10b014610fc957600080fd5b8063b0971e1a14610ef1578063becde0e114610f2f57600080fd5b8063a72aa27e14610e3b578063a79c404314610e5b578063af953a4a14610e88578063afb28d1f14610ea857600080fd5b806399cc6b0b1161020c5780639d385eaa116101c05780639fab4386116101a55780639fab438614610ddb578063a5f5893414610dfb578063a6c60d8914610e1b57600080fd5b80639d385eaa14610d9b5780639d6f1cc714610dbb57600080fd5b80639b429354116101f15780639b42935414610d1d5780639b51fb0d14610d4a5780639bb8651114610d7b57600080fd5b806399cc6b0b14610cc15780639ac542eb14610ce157600080fd5b80638bc7b772116102635780638fcb3fba116102485780638fcb3fba14610c545780639095aa3514610c81578063948108f714610ca157600080fd5b80638bc7b77214610c095780638da5cb5b14610c2957600080fd5b80637b10399914610b7c5780637e4087b814610ba95780638237831714610bc957806387dfa90014610be957600080fd5b80634b56a42e116103d5578063643b34e91161034d5780637145f11b1161030157806376721303116102e65780637672130314610b1a578063776898c814610b4757806379ba509714610b6757600080fd5b80637145f11b14610abd57806373644cce14610aed57600080fd5b806369e9b7731161033257806369e9b77314610a505780636e04ff0d14610a7d5780637137a70214610a9d57600080fd5b8063643b34e914610a0357806369cdbadb14610a2357600080fd5b80635d4ee7f3116103a457806360457ff51161038957806360457ff514610950578063636092e81461097d578063642f6cef146109bf57600080fd5b80635d4ee7f31461091b5780635f17e6161461093057600080fd5b80634b56a42e1461087357806351c98be3146108a157806357970e93146108c157806358c52c04146108ee57600080fd5b806329f0e4961161046857806333774d1c116104375780634585e33b1161041c5780634585e33b1461080657806345d2ec171461082657806346e7a63e1461084657600080fd5b806333774d1c146107b55780633ebe8d6c146107e657600080fd5b806329f0e496146106e25780632a9032d3146107165780632b20e39714610736578063328ffd111461078857600080fd5b8063177b0eb9116104bf578063206c32e8116104a4578063206c32e81461066d57806320e3dbd4146106a257806328c4b57b146106c257600080fd5b8063177b0eb9146106015780631bee00801461063f57600080fd5b806305e251311461053457806306e3b63214610556578063077ac6211461058c57806312c55027146105ba57600080fd5b3661052f57604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b34801561054057600080fd5b5061055461054f366004614668565b6111ae565b005b34801561056257600080fd5b50610576610571366004614aa7565b6111c5565b6040516105839190614d92565b60405180910390f35b34801561059857600080fd5b506105ac6105a7366004614a72565b6112c1565b604051908152602001610583565b3480156105c657600080fd5b506105ee7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610583565b34801561060d57600080fd5b506105ac61061c366004614a46565b6000918252600f6020908152604080842061ffff93909316845291905290205490565b34801561064b57600080fd5b5061065f61065a3660046147e7565b6112ff565b604051610583929190614da5565b34801561067957600080fd5b5061068d610688366004614a46565b611608565b60408051928352602083019190915201610583565b3480156106ae57600080fd5b506105546106bd366004614571565b61168b565b3480156106ce57600080fd5b506105ac6106dd366004614afe565b6118ac565b3480156106ee57600080fd5b506105ee7f000000000000000000000000000000000000000000000000000000000000000081565b34801561072257600080fd5b50610554610731366004614733565b611917565b34801561074257600080fd5b506015546107639073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610583565b34801561079457600080fd5b506105ac6107a33660046147e7565b60036020526000908152604090205481565b3480156107c157600080fd5b506105ee6107d03660046147e7565b60116020526000908152604090205461ffff1681565b3480156107f257600080fd5b506105ac6108013660046147e7565b6119ea565b34801561081257600080fd5b50610554610821366004614800565b611a53565b34801561083257600080fd5b50610576610841366004614a46565b612170565b34801561085257600080fd5b506105ac6108613660046147e7565b600a6020526000908152604090205481565b34801561087f57600080fd5b5061089361088e36600461458e565b6121df565b604051610583929190614dca565b3480156108ad57600080fd5b506105546108bc366004614775565b612233565b3480156108cd57600080fd5b506016546107639073ffffffffffffffffffffffffffffffffffffffff1681565b3480156108fa57600080fd5b5061090e6109093660046147e7565b6122d7565b6040516105839190614de5565b34801561092757600080fd5b50610554612371565b34801561093c57600080fd5b5061055461094b366004614aa7565b6124c6565b34801561095c57600080fd5b506105ac61096b3660046147e7565b60076020526000908152604090205481565b34801561098957600080fd5b506019546109a2906bffffffffffffffffffffffff1681565b6040516bffffffffffffffffffffffff9091168152602001610583565b3480156109cb57600080fd5b506109f37f000000000000000000000000000000000000000000000000000000000000000081565b6040519015158152602001610583565b348015610a0f57600080fd5b5061068d610a1e366004614aa7565b612638565b348015610a2f57600080fd5b506105ac610a3e3660046147e7565b60086020526000908152604090205481565b348015610a5c57600080fd5b50610554610a6b366004614aa7565b60009182526008602052604090912055565b348015610a8957600080fd5b50610893610a98366004614800565b6127bd565b348015610aa957600080fd5b506105ac610ab8366004614a72565b6129d2565b348015610ac957600080fd5b506109f3610ad83660046147e7565b600c6020526000908152604090205460ff1681565b348015610af957600080fd5b506105ac610b083660046147e7565b6000908152600d602052604090205490565b348015610b2657600080fd5b506105ac610b353660046147e7565b60046020526000908152604090205481565b348015610b5357600080fd5b506109f3610b623660046147e7565b6129fa565b348015610b7357600080fd5b50610554612a4a565b348015610b8857600080fd5b506017546107639073ffffffffffffffffffffffffffffffffffffffff1681565b348015610bb557600080fd5b5061068d610bc4366004614aa7565b612b47565b348015610bd557600080fd5b506105ac610be4366004614ac9565b612cbf565b348015610bf557600080fd5b506105ac610c04366004614ac9565b612d3a565b348015610c1557600080fd5b5061065f610c243660046147e7565b612daa565b348015610c3557600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610763565b348015610c6057600080fd5b506105ac610c6f3660046147e7565b60056020526000908152604090205481565b348015610c8d57600080fd5b50610554610c9c366004614b9a565b612f1f565b348015610cad57600080fd5b50610554610cbc366004614b5a565b61319f565b348015610ccd57600080fd5b50610576610cdc366004614a46565b613337565b348015610ced57600080fd5b50601954610d0b906c01000000000000000000000000900460ff1681565b60405160ff9091168152602001610583565b348015610d2957600080fd5b50610554610d38366004614aa7565b60009182526009602052604090912055565b348015610d5657600080fd5b506105ee610d653660046147e7565b60126020526000908152604090205461ffff1681565b348015610d8757600080fd5b50610554610d96366004614733565b6133a4565b348015610da757600080fd5b50610576610db63660046147e7565b613475565b348015610dc757600080fd5b5061090e610dd63660046147e7565b6134d7565b348015610de757600080fd5b50610554610df63660046149fa565b613502565b348015610e0757600080fd5b506105ac610e163660046147e7565b6135a7565b348015610e2757600080fd5b50610554610e363660046147e7565b601855565b348015610e4757600080fd5b50610554610e56366004614b2a565b613608565b348015610e6757600080fd5b50610554610e76366004614aa7565b60009182526007602052604090912055565b348015610e9457600080fd5b50610554610ea33660046147e7565b6136b3565b348015610eb457600080fd5b5061090e6040518060400160405280600981526020017f666565644944486578000000000000000000000000000000000000000000000081525081565b348015610efd57600080fd5b506105ac610f0c366004614a46565b6000918252600e6020908152604080842061ffff93909316845291905290205490565b348015610f3b57600080fd5b50610554610f4a366004614733565b613739565b348015610f5b57600080fd5b50610554610f6a366004614bf3565b601980547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff92909216919091179055565b348015610fb557600080fd5b50610554610fc43660046147e7565b6137d3565b348015610fd557600080fd5b5061090e6040518060400160405280600b81526020017f626c6f636b4e756d62657200000000000000000000000000000000000000000081525081565b34801561101e57600080fd5b5061055461102d366004614b7f565b6019805460ff9092166c01000000000000000000000000027fffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff909216919091179055565b34801561107d57600080fd5b5061068d61108c366004614aa7565b61386b565b34801561109d57600080fd5b506105ac6110ac366004614aa7565b6138d4565b3480156110bd57600080fd5b506105ac6110cc3660046147e7565b60096020526000908152604090205481565b3480156110ea57600080fd5b506105ac60185481565b34801561110057600080fd5b5061055461110f366004614571565b613905565b34801561112057600080fd5b506105ac61112f366004614aa7565b613919565b34801561114057600080fd5b506105ac61114f3660046147e7565b60066020526000908152604090205481565b34801561116d57600080fd5b5061068d61117c366004614a46565b613935565b34801561118d57600080fd5b506105ac61119c3660046147e7565b60026020526000908152604090205481565b80516111c190601a9060208401906141d5565b5050565b606060006111d360136139a9565b905080841061120e576040517f1390f2a100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826112205761121d84826153fe565b92505b60008367ffffffffffffffff81111561123b5761123b6156ac565b604051908082528060200260200182016040528015611264578160200160208202803683370190505b50905060005b848110156112b65761128761127f8288615285565b6013906139b3565b8282815181106112995761129961567d565b6020908102919091010152806112ae81615584565b91505061126a565b509150505b92915050565b600e60205282600052604060002060205281600052604060002081815481106112e957600080fd5b9060005260206000200160009250925050505481565b606080600061130e60136139a9565b905060008167ffffffffffffffff81111561132b5761132b6156ac565b604051908082528060200260200182016040528015611354578160200160208202803683370190505b50905060008267ffffffffffffffff811115611372576113726156ac565b60405190808252806020026020018201604052801561139b578160200160208202803683370190505b50905060005b838110156115fc5760006113b66013836139b3565b9050808483815181106113cb576113cb61567d565b6020908102919091018101919091526000828152601290915260408082205490517f3ebe8d6c0000000000000000000000000000000000000000000000000000000081526004810184905261ffff90911691903090633ebe8d6c9060240160206040518083038186803b15801561144157600080fd5b505afa158015611455573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147991906149e1565b905060008167ffffffffffffffff811115611496576114966156ac565b6040519080825280602002602001820160405280156114bf578160200160208202803683370190505b506000858152600e6020526040812091925090815b8561ffff168161ffff16116115b95761ffff81166000908152602083815260408083208054825181850281018501909352808352919290919083018282801561153c57602002820191906000526020600020905b815481526020019060010190808311611528575b5050505050905060005b81518110156115a4578181815181106115615761156161567d565b602002602001015186868061157590615584565b9750815181106115875761158761567d565b60209081029190910101528061159c81615584565b915050611546565b505080806115b190615562565b9150506114d4565b506115c5838e866139bf565b8888815181106115d7576115d761567d565b60200260200101818152505050505050505080806115f490615584565b9150506113a1565b50909590945092505050565b6000828152600e6020908152604080832061ffff85168452825280832080548251818502810185019093528083528493849392919083018282801561166c57602002820191906000526020600020905b815481526020019060010190808311611658575b5050505050905061167e818251613b1f565b92509250505b9250929050565b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604080517f850af0cb00000000000000000000000000000000000000000000000000000000815290516000929163850af0cb9160048083019260a0929190829003018186803b15801561172057600080fd5b505afa158015611734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117589190614853565b50601780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117909155601554604080517f1b6b6d23000000000000000000000000000000000000000000000000000000008152905193975091169450631b6b6d2393506004808201935060209291829003018186803b1580156117f757600080fd5b505afa15801561180b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182f9190614836565b601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055601554604051911681527f6263309d5d4d1cfececd45a387cda7f14dccde21cf7a1bee1be6561075e61014906020015b60405180910390a15050565b6000838152600d60209081526040808320805482518185028101850190935280835261190d9383018282801561190157602002820191906000526020600020905b8154815260200190600101908083116118ed575b505050505084846139bf565b90505b9392505050565b8060005b818160ff1610156119ab573063c8048022858560ff85168181106119415761194161567d565b905060200201356040518263ffffffff1660e01b815260040161196691815260200190565b600060405180830381600087803b15801561198057600080fd5b505af1158015611994573d6000803e3d6000fd5b5050505080806119a3906155d0565b91505061191b565b507fbeac20a03a6674e40498fac4356bc86e356c0d761a8d35d436712dc93bc7c74b83836040516119dd929190614d3d565b60405180910390a1505050565b60008181526012602052604081205461ffff1681805b8261ffff168161ffff1611611a4b576000858152600e6020908152604080832061ffff85168452909152902054611a379083615285565b915080611a4381615562565b915050611a00565b509392505050565b60005a9050600080611a678486018661458e565b91509150600081806020019051810190611a8191906149e1565b60008181526005602090815260408083205460049092528220549293509190611aa8613ba4565b905082611ae25760008481526005602090815260408083208490556010825282208054600181018255908352912042910155915081611d42565b600084815260036020526040812054611afb84846153fe565b611b0591906153fe565b6000868152601160209081526040808320546010909252909120805492935061ffff9091169182908110611b3b57611b3b61567d565b90600052602060002001547f000000000000000000000000000000000000000000000000000000000000000061ffff1642611b7691906153fe565b1115611be55760008681526010602090815260408220805460018101825590835291204291015580611ba781615562565b600088815260116020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83161790559150505b600086815260126020908152604080832054600e835281842061ffff9091168085529083528184208054835181860281018601909452808452919493909190830182828015611c5357602002820191906000526020600020905b815481526020019060010190808311611c3f575b505050505090507f000000000000000000000000000000000000000000000000000000000000000061ffff1681511415611ccf5781611c9181615562565b60008a815260126020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83161790559250505b506000878152600e6020908152604080832061ffff94851684528252808320805460018181018355918552838520018790558a8452600f83528184209590941683529381528382208054808501825590835281832001859055888252600d81529281208054928301815581529190912001555b600084815260066020526040812054611d5c906001615285565b6000868152600660209081526040918290208390558151878152908101859052908101859052606081018290529091507f6b6b3eeaaf107627513e76a81662118e7b1d8c78866f70760262115ddcfeede39060800160405180910390a16000858152600460209081526040808320859055601854600290925290912054611de390846153fe565b111561208e576017546040517fc7c3a19a0000000000000000000000000000000000000000000000000000000081526004810187905260009173ffffffffffffffffffffffffffffffffffffffff169063c7c3a19a9060240160006040518083038186803b158015611e5457600080fd5b505afa158015611e68573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611eae91908101906148c2565b6017546040517fb657bc9c0000000000000000000000000000000000000000000000000000000081526004810189905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063b657bc9c9060240160206040518083038186803b158015611f1e57600080fd5b505afa158015611f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f569190614c10565b601954909150611f7a9082906c01000000000000000000000000900460ff16615356565b6bffffffffffffffffffffffff1682606001516bffffffffffffffffffffffff16101561208b576019546040517f948108f7000000000000000000000000000000000000000000000000000000008152600481018990526bffffffffffffffffffffffff9091166024820152309063948108f790604401600060405180830381600087803b15801561200b57600080fd5b505af115801561201f573d6000803e3d6000fd5b50505060008881526002602090815260409182902087905560195482518b81526bffffffffffffffffffffffff909116918101919091529081018690527f49d4100ab0124eb4a9a65dc4ea08d6412a43f6f05c49194983f5b322bcc0a5c0915060600160405180910390a15b50505b6000858152600760205260409020545b805a6120aa908b6153fe565b6120b690612710615285565b10156120f75782406000908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561209e565b82863273ffffffffffffffffffffffffffffffffffffffff167fcad583be2d908a590c81c7e332cf11c7a4ea41ecf1e059efac3ea7e83e34f1a58b6000815181106121445761214461567d565b60200260200101518b60405161215b929190614df8565b60405180910390a45050505050505050505050565b6000828152600e6020908152604080832061ffff851684528252918290208054835181840281018401909452808452606093928301828280156121d257602002820191906000526020600020905b8154815260200190600101908083116121be575b5050505050905092915050565b60006060600084846040516020016121f8929190614cb2565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529190526001969095509350505050565b8160005b818110156122d05730635f17e6168686848181106122575761225761567d565b90506020020135856040518363ffffffff1660e01b815260040161228b92919091825263ffffffff16602082015260400190565b600060405180830381600087803b1580156122a557600080fd5b505af11580156122b9573d6000803e3d6000fd5b5050505080806122c890615584565b915050612237565b5050505050565b600b60205260009081526040902080546122f0906154d5565b80601f016020809104026020016040519081016040528092919081815260200182805461231c906154d5565b80156123695780601f1061233e57610100808354040283529160200191612369565b820191906000526020600020905b81548152906001019060200180831161234c57829003601f168201915b505050505081565b612379613c55565b6016546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b1580156123e357600080fd5b505afa1580156123f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241b91906149e1565b6016546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb90604401602060405180830381600087803b15801561248e57600080fd5b505af11580156124a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c191906147cc565b60008281526003602090815260408083208490556005825280832083905560068252808320839055600d90915281206124fe91614232565b60008281526012602052604081205461ffff16905b8161ffff168161ffff161161255a576000848152600e6020908152604080832061ffff85168452909152812061254891614232565b8061255281615562565b915050612513565b5050600082815260126020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169055601190915281205461ffff16905b8161ffff168161ffff16116125e8576000848152600f6020908152604080832061ffff8516845290915281206125d691614232565b806125e081615562565b9150506125a1565b50600083815260106020526040812061260091614232565b5050600090815260116020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169055565b6040517f3ebe8d6c00000000000000000000000000000000000000000000000000000000815260048101839052600090819081903090633ebe8d6c9060240160206040518083038186803b15801561268f57600080fd5b505afa1580156126a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c791906149e1565b90508315806126d65750808410155b156126df578093505b60008581526012602052604081205485919061ffff16805b6000898152600e6020908152604080832061ffff8516845282528083208054825181850281018501909352808352919290919083018282801561275957602002820191906000526020600020905b815481526020019060010190808311612745575b5050505050905060008061276d8388613b1f565b909250905061277c8287615285565b955061278881886153fe565b96506000871161279a575050506127b0565b50505080806127a890615499565b9150506126f7565b5090979596505050505050565b6000606060005a905060006127d4858701876147e7565b60008181526009602090815260408083205460089092528220549293509190838367ffffffffffffffff81111561280d5761280d6156ac565b6040519080825280601f01601f191660200182016040528015612837576020820181803683370190505b50604051602001612849929190615115565b60405160208183030381529060405290506000612864613ba4565b90506000612871866129fa565b90505b835a61288090896153fe565b61288c90612710615285565b10156128cd5781406000908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055612874565b806128e5576000839850985050505050505050611684565b6040518060400160405280600981526020017f6665656449444865780000000000000000000000000000000000000000000000815250601a6040518060400160405280600b81526020017f626c6f636b4e756d626572000000000000000000000000000000000000000000815250848960405160200161296791815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f7ddd933e0000000000000000000000000000000000000000000000000000000082526129c99594939291600401614e1d565b60405180910390fd5b600f60205282600052604060002060205281600052604060002081815481106112e957600080fd5b600081815260056020526040812054612a1557506001919050565b600082815260036020908152604080832054600490925290912054612a38613ba4565b612a4291906153fe565b101592915050565b60015473ffffffffffffffffffffffffffffffffffffffff163314612acb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064016129c9565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6040517fa5f589340000000000000000000000000000000000000000000000000000000081526004810183905260009081908190309063a5f589349060240160206040518083038186803b158015612b9e57600080fd5b505afa158015612bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd691906149e1565b9050831580612be55750808410155b15612bee578093505b60008581526011602052604081205485919061ffff16805b6000898152600f6020908152604080832061ffff85168452825280832080548251818502810185019093528083529192909190830182828015612c6857602002820191906000526020600020905b815481526020019060010190808311612c54575b50505050509050600080612c7c8388613b1f565b9092509050612c8b8287615285565b9550612c9781886153fe565b965060008711612ca9575050506127b0565b5050508080612cb790615499565b915050612c06565b6000838152600e6020908152604080832061ffff85168452825280832080548251818502810185019093528083528493830182828015612d1e57602002820191906000526020600020905b815481526020019060010190808311612d0a575b50505050509050612d31818583516139bf565b95945050505050565b6000838152600f6020908152604080832061ffff85168452825280832080548251818502810185019093528083528493830182828015612d1e5760200282019190600052602060002090815481526020019060010190808311612d0a5750505050509050612d31818583516139bf565b6060806000612db960136139a9565b905060008167ffffffffffffffff811115612dd657612dd66156ac565b604051908082528060200260200182016040528015612dff578160200160208202803683370190505b50905060008267ffffffffffffffff811115612e1d57612e1d6156ac565b604051908082528060200260200182016040528015612e46578160200160208202803683370190505b50905060005b838110156115fc576000612e616013836139b3565b6000818152600d6020908152604080832080548251818502810185019093528083529495509293909291830182828015612eba57602002820191906000526020600020905b815481526020019060010190808311612ea6575b5050505050905081858481518110612ed457612ed461567d565b602002602001018181525050612eec818a83516139bf565b848481518110612efe57612efe61567d565b60200260200101818152505050508080612f1790615584565b915050612e4c565b6040805161014081018252600461010082019081527f746573740000000000000000000000000000000000000000000000000000000061012083015281528151602081810184526000808352818401929092523083850181905263ffffffff8916606085015260808401528351808201855282815260a08401528351908101909352825260c08101919091526bffffffffffffffffffffffff841660e082015260165460155473ffffffffffffffffffffffffffffffffffffffff9182169163095ea7b39116612ff260ff8a1688615356565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526bffffffffffffffffffffffff166024820152604401602060405180830381600087803b15801561306b57600080fd5b505af115801561307f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a391906147cc565b5060008660ff1667ffffffffffffffff8111156130c2576130c26156ac565b6040519080825280602002602001820160405280156130eb578160200160208202803683370190505b50905060005b8760ff168160ff16101561315e57600061310a84613cd8565b905080838360ff16815181106131225761312261567d565b60209081029190910181019190915260009182526008815260408083208890556007909152902084905580613156816155d0565b9150506130f1565b507f2ee10f7eb180441fb9fbba75b10c0162b5390b557712c93426243ca8f383c7118160405161318e9190614d92565b60405180910390a150505050505050565b6016546017546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526bffffffffffffffffffffffff8416602482015291169063095ea7b390604401602060405180830381600087803b15801561322257600080fd5b505af1158015613236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325a91906147cc565b506017546040517f948108f7000000000000000000000000000000000000000000000000000000008152600481018490526bffffffffffffffffffffffff8316602482015273ffffffffffffffffffffffffffffffffffffffff9091169063948108f790604401600060405180830381600087803b1580156132db57600080fd5b505af11580156132ef573d6000803e3d6000fd5b5050604080518581526bffffffffffffffffffffffff851660208201527f8137dc366612bf502338bd8951f835ad8ceba421c4eb3d79c7f9b3ce0ac4762e93500190506118a0565b6000828152600f6020908152604080832061ffff851684528252918290208054835181840281018401909452808452606093928301828280156121d257602002820191906000526020600020908154815260200190600101908083116121be575050505050905092915050565b8060005b8181101561346f5760008484838181106133c4576133c461567d565b9050602002013590503073ffffffffffffffffffffffffffffffffffffffff16639fab438682836040516020016133fd91815260200190565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401613429929190615115565b600060405180830381600087803b15801561344357600080fd5b505af1158015613457573d6000803e3d6000fd5b5050505050808061346790615584565b9150506133a8565b50505050565b6000818152600d60209081526040918290208054835181840281018401909452808452606093928301828280156134cb57602002820191906000526020600020905b8154815260200190600101908083116134b7575b50505050509050919050565b601a81815481106134e757600080fd5b9060005260206000200160009150905080546122f0906154d5565b6017546040517f9fab438600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690639fab43869061355c908690869086906004016150c1565b600060405180830381600087803b15801561357657600080fd5b505af115801561358a573d6000803e3d6000fd5b5050506000848152600b6020526040902061346f91508383614250565b60008181526011602052604081205461ffff1681805b8261ffff168161ffff1611611a4b576000858152600f6020908152604080832061ffff851684529091529020546135f49083615285565b91508061360081615562565b9150506135bd565b6017546040517fa72aa27e0000000000000000000000000000000000000000000000000000000081526004810184905263ffffffff8316602482015273ffffffffffffffffffffffffffffffffffffffff9091169063a72aa27e90604401600060405180830381600087803b15801561368057600080fd5b505af1158015613694573d6000803e3d6000fd5b505050600092835250600a602052604090912063ffffffff9091169055565b6017546040517f744bfe610000000000000000000000000000000000000000000000000000000081526004810183905230602482015273ffffffffffffffffffffffffffffffffffffffff9091169063744bfe6190604401600060405180830381600087803b15801561372557600080fd5b505af11580156122d0573d6000803e3d6000fd5b8060005b818163ffffffff16101561346f573063af953a4a858563ffffffff85168181106137695761376961567d565b905060200201356040518263ffffffff1660e01b815260040161378e91815260200190565b600060405180830381600087803b1580156137a857600080fd5b505af11580156137bc573d6000803e3d6000fd5b5050505080806137cb906155b6565b91505061373d565b6017546040517fc80480220000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff9091169063c804802290602401600060405180830381600087803b15801561383f57600080fd5b505af1158015613853573d6000803e3d6000fd5b505050506111c1816013613dda90919063ffffffff16565b6000828152600d602090815260408083208054825181850281018501909352808352849384939291908301828280156138c357602002820191906000526020600020905b8154815260200190600101908083116138af575b5050505050905061167e8185613b1f565b600d60205281600052604060002081815481106138f057600080fd5b90600052602060002001600091509150505481565b61390d613c55565b61391681613de6565b50565b601060205281600052604060002081815481106138f057600080fd5b6000828152600f6020908152604080832061ffff85168452825280832080548251818502810185019093528083528493849392919083018282801561166c5760200282019190600052602060002090815481526020019060010190808311611658575050505050905061167e818251613b1f565b60006112bb825490565b60006119108383613edc565b825160009081908315806139d35750808410155b156139dc578093505b60008467ffffffffffffffff8111156139f7576139f76156ac565b604051908082528060200260200182016040528015613a20578160200160208202803683370190505b509050600092505b84831015613a8e57866001613a3d85856153fe565b613a4791906153fe565b81518110613a5757613a5761567d565b6020026020010151818481518110613a7157613a7161567d565b602090810291909101015282613a8681615584565b935050613a28565b613aa781600060018451613aa291906153fe565b613f06565b8560641415613ae1578060018251613abf91906153fe565b81518110613acf57613acf61567d565b60200260200101519350505050611910565b806064825188613af19190615319565b613afb9190615305565b81518110613b0b57613b0b61567d565b602002602001015193505050509392505050565b815160009081908190841580613b355750808510155b15613b3e578094505b60008092505b85831015613b9a57866001613b5985856153fe565b613b6391906153fe565b81518110613b7357613b7361567d565b602002602001015181613b869190615285565b905082613b9281615584565b935050613b44565b9694955050505050565b60007f000000000000000000000000000000000000000000000000000000000000000015613c5057606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b158015613c1357600080fd5b505afa158015613c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c4b91906149e1565b905090565b504390565b60005473ffffffffffffffffffffffffffffffffffffffff163314613cd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e65720000000000000000000060448201526064016129c9565b565b6015546040517f08b79da4000000000000000000000000000000000000000000000000000000008152600091829173ffffffffffffffffffffffffffffffffffffffff909116906308b79da490613d33908690600401614fa1565b602060405180830381600087803b158015613d4d57600080fd5b505af1158015613d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d8591906149e1565b9050613d92601382614087565b5060608301516000828152600a6020908152604080832063ffffffff90941690935560a0860151600b8252929091208251613dd393919291909101906142ee565b5092915050565b60006119108383614093565b73ffffffffffffffffffffffffffffffffffffffff8116331415613e66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016129c9565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000826000018281548110613ef357613ef361567d565b9060005260206000200154905092915050565b818180821415613f17575050505050565b6000856002613f26878761538a565b613f30919061529d565b613f3a9087615211565b81518110613f4a57613f4a61567d565b602002602001015190505b818313614059575b80868481518110613f7057613f7061567d565b60200260200101511015613f905782613f8881615529565b935050613f5d565b858281518110613fa257613fa261567d565b6020026020010151811015613fc35781613fbb81615441565b925050613f90565b81831361405457858281518110613fdc57613fdc61567d565b6020026020010151868481518110613ff657613ff661567d565b60200260200101518785815181106140105761401061567d565b602002602001018885815181106140295761402961567d565b6020908102919091010191909152528261404281615529565b935050818061405090615441565b9250505b613f55565b8185121561406c5761406c868684613f06565b8383121561407f5761407f868486613f06565b505050505050565b60006119108383614186565b6000818152600183016020526040812054801561417c5760006140b76001836153fe565b85549091506000906140cb906001906153fe565b90508181146141305760008660000182815481106140eb576140eb61567d565b906000526020600020015490508087600001848154811061410e5761410e61567d565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806141415761414161564e565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506112bb565b60009150506112bb565b60008181526001830160205260408120546141cd575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556112bb565b5060006112bb565b828054828255906000526020600020908101928215614222579160200282015b8281111561422257825180516142129184916020909101906142ee565b50916020019190600101906141f5565b5061422e929150614362565b5090565b5080546000825590600052602060002090810190613916919061437f565b82805461425c906154d5565b90600052602060002090601f01602090048101928261427e57600085556142e2565b82601f106142b5578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008235161785556142e2565b828001600101855582156142e2579182015b828111156142e25782358255916020019190600101906142c7565b5061422e92915061437f565b8280546142fa906154d5565b90600052602060002090601f01602090048101928261431c57600085556142e2565b82601f1061433557805160ff19168380011785556142e2565b828001600101855582156142e2579182015b828111156142e2578251825591602001919060010190614347565b8082111561422e5760006143768282614394565b50600101614362565b5b8082111561422e5760008155600101614380565b5080546143a0906154d5565b6000825580601f106143b0575050565b601f016020900490600052602060002090810190613916919061437f565b60006143e16143dc846151cb565b615158565b90508281528383830111156143f557600080fd5b828260208301376000602084830101529392505050565b8051614417816156db565b919050565b60008083601f84011261442e57600080fd5b50813567ffffffffffffffff81111561444657600080fd5b6020830191508360208260051b850101111561168457600080fd5b8051801515811461441757600080fd5b60008083601f84011261448357600080fd5b50813567ffffffffffffffff81111561449b57600080fd5b60208301915083602082850101111561168457600080fd5b600082601f8301126144c457600080fd5b611910838335602085016143ce565b600082601f8301126144e457600080fd5b81516144f26143dc826151cb565b81815284602083860101111561450757600080fd5b614518826020830160208701615415565b949350505050565b803561ffff8116811461441757600080fd5b8051614417816156fd565b805167ffffffffffffffff8116811461441757600080fd5b803560ff8116811461441757600080fd5b80516144178161570f565b60006020828403121561458357600080fd5b8135611910816156db565b600080604083850312156145a157600080fd5b823567ffffffffffffffff808211156145b957600080fd5b818501915085601f8301126145cd57600080fd5b813560206145dd6143dc836151a7565b8083825282820191508286018a848660051b89010111156145fd57600080fd5b60005b858110156146385781358781111561461757600080fd5b6146258d87838c01016144b3565b8552509284019290840190600101614600565b5090975050508601359250508082111561465157600080fd5b5061465e858286016144b3565b9150509250929050565b6000602080838503121561467b57600080fd5b823567ffffffffffffffff8082111561469357600080fd5b818501915085601f8301126146a757600080fd5b81356146b56143dc826151a7565b80828252858201915085850189878560051b88010111156146d557600080fd5b60005b84811015614724578135868111156146ef57600080fd5b8701603f81018c1361470057600080fd5b6147118c8a830135604084016143ce565b85525092870192908701906001016146d8565b50909998505050505050505050565b6000806020838503121561474657600080fd5b823567ffffffffffffffff81111561475d57600080fd5b6147698582860161441c565b90969095509350505050565b60008060006040848603121561478a57600080fd5b833567ffffffffffffffff8111156147a157600080fd5b6147ad8682870161441c565b90945092505060208401356147c1816156fd565b809150509250925092565b6000602082840312156147de57600080fd5b61191082614461565b6000602082840312156147f957600080fd5b5035919050565b6000806020838503121561481357600080fd5b823567ffffffffffffffff81111561482a57600080fd5b61476985828601614471565b60006020828403121561484857600080fd5b8151611910816156db565b600080600080600060a0868803121561486b57600080fd5b85516003811061487a57600080fd5b602087015190955061488b816156fd565b604087015190945061489c816156fd565b60608701519093506148ad816156db565b80925050608086015190509295509295909350565b6000602082840312156148d457600080fd5b815167ffffffffffffffff808211156148ec57600080fd5b90830190610140828603121561490157600080fd5b61490961512e565b6149128361440c565b815261492060208401614532565b602082015260408301518281111561493757600080fd5b614943878286016144d3565b60408301525061495560608401614566565b60608201526149666080840161440c565b608082015261497760a0840161453d565b60a082015261498860c08401614532565b60c082015261499960e08401614566565b60e08201526101006149ac818501614461565b9082015261012083810151838111156149c457600080fd5b6149d0888287016144d3565b918301919091525095945050505050565b6000602082840312156149f357600080fd5b5051919050565b600080600060408486031215614a0f57600080fd5b83359250602084013567ffffffffffffffff811115614a2d57600080fd5b614a3986828701614471565b9497909650939450505050565b60008060408385031215614a5957600080fd5b82359150614a6960208401614520565b90509250929050565b600080600060608486031215614a8757600080fd5b83359250614a9760208501614520565b9150604084013590509250925092565b60008060408385031215614aba57600080fd5b50508035926020909101359150565b600080600060608486031215614ade57600080fd5b8335925060208401359150614af560408501614520565b90509250925092565b600080600060608486031215614b1357600080fd5b505081359360208301359350604090920135919050565b60008060408385031215614b3d57600080fd5b823591506020830135614b4f816156fd565b809150509250929050565b60008060408385031215614b6d57600080fd5b823591506020830135614b4f8161570f565b600060208284031215614b9157600080fd5b61191082614555565b600080600080600060a08688031215614bb257600080fd5b614bbb86614555565b94506020860135614bcb816156fd565b93506040860135614bdb8161570f565b94979396509394606081013594506080013592915050565b600060208284031215614c0557600080fd5b81356119108161570f565b600060208284031215614c2257600080fd5b81516119108161570f565b600081518084526020808501945080840160005b83811015614c5d57815187529582019590820190600101614c41565b509495945050505050565b60008151808452614c80816020860160208601615415565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000604082016040835280855180835260608501915060608160051b8601019250602080880160005b83811015614d27577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552614d15868351614c68565b95509382019390820190600101614cdb565b505085840381870152505050612d318185614c68565b6020815281602082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614d7657600080fd5b8260051b80856040850137600092016040019182525092915050565b6020815260006119106020830184614c2d565b604081526000614db86040830185614c2d565b8281036020840152612d318185614c2d565b821515815260406020820152600061190d6040830184614c68565b6020815260006119106020830184614c68565b604081526000614e0b6040830185614c68565b8281036020840152612d318185614c68565b60a081526000614e3060a0830188614c68565b6020838203818501528188548084528284019150828160051b85010160008b8152848120815b84811015614f62578784037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001865281548390600181811c9080831680614e9e57607f831692505b8b8310811415614ed5577f4e487b710000000000000000000000000000000000000000000000000000000088526022600452602488fd5b82895260208901818015614ef05760018114614f1f57614f49565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861682528d82019650614f49565b6000898152602090208a5b86811015614f4357815484820152908501908f01614f2a565b83019750505b505050988a019892965050509190910190600101614e56565b5050508681036040880152614f77818b614c68565b9450505050508460608401528281036080840152614f958185614c68565b98975050505050505050565b6020815260008251610100806020850152614fc0610120850183614c68565b915060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080868503016040870152614ffc8483614c68565b935060408701519150615027606087018373ffffffffffffffffffffffffffffffffffffffff169052565b606087015163ffffffff811660808801529150608087015173ffffffffffffffffffffffffffffffffffffffff811660a0880152915060a08701519150808685030160c08701526150788483614c68565b935060c08701519150808685030160e0870152506150968382614c68565b92505060e08501516150b7828601826bffffffffffffffffffffffff169052565b5090949350505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b82815260406020820152600061190d6040830184614c68565b604051610140810167ffffffffffffffff81118282101715615152576151526156ac565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561519f5761519f6156ac565b604052919050565b600067ffffffffffffffff8211156151c1576151c16156ac565b5060051b60200190565b600067ffffffffffffffff8211156151e5576151e56156ac565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561524b5761524b6155f0565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561527f5761527f6155f0565b50500190565b60008219821115615298576152986155f0565b500190565b6000826152ac576152ac61561f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615615300576153006155f0565b500590565b6000826153145761531461561f565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615351576153516155f0565b500290565b60006bffffffffffffffffffffffff80831681851681830481118215151615615381576153816155f0565b02949350505050565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156153c4576153c46155f0565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0183138116156153f8576153f86155f0565b50500390565b600082821015615410576154106155f0565b500390565b60005b83811015615430578181015183820152602001615418565b8381111561346f5750506000910152565b60007f8000000000000000000000000000000000000000000000000000000000000000821415615473576154736155f0565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600061ffff8216806154ad576154ad6155f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b600181811c908216806154e957607f821691505b60208210811415615523577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561555b5761555b6155f0565b5060010190565b600061ffff8083168181141561557a5761557a6155f0565b6001019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561555b5761555b6155f0565b600063ffffffff8083168181141561557a5761557a6155f0565b600060ff821660ff8114156155e7576155e76155f0565b60010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461391657600080fd5b63ffffffff8116811461391657600080fd5b6bffffffffffffffffffffffff8116811461391657600080fdfea164736f6c6343000806000a307834353534343832643535353334343264343135323432343935343532353534643264353434353533353434653435353430303030303030303030303030303030307834323534343332643535353334343264343135323432343935343532353534643264353434353533353434653435353430303030303030303030303030303030307835353533343434333264353535333434326434313532343234393534353235353464326435343435353335343465343535343030303030303030303030303030", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrarAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useArb\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"feedParamKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"feeds\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"timeParamKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"FeedLookup\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfRange\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"FundsAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNum\",\"type\":\"uint256\"}],\"name\":\"InsufficientFunds\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"origin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"v0\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ed\",\"type\":\"bytes\"}],\"name\":\"MercuryPerformEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"firstPerformBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"}],\"name\":\"PerformingUpkeep\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Received\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRegistrar\",\"type\":\"address\"}],\"name\":\"RegistrarSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNum\",\"type\":\"uint256\"}],\"name\":\"UpkeepTopUp\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"UpkeepsCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"UpkeepsRegistered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BUCKET_SIZE\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TIMESTAMP_INTERVAL\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"addFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addLinkAmount\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"batchCancelUpkeeps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"number\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"checkGasToBurn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"performGasToBurn\",\"type\":\"uint256\"}],\"name\":\"batchRegisterUpkeeps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint32\",\"name\":\"interval\",\"type\":\"uint32\"}],\"name\":\"batchSetIntervals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"batchUpdatePipelineData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"batchWithdrawLinks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"bucketedDelays\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"buckets\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"cancelUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"checkCallback\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"checkDatas\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"checkGasToBurns\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"}],\"name\":\"checkUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"counters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"delays\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"dummyMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"eligible\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feedParamKey\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"feedsHex\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"firstPerformBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gasLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxCount\",\"type\":\"uint256\"}],\"name\":\"getActiveUpkeepIDs\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"bucket\",\"type\":\"uint16\"}],\"name\":\"getBucketedDelays\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getBucketedDelaysLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getDelays\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getDelaysLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"bucket\",\"type\":\"uint16\"}],\"name\":\"getDelaysLengthAtBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"timestampBucket\",\"type\":\"uint16\"}],\"name\":\"getDelaysLengthAtTimestampBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"}],\"name\":\"getPxBucketedDelaysForAllUpkeeps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"}],\"name\":\"getPxDelayForAllUpkeeps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"bucket\",\"type\":\"uint16\"}],\"name\":\"getPxDelayInBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"timestampBucket\",\"type\":\"uint16\"}],\"name\":\"getPxDelayInTimestampBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"getPxDelayLastNPerforms\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"getSumBucketedDelayLastNPerforms\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"bucket\",\"type\":\"uint16\"}],\"name\":\"getSumDelayInBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"timestampBucket\",\"type\":\"uint16\"}],\"name\":\"getSumDelayInTimestampBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"getSumDelayLastNPerforms\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"getSumTimestampBucketedDelayLastNPerforms\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getTimestampBucketedDelaysLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"timestampBucket\",\"type\":\"uint16\"}],\"name\":\"getTimestampDelays\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"intervals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lastTopUpBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkToken\",\"outputs\":[{\"internalType\":\"contractLinkTokenInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minBalanceThresholdMultiplier\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"performDataSizes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"performGasToBurns\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"}],\"name\":\"performUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"previousPerformBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registrar\",\"outputs\":[{\"internalType\":\"contractKeeperRegistrar2_0\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contractIKeeperRegistryMaster\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"setAddLinkAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setCheckGasToBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractKeeperRegistrar2_0\",\"name\":\"newRegistrar\",\"type\":\"address\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"newFeeds\",\"type\":\"string[]\"}],\"name\":\"setFeedsHex\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_interval\",\"type\":\"uint256\"}],\"name\":\"setInterval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"newMinBalanceThresholdMultiplier\",\"type\":\"uint8\"}],\"name\":\"setMinBalanceThresholdMultiplier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setPerformDataSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setPerformGasToBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"name\":\"setUpkeepGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newInterval\",\"type\":\"uint256\"}],\"name\":\"setUpkeepTopUpCheckInterval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"timeParamKey\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestampBuckets\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestampDelays\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"pipelineData\",\"type\":\"bytes\"}],\"name\":\"updateUpkeepPipelineData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"upkeepTopUpCheckInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"useArbitrumBlockNum\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawLinks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"withdrawLinks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x6005601855601980546001600160681b0319166c140000000002c68af0bb140000179055601960f21b60a05260e160f41b60c0526101c0604052604261014081815260e09182919062005db461016039815260200160405180608001604052806042815260200162005df660429139815260200160405180608001604052806042815260200162005e386042913990526200009f90601a9060036200036e565b50348015620000ad57600080fd5b5060405162005e7a38038062005e7a833981016040819052620000d091620004f1565b81813380600081620001295760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b03848116919091179091558116156200015c576200015c81620002c2565b5050601580546001600160a01b0319166001600160a01b0385169081179091556040805163850af0cb60e01b815290516000935063850af0cb9160048082019260a092909190829003018186803b158015620001b757600080fd5b505afa158015620001cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f291906200055b565b50601780546001600160a01b0319166001600160a01b038381169190911790915560155460408051631b6b6d2360e01b8152905193975091169450631b6b6d2393506004808201935060209291829003018186803b1580156200025457600080fd5b505afa15801562000269573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028f919062000534565b601680546001600160a01b0319166001600160a01b039290921691909117905550151560f81b608052506200061e915050565b6001600160a01b0381163314156200031d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000120565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b828054828255906000526020600020908101928215620003c0579160200282015b82811115620003c05782518051620003af918491602090910190620003d2565b50916020019190600101906200038f565b50620003ce9291506200045d565b5090565b828054620003e090620005cb565b90600052602060002090601f0160209004810192826200040457600085556200044f565b82601f106200041f57805160ff19168380011785556200044f565b828001600101855582156200044f579182015b828111156200044f57825182559160200191906001019062000432565b50620003ce9291506200047e565b80821115620003ce57600062000474828262000495565b506001016200045d565b5b80821115620003ce57600081556001016200047f565b508054620004a390620005cb565b6000825580601f10620004b4575050565b601f016020900490600052602060002090810190620004d491906200047e565b50565b805163ffffffff81168114620004ec57600080fd5b919050565b600080604083850312156200050557600080fd5b8251620005128162000608565b602084015190925080151581146200052957600080fd5b809150509250929050565b6000602082840312156200054757600080fd5b8151620005548162000608565b9392505050565b600080600080600060a086880312156200057457600080fd5b8551600381106200058457600080fd5b94506200059460208701620004d7565b9350620005a460408701620004d7565b92506060860151620005b68162000608565b80925050608086015190509295509295909350565b600181811c90821680620005e057607f821691505b602082108114156200060257634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b0381168114620004d457600080fd5b60805160f81c60a05160f01c60c05160f01c6157486200066c600039600081816106f40152611b480152600081816105cc0152611c5c0152600081816109d10152613ba801526157486000f3fe6080604052600436106104f05760003560e01c80637b10399911610294578063a79c40431161015e578063d6051a72116100d6578063f2fde38b1161008a578063fba7ffa31161006f578063fba7ffa314611134578063fbfb4f7614611161578063fcdc1f631461118157600080fd5b8063f2fde38b146110f4578063fb0ceb041461111457600080fd5b8063dbef701e116100bb578063dbef701e14611091578063e0114adb146110b1578063e4553083146110de57600080fd5b8063d6051a7214611051578063daee1aeb1461107157600080fd5b8063becde0e11161012d578063c804802211610112578063c804802214610f89578063c98f10b014610fa9578063d355852814610ff257600080fd5b8063becde0e114610f0f578063c357f1f314610f2f57600080fd5b8063a79c404314610e3b578063af953a4a14610e68578063afb28d1f14610e88578063b0971e1a14610ed157600080fd5b8063948108f71161020c5780639d385eaa116101c0578063a5f58934116101a5578063a5f5893414610ddb578063a6c60d8914610dfb578063a72aa27e14610e1b57600080fd5b80639d385eaa14610d9b5780639d6f1cc714610dbb57600080fd5b80639ac542eb116101f15780639ac542eb14610d015780639b42935414610d3d5780639b51fb0d14610d6a57600080fd5b8063948108f714610cc157806399cc6b0b14610ce157600080fd5b806387dfa900116102635780638da5cb5b116102485780638da5cb5b14610c495780638fcb3fba14610c745780639095aa3514610ca157600080fd5b806387dfa90014610c095780638bc7b77214610c2957600080fd5b80637b10399914610b7c5780637e4087b814610ba95780637e7a46dc14610bc95780638237831714610be957600080fd5b80634b56a42e116103d5578063643b34e91161034d5780637145f11b1161030157806376721303116102e65780637672130314610b1a578063776898c814610b4757806379ba509714610b6757600080fd5b80637145f11b14610abd57806373644cce14610aed57600080fd5b806369e9b7731161033257806369e9b77314610a505780636e04ff0d14610a7d5780637137a70214610a9d57600080fd5b8063643b34e914610a0357806369cdbadb14610a2357600080fd5b80635d4ee7f3116103a457806360457ff51161038957806360457ff514610950578063636092e81461097d578063642f6cef146109bf57600080fd5b80635d4ee7f31461091b5780635f17e6161461093057600080fd5b80634b56a42e1461087357806351c98be3146108a157806357970e93146108c157806358c52c04146108ee57600080fd5b806329f0e4961161046857806333774d1c116104375780634585e33b1161041c5780634585e33b1461080657806345d2ec171461082657806346e7a63e1461084657600080fd5b806333774d1c146107b55780633ebe8d6c146107e657600080fd5b806329f0e496146106e25780632a9032d3146107165780632b20e39714610736578063328ffd111461078857600080fd5b8063177b0eb9116104bf578063206c32e8116104a4578063206c32e81461066d57806320e3dbd4146106a257806328c4b57b146106c257600080fd5b8063177b0eb9146106015780631bee00801461063f57600080fd5b806305e251311461053457806306e3b63214610556578063077ac6211461058c57806312c55027146105ba57600080fd5b3661052f57604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b34801561054057600080fd5b5061055461054f366004614668565b6111ae565b005b34801561056257600080fd5b50610576610571366004614ab9565b6111c5565b6040516105839190614da4565b60405180910390f35b34801561059857600080fd5b506105ac6105a7366004614a84565b6112c1565b604051908152602001610583565b3480156105c657600080fd5b506105ee7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610583565b34801561060d57600080fd5b506105ac61061c366004614a58565b6000918252600f6020908152604080842061ffff93909316845291905290205490565b34801561064b57600080fd5b5061065f61065a3660046147e7565b6112ff565b604051610583929190614db7565b34801561067957600080fd5b5061068d610688366004614a58565b611608565b60408051928352602083019190915201610583565b3480156106ae57600080fd5b506105546106bd366004614571565b61168b565b3480156106ce57600080fd5b506105ac6106dd366004614b10565b6118ac565b3480156106ee57600080fd5b506105ee7f000000000000000000000000000000000000000000000000000000000000000081565b34801561072257600080fd5b50610554610731366004614733565b611917565b34801561074257600080fd5b506015546107639073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610583565b34801561079457600080fd5b506105ac6107a33660046147e7565b60036020526000908152604090205481565b3480156107c157600080fd5b506105ee6107d03660046147e7565b60116020526000908152604090205461ffff1681565b3480156107f257600080fd5b506105ac6108013660046147e7565b6119ea565b34801561081257600080fd5b50610554610821366004614800565b611a53565b34801561083257600080fd5b50610576610841366004614a58565b612170565b34801561085257600080fd5b506105ac6108613660046147e7565b600a6020526000908152604090205481565b34801561087f57600080fd5b5061089361088e36600461458e565b6121df565b604051610583929190614ddc565b3480156108ad57600080fd5b506105546108bc366004614775565b612233565b3480156108cd57600080fd5b506016546107639073ffffffffffffffffffffffffffffffffffffffff1681565b3480156108fa57600080fd5b5061090e6109093660046147e7565b6122d7565b6040516105839190614df7565b34801561092757600080fd5b50610554612371565b34801561093c57600080fd5b5061055461094b366004614ab9565b6124c6565b34801561095c57600080fd5b506105ac61096b3660046147e7565b60076020526000908152604090205481565b34801561098957600080fd5b506019546109a2906bffffffffffffffffffffffff1681565b6040516bffffffffffffffffffffffff9091168152602001610583565b3480156109cb57600080fd5b506109f37f000000000000000000000000000000000000000000000000000000000000000081565b6040519015158152602001610583565b348015610a0f57600080fd5b5061068d610a1e366004614ab9565b612638565b348015610a2f57600080fd5b506105ac610a3e3660046147e7565b60086020526000908152604090205481565b348015610a5c57600080fd5b50610554610a6b366004614ab9565b60009182526008602052604090912055565b348015610a8957600080fd5b50610893610a98366004614800565b6127bd565b348015610aa957600080fd5b506105ac610ab8366004614a84565b6129d2565b348015610ac957600080fd5b506109f3610ad83660046147e7565b600c6020526000908152604090205460ff1681565b348015610af957600080fd5b506105ac610b083660046147e7565b6000908152600d602052604090205490565b348015610b2657600080fd5b506105ac610b353660046147e7565b60046020526000908152604090205481565b348015610b5357600080fd5b506109f3610b623660046147e7565b6129fa565b348015610b7357600080fd5b50610554612a4a565b348015610b8857600080fd5b506017546107639073ffffffffffffffffffffffffffffffffffffffff1681565b348015610bb557600080fd5b5061068d610bc4366004614ab9565b612b47565b348015610bd557600080fd5b50610554610be4366004614a0c565b612cbf565b348015610bf557600080fd5b506105ac610c04366004614adb565b612d6a565b348015610c1557600080fd5b506105ac610c24366004614adb565b612de5565b348015610c3557600080fd5b5061065f610c443660046147e7565b612e55565b348015610c5557600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610763565b348015610c8057600080fd5b506105ac610c8f3660046147e7565b60056020526000908152604090205481565b348015610cad57600080fd5b50610554610cbc366004614bac565b612fca565b348015610ccd57600080fd5b50610554610cdc366004614b6c565b61324a565b348015610ced57600080fd5b50610576610cfc366004614a58565b6133e2565b348015610d0d57600080fd5b50601954610d2b906c01000000000000000000000000900460ff1681565b60405160ff9091168152602001610583565b348015610d4957600080fd5b50610554610d58366004614ab9565b60009182526009602052604090912055565b348015610d7657600080fd5b506105ee610d853660046147e7565b60126020526000908152604090205461ffff1681565b348015610da757600080fd5b50610576610db63660046147e7565b61344f565b348015610dc757600080fd5b5061090e610dd63660046147e7565b6134b1565b348015610de757600080fd5b506105ac610df63660046147e7565b6134dc565b348015610e0757600080fd5b50610554610e163660046147e7565b601855565b348015610e2757600080fd5b50610554610e36366004614b3c565b61353d565b348015610e4757600080fd5b50610554610e56366004614ab9565b60009182526007602052604090912055565b348015610e7457600080fd5b50610554610e833660046147e7565b6135e8565b348015610e9457600080fd5b5061090e6040518060400160405280600981526020017f666565644944486578000000000000000000000000000000000000000000000081525081565b348015610edd57600080fd5b506105ac610eec366004614a58565b6000918252600e6020908152604080842061ffff93909316845291905290205490565b348015610f1b57600080fd5b50610554610f2a366004614733565b61366e565b348015610f3b57600080fd5b50610554610f4a366004614c05565b601980547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff92909216919091179055565b348015610f9557600080fd5b50610554610fa43660046147e7565b613708565b348015610fb557600080fd5b5061090e6040518060400160405280600b81526020017f626c6f636b4e756d62657200000000000000000000000000000000000000000081525081565b348015610ffe57600080fd5b5061055461100d366004614b91565b6019805460ff9092166c01000000000000000000000000027fffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff909216919091179055565b34801561105d57600080fd5b5061068d61106c366004614ab9565b6137a0565b34801561107d57600080fd5b5061055461108c366004614733565b613809565b34801561109d57600080fd5b506105ac6110ac366004614ab9565b6138d4565b3480156110bd57600080fd5b506105ac6110cc3660046147e7565b60096020526000908152604090205481565b3480156110ea57600080fd5b506105ac60185481565b34801561110057600080fd5b5061055461110f366004614571565b613905565b34801561112057600080fd5b506105ac61112f366004614ab9565b613919565b34801561114057600080fd5b506105ac61114f3660046147e7565b60066020526000908152604090205481565b34801561116d57600080fd5b5061068d61117c366004614a58565b613935565b34801561118d57600080fd5b506105ac61119c3660046147e7565b60026020526000908152604090205481565b80516111c190601a9060208401906141d5565b5050565b606060006111d360136139a9565b905080841061120e576040517f1390f2a100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826112205761121d8482615410565b92505b60008367ffffffffffffffff81111561123b5761123b6156be565b604051908082528060200260200182016040528015611264578160200160208202803683370190505b50905060005b848110156112b65761128761127f8288615297565b6013906139b3565b8282815181106112995761129961568f565b6020908102919091010152806112ae81615596565b91505061126a565b509150505b92915050565b600e60205282600052604060002060205281600052604060002081815481106112e957600080fd5b9060005260206000200160009250925050505481565b606080600061130e60136139a9565b905060008167ffffffffffffffff81111561132b5761132b6156be565b604051908082528060200260200182016040528015611354578160200160208202803683370190505b50905060008267ffffffffffffffff811115611372576113726156be565b60405190808252806020026020018201604052801561139b578160200160208202803683370190505b50905060005b838110156115fc5760006113b66013836139b3565b9050808483815181106113cb576113cb61568f565b6020908102919091018101919091526000828152601290915260408082205490517f3ebe8d6c0000000000000000000000000000000000000000000000000000000081526004810184905261ffff90911691903090633ebe8d6c9060240160206040518083038186803b15801561144157600080fd5b505afa158015611455573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147991906149f3565b905060008167ffffffffffffffff811115611496576114966156be565b6040519080825280602002602001820160405280156114bf578160200160208202803683370190505b506000858152600e6020526040812091925090815b8561ffff168161ffff16116115b95761ffff81166000908152602083815260408083208054825181850281018501909352808352919290919083018282801561153c57602002820191906000526020600020905b815481526020019060010190808311611528575b5050505050905060005b81518110156115a4578181815181106115615761156161568f565b602002602001015186868061157590615596565b9750815181106115875761158761568f565b60209081029190910101528061159c81615596565b915050611546565b505080806115b190615574565b9150506114d4565b506115c5838e866139bf565b8888815181106115d7576115d761568f565b60200260200101818152505050505050505080806115f490615596565b9150506113a1565b50909590945092505050565b6000828152600e6020908152604080832061ffff85168452825280832080548251818502810185019093528083528493849392919083018282801561166c57602002820191906000526020600020905b815481526020019060010190808311611658575b5050505050905061167e818251613b1f565b92509250505b9250929050565b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604080517f850af0cb00000000000000000000000000000000000000000000000000000000815290516000929163850af0cb9160048083019260a0929190829003018186803b15801561172057600080fd5b505afa158015611734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117589190614853565b50601780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117909155601554604080517f1b6b6d23000000000000000000000000000000000000000000000000000000008152905193975091169450631b6b6d2393506004808201935060209291829003018186803b1580156117f757600080fd5b505afa15801561180b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182f9190614836565b601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055601554604051911681527f6263309d5d4d1cfececd45a387cda7f14dccde21cf7a1bee1be6561075e61014906020015b60405180910390a15050565b6000838152600d60209081526040808320805482518185028101850190935280835261190d9383018282801561190157602002820191906000526020600020905b8154815260200190600101908083116118ed575b505050505084846139bf565b90505b9392505050565b8060005b818160ff1610156119ab573063c8048022858560ff85168181106119415761194161568f565b905060200201356040518263ffffffff1660e01b815260040161196691815260200190565b600060405180830381600087803b15801561198057600080fd5b505af1158015611994573d6000803e3d6000fd5b5050505080806119a3906155e2565b91505061191b565b507fbeac20a03a6674e40498fac4356bc86e356c0d761a8d35d436712dc93bc7c74b83836040516119dd929190614d4f565b60405180910390a1505050565b60008181526012602052604081205461ffff1681805b8261ffff168161ffff1611611a4b576000858152600e6020908152604080832061ffff85168452909152902054611a379083615297565b915080611a4381615574565b915050611a00565b509392505050565b60005a9050600080611a678486018661458e565b91509150600081806020019051810190611a8191906149f3565b60008181526005602090815260408083205460049092528220549293509190611aa8613ba4565b905082611ae25760008481526005602090815260408083208490556010825282208054600181018255908352912042910155915081611d42565b600084815260036020526040812054611afb8484615410565b611b059190615410565b6000868152601160209081526040808320546010909252909120805492935061ffff9091169182908110611b3b57611b3b61568f565b90600052602060002001547f000000000000000000000000000000000000000000000000000000000000000061ffff1642611b769190615410565b1115611be55760008681526010602090815260408220805460018101825590835291204291015580611ba781615574565b600088815260116020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83161790559150505b600086815260126020908152604080832054600e835281842061ffff9091168085529083528184208054835181860281018601909452808452919493909190830182828015611c5357602002820191906000526020600020905b815481526020019060010190808311611c3f575b505050505090507f000000000000000000000000000000000000000000000000000000000000000061ffff1681511415611ccf5781611c9181615574565b60008a815260126020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83161790559250505b506000878152600e6020908152604080832061ffff94851684528252808320805460018181018355918552838520018790558a8452600f83528184209590941683529381528382208054808501825590835281832001859055888252600d81529281208054928301815581529190912001555b600084815260066020526040812054611d5c906001615297565b6000868152600660209081526040918290208390558151878152908101859052908101859052606081018290529091507f6b6b3eeaaf107627513e76a81662118e7b1d8c78866f70760262115ddcfeede39060800160405180910390a16000858152600460209081526040808320859055601854600290925290912054611de39084615410565b111561208e576017546040517fc7c3a19a0000000000000000000000000000000000000000000000000000000081526004810187905260009173ffffffffffffffffffffffffffffffffffffffff169063c7c3a19a9060240160006040518083038186803b158015611e5457600080fd5b505afa158015611e68573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611eae91908101906148c2565b6017546040517fb657bc9c0000000000000000000000000000000000000000000000000000000081526004810189905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063b657bc9c9060240160206040518083038186803b158015611f1e57600080fd5b505afa158015611f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f569190614c22565b601954909150611f7a9082906c01000000000000000000000000900460ff16615368565b6bffffffffffffffffffffffff1682608001516bffffffffffffffffffffffff16101561208b576019546040517f948108f7000000000000000000000000000000000000000000000000000000008152600481018990526bffffffffffffffffffffffff9091166024820152309063948108f790604401600060405180830381600087803b15801561200b57600080fd5b505af115801561201f573d6000803e3d6000fd5b50505060008881526002602090815260409182902087905560195482518b81526bffffffffffffffffffffffff909116918101919091529081018690527f49d4100ab0124eb4a9a65dc4ea08d6412a43f6f05c49194983f5b322bcc0a5c0915060600160405180910390a15b50505b6000858152600760205260409020545b805a6120aa908b615410565b6120b690612710615297565b10156120f75782406000908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561209e565b82863273ffffffffffffffffffffffffffffffffffffffff167fcad583be2d908a590c81c7e332cf11c7a4ea41ecf1e059efac3ea7e83e34f1a58b6000815181106121445761214461568f565b60200260200101518b60405161215b929190614e0a565b60405180910390a45050505050505050505050565b6000828152600e6020908152604080832061ffff851684528252918290208054835181840281018401909452808452606093928301828280156121d257602002820191906000526020600020905b8154815260200190600101908083116121be575b5050505050905092915050565b60006060600084846040516020016121f8929190614cc4565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529190526001969095509350505050565b8160005b818110156122d05730635f17e6168686848181106122575761225761568f565b90506020020135856040518363ffffffff1660e01b815260040161228b92919091825263ffffffff16602082015260400190565b600060405180830381600087803b1580156122a557600080fd5b505af11580156122b9573d6000803e3d6000fd5b5050505080806122c890615596565b915050612237565b5050505050565b600b60205260009081526040902080546122f0906154e7565b80601f016020809104026020016040519081016040528092919081815260200182805461231c906154e7565b80156123695780601f1061233e57610100808354040283529160200191612369565b820191906000526020600020905b81548152906001019060200180831161234c57829003601f168201915b505050505081565b612379613c55565b6016546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b1580156123e357600080fd5b505afa1580156123f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241b91906149f3565b6016546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb90604401602060405180830381600087803b15801561248e57600080fd5b505af11580156124a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c191906147cc565b60008281526003602090815260408083208490556005825280832083905560068252808320839055600d90915281206124fe91614232565b60008281526012602052604081205461ffff16905b8161ffff168161ffff161161255a576000848152600e6020908152604080832061ffff85168452909152812061254891614232565b8061255281615574565b915050612513565b5050600082815260126020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169055601190915281205461ffff16905b8161ffff168161ffff16116125e8576000848152600f6020908152604080832061ffff8516845290915281206125d691614232565b806125e081615574565b9150506125a1565b50600083815260106020526040812061260091614232565b5050600090815260116020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169055565b6040517f3ebe8d6c00000000000000000000000000000000000000000000000000000000815260048101839052600090819081903090633ebe8d6c9060240160206040518083038186803b15801561268f57600080fd5b505afa1580156126a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c791906149f3565b90508315806126d65750808410155b156126df578093505b60008581526012602052604081205485919061ffff16805b6000898152600e6020908152604080832061ffff8516845282528083208054825181850281018501909352808352919290919083018282801561275957602002820191906000526020600020905b815481526020019060010190808311612745575b5050505050905060008061276d8388613b1f565b909250905061277c8287615297565b95506127888188615410565b96506000871161279a575050506127b0565b50505080806127a8906154ab565b9150506126f7565b5090979596505050505050565b6000606060005a905060006127d4858701876147e7565b60008181526009602090815260408083205460089092528220549293509190838367ffffffffffffffff81111561280d5761280d6156be565b6040519080825280601f01601f191660200182016040528015612837576020820181803683370190505b50604051602001612849929190615127565b60405160208183030381529060405290506000612864613ba4565b90506000612871866129fa565b90505b835a6128809089615410565b61288c90612710615297565b10156128cd5781406000908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055612874565b806128e5576000839850985050505050505050611684565b6040518060400160405280600981526020017f6665656449444865780000000000000000000000000000000000000000000000815250601a6040518060400160405280600b81526020017f626c6f636b4e756d626572000000000000000000000000000000000000000000815250848960405160200161296791815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f7ddd933e0000000000000000000000000000000000000000000000000000000082526129c99594939291600401614e2f565b60405180910390fd5b600f60205282600052604060002060205281600052604060002081815481106112e957600080fd5b600081815260056020526040812054612a1557506001919050565b600082815260036020908152604080832054600490925290912054612a38613ba4565b612a429190615410565b101592915050565b60015473ffffffffffffffffffffffffffffffffffffffff163314612acb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064016129c9565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6040517fa5f589340000000000000000000000000000000000000000000000000000000081526004810183905260009081908190309063a5f589349060240160206040518083038186803b158015612b9e57600080fd5b505afa158015612bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd691906149f3565b9050831580612be55750808410155b15612bee578093505b60008581526011602052604081205485919061ffff16805b6000898152600f6020908152604080832061ffff85168452825280832080548251818502810185019093528083529192909190830182828015612c6857602002820191906000526020600020905b815481526020019060010190808311612c54575b50505050509050600080612c7c8388613b1f565b9092509050612c8b8287615297565b9550612c978188615410565b965060008711612ca9575050506127b0565b5050508080612cb7906154ab565b915050612c06565b6017546040517f0d0be14700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630d0be14790612d19908690869086906004016150d3565b600060405180830381600087803b158015612d3357600080fd5b505af1158015612d47573d6000803e3d6000fd5b5050506000848152600b60205260409020612d6491508383614250565b50505050565b6000838152600e6020908152604080832061ffff85168452825280832080548251818502810185019093528083528493830182828015612dc957602002820191906000526020600020905b815481526020019060010190808311612db5575b50505050509050612ddc818583516139bf565b95945050505050565b6000838152600f6020908152604080832061ffff85168452825280832080548251818502810185019093528083528493830182828015612dc95760200282019190600052602060002090815481526020019060010190808311612db55750505050509050612ddc818583516139bf565b6060806000612e6460136139a9565b905060008167ffffffffffffffff811115612e8157612e816156be565b604051908082528060200260200182016040528015612eaa578160200160208202803683370190505b50905060008267ffffffffffffffff811115612ec857612ec86156be565b604051908082528060200260200182016040528015612ef1578160200160208202803683370190505b50905060005b838110156115fc576000612f0c6013836139b3565b6000818152600d6020908152604080832080548251818502810185019093528083529495509293909291830182828015612f6557602002820191906000526020600020905b815481526020019060010190808311612f51575b5050505050905081858481518110612f7f57612f7f61568f565b602002602001018181525050612f97818a83516139bf565b848481518110612fa957612fa961568f565b60200260200101818152505050508080612fc290615596565b915050612ef7565b6040805161014081018252600461010082019081527f746573740000000000000000000000000000000000000000000000000000000061012083015281528151602081810184526000808352818401929092523083850181905263ffffffff8916606085015260808401528351808201855282815260a08401528351908101909352825260c08101919091526bffffffffffffffffffffffff841660e082015260165460155473ffffffffffffffffffffffffffffffffffffffff9182169163095ea7b3911661309d60ff8a1688615368565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526bffffffffffffffffffffffff166024820152604401602060405180830381600087803b15801561311657600080fd5b505af115801561312a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061314e91906147cc565b5060008660ff1667ffffffffffffffff81111561316d5761316d6156be565b604051908082528060200260200182016040528015613196578160200160208202803683370190505b50905060005b8760ff168160ff1610156132095760006131b584613cd8565b905080838360ff16815181106131cd576131cd61568f565b60209081029190910181019190915260009182526008815260408083208890556007909152902084905580613201816155e2565b91505061319c565b507f2ee10f7eb180441fb9fbba75b10c0162b5390b557712c93426243ca8f383c711816040516132399190614da4565b60405180910390a150505050505050565b6016546017546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526bffffffffffffffffffffffff8416602482015291169063095ea7b390604401602060405180830381600087803b1580156132cd57600080fd5b505af11580156132e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330591906147cc565b506017546040517f948108f7000000000000000000000000000000000000000000000000000000008152600481018490526bffffffffffffffffffffffff8316602482015273ffffffffffffffffffffffffffffffffffffffff9091169063948108f790604401600060405180830381600087803b15801561338657600080fd5b505af115801561339a573d6000803e3d6000fd5b5050604080518581526bffffffffffffffffffffffff851660208201527f8137dc366612bf502338bd8951f835ad8ceba421c4eb3d79c7f9b3ce0ac4762e93500190506118a0565b6000828152600f6020908152604080832061ffff851684528252918290208054835181840281018401909452808452606093928301828280156121d257602002820191906000526020600020908154815260200190600101908083116121be575050505050905092915050565b6000818152600d60209081526040918290208054835181840281018401909452808452606093928301828280156134a557602002820191906000526020600020905b815481526020019060010190808311613491575b50505050509050919050565b601a81815481106134c157600080fd5b9060005260206000200160009150905080546122f0906154e7565b60008181526011602052604081205461ffff1681805b8261ffff168161ffff1611611a4b576000858152600f6020908152604080832061ffff851684529091529020546135299083615297565b91508061353581615574565b9150506134f2565b6017546040517fa72aa27e0000000000000000000000000000000000000000000000000000000081526004810184905263ffffffff8316602482015273ffffffffffffffffffffffffffffffffffffffff9091169063a72aa27e90604401600060405180830381600087803b1580156135b557600080fd5b505af11580156135c9573d6000803e3d6000fd5b505050600092835250600a602052604090912063ffffffff9091169055565b6017546040517f744bfe610000000000000000000000000000000000000000000000000000000081526004810183905230602482015273ffffffffffffffffffffffffffffffffffffffff9091169063744bfe6190604401600060405180830381600087803b15801561365a57600080fd5b505af11580156122d0573d6000803e3d6000fd5b8060005b818163ffffffff161015612d64573063af953a4a858563ffffffff851681811061369e5761369e61568f565b905060200201356040518263ffffffff1660e01b81526004016136c391815260200190565b600060405180830381600087803b1580156136dd57600080fd5b505af11580156136f1573d6000803e3d6000fd5b505050508080613700906155c8565b915050613672565b6017546040517fc80480220000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff9091169063c804802290602401600060405180830381600087803b15801561377457600080fd5b505af1158015613788573d6000803e3d6000fd5b505050506111c1816013613dda90919063ffffffff16565b6000828152600d602090815260408083208054825181850281018501909352808352849384939291908301828280156137f857602002820191906000526020600020905b8154815260200190600101908083116137e4575b5050505050905061167e8185613b1f565b8060005b81811015612d645760008484838181106138295761382961568f565b9050602002013590503073ffffffffffffffffffffffffffffffffffffffff16637e7a46dc828360405160200161386291815260200190565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161388e929190615127565b600060405180830381600087803b1580156138a857600080fd5b505af11580156138bc573d6000803e3d6000fd5b505050505080806138cc90615596565b91505061380d565b600d60205281600052604060002081815481106138f057600080fd5b90600052602060002001600091509150505481565b61390d613c55565b61391681613de6565b50565b601060205281600052604060002081815481106138f057600080fd5b6000828152600f6020908152604080832061ffff85168452825280832080548251818502810185019093528083528493849392919083018282801561166c5760200282019190600052602060002090815481526020019060010190808311611658575050505050905061167e818251613b1f565b60006112bb825490565b60006119108383613edc565b825160009081908315806139d35750808410155b156139dc578093505b60008467ffffffffffffffff8111156139f7576139f76156be565b604051908082528060200260200182016040528015613a20578160200160208202803683370190505b509050600092505b84831015613a8e57866001613a3d8585615410565b613a479190615410565b81518110613a5757613a5761568f565b6020026020010151818481518110613a7157613a7161568f565b602090810291909101015282613a8681615596565b935050613a28565b613aa781600060018451613aa29190615410565b613f06565b8560641415613ae1578060018251613abf9190615410565b81518110613acf57613acf61568f565b60200260200101519350505050611910565b806064825188613af1919061532b565b613afb9190615317565b81518110613b0b57613b0b61568f565b602002602001015193505050509392505050565b815160009081908190841580613b355750808510155b15613b3e578094505b60008092505b85831015613b9a57866001613b598585615410565b613b639190615410565b81518110613b7357613b7361568f565b602002602001015181613b869190615297565b905082613b9281615596565b935050613b44565b9694955050505050565b60007f000000000000000000000000000000000000000000000000000000000000000015613c5057606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b158015613c1357600080fd5b505afa158015613c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c4b91906149f3565b905090565b504390565b60005473ffffffffffffffffffffffffffffffffffffffff163314613cd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e65720000000000000000000060448201526064016129c9565b565b6015546040517f08b79da4000000000000000000000000000000000000000000000000000000008152600091829173ffffffffffffffffffffffffffffffffffffffff909116906308b79da490613d33908690600401614fb3565b602060405180830381600087803b158015613d4d57600080fd5b505af1158015613d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d8591906149f3565b9050613d92601382614087565b5060608301516000828152600a6020908152604080832063ffffffff90941690935560a0860151600b8252929091208251613dd393919291909101906142ee565b5092915050565b60006119108383614093565b73ffffffffffffffffffffffffffffffffffffffff8116331415613e66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016129c9565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000826000018281548110613ef357613ef361568f565b9060005260206000200154905092915050565b818180821415613f17575050505050565b6000856002613f26878761539c565b613f3091906152af565b613f3a9087615223565b81518110613f4a57613f4a61568f565b602002602001015190505b818313614059575b80868481518110613f7057613f7061568f565b60200260200101511015613f905782613f888161553b565b935050613f5d565b858281518110613fa257613fa261568f565b6020026020010151811015613fc35781613fbb81615453565b925050613f90565b81831361405457858281518110613fdc57613fdc61568f565b6020026020010151868481518110613ff657613ff661568f565b60200260200101518785815181106140105761401061568f565b602002602001018885815181106140295761402961568f565b602090810291909101019190915252826140428161553b565b935050818061405090615453565b9250505b613f55565b8185121561406c5761406c868684613f06565b8383121561407f5761407f868486613f06565b505050505050565b60006119108383614186565b6000818152600183016020526040812054801561417c5760006140b7600183615410565b85549091506000906140cb90600190615410565b90508181146141305760008660000182815481106140eb576140eb61568f565b906000526020600020015490508087600001848154811061410e5761410e61568f565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061414157614141615660565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506112bb565b60009150506112bb565b60008181526001830160205260408120546141cd575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556112bb565b5060006112bb565b828054828255906000526020600020908101928215614222579160200282015b8281111561422257825180516142129184916020909101906142ee565b50916020019190600101906141f5565b5061422e929150614362565b5090565b5080546000825590600052602060002090810190613916919061437f565b82805461425c906154e7565b90600052602060002090601f01602090048101928261427e57600085556142e2565b82601f106142b5578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008235161785556142e2565b828001600101855582156142e2579182015b828111156142e25782358255916020019190600101906142c7565b5061422e92915061437f565b8280546142fa906154e7565b90600052602060002090601f01602090048101928261431c57600085556142e2565b82601f1061433557805160ff19168380011785556142e2565b828001600101855582156142e2579182015b828111156142e2578251825591602001919060010190614347565b8082111561422e5760006143768282614394565b50600101614362565b5b8082111561422e5760008155600101614380565b5080546143a0906154e7565b6000825580601f106143b0575050565b601f016020900490600052602060002090810190613916919061437f565b60006143e16143dc846151dd565b61516a565b90508281528383830111156143f557600080fd5b828260208301376000602084830101529392505050565b8051614417816156ed565b919050565b60008083601f84011261442e57600080fd5b50813567ffffffffffffffff81111561444657600080fd5b6020830191508360208260051b850101111561168457600080fd5b8051801515811461441757600080fd5b60008083601f84011261448357600080fd5b50813567ffffffffffffffff81111561449b57600080fd5b60208301915083602082850101111561168457600080fd5b600082601f8301126144c457600080fd5b611910838335602085016143ce565b600082601f8301126144e457600080fd5b81516144f26143dc826151dd565b81815284602083860101111561450757600080fd5b614518826020830160208701615427565b949350505050565b803561ffff8116811461441757600080fd5b80516144178161570f565b805167ffffffffffffffff8116811461441757600080fd5b803560ff8116811461441757600080fd5b805161441781615721565b60006020828403121561458357600080fd5b8135611910816156ed565b600080604083850312156145a157600080fd5b823567ffffffffffffffff808211156145b957600080fd5b818501915085601f8301126145cd57600080fd5b813560206145dd6143dc836151b9565b8083825282820191508286018a848660051b89010111156145fd57600080fd5b60005b858110156146385781358781111561461757600080fd5b6146258d87838c01016144b3565b8552509284019290840190600101614600565b5090975050508601359250508082111561465157600080fd5b5061465e858286016144b3565b9150509250929050565b6000602080838503121561467b57600080fd5b823567ffffffffffffffff8082111561469357600080fd5b818501915085601f8301126146a757600080fd5b81356146b56143dc826151b9565b80828252858201915085850189878560051b88010111156146d557600080fd5b60005b84811015614724578135868111156146ef57600080fd5b8701603f81018c1361470057600080fd5b6147118c8a830135604084016143ce565b85525092870192908701906001016146d8565b50909998505050505050505050565b6000806020838503121561474657600080fd5b823567ffffffffffffffff81111561475d57600080fd5b6147698582860161441c565b90969095509350505050565b60008060006040848603121561478a57600080fd5b833567ffffffffffffffff8111156147a157600080fd5b6147ad8682870161441c565b90945092505060208401356147c18161570f565b809150509250925092565b6000602082840312156147de57600080fd5b61191082614461565b6000602082840312156147f957600080fd5b5035919050565b6000806020838503121561481357600080fd5b823567ffffffffffffffff81111561482a57600080fd5b61476985828601614471565b60006020828403121561484857600080fd5b8151611910816156ed565b600080600080600060a0868803121561486b57600080fd5b85516003811061487a57600080fd5b602087015190955061488b8161570f565b604087015190945061489c8161570f565b60608701519093506148ad816156ed565b80925050608086015190509295509295909350565b6000602082840312156148d457600080fd5b815167ffffffffffffffff808211156148ec57600080fd5b90830190610160828603121561490157600080fd5b614909615140565b6149128361440c565b81526149206020840161440c565b602082015261493160408401614532565b604082015260608301518281111561494857600080fd5b614954878286016144d3565b60608301525061496660808401614566565b608082015261497760a0840161440c565b60a082015261498860c0840161453d565b60c082015261499960e08401614532565b60e08201526101006149ac818501614566565b908201526101206149be848201614461565b9082015261014083810151838111156149d657600080fd5b6149e2888287016144d3565b918301919091525095945050505050565b600060208284031215614a0557600080fd5b5051919050565b600080600060408486031215614a2157600080fd5b83359250602084013567ffffffffffffffff811115614a3f57600080fd5b614a4b86828701614471565b9497909650939450505050565b60008060408385031215614a6b57600080fd5b82359150614a7b60208401614520565b90509250929050565b600080600060608486031215614a9957600080fd5b83359250614aa960208501614520565b9150604084013590509250925092565b60008060408385031215614acc57600080fd5b50508035926020909101359150565b600080600060608486031215614af057600080fd5b8335925060208401359150614b0760408501614520565b90509250925092565b600080600060608486031215614b2557600080fd5b505081359360208301359350604090920135919050565b60008060408385031215614b4f57600080fd5b823591506020830135614b618161570f565b809150509250929050565b60008060408385031215614b7f57600080fd5b823591506020830135614b6181615721565b600060208284031215614ba357600080fd5b61191082614555565b600080600080600060a08688031215614bc457600080fd5b614bcd86614555565b94506020860135614bdd8161570f565b93506040860135614bed81615721565b94979396509394606081013594506080013592915050565b600060208284031215614c1757600080fd5b813561191081615721565b600060208284031215614c3457600080fd5b815161191081615721565b600081518084526020808501945080840160005b83811015614c6f57815187529582019590820190600101614c53565b509495945050505050565b60008151808452614c92816020860160208601615427565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000604082016040835280855180835260608501915060608160051b8601019250602080880160005b83811015614d39577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552614d27868351614c7a565b95509382019390820190600101614ced565b505085840381870152505050612ddc8185614c7a565b6020815281602082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614d8857600080fd5b8260051b80856040850137600092016040019182525092915050565b6020815260006119106020830184614c3f565b604081526000614dca6040830185614c3f565b8281036020840152612ddc8185614c3f565b821515815260406020820152600061190d6040830184614c7a565b6020815260006119106020830184614c7a565b604081526000614e1d6040830185614c7a565b8281036020840152612ddc8185614c7a565b60a081526000614e4260a0830188614c7a565b6020838203818501528188548084528284019150828160051b85010160008b8152848120815b84811015614f74578784037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001865281548390600181811c9080831680614eb057607f831692505b8b8310811415614ee7577f4e487b710000000000000000000000000000000000000000000000000000000088526022600452602488fd5b82895260208901818015614f025760018114614f3157614f5b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861682528d82019650614f5b565b6000898152602090208a5b86811015614f5557815484820152908501908f01614f3c565b83019750505b505050988a019892965050509190910190600101614e68565b5050508681036040880152614f89818b614c7a565b9450505050508460608401528281036080840152614fa78185614c7a565b98975050505050505050565b6020815260008251610100806020850152614fd2610120850183614c7a565b915060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08086850301604087015261500e8483614c7a565b935060408701519150615039606087018373ffffffffffffffffffffffffffffffffffffffff169052565b606087015163ffffffff811660808801529150608087015173ffffffffffffffffffffffffffffffffffffffff811660a0880152915060a08701519150808685030160c087015261508a8483614c7a565b935060c08701519150808685030160e0870152506150a88382614c7a565b92505060e08501516150c9828601826bffffffffffffffffffffffff169052565b5090949350505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b82815260406020820152600061190d6040830184614c7a565b604051610160810167ffffffffffffffff81118282101715615164576151646156be565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156151b1576151b16156be565b604052919050565b600067ffffffffffffffff8211156151d3576151d36156be565b5060051b60200190565b600067ffffffffffffffff8211156151f7576151f76156be565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561525d5761525d615602565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561529157615291615602565b50500190565b600082198211156152aa576152aa615602565b500190565b6000826152be576152be615631565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561531257615312615602565b500590565b60008261532657615326615631565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561536357615363615602565b500290565b60006bffffffffffffffffffffffff8083168185168183048111821515161561539357615393615602565b02949350505050565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156153d6576153d6615602565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01831381161561540a5761540a615602565b50500390565b60008282101561542257615422615602565b500390565b60005b8381101561544257818101518382015260200161542a565b83811115612d645750506000910152565b60007f800000000000000000000000000000000000000000000000000000000000000082141561548557615485615602565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600061ffff8216806154bf576154bf615602565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b600181811c908216806154fb57607f821691505b60208210811415615535577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561556d5761556d615602565b5060010190565b600061ffff8083168181141561558c5761558c615602565b6001019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561556d5761556d615602565b600063ffffffff8083168181141561558c5761558c615602565b600060ff821660ff8114156155f9576155f9615602565b60010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461391657600080fd5b63ffffffff8116811461391657600080fd5b6bffffffffffffffffffffffff8116811461391657600080fdfea164736f6c6343000806000a307834353534343832643535353334343264343135323432343935343532353534643264353434353533353434653435353430303030303030303030303030303030307834323534343332643535353334343264343135323432343935343532353534643264353434353533353434653435353430303030303030303030303030303030307835353533343434333264353535333434326434313532343234393534353235353464326435343435353335343465343535343030303030303030303030303030", } var VerifiableLoadMercuryUpkeepABI = VerifiableLoadMercuryUpkeepMetaData.ABI @@ -1361,16 +1361,16 @@ func (_VerifiableLoadMercuryUpkeep *VerifiableLoadMercuryUpkeepTransactorSession return _VerifiableLoadMercuryUpkeep.Contract.BatchSetIntervals(&_VerifiableLoadMercuryUpkeep.TransactOpts, upkeepIds, interval) } -func (_VerifiableLoadMercuryUpkeep *VerifiableLoadMercuryUpkeepTransactor) BatchUpdateCheckData(opts *bind.TransactOpts, upkeepIds []*big.Int) (*types.Transaction, error) { - return _VerifiableLoadMercuryUpkeep.contract.Transact(opts, "batchUpdateCheckData", upkeepIds) +func (_VerifiableLoadMercuryUpkeep *VerifiableLoadMercuryUpkeepTransactor) BatchUpdatePipelineData(opts *bind.TransactOpts, upkeepIds []*big.Int) (*types.Transaction, error) { + return _VerifiableLoadMercuryUpkeep.contract.Transact(opts, "batchUpdatePipelineData", upkeepIds) } -func (_VerifiableLoadMercuryUpkeep *VerifiableLoadMercuryUpkeepSession) BatchUpdateCheckData(upkeepIds []*big.Int) (*types.Transaction, error) { - return _VerifiableLoadMercuryUpkeep.Contract.BatchUpdateCheckData(&_VerifiableLoadMercuryUpkeep.TransactOpts, upkeepIds) +func (_VerifiableLoadMercuryUpkeep *VerifiableLoadMercuryUpkeepSession) BatchUpdatePipelineData(upkeepIds []*big.Int) (*types.Transaction, error) { + return _VerifiableLoadMercuryUpkeep.Contract.BatchUpdatePipelineData(&_VerifiableLoadMercuryUpkeep.TransactOpts, upkeepIds) } -func (_VerifiableLoadMercuryUpkeep *VerifiableLoadMercuryUpkeepTransactorSession) BatchUpdateCheckData(upkeepIds []*big.Int) (*types.Transaction, error) { - return _VerifiableLoadMercuryUpkeep.Contract.BatchUpdateCheckData(&_VerifiableLoadMercuryUpkeep.TransactOpts, upkeepIds) +func (_VerifiableLoadMercuryUpkeep *VerifiableLoadMercuryUpkeepTransactorSession) BatchUpdatePipelineData(upkeepIds []*big.Int) (*types.Transaction, error) { + return _VerifiableLoadMercuryUpkeep.Contract.BatchUpdatePipelineData(&_VerifiableLoadMercuryUpkeep.TransactOpts, upkeepIds) } func (_VerifiableLoadMercuryUpkeep *VerifiableLoadMercuryUpkeepTransactor) BatchWithdrawLinks(opts *bind.TransactOpts, upkeepIds []*big.Int) (*types.Transaction, error) { @@ -1553,16 +1553,16 @@ func (_VerifiableLoadMercuryUpkeep *VerifiableLoadMercuryUpkeepTransactorSession return _VerifiableLoadMercuryUpkeep.Contract.TransferOwnership(&_VerifiableLoadMercuryUpkeep.TransactOpts, to) } -func (_VerifiableLoadMercuryUpkeep *VerifiableLoadMercuryUpkeepTransactor) UpdateCheckData(opts *bind.TransactOpts, upkeepId *big.Int, checkData []byte) (*types.Transaction, error) { - return _VerifiableLoadMercuryUpkeep.contract.Transact(opts, "updateCheckData", upkeepId, checkData) +func (_VerifiableLoadMercuryUpkeep *VerifiableLoadMercuryUpkeepTransactor) UpdateUpkeepPipelineData(opts *bind.TransactOpts, upkeepId *big.Int, pipelineData []byte) (*types.Transaction, error) { + return _VerifiableLoadMercuryUpkeep.contract.Transact(opts, "updateUpkeepPipelineData", upkeepId, pipelineData) } -func (_VerifiableLoadMercuryUpkeep *VerifiableLoadMercuryUpkeepSession) UpdateCheckData(upkeepId *big.Int, checkData []byte) (*types.Transaction, error) { - return _VerifiableLoadMercuryUpkeep.Contract.UpdateCheckData(&_VerifiableLoadMercuryUpkeep.TransactOpts, upkeepId, checkData) +func (_VerifiableLoadMercuryUpkeep *VerifiableLoadMercuryUpkeepSession) UpdateUpkeepPipelineData(upkeepId *big.Int, pipelineData []byte) (*types.Transaction, error) { + return _VerifiableLoadMercuryUpkeep.Contract.UpdateUpkeepPipelineData(&_VerifiableLoadMercuryUpkeep.TransactOpts, upkeepId, pipelineData) } -func (_VerifiableLoadMercuryUpkeep *VerifiableLoadMercuryUpkeepTransactorSession) UpdateCheckData(upkeepId *big.Int, checkData []byte) (*types.Transaction, error) { - return _VerifiableLoadMercuryUpkeep.Contract.UpdateCheckData(&_VerifiableLoadMercuryUpkeep.TransactOpts, upkeepId, checkData) +func (_VerifiableLoadMercuryUpkeep *VerifiableLoadMercuryUpkeepTransactorSession) UpdateUpkeepPipelineData(upkeepId *big.Int, pipelineData []byte) (*types.Transaction, error) { + return _VerifiableLoadMercuryUpkeep.Contract.UpdateUpkeepPipelineData(&_VerifiableLoadMercuryUpkeep.TransactOpts, upkeepId, pipelineData) } func (_VerifiableLoadMercuryUpkeep *VerifiableLoadMercuryUpkeepTransactor) WithdrawLinks(opts *bind.TransactOpts) (*types.Transaction, error) { @@ -3155,7 +3155,7 @@ type VerifiableLoadMercuryUpkeepInterface interface { BatchSetIntervals(opts *bind.TransactOpts, upkeepIds []*big.Int, interval uint32) (*types.Transaction, error) - BatchUpdateCheckData(opts *bind.TransactOpts, upkeepIds []*big.Int) (*types.Transaction, error) + BatchUpdatePipelineData(opts *bind.TransactOpts, upkeepIds []*big.Int) (*types.Transaction, error) BatchWithdrawLinks(opts *bind.TransactOpts, upkeepIds []*big.Int) (*types.Transaction, error) @@ -3187,7 +3187,7 @@ type VerifiableLoadMercuryUpkeepInterface interface { TransferOwnership(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) - UpdateCheckData(opts *bind.TransactOpts, upkeepId *big.Int, checkData []byte) (*types.Transaction, error) + UpdateUpkeepPipelineData(opts *bind.TransactOpts, upkeepId *big.Int, pipelineData []byte) (*types.Transaction, error) WithdrawLinks(opts *bind.TransactOpts) (*types.Transaction, error) diff --git a/core/gethwrappers/generated/verifiable_load_upkeep_wrapper/verifiable_load_upkeep_wrapper.go b/core/gethwrappers/generated/verifiable_load_upkeep_wrapper/verifiable_load_upkeep_wrapper.go index 59a3544c02a..38c77e88b31 100644 --- a/core/gethwrappers/generated/verifiable_load_upkeep_wrapper/verifiable_load_upkeep_wrapper.go +++ b/core/gethwrappers/generated/verifiable_load_upkeep_wrapper/verifiable_load_upkeep_wrapper.go @@ -31,8 +31,8 @@ var ( ) var VerifiableLoadUpkeepMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrarAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useArb\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"IndexOutOfRange\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"FundsAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNum\",\"type\":\"uint256\"}],\"name\":\"InsufficientFunds\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"firstPerformBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"}],\"name\":\"PerformingUpkeep\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Received\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRegistrar\",\"type\":\"address\"}],\"name\":\"RegistrarSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNum\",\"type\":\"uint256\"}],\"name\":\"UpkeepTopUp\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"UpkeepsCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"UpkeepsRegistered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BUCKET_SIZE\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TIMESTAMP_INTERVAL\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"addFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addLinkAmount\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"batchCancelUpkeeps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"number\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"checkGasToBurn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"performGasToBurn\",\"type\":\"uint256\"}],\"name\":\"batchRegisterUpkeeps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint32\",\"name\":\"interval\",\"type\":\"uint32\"}],\"name\":\"batchSetIntervals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"batchUpdateCheckData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"batchWithdrawLinks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"bucketedDelays\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"buckets\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"cancelUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"checkDatas\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"checkGasToBurns\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"}],\"name\":\"checkUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"counters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"delays\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"dummyMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"eligible\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"firstPerformBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gasLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxCount\",\"type\":\"uint256\"}],\"name\":\"getActiveUpkeepIDs\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"bucket\",\"type\":\"uint16\"}],\"name\":\"getBucketedDelays\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getBucketedDelaysLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getDelays\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getDelaysLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"bucket\",\"type\":\"uint16\"}],\"name\":\"getDelaysLengthAtBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"timestampBucket\",\"type\":\"uint16\"}],\"name\":\"getDelaysLengthAtTimestampBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"}],\"name\":\"getPxBucketedDelaysForAllUpkeeps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"}],\"name\":\"getPxDelayForAllUpkeeps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"bucket\",\"type\":\"uint16\"}],\"name\":\"getPxDelayInBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"timestampBucket\",\"type\":\"uint16\"}],\"name\":\"getPxDelayInTimestampBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"getPxDelayLastNPerforms\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"getSumBucketedDelayLastNPerforms\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"bucket\",\"type\":\"uint16\"}],\"name\":\"getSumDelayInBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"timestampBucket\",\"type\":\"uint16\"}],\"name\":\"getSumDelayInTimestampBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"getSumDelayLastNPerforms\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"getSumTimestampBucketedDelayLastNPerforms\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getTimestampBucketedDelaysLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"timestampBucket\",\"type\":\"uint16\"}],\"name\":\"getTimestampDelays\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"intervals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lastTopUpBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkToken\",\"outputs\":[{\"internalType\":\"contractLinkTokenInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minBalanceThresholdMultiplier\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"performDataSizes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"performGasToBurns\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"}],\"name\":\"performUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"previousPerformBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registrar\",\"outputs\":[{\"internalType\":\"contractKeeperRegistrar2_0\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contractKeeperRegistry2_0\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"setAddLinkAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setCheckGasToBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractKeeperRegistrar2_0\",\"name\":\"newRegistrar\",\"type\":\"address\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_interval\",\"type\":\"uint256\"}],\"name\":\"setInterval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"newMinBalanceThresholdMultiplier\",\"type\":\"uint8\"}],\"name\":\"setMinBalanceThresholdMultiplier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setPerformDataSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setPerformGasToBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"name\":\"setUpkeepGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newInterval\",\"type\":\"uint256\"}],\"name\":\"setUpkeepTopUpCheckInterval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestampBuckets\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestampDelays\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"}],\"name\":\"updateCheckData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"upkeepTopUpCheckInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"useArbitrumBlockNum\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawLinks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"withdrawLinks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60e06040526005601855601980546001600160681b0319166c140000000002c68af0bb140000179055601960f21b60a05260e160f41b60c0523480156200004557600080fd5b50604051620053bc380380620053bc833981016040819052620000689162000320565b81813380600081620000c15760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000f457620000f4816200025a565b5050601580546001600160a01b0319166001600160a01b0385169081179091556040805163850af0cb60e01b815290516000935063850af0cb9160048082019260a092909190829003018186803b1580156200014f57600080fd5b505afa15801562000164573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018a91906200038a565b50601780546001600160a01b0319166001600160a01b038381169190911790915560155460408051631b6b6d2360e01b8152905193975091169450631b6b6d2393506004808201935060209291829003018186803b158015620001ec57600080fd5b505afa15801562000201573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000227919062000363565b601680546001600160a01b0319166001600160a01b039290921691909117905550151560f81b6080525062000413915050565b6001600160a01b038116331415620002b55760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401620000b8565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b805163ffffffff811681146200031b57600080fd5b919050565b600080604083850312156200033457600080fd5b82516200034181620003fa565b602084015190925080151581146200035857600080fd5b809150509250929050565b6000602082840312156200037657600080fd5b81516200038381620003fa565b9392505050565b600080600080600060a08688031215620003a357600080fd5b855160038110620003b357600080fd5b9450620003c36020870162000306565b9350620003d36040870162000306565b92506060860151620003e581620003fa565b80925050608086015190509295509295909350565b6001600160a01b03811681146200041057600080fd5b50565b60805160f81c60a05160f01c60c05160f01c614f5b620004616000396000818161064d015261199e0152600081816105230152611ab20152600081816108fc015261383f0152614f5b6000f3fe6080604052600436106104695760003560e01c80637b10399911610243578063a6c60d8911610143578063d6051a72116100bb578063f2fde38b1161008a578063fba7ffa31161006f578063fba7ffa314610fbb578063fbfb4f7614610fe8578063fcdc1f631461100857600080fd5b8063f2fde38b14610f7b578063fb0ceb0414610f9b57600080fd5b8063d6051a7214610ef8578063dbef701e14610f18578063e0114adb14610f38578063e455308314610f6557600080fd5b8063b0971e1a11610112578063c357f1f3116100f7578063c357f1f314610e1f578063c804802214610e79578063d355852814610e9957600080fd5b8063b0971e1a14610dc1578063becde0e114610dff57600080fd5b8063a6c60d8914610d34578063a72aa27e14610d54578063a79c404314610d74578063af953a4a14610da157600080fd5b8063948108f7116101d65780639b51fb0d116101a55780639d385eaa1161018a5780639d385eaa14610cd45780639fab438614610cf4578063a5f5893414610d1457600080fd5b80639b51fb0d14610c835780639bb8651114610cb457600080fd5b8063948108f714610bda57806399cc6b0b14610bfa5780639ac542eb14610c1a5780639b42935414610c5657600080fd5b80638bc7b772116102125780638bc7b77214610b425780638da5cb5b14610b625780638fcb3fba14610b8d5780639095aa3514610bba57600080fd5b80637b10399914610ab55780637e4087b814610ae25780638237831714610b0257806387dfa90014610b2257600080fd5b806351c98be31161036957806369cdbadb116102e15780637145f11b116102b057806376721303116102955780637672130314610a53578063776898c814610a8057806379ba509714610aa057600080fd5b80637145f11b146109f657806373644cce14610a2657600080fd5b806369cdbadb1461094e57806369e9b7731461097b5780636e04ff0d146109a85780637137a702146109d657600080fd5b80635f17e61611610338578063636092e81161031d578063636092e8146108a8578063642f6cef146108ea578063643b34e91461092e57600080fd5b80635f17e6161461085b57806360457ff51461087b57600080fd5b806351c98be3146107cc57806357970e93146107ec57806358c52c04146108195780635d4ee7f31461084657600080fd5b806329f0e496116103fc57806333774d1c116103cb5780634585e33b116103b05780634585e33b1461075f57806345d2ec171461077f57806346e7a63e1461079f57600080fd5b806333774d1c1461070e5780633ebe8d6c1461073f57600080fd5b806329f0e4961461063b5780632a9032d31461066f5780632b20e3971461068f578063328ffd11146106e157600080fd5b80631bee0080116104385780631bee008014610596578063206c32e8146105c457806320e3dbd4146105f957806328c4b57b1461061b57600080fd5b806306e3b632146104ad578063077ac621146104e357806312c5502714610511578063177b0eb91461055857600080fd5b366104a857604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b3480156104b957600080fd5b506104cd6104c8366004614515565b611035565b6040516104da9190614775565b60405180910390f35b3480156104ef57600080fd5b506105036104fe3660046144e0565b611131565b6040519081526020016104da565b34801561051d57600080fd5b506105457f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff90911681526020016104da565b34801561056457600080fd5b506105036105733660046144b4565b6000918252600f6020908152604080842061ffff93909316845291905290205490565b3480156105a257600080fd5b506105b66105b13660046141d0565b61116f565b6040516104da929190614788565b3480156105d057600080fd5b506105e46105df3660046144b4565b611478565b604080519283526020830191909152016104da565b34801561060557600080fd5b506106196106143660046140ff565b6114fb565b005b34801561062757600080fd5b5061050361063636600461456c565b61171c565b34801561064757600080fd5b506105457f000000000000000000000000000000000000000000000000000000000000000081565b34801561067b57600080fd5b5061061961068a36600461411c565b611787565b34801561069b57600080fd5b506015546106bc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016104da565b3480156106ed57600080fd5b506105036106fc3660046141d0565b60036020526000908152604090205481565b34801561071a57600080fd5b506105456107293660046141d0565b60116020526000908152604090205461ffff1681565b34801561074b57600080fd5b5061050361075a3660046141d0565b61185a565b34801561076b57600080fd5b5061061961077a3660046141e9565b6118c3565b34801561078b57600080fd5b506104cd61079a3660046144b4565b611f65565b3480156107ab57600080fd5b506105036107ba3660046141d0565b600a6020526000908152604090205481565b3480156107d857600080fd5b506106196107e736600461415e565b611fd4565b3480156107f857600080fd5b506016546106bc9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561082557600080fd5b506108396108343660046141d0565b612078565b6040516104da91906147c8565b34801561085257600080fd5b50610619612112565b34801561086757600080fd5b50610619610876366004614515565b61226b565b34801561088757600080fd5b506105036108963660046141d0565b60076020526000908152604090205481565b3480156108b457600080fd5b506019546108cd906bffffffffffffffffffffffff1681565b6040516bffffffffffffffffffffffff90911681526020016104da565b3480156108f657600080fd5b5061091e7f000000000000000000000000000000000000000000000000000000000000000081565b60405190151581526020016104da565b34801561093a57600080fd5b506105e4610949366004614515565b6123dd565b34801561095a57600080fd5b506105036109693660046141d0565b60086020526000908152604090205481565b34801561098757600080fd5b50610619610996366004614515565b60009182526008602052604090912055565b3480156109b457600080fd5b506109c86109c33660046141e9565b612562565b6040516104da9291906147ad565b3480156109e257600080fd5b506105036109f13660046144e0565b61268f565b348015610a0257600080fd5b5061091e610a113660046141d0565b600c6020526000908152604090205460ff1681565b348015610a3257600080fd5b50610503610a413660046141d0565b6000908152600d602052604090205490565b348015610a5f57600080fd5b50610503610a6e3660046141d0565b60046020526000908152604090205481565b348015610a8c57600080fd5b5061091e610a9b3660046141d0565b6126b7565b348015610aac57600080fd5b50610619612707565b348015610ac157600080fd5b506017546106bc9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610aee57600080fd5b506105e4610afd366004614515565b612809565b348015610b0e57600080fd5b50610503610b1d366004614537565b612981565b348015610b2e57600080fd5b50610503610b3d366004614537565b6129fc565b348015610b4e57600080fd5b506105b6610b5d3660046141d0565b612a6c565b348015610b6e57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166106bc565b348015610b9957600080fd5b50610503610ba83660046141d0565b60056020526000908152604090205481565b348015610bc657600080fd5b50610619610bd5366004614608565b612be1565b348015610be657600080fd5b50610619610bf53660046145c8565b612e61565b348015610c0657600080fd5b506104cd610c153660046144b4565b612ff9565b348015610c2657600080fd5b50601954610c44906c01000000000000000000000000900460ff1681565b60405160ff90911681526020016104da565b348015610c6257600080fd5b50610619610c71366004614515565b60009182526009602052604090912055565b348015610c8f57600080fd5b50610545610c9e3660046141d0565b60126020526000908152604090205461ffff1681565b348015610cc057600080fd5b50610619610ccf36600461411c565b613066565b348015610ce057600080fd5b506104cd610cef3660046141d0565b613137565b348015610d0057600080fd5b50610619610d0f3660046143e3565b613199565b348015610d2057600080fd5b50610503610d2f3660046141d0565b61323e565b348015610d4057600080fd5b50610619610d4f3660046141d0565b601855565b348015610d6057600080fd5b50610619610d6f366004614598565b61329f565b348015610d8057600080fd5b50610619610d8f366004614515565b60009182526007602052604090912055565b348015610dad57600080fd5b50610619610dbc3660046141d0565b61334a565b348015610dcd57600080fd5b50610503610ddc3660046144b4565b6000918252600e6020908152604080842061ffff93909316845291905290205490565b348015610e0b57600080fd5b50610619610e1a36600461411c565b6133d0565b348015610e2b57600080fd5b50610619610e3a366004614661565b601980547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff92909216919091179055565b348015610e8557600080fd5b50610619610e943660046141d0565b61346a565b348015610ea557600080fd5b50610619610eb43660046145ed565b6019805460ff9092166c01000000000000000000000000027fffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff909216919091179055565b348015610f0457600080fd5b506105e4610f13366004614515565b613502565b348015610f2457600080fd5b50610503610f33366004614515565b61356b565b348015610f4457600080fd5b50610503610f533660046141d0565b60096020526000908152604090205481565b348015610f7157600080fd5b5061050360185481565b348015610f8757600080fd5b50610619610f963660046140ff565b61359c565b348015610fa757600080fd5b50610503610fb6366004614515565b6135b0565b348015610fc757600080fd5b50610503610fd63660046141d0565b60066020526000908152604090205481565b348015610ff457600080fd5b506105e46110033660046144b4565b6135cc565b34801561101457600080fd5b506105036110233660046141d0565b60026020526000908152604090205481565b606060006110436013613640565b905080841061107e576040517f1390f2a100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826110905761108d8482614c14565b92505b60008367ffffffffffffffff8111156110ab576110ab614ed1565b6040519080825280602002602001820160405280156110d4578160200160208202803683370190505b50905060005b84811015611126576110f76110ef8288614a9b565b60139061364a565b82828151811061110957611109614ea2565b60209081029190910101528061111e81614da9565b9150506110da565b509150505b92915050565b600e602052826000526040600020602052816000526040600020818154811061115957600080fd5b9060005260206000200160009250925050505481565b606080600061117e6013613640565b905060008167ffffffffffffffff81111561119b5761119b614ed1565b6040519080825280602002602001820160405280156111c4578160200160208202803683370190505b50905060008267ffffffffffffffff8111156111e2576111e2614ed1565b60405190808252806020026020018201604052801561120b578160200160208202803683370190505b50905060005b8381101561146c57600061122660138361364a565b90508084838151811061123b5761123b614ea2565b6020908102919091018101919091526000828152601290915260408082205490517f3ebe8d6c0000000000000000000000000000000000000000000000000000000081526004810184905261ffff90911691903090633ebe8d6c9060240160206040518083038186803b1580156112b157600080fd5b505afa1580156112c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e991906143ca565b905060008167ffffffffffffffff81111561130657611306614ed1565b60405190808252806020026020018201604052801561132f578160200160208202803683370190505b506000858152600e6020526040812091925090815b8561ffff168161ffff16116114295761ffff8116600090815260208381526040808320805482518185028101850190935280835291929091908301828280156113ac57602002820191906000526020600020905b815481526020019060010190808311611398575b5050505050905060005b8151811015611414578181815181106113d1576113d1614ea2565b60200260200101518686806113e590614da9565b9750815181106113f7576113f7614ea2565b60209081029190910101528061140c81614da9565b9150506113b6565b5050808061142190614d87565b915050611344565b50611435838e86613656565b88888151811061144757611447614ea2565b602002602001018181525050505050505050808061146490614da9565b915050611211565b50909590945092505050565b6000828152600e6020908152604080832061ffff8516845282528083208054825181850281018501909352808352849384939291908301828280156114dc57602002820191906000526020600020905b8154815260200190600101908083116114c8575b505050505090506114ee8182516137b6565b92509250505b9250929050565b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604080517f850af0cb00000000000000000000000000000000000000000000000000000000815290516000929163850af0cb9160048083019260a0929190829003018186803b15801561159057600080fd5b505afa1580156115a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c8919061423c565b50601780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117909155601554604080517f1b6b6d23000000000000000000000000000000000000000000000000000000008152905193975091169450631b6b6d2393506004808201935060209291829003018186803b15801561166757600080fd5b505afa15801561167b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169f919061421f565b601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055601554604051911681527f6263309d5d4d1cfececd45a387cda7f14dccde21cf7a1bee1be6561075e61014906020015b60405180910390a15050565b6000838152600d60209081526040808320805482518185028101850190935280835261177d9383018282801561177157602002820191906000526020600020905b81548152602001906001019080831161175d575b50505050508484613656565b90505b9392505050565b8060005b818160ff16101561181b573063c8048022858560ff85168181106117b1576117b1614ea2565b905060200201356040518263ffffffff1660e01b81526004016117d691815260200190565b600060405180830381600087803b1580156117f057600080fd5b505af1158015611804573d6000803e3d6000fd5b50505050808061181390614df5565b91505061178b565b507fbeac20a03a6674e40498fac4356bc86e356c0d761a8d35d436712dc93bc7c74b838360405161184d929190614720565b60405180910390a1505050565b60008181526012602052604081205461ffff1681805b8261ffff168161ffff16116118bb576000858152600e6020908152604080832061ffff851684529091529020546118a79083614a9b565b9150806118b381614d87565b915050611870565b509392505050565b60005a905060006118d68385018561442f565b50600081815260056020908152604080832054600490925282205492935091906118fe61383b565b9050826119385760008481526005602090815260408083208490556010825282208054600181018255908352912042910155915081611b98565b6000848152600360205260408120546119518484614c14565b61195b9190614c14565b6000868152601160209081526040808320546010909252909120805492935061ffff909116918290811061199157611991614ea2565b90600052602060002001547f000000000000000000000000000000000000000000000000000000000000000061ffff16426119cc9190614c14565b1115611a3b57600086815260106020908152604082208054600181018255908352912042910155806119fd81614d87565b600088815260116020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83161790559150505b600086815260126020908152604080832054600e835281842061ffff9091168085529083528184208054835181860281018601909452808452919493909190830182828015611aa957602002820191906000526020600020905b815481526020019060010190808311611a95575b505050505090507f000000000000000000000000000000000000000000000000000000000000000061ffff1681511415611b255781611ae781614d87565b60008a815260126020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83161790559250505b506000878152600e6020908152604080832061ffff94851684528252808320805460018181018355918552838520018790558a8452600f83528184209590941683529381528382208054808501825590835281832001859055888252600d81529281208054928301815581529190912001555b600084815260066020526040812054611bb2906001614a9b565b6000868152600660209081526040918290208390558151878152908101859052908101859052606081018290529091507f6b6b3eeaaf107627513e76a81662118e7b1d8c78866f70760262115ddcfeede39060800160405180910390a16000858152600460209081526040808320859055601854600290925290912054611c399084614c14565b1115611ee4576017546040517fc7c3a19a0000000000000000000000000000000000000000000000000000000081526004810187905260009173ffffffffffffffffffffffffffffffffffffffff169063c7c3a19a9060240160006040518083038186803b158015611caa57600080fd5b505afa158015611cbe573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d0491908101906142ab565b6017546040517fb657bc9c0000000000000000000000000000000000000000000000000000000081526004810189905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063b657bc9c9060240160206040518083038186803b158015611d7457600080fd5b505afa158015611d88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dac919061467e565b601954909150611dd09082906c01000000000000000000000000900460ff16614b6c565b6bffffffffffffffffffffffff1682606001516bffffffffffffffffffffffff161015611ee1576019546040517f948108f7000000000000000000000000000000000000000000000000000000008152600481018990526bffffffffffffffffffffffff9091166024820152309063948108f790604401600060405180830381600087803b158015611e6157600080fd5b505af1158015611e75573d6000803e3d6000fd5b50505060008881526002602090815260409182902087905560195482518b81526bffffffffffffffffffffffff909116918101919091529081018690527f49d4100ab0124eb4a9a65dc4ea08d6412a43f6f05c49194983f5b322bcc0a5c0915060600160405180910390a15b50505b6000858152600760205260409020545b805a611f009089614c14565b611f0c90612710614a9b565b1015611f5a5782406000908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905582611f5281614ceb565b935050611ef4565b505050505050505050565b6000828152600e6020908152604080832061ffff85168452825291829020805483518184028101840190945280845260609392830182828015611fc757602002820191906000526020600020905b815481526020019060010190808311611fb3575b5050505050905092915050565b8160005b818110156120715730635f17e616868684818110611ff857611ff8614ea2565b90506020020135856040518363ffffffff1660e01b815260040161202c92919091825263ffffffff16602082015260400190565b600060405180830381600087803b15801561204657600080fd5b505af115801561205a573d6000803e3d6000fd5b50505050808061206990614da9565b915050611fd8565b5050505050565b600b602052600090815260409020805461209190614cfa565b80601f01602080910402602001604051908101604052809291908181526020018280546120bd90614cfa565b801561210a5780601f106120df5761010080835404028352916020019161210a565b820191906000526020600020905b8154815290600101906020018083116120ed57829003601f168201915b505050505081565b61211a6138ec565b6016546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b15801561218457600080fd5b505afa158015612198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bc91906143ca565b6016546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb90604401602060405180830381600087803b15801561222f57600080fd5b505af1158015612243573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226791906141b5565b5050565b60008281526003602090815260408083208490556005825280832083905560068252808320839055600d90915281206122a391613e6c565b60008281526012602052604081205461ffff16905b8161ffff168161ffff16116122ff576000848152600e6020908152604080832061ffff8516845290915281206122ed91613e6c565b806122f781614d87565b9150506122b8565b5050600082815260126020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169055601190915281205461ffff16905b8161ffff168161ffff161161238d576000848152600f6020908152604080832061ffff85168452909152812061237b91613e6c565b8061238581614d87565b915050612346565b5060008381526010602052604081206123a591613e6c565b5050600090815260116020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169055565b6040517f3ebe8d6c00000000000000000000000000000000000000000000000000000000815260048101839052600090819081903090633ebe8d6c9060240160206040518083038186803b15801561243457600080fd5b505afa158015612448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246c91906143ca565b905083158061247b5750808410155b15612484578093505b60008581526012602052604081205485919061ffff16805b6000898152600e6020908152604080832061ffff851684528252808320805482518185028101850190935280835291929091908301828280156124fe57602002820191906000526020600020905b8154815260200190600101908083116124ea575b5050505050905060008061251283886137b6565b90925090506125218287614a9b565b955061252d8188614c14565b96506000871161253f57505050612555565b505050808061254d90614caf565b91505061249c565b5090979596505050505050565b6000606060005a90506000612579858701876141d0565b60008181526009602090815260408083205460089092528220549293509190838367ffffffffffffffff8111156125b2576125b2614ed1565b6040519080825280601f01601f1916602001820160405280156125dc576020820181803683370190505b506040516020016125ee92919061494f565b6040516020818303038152906040529050600061260961383b565b90506000612616866126b7565b90505b835a6126259089614c14565b61263190612710614a9b565b101561267f5781406000908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558161267781614ceb565b925050612619565b9a91995090975050505050505050565b600f602052826000526040600020602052816000526040600020818154811061115957600080fd5b6000818152600560205260408120546126d257506001919050565b6000828152600360209081526040808320546004909252909120546126f561383b565b6126ff9190614c14565b101592915050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461278d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6040517fa5f589340000000000000000000000000000000000000000000000000000000081526004810183905260009081908190309063a5f589349060240160206040518083038186803b15801561286057600080fd5b505afa158015612874573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289891906143ca565b90508315806128a75750808410155b156128b0578093505b60008581526011602052604081205485919061ffff16805b6000898152600f6020908152604080832061ffff8516845282528083208054825181850281018501909352808352919290919083018282801561292a57602002820191906000526020600020905b815481526020019060010190808311612916575b5050505050905060008061293e83886137b6565b909250905061294d8287614a9b565b95506129598188614c14565b96506000871161296b57505050612555565b505050808061297990614caf565b9150506128c8565b6000838152600e6020908152604080832061ffff851684528252808320805482518185028101850190935280835284938301828280156129e057602002820191906000526020600020905b8154815260200190600101908083116129cc575b505050505090506129f381858351613656565b95945050505050565b6000838152600f6020908152604080832061ffff851684528252808320805482518185028101850190935280835284938301828280156129e057602002820191906000526020600020908154815260200190600101908083116129cc57505050505090506129f381858351613656565b6060806000612a7b6013613640565b905060008167ffffffffffffffff811115612a9857612a98614ed1565b604051908082528060200260200182016040528015612ac1578160200160208202803683370190505b50905060008267ffffffffffffffff811115612adf57612adf614ed1565b604051908082528060200260200182016040528015612b08578160200160208202803683370190505b50905060005b8381101561146c576000612b2360138361364a565b6000818152600d6020908152604080832080548251818502810185019093528083529495509293909291830182828015612b7c57602002820191906000526020600020905b815481526020019060010190808311612b68575b5050505050905081858481518110612b9657612b96614ea2565b602002602001018181525050612bae818a8351613656565b848481518110612bc057612bc0614ea2565b60200260200101818152505050508080612bd990614da9565b915050612b0e565b6040805161014081018252600461010082019081527f746573740000000000000000000000000000000000000000000000000000000061012083015281528151602081810184526000808352818401929092523083850181905263ffffffff8916606085015260808401528351808201855282815260a08401528351908101909352825260c08101919091526bffffffffffffffffffffffff841660e082015260165460155473ffffffffffffffffffffffffffffffffffffffff9182169163095ea7b39116612cb460ff8a1688614b6c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526bffffffffffffffffffffffff166024820152604401602060405180830381600087803b158015612d2d57600080fd5b505af1158015612d41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6591906141b5565b5060008660ff1667ffffffffffffffff811115612d8457612d84614ed1565b604051908082528060200260200182016040528015612dad578160200160208202803683370190505b50905060005b8760ff168160ff161015612e20576000612dcc8461396f565b905080838360ff1681518110612de457612de4614ea2565b60209081029190910181019190915260009182526008815260408083208890556007909152902084905580612e1881614df5565b915050612db3565b507f2ee10f7eb180441fb9fbba75b10c0162b5390b557712c93426243ca8f383c71181604051612e509190614775565b60405180910390a150505050505050565b6016546017546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526bffffffffffffffffffffffff8416602482015291169063095ea7b390604401602060405180830381600087803b158015612ee457600080fd5b505af1158015612ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1c91906141b5565b506017546040517f948108f7000000000000000000000000000000000000000000000000000000008152600481018490526bffffffffffffffffffffffff8316602482015273ffffffffffffffffffffffffffffffffffffffff9091169063948108f790604401600060405180830381600087803b158015612f9d57600080fd5b505af1158015612fb1573d6000803e3d6000fd5b5050604080518581526bffffffffffffffffffffffff851660208201527f8137dc366612bf502338bd8951f835ad8ceba421c4eb3d79c7f9b3ce0ac4762e9350019050611710565b6000828152600f6020908152604080832061ffff85168452825291829020805483518184028101840190945280845260609392830182828015611fc75760200282019190600052602060002090815481526020019060010190808311611fb3575050505050905092915050565b8060005b8181101561313157600084848381811061308657613086614ea2565b9050602002013590503073ffffffffffffffffffffffffffffffffffffffff16639fab438682836040516020016130bf91815260200190565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016130eb92919061494f565b600060405180830381600087803b15801561310557600080fd5b505af1158015613119573d6000803e3d6000fd5b5050505050808061312990614da9565b91505061306a565b50505050565b6000818152600d602090815260409182902080548351818402810184019094528084526060939283018282801561318d57602002820191906000526020600020905b815481526020019060010190808311613179575b50505050509050919050565b6017546040517f9fab438600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690639fab4386906131f3908690869086906004016148fb565b600060405180830381600087803b15801561320d57600080fd5b505af1158015613221573d6000803e3d6000fd5b5050506000848152600b6020526040902061313191508383613e8a565b60008181526011602052604081205461ffff1681805b8261ffff168161ffff16116118bb576000858152600f6020908152604080832061ffff8516845290915290205461328b9083614a9b565b91508061329781614d87565b915050613254565b6017546040517fa72aa27e0000000000000000000000000000000000000000000000000000000081526004810184905263ffffffff8316602482015273ffffffffffffffffffffffffffffffffffffffff9091169063a72aa27e90604401600060405180830381600087803b15801561331757600080fd5b505af115801561332b573d6000803e3d6000fd5b505050600092835250600a602052604090912063ffffffff9091169055565b6017546040517f744bfe610000000000000000000000000000000000000000000000000000000081526004810183905230602482015273ffffffffffffffffffffffffffffffffffffffff9091169063744bfe6190604401600060405180830381600087803b1580156133bc57600080fd5b505af1158015612071573d6000803e3d6000fd5b8060005b818163ffffffff161015613131573063af953a4a858563ffffffff851681811061340057613400614ea2565b905060200201356040518263ffffffff1660e01b815260040161342591815260200190565b600060405180830381600087803b15801561343f57600080fd5b505af1158015613453573d6000803e3d6000fd5b50505050808061346290614ddb565b9150506133d4565b6017546040517fc80480220000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff9091169063c804802290602401600060405180830381600087803b1580156134d657600080fd5b505af11580156134ea573d6000803e3d6000fd5b50505050612267816013613a7190919063ffffffff16565b6000828152600d6020908152604080832080548251818502810185019093528083528493849392919083018282801561355a57602002820191906000526020600020905b815481526020019060010190808311613546575b505050505090506114ee81856137b6565b600d602052816000526040600020818154811061358757600080fd5b90600052602060002001600091509150505481565b6135a46138ec565b6135ad81613a7d565b50565b6010602052816000526040600020818154811061358757600080fd5b6000828152600f6020908152604080832061ffff8516845282528083208054825181850281018501909352808352849384939291908301828280156114dc57602002820191906000526020600020908154815260200190600101908083116114c857505050505090506114ee8182516137b6565b600061112b825490565b60006117808383613b73565b8251600090819083158061366a5750808410155b15613673578093505b60008467ffffffffffffffff81111561368e5761368e614ed1565b6040519080825280602002602001820160405280156136b7578160200160208202803683370190505b509050600092505b84831015613725578660016136d48585614c14565b6136de9190614c14565b815181106136ee576136ee614ea2565b602002602001015181848151811061370857613708614ea2565b60209081029190910101528261371d81614da9565b9350506136bf565b61373e816000600184516137399190614c14565b613b9d565b85606414156137785780600182516137569190614c14565b8151811061376657613766614ea2565b60200260200101519350505050611780565b8060648251886137889190614b2f565b6137929190614b1b565b815181106137a2576137a2614ea2565b602002602001015193505050509392505050565b8151600090819081908415806137cc5750808510155b156137d5578094505b60008092505b85831015613831578660016137f08585614c14565b6137fa9190614c14565b8151811061380a5761380a614ea2565b60200260200101518161381d9190614a9b565b90508261382981614da9565b9350506137db565b9694955050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000156138e757606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156138aa57600080fd5b505afa1580156138be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138e291906143ca565b905090565b504390565b60005473ffffffffffffffffffffffffffffffffffffffff16331461396d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401612784565b565b6015546040517f08b79da4000000000000000000000000000000000000000000000000000000008152600091829173ffffffffffffffffffffffffffffffffffffffff909116906308b79da4906139ca9086906004016147db565b602060405180830381600087803b1580156139e457600080fd5b505af11580156139f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1c91906143ca565b9050613a29601382613d1e565b5060608301516000828152600a6020908152604080832063ffffffff90941690935560a0860151600b8252929091208251613a6a9391929190910190613f2c565b5092915050565b60006117808383613d2a565b73ffffffffffffffffffffffffffffffffffffffff8116331415613afd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401612784565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000826000018281548110613b8a57613b8a614ea2565b9060005260206000200154905092915050565b818180821415613bae575050505050565b6000856002613bbd8787614ba0565b613bc79190614ab3565b613bd19087614a27565b81518110613be157613be1614ea2565b602002602001015190505b818313613cf0575b80868481518110613c0757613c07614ea2565b60200260200101511015613c275782613c1f81614d4e565b935050613bf4565b858281518110613c3957613c39614ea2565b6020026020010151811015613c5a5781613c5281614c57565b925050613c27565b818313613ceb57858281518110613c7357613c73614ea2565b6020026020010151868481518110613c8d57613c8d614ea2565b6020026020010151878581518110613ca757613ca7614ea2565b60200260200101888581518110613cc057613cc0614ea2565b60209081029190910101919091525282613cd981614d4e565b9350508180613ce790614c57565b9250505b613bec565b81851215613d0357613d03868684613b9d565b83831215613d1657613d16868486613b9d565b505050505050565b60006117808383613e1d565b60008181526001830160205260408120548015613e13576000613d4e600183614c14565b8554909150600090613d6290600190614c14565b9050818114613dc7576000866000018281548110613d8257613d82614ea2565b9060005260206000200154905080876000018481548110613da557613da5614ea2565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613dd857613dd8614e73565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061112b565b600091505061112b565b6000818152600183016020526040812054613e645750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561112b565b50600061112b565b50805460008255906000526020600020908101906135ad9190613fa0565b828054613e9690614cfa565b90600052602060002090601f016020900481019282613eb85760008555613f1c565b82601f10613eef578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555613f1c565b82800160010185558215613f1c579182015b82811115613f1c578235825591602001919060010190613f01565b50613f28929150613fa0565b5090565b828054613f3890614cfa565b90600052602060002090601f016020900481019282613f5a5760008555613f1c565b82601f10613f7357805160ff1916838001178555613f1c565b82800160010185558215613f1c579182015b82811115613f1c578251825591602001919060010190613f85565b5b80821115613f285760008155600101613fa1565b8051613fc081614f00565b919050565b60008083601f840112613fd757600080fd5b50813567ffffffffffffffff811115613fef57600080fd5b6020830191508360208260051b85010111156114f457600080fd5b80518015158114613fc057600080fd5b60008083601f84011261402c57600080fd5b50813567ffffffffffffffff81111561404457600080fd5b6020830191508360208285010111156114f457600080fd5b600082601f83011261406d57600080fd5b815161408061407b826149e1565b614992565b81815284602083860101111561409557600080fd5b6140a6826020830160208701614c2b565b949350505050565b803561ffff81168114613fc057600080fd5b8051613fc081614f22565b805167ffffffffffffffff81168114613fc057600080fd5b803560ff81168114613fc057600080fd5b8051613fc081614f34565b60006020828403121561411157600080fd5b813561178081614f00565b6000806020838503121561412f57600080fd5b823567ffffffffffffffff81111561414657600080fd5b61415285828601613fc5565b90969095509350505050565b60008060006040848603121561417357600080fd5b833567ffffffffffffffff81111561418a57600080fd5b61419686828701613fc5565b90945092505060208401356141aa81614f22565b809150509250925092565b6000602082840312156141c757600080fd5b6117808261400a565b6000602082840312156141e257600080fd5b5035919050565b600080602083850312156141fc57600080fd5b823567ffffffffffffffff81111561421357600080fd5b6141528582860161401a565b60006020828403121561423157600080fd5b815161178081614f00565b600080600080600060a0868803121561425457600080fd5b85516003811061426357600080fd5b602087015190955061427481614f22565b604087015190945061428581614f22565b606087015190935061429681614f00565b80925050608086015190509295509295909350565b6000602082840312156142bd57600080fd5b815167ffffffffffffffff808211156142d557600080fd5b9083019061014082860312156142ea57600080fd5b6142f2614968565b6142fb83613fb5565b8152614309602084016140c0565b602082015260408301518281111561432057600080fd5b61432c8782860161405c565b60408301525061433e606084016140f4565b606082015261434f60808401613fb5565b608082015261436060a084016140cb565b60a082015261437160c084016140c0565b60c082015261438260e084016140f4565b60e082015261010061439581850161400a565b9082015261012083810151838111156143ad57600080fd5b6143b98882870161405c565b918301919091525095945050505050565b6000602082840312156143dc57600080fd5b5051919050565b6000806000604084860312156143f857600080fd5b83359250602084013567ffffffffffffffff81111561441657600080fd5b6144228682870161401a565b9497909650939450505050565b6000806040838503121561444257600080fd5b82359150602083013567ffffffffffffffff81111561446057600080fd5b8301601f8101851361447157600080fd5b803561447f61407b826149e1565b81815286602083850101111561449457600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080604083850312156144c757600080fd5b823591506144d7602084016140ae565b90509250929050565b6000806000606084860312156144f557600080fd5b83359250614505602085016140ae565b9150604084013590509250925092565b6000806040838503121561452857600080fd5b50508035926020909101359150565b60008060006060848603121561454c57600080fd5b8335925060208401359150614563604085016140ae565b90509250925092565b60008060006060848603121561458157600080fd5b505081359360208301359350604090920135919050565b600080604083850312156145ab57600080fd5b8235915060208301356145bd81614f22565b809150509250929050565b600080604083850312156145db57600080fd5b8235915060208301356145bd81614f34565b6000602082840312156145ff57600080fd5b611780826140e3565b600080600080600060a0868803121561462057600080fd5b614629866140e3565b9450602086013561463981614f22565b9350604086013561464981614f34565b94979396509394606081013594506080013592915050565b60006020828403121561467357600080fd5b813561178081614f34565b60006020828403121561469057600080fd5b815161178081614f34565b600081518084526020808501945080840160005b838110156146cb578151875295820195908201906001016146af565b509495945050505050565b600081518084526146ee816020860160208601614c2b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815281602082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561475957600080fd5b8260051b80856040850137600092016040019182525092915050565b602081526000611780602083018461469b565b60408152600061479b604083018561469b565b82810360208401526129f3818561469b565b821515815260406020820152600061177d60408301846146d6565b60208152600061178060208301846146d6565b60208152600082516101008060208501526147fa6101208501836146d6565b915060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08086850301604087015261483684836146d6565b935060408701519150614861606087018373ffffffffffffffffffffffffffffffffffffffff169052565b606087015163ffffffff811660808801529150608087015173ffffffffffffffffffffffffffffffffffffffff811660a0880152915060a08701519150808685030160c08701526148b284836146d6565b935060c08701519150808685030160e0870152506148d083826146d6565b92505060e08501516148f1828601826bffffffffffffffffffffffff169052565b5090949350505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b82815260406020820152600061177d60408301846146d6565b604051610140810167ffffffffffffffff8111828210171561498c5761498c614ed1565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156149d9576149d9614ed1565b604052919050565b600067ffffffffffffffff8211156149fb576149fb614ed1565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615614a6157614a61614e15565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615614a9557614a95614e15565b50500190565b60008219821115614aae57614aae614e15565b500190565b600082614ac257614ac2614e44565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615614b1657614b16614e15565b500590565b600082614b2a57614b2a614e44565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b6757614b67614e15565b500290565b60006bffffffffffffffffffffffff80831681851681830481118215151615614b9757614b97614e15565b02949350505050565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615614bda57614bda614e15565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615614c0e57614c0e614e15565b50500390565b600082821015614c2657614c26614e15565b500390565b60005b83811015614c46578181015183820152602001614c2e565b838111156131315750506000910152565b60007f8000000000000000000000000000000000000000000000000000000000000000821415614c8957614c89614e15565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600061ffff821680614cc357614cc3614e15565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b600081614c8957614c89614e15565b600181811c90821680614d0e57607f821691505b60208210811415614d48577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d8057614d80614e15565b5060010190565b600061ffff80831681811415614d9f57614d9f614e15565b6001019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d8057614d80614e15565b600063ffffffff80831681811415614d9f57614d9f614e15565b600060ff821660ff811415614e0c57614e0c614e15565b60010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146135ad57600080fd5b63ffffffff811681146135ad57600080fd5b6bffffffffffffffffffffffff811681146135ad57600080fdfea164736f6c6343000806000a", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registrarAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useArb\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"IndexOutOfRange\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"FundsAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNum\",\"type\":\"uint256\"}],\"name\":\"InsufficientFunds\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"firstPerformBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"}],\"name\":\"PerformingUpkeep\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Received\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRegistrar\",\"type\":\"address\"}],\"name\":\"RegistrarSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNum\",\"type\":\"uint256\"}],\"name\":\"UpkeepTopUp\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"UpkeepsCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"UpkeepsRegistered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BUCKET_SIZE\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TIMESTAMP_INTERVAL\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"addFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addLinkAmount\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"batchCancelUpkeeps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"number\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"checkGasToBurn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"performGasToBurn\",\"type\":\"uint256\"}],\"name\":\"batchRegisterUpkeeps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint32\",\"name\":\"interval\",\"type\":\"uint32\"}],\"name\":\"batchSetIntervals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"batchUpdatePipelineData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"upkeepIds\",\"type\":\"uint256[]\"}],\"name\":\"batchWithdrawLinks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"bucketedDelays\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"buckets\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"cancelUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"checkDatas\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"checkGasToBurns\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"}],\"name\":\"checkUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"counters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"delays\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"dummyMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"eligible\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"firstPerformBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gasLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxCount\",\"type\":\"uint256\"}],\"name\":\"getActiveUpkeepIDs\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"bucket\",\"type\":\"uint16\"}],\"name\":\"getBucketedDelays\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getBucketedDelaysLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getDelays\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getDelaysLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"bucket\",\"type\":\"uint16\"}],\"name\":\"getDelaysLengthAtBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"timestampBucket\",\"type\":\"uint16\"}],\"name\":\"getDelaysLengthAtTimestampBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"}],\"name\":\"getPxBucketedDelaysForAllUpkeeps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"}],\"name\":\"getPxDelayForAllUpkeeps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"bucket\",\"type\":\"uint16\"}],\"name\":\"getPxDelayInBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"timestampBucket\",\"type\":\"uint16\"}],\"name\":\"getPxDelayInTimestampBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"p\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"getPxDelayLastNPerforms\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"getSumBucketedDelayLastNPerforms\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"bucket\",\"type\":\"uint16\"}],\"name\":\"getSumDelayInBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"timestampBucket\",\"type\":\"uint16\"}],\"name\":\"getSumDelayInTimestampBucket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"getSumDelayLastNPerforms\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"getSumTimestampBucketedDelayLastNPerforms\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"getTimestampBucketedDelaysLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"timestampBucket\",\"type\":\"uint16\"}],\"name\":\"getTimestampDelays\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"intervals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lastTopUpBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkToken\",\"outputs\":[{\"internalType\":\"contractLinkTokenInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minBalanceThresholdMultiplier\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"performDataSizes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"performGasToBurns\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"}],\"name\":\"performUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"previousPerformBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registrar\",\"outputs\":[{\"internalType\":\"contractKeeperRegistrar2_0\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contractIKeeperRegistryMaster\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"setAddLinkAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setCheckGasToBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractKeeperRegistrar2_0\",\"name\":\"newRegistrar\",\"type\":\"address\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_interval\",\"type\":\"uint256\"}],\"name\":\"setInterval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"newMinBalanceThresholdMultiplier\",\"type\":\"uint8\"}],\"name\":\"setMinBalanceThresholdMultiplier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setPerformDataSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setPerformGasToBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"}],\"name\":\"setUpkeepGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newInterval\",\"type\":\"uint256\"}],\"name\":\"setUpkeepTopUpCheckInterval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestampBuckets\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestampDelays\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"timestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"pipelineData\",\"type\":\"bytes\"}],\"name\":\"updateUpkeepPipelineData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"upkeepTopUpCheckInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"useArbitrumBlockNum\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawLinks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upkeepId\",\"type\":\"uint256\"}],\"name\":\"withdrawLinks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x60e06040526005601855601980546001600160681b0319166c140000000002c68af0bb140000179055601960f21b60a05260e160f41b60c0523480156200004557600080fd5b50604051620053ce380380620053ce833981016040819052620000689162000320565b81813380600081620000c15760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000f457620000f4816200025a565b5050601580546001600160a01b0319166001600160a01b0385169081179091556040805163850af0cb60e01b815290516000935063850af0cb9160048082019260a092909190829003018186803b1580156200014f57600080fd5b505afa15801562000164573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018a91906200038a565b50601780546001600160a01b0319166001600160a01b038381169190911790915560155460408051631b6b6d2360e01b8152905193975091169450631b6b6d2393506004808201935060209291829003018186803b158015620001ec57600080fd5b505afa15801562000201573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000227919062000363565b601680546001600160a01b0319166001600160a01b039290921691909117905550151560f81b6080525062000413915050565b6001600160a01b038116331415620002b55760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401620000b8565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b805163ffffffff811681146200031b57600080fd5b919050565b600080604083850312156200033457600080fd5b82516200034181620003fa565b602084015190925080151581146200035857600080fd5b809150509250929050565b6000602082840312156200037657600080fd5b81516200038381620003fa565b9392505050565b600080600080600060a08688031215620003a357600080fd5b855160038110620003b357600080fd5b9450620003c36020870162000306565b9350620003d36040870162000306565b92506060860151620003e581620003fa565b80925050608086015190509295509295909350565b6001600160a01b03811681146200041057600080fd5b50565b60805160f81c60a05160f01c60c05160f01c614f6d620004616000396000818161064d015261199e0152600081816105230152611ab20152600081816108fc015261383f0152614f6d6000f3fe6080604052600436106104695760003560e01c80637b10399911610243578063a72aa27e11610143578063daee1aeb116100bb578063f2fde38b1161008a578063fba7ffa31161006f578063fba7ffa314610fbb578063fbfb4f7614610fe8578063fcdc1f631461100857600080fd5b8063f2fde38b14610f7b578063fb0ceb0414610f9b57600080fd5b8063daee1aeb14610ef8578063dbef701e14610f18578063e0114adb14610f38578063e455308314610f6557600080fd5b8063becde0e111610112578063c8048022116100f7578063c804802214610e59578063d355852814610e79578063d6051a7214610ed857600080fd5b8063becde0e114610ddf578063c357f1f314610dff57600080fd5b8063a72aa27e14610d34578063a79c404314610d54578063af953a4a14610d81578063b0971e1a14610da157600080fd5b80639095aa35116101d65780639b429354116101a55780639d385eaa1161018a5780639d385eaa14610cd4578063a5f5893414610cf4578063a6c60d8914610d1457600080fd5b80639b42935414610c765780639b51fb0d14610ca357600080fd5b80639095aa3514610bda578063948108f714610bfa57806399cc6b0b14610c1a5780639ac542eb14610c3a57600080fd5b806387dfa9001161021257806387dfa90014610b425780638bc7b77214610b625780638da5cb5b14610b825780638fcb3fba14610bad57600080fd5b80637b10399914610ab55780637e4087b814610ae25780637e7a46dc14610b025780638237831714610b2257600080fd5b806351c98be31161036957806369cdbadb116102e15780637145f11b116102b057806376721303116102955780637672130314610a53578063776898c814610a8057806379ba509714610aa057600080fd5b80637145f11b146109f657806373644cce14610a2657600080fd5b806369cdbadb1461094e57806369e9b7731461097b5780636e04ff0d146109a85780637137a702146109d657600080fd5b80635f17e61611610338578063636092e81161031d578063636092e8146108a8578063642f6cef146108ea578063643b34e91461092e57600080fd5b80635f17e6161461085b57806360457ff51461087b57600080fd5b806351c98be3146107cc57806357970e93146107ec57806358c52c04146108195780635d4ee7f31461084657600080fd5b806329f0e496116103fc57806333774d1c116103cb5780634585e33b116103b05780634585e33b1461075f57806345d2ec171461077f57806346e7a63e1461079f57600080fd5b806333774d1c1461070e5780633ebe8d6c1461073f57600080fd5b806329f0e4961461063b5780632a9032d31461066f5780632b20e3971461068f578063328ffd11146106e157600080fd5b80631bee0080116104385780631bee008014610596578063206c32e8146105c457806320e3dbd4146105f957806328c4b57b1461061b57600080fd5b806306e3b632146104ad578063077ac621146104e357806312c5502714610511578063177b0eb91461055857600080fd5b366104a857604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b3480156104b957600080fd5b506104cd6104c8366004614527565b611035565b6040516104da9190614787565b60405180910390f35b3480156104ef57600080fd5b506105036104fe3660046144f2565b611131565b6040519081526020016104da565b34801561051d57600080fd5b506105457f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff90911681526020016104da565b34801561056457600080fd5b506105036105733660046144c6565b6000918252600f6020908152604080842061ffff93909316845291905290205490565b3480156105a257600080fd5b506105b66105b13660046141d0565b61116f565b6040516104da92919061479a565b3480156105d057600080fd5b506105e46105df3660046144c6565b611478565b604080519283526020830191909152016104da565b34801561060557600080fd5b506106196106143660046140ff565b6114fb565b005b34801561062757600080fd5b5061050361063636600461457e565b61171c565b34801561064757600080fd5b506105457f000000000000000000000000000000000000000000000000000000000000000081565b34801561067b57600080fd5b5061061961068a36600461411c565b611787565b34801561069b57600080fd5b506015546106bc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016104da565b3480156106ed57600080fd5b506105036106fc3660046141d0565b60036020526000908152604090205481565b34801561071a57600080fd5b506105456107293660046141d0565b60116020526000908152604090205461ffff1681565b34801561074b57600080fd5b5061050361075a3660046141d0565b61185a565b34801561076b57600080fd5b5061061961077a3660046141e9565b6118c3565b34801561078b57600080fd5b506104cd61079a3660046144c6565b611f65565b3480156107ab57600080fd5b506105036107ba3660046141d0565b600a6020526000908152604090205481565b3480156107d857600080fd5b506106196107e736600461415e565b611fd4565b3480156107f857600080fd5b506016546106bc9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561082557600080fd5b506108396108343660046141d0565b612078565b6040516104da91906147da565b34801561085257600080fd5b50610619612112565b34801561086757600080fd5b50610619610876366004614527565b61226b565b34801561088757600080fd5b506105036108963660046141d0565b60076020526000908152604090205481565b3480156108b457600080fd5b506019546108cd906bffffffffffffffffffffffff1681565b6040516bffffffffffffffffffffffff90911681526020016104da565b3480156108f657600080fd5b5061091e7f000000000000000000000000000000000000000000000000000000000000000081565b60405190151581526020016104da565b34801561093a57600080fd5b506105e4610949366004614527565b6123dd565b34801561095a57600080fd5b506105036109693660046141d0565b60086020526000908152604090205481565b34801561098757600080fd5b50610619610996366004614527565b60009182526008602052604090912055565b3480156109b457600080fd5b506109c86109c33660046141e9565b612562565b6040516104da9291906147bf565b3480156109e257600080fd5b506105036109f13660046144f2565b61268f565b348015610a0257600080fd5b5061091e610a113660046141d0565b600c6020526000908152604090205460ff1681565b348015610a3257600080fd5b50610503610a413660046141d0565b6000908152600d602052604090205490565b348015610a5f57600080fd5b50610503610a6e3660046141d0565b60046020526000908152604090205481565b348015610a8c57600080fd5b5061091e610a9b3660046141d0565b6126b7565b348015610aac57600080fd5b50610619612707565b348015610ac157600080fd5b506017546106bc9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610aee57600080fd5b506105e4610afd366004614527565b612809565b348015610b0e57600080fd5b50610619610b1d3660046143f5565b612981565b348015610b2e57600080fd5b50610503610b3d366004614549565b612a2c565b348015610b4e57600080fd5b50610503610b5d366004614549565b612aa7565b348015610b6e57600080fd5b506105b6610b7d3660046141d0565b612b17565b348015610b8e57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166106bc565b348015610bb957600080fd5b50610503610bc83660046141d0565b60056020526000908152604090205481565b348015610be657600080fd5b50610619610bf536600461461a565b612c8c565b348015610c0657600080fd5b50610619610c153660046145da565b612f0c565b348015610c2657600080fd5b506104cd610c353660046144c6565b6130a4565b348015610c4657600080fd5b50601954610c64906c01000000000000000000000000900460ff1681565b60405160ff90911681526020016104da565b348015610c8257600080fd5b50610619610c91366004614527565b60009182526009602052604090912055565b348015610caf57600080fd5b50610545610cbe3660046141d0565b60126020526000908152604090205461ffff1681565b348015610ce057600080fd5b506104cd610cef3660046141d0565b613111565b348015610d0057600080fd5b50610503610d0f3660046141d0565b613173565b348015610d2057600080fd5b50610619610d2f3660046141d0565b601855565b348015610d4057600080fd5b50610619610d4f3660046145aa565b6131d4565b348015610d6057600080fd5b50610619610d6f366004614527565b60009182526007602052604090912055565b348015610d8d57600080fd5b50610619610d9c3660046141d0565b61327f565b348015610dad57600080fd5b50610503610dbc3660046144c6565b6000918252600e6020908152604080842061ffff93909316845291905290205490565b348015610deb57600080fd5b50610619610dfa36600461411c565b613305565b348015610e0b57600080fd5b50610619610e1a366004614673565b601980547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff92909216919091179055565b348015610e6557600080fd5b50610619610e743660046141d0565b61339f565b348015610e8557600080fd5b50610619610e943660046145ff565b6019805460ff9092166c01000000000000000000000000027fffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff909216919091179055565b348015610ee457600080fd5b506105e4610ef3366004614527565b613437565b348015610f0457600080fd5b50610619610f1336600461411c565b6134a0565b348015610f2457600080fd5b50610503610f33366004614527565b61356b565b348015610f4457600080fd5b50610503610f533660046141d0565b60096020526000908152604090205481565b348015610f7157600080fd5b5061050360185481565b348015610f8757600080fd5b50610619610f963660046140ff565b61359c565b348015610fa757600080fd5b50610503610fb6366004614527565b6135b0565b348015610fc757600080fd5b50610503610fd63660046141d0565b60066020526000908152604090205481565b348015610ff457600080fd5b506105e46110033660046144c6565b6135cc565b34801561101457600080fd5b506105036110233660046141d0565b60026020526000908152604090205481565b606060006110436013613640565b905080841061107e576040517f1390f2a100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826110905761108d8482614c26565b92505b60008367ffffffffffffffff8111156110ab576110ab614ee3565b6040519080825280602002602001820160405280156110d4578160200160208202803683370190505b50905060005b84811015611126576110f76110ef8288614aad565b60139061364a565b82828151811061110957611109614eb4565b60209081029190910101528061111e81614dbb565b9150506110da565b509150505b92915050565b600e602052826000526040600020602052816000526040600020818154811061115957600080fd5b9060005260206000200160009250925050505481565b606080600061117e6013613640565b905060008167ffffffffffffffff81111561119b5761119b614ee3565b6040519080825280602002602001820160405280156111c4578160200160208202803683370190505b50905060008267ffffffffffffffff8111156111e2576111e2614ee3565b60405190808252806020026020018201604052801561120b578160200160208202803683370190505b50905060005b8381101561146c57600061122660138361364a565b90508084838151811061123b5761123b614eb4565b6020908102919091018101919091526000828152601290915260408082205490517f3ebe8d6c0000000000000000000000000000000000000000000000000000000081526004810184905261ffff90911691903090633ebe8d6c9060240160206040518083038186803b1580156112b157600080fd5b505afa1580156112c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e991906143dc565b905060008167ffffffffffffffff81111561130657611306614ee3565b60405190808252806020026020018201604052801561132f578160200160208202803683370190505b506000858152600e6020526040812091925090815b8561ffff168161ffff16116114295761ffff8116600090815260208381526040808320805482518185028101850190935280835291929091908301828280156113ac57602002820191906000526020600020905b815481526020019060010190808311611398575b5050505050905060005b8151811015611414578181815181106113d1576113d1614eb4565b60200260200101518686806113e590614dbb565b9750815181106113f7576113f7614eb4565b60209081029190910101528061140c81614dbb565b9150506113b6565b5050808061142190614d99565b915050611344565b50611435838e86613656565b88888151811061144757611447614eb4565b602002602001018181525050505050505050808061146490614dbb565b915050611211565b50909590945092505050565b6000828152600e6020908152604080832061ffff8516845282528083208054825181850281018501909352808352849384939291908301828280156114dc57602002820191906000526020600020905b8154815260200190600101908083116114c8575b505050505090506114ee8182516137b6565b92509250505b9250929050565b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604080517f850af0cb00000000000000000000000000000000000000000000000000000000815290516000929163850af0cb9160048083019260a0929190829003018186803b15801561159057600080fd5b505afa1580156115a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c8919061423c565b50601780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117909155601554604080517f1b6b6d23000000000000000000000000000000000000000000000000000000008152905193975091169450631b6b6d2393506004808201935060209291829003018186803b15801561166757600080fd5b505afa15801561167b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169f919061421f565b601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055601554604051911681527f6263309d5d4d1cfececd45a387cda7f14dccde21cf7a1bee1be6561075e61014906020015b60405180910390a15050565b6000838152600d60209081526040808320805482518185028101850190935280835261177d9383018282801561177157602002820191906000526020600020905b81548152602001906001019080831161175d575b50505050508484613656565b90505b9392505050565b8060005b818160ff16101561181b573063c8048022858560ff85168181106117b1576117b1614eb4565b905060200201356040518263ffffffff1660e01b81526004016117d691815260200190565b600060405180830381600087803b1580156117f057600080fd5b505af1158015611804573d6000803e3d6000fd5b50505050808061181390614e07565b91505061178b565b507fbeac20a03a6674e40498fac4356bc86e356c0d761a8d35d436712dc93bc7c74b838360405161184d929190614732565b60405180910390a1505050565b60008181526012602052604081205461ffff1681805b8261ffff168161ffff16116118bb576000858152600e6020908152604080832061ffff851684529091529020546118a79083614aad565b9150806118b381614d99565b915050611870565b509392505050565b60005a905060006118d683850185614441565b50600081815260056020908152604080832054600490925282205492935091906118fe61383b565b9050826119385760008481526005602090815260408083208490556010825282208054600181018255908352912042910155915081611b98565b6000848152600360205260408120546119518484614c26565b61195b9190614c26565b6000868152601160209081526040808320546010909252909120805492935061ffff909116918290811061199157611991614eb4565b90600052602060002001547f000000000000000000000000000000000000000000000000000000000000000061ffff16426119cc9190614c26565b1115611a3b57600086815260106020908152604082208054600181018255908352912042910155806119fd81614d99565b600088815260116020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83161790559150505b600086815260126020908152604080832054600e835281842061ffff9091168085529083528184208054835181860281018601909452808452919493909190830182828015611aa957602002820191906000526020600020905b815481526020019060010190808311611a95575b505050505090507f000000000000000000000000000000000000000000000000000000000000000061ffff1681511415611b255781611ae781614d99565b60008a815260126020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83161790559250505b506000878152600e6020908152604080832061ffff94851684528252808320805460018181018355918552838520018790558a8452600f83528184209590941683529381528382208054808501825590835281832001859055888252600d81529281208054928301815581529190912001555b600084815260066020526040812054611bb2906001614aad565b6000868152600660209081526040918290208390558151878152908101859052908101859052606081018290529091507f6b6b3eeaaf107627513e76a81662118e7b1d8c78866f70760262115ddcfeede39060800160405180910390a16000858152600460209081526040808320859055601854600290925290912054611c399084614c26565b1115611ee4576017546040517fc7c3a19a0000000000000000000000000000000000000000000000000000000081526004810187905260009173ffffffffffffffffffffffffffffffffffffffff169063c7c3a19a9060240160006040518083038186803b158015611caa57600080fd5b505afa158015611cbe573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d0491908101906142ab565b6017546040517fb657bc9c0000000000000000000000000000000000000000000000000000000081526004810189905291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063b657bc9c9060240160206040518083038186803b158015611d7457600080fd5b505afa158015611d88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dac9190614690565b601954909150611dd09082906c01000000000000000000000000900460ff16614b7e565b6bffffffffffffffffffffffff1682608001516bffffffffffffffffffffffff161015611ee1576019546040517f948108f7000000000000000000000000000000000000000000000000000000008152600481018990526bffffffffffffffffffffffff9091166024820152309063948108f790604401600060405180830381600087803b158015611e6157600080fd5b505af1158015611e75573d6000803e3d6000fd5b50505060008881526002602090815260409182902087905560195482518b81526bffffffffffffffffffffffff909116918101919091529081018690527f49d4100ab0124eb4a9a65dc4ea08d6412a43f6f05c49194983f5b322bcc0a5c0915060600160405180910390a15b50505b6000858152600760205260409020545b805a611f009089614c26565b611f0c90612710614aad565b1015611f5a5782406000908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905582611f5281614cfd565b935050611ef4565b505050505050505050565b6000828152600e6020908152604080832061ffff85168452825291829020805483518184028101840190945280845260609392830182828015611fc757602002820191906000526020600020905b815481526020019060010190808311611fb3575b5050505050905092915050565b8160005b818110156120715730635f17e616868684818110611ff857611ff8614eb4565b90506020020135856040518363ffffffff1660e01b815260040161202c92919091825263ffffffff16602082015260400190565b600060405180830381600087803b15801561204657600080fd5b505af115801561205a573d6000803e3d6000fd5b50505050808061206990614dbb565b915050611fd8565b5050505050565b600b602052600090815260409020805461209190614d0c565b80601f01602080910402602001604051908101604052809291908181526020018280546120bd90614d0c565b801561210a5780601f106120df5761010080835404028352916020019161210a565b820191906000526020600020905b8154815290600101906020018083116120ed57829003601f168201915b505050505081565b61211a6138ec565b6016546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b15801561218457600080fd5b505afa158015612198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bc91906143dc565b6016546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810183905291925073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb90604401602060405180830381600087803b15801561222f57600080fd5b505af1158015612243573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226791906141b5565b5050565b60008281526003602090815260408083208490556005825280832083905560068252808320839055600d90915281206122a391613e6c565b60008281526012602052604081205461ffff16905b8161ffff168161ffff16116122ff576000848152600e6020908152604080832061ffff8516845290915281206122ed91613e6c565b806122f781614d99565b9150506122b8565b5050600082815260126020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169055601190915281205461ffff16905b8161ffff168161ffff161161238d576000848152600f6020908152604080832061ffff85168452909152812061237b91613e6c565b8061238581614d99565b915050612346565b5060008381526010602052604081206123a591613e6c565b5050600090815260116020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169055565b6040517f3ebe8d6c00000000000000000000000000000000000000000000000000000000815260048101839052600090819081903090633ebe8d6c9060240160206040518083038186803b15801561243457600080fd5b505afa158015612448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246c91906143dc565b905083158061247b5750808410155b15612484578093505b60008581526012602052604081205485919061ffff16805b6000898152600e6020908152604080832061ffff851684528252808320805482518185028101850190935280835291929091908301828280156124fe57602002820191906000526020600020905b8154815260200190600101908083116124ea575b5050505050905060008061251283886137b6565b90925090506125218287614aad565b955061252d8188614c26565b96506000871161253f57505050612555565b505050808061254d90614cc1565b91505061249c565b5090979596505050505050565b6000606060005a90506000612579858701876141d0565b60008181526009602090815260408083205460089092528220549293509190838367ffffffffffffffff8111156125b2576125b2614ee3565b6040519080825280601f01601f1916602001820160405280156125dc576020820181803683370190505b506040516020016125ee929190614961565b6040516020818303038152906040529050600061260961383b565b90506000612616866126b7565b90505b835a6126259089614c26565b61263190612710614aad565b101561267f5781406000908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558161267781614cfd565b925050612619565b9a91995090975050505050505050565b600f602052826000526040600020602052816000526040600020818154811061115957600080fd5b6000818152600560205260408120546126d257506001919050565b6000828152600360209081526040808320546004909252909120546126f561383b565b6126ff9190614c26565b101592915050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461278d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6040517fa5f589340000000000000000000000000000000000000000000000000000000081526004810183905260009081908190309063a5f589349060240160206040518083038186803b15801561286057600080fd5b505afa158015612874573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289891906143dc565b90508315806128a75750808410155b156128b0578093505b60008581526011602052604081205485919061ffff16805b6000898152600f6020908152604080832061ffff8516845282528083208054825181850281018501909352808352919290919083018282801561292a57602002820191906000526020600020905b815481526020019060010190808311612916575b5050505050905060008061293e83886137b6565b909250905061294d8287614aad565b95506129598188614c26565b96506000871161296b57505050612555565b505050808061297990614cc1565b9150506128c8565b6017546040517f0d0be14700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630d0be147906129db9086908690869060040161490d565b600060405180830381600087803b1580156129f557600080fd5b505af1158015612a09573d6000803e3d6000fd5b5050506000848152600b60205260409020612a2691508383613e8a565b50505050565b6000838152600e6020908152604080832061ffff85168452825280832080548251818502810185019093528083528493830182828015612a8b57602002820191906000526020600020905b815481526020019060010190808311612a77575b50505050509050612a9e81858351613656565b95945050505050565b6000838152600f6020908152604080832061ffff85168452825280832080548251818502810185019093528083528493830182828015612a8b5760200282019190600052602060002090815481526020019060010190808311612a775750505050509050612a9e81858351613656565b6060806000612b266013613640565b905060008167ffffffffffffffff811115612b4357612b43614ee3565b604051908082528060200260200182016040528015612b6c578160200160208202803683370190505b50905060008267ffffffffffffffff811115612b8a57612b8a614ee3565b604051908082528060200260200182016040528015612bb3578160200160208202803683370190505b50905060005b8381101561146c576000612bce60138361364a565b6000818152600d6020908152604080832080548251818502810185019093528083529495509293909291830182828015612c2757602002820191906000526020600020905b815481526020019060010190808311612c13575b5050505050905081858481518110612c4157612c41614eb4565b602002602001018181525050612c59818a8351613656565b848481518110612c6b57612c6b614eb4565b60200260200101818152505050508080612c8490614dbb565b915050612bb9565b6040805161014081018252600461010082019081527f746573740000000000000000000000000000000000000000000000000000000061012083015281528151602081810184526000808352818401929092523083850181905263ffffffff8916606085015260808401528351808201855282815260a08401528351908101909352825260c08101919091526bffffffffffffffffffffffff841660e082015260165460155473ffffffffffffffffffffffffffffffffffffffff9182169163095ea7b39116612d5f60ff8a1688614b7e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526bffffffffffffffffffffffff166024820152604401602060405180830381600087803b158015612dd857600080fd5b505af1158015612dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e1091906141b5565b5060008660ff1667ffffffffffffffff811115612e2f57612e2f614ee3565b604051908082528060200260200182016040528015612e58578160200160208202803683370190505b50905060005b8760ff168160ff161015612ecb576000612e778461396f565b905080838360ff1681518110612e8f57612e8f614eb4565b60209081029190910181019190915260009182526008815260408083208890556007909152902084905580612ec381614e07565b915050612e5e565b507f2ee10f7eb180441fb9fbba75b10c0162b5390b557712c93426243ca8f383c71181604051612efb9190614787565b60405180910390a150505050505050565b6016546017546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526bffffffffffffffffffffffff8416602482015291169063095ea7b390604401602060405180830381600087803b158015612f8f57600080fd5b505af1158015612fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc791906141b5565b506017546040517f948108f7000000000000000000000000000000000000000000000000000000008152600481018490526bffffffffffffffffffffffff8316602482015273ffffffffffffffffffffffffffffffffffffffff9091169063948108f790604401600060405180830381600087803b15801561304857600080fd5b505af115801561305c573d6000803e3d6000fd5b5050604080518581526bffffffffffffffffffffffff851660208201527f8137dc366612bf502338bd8951f835ad8ceba421c4eb3d79c7f9b3ce0ac4762e9350019050611710565b6000828152600f6020908152604080832061ffff85168452825291829020805483518184028101840190945280845260609392830182828015611fc75760200282019190600052602060002090815481526020019060010190808311611fb3575050505050905092915050565b6000818152600d602090815260409182902080548351818402810184019094528084526060939283018282801561316757602002820191906000526020600020905b815481526020019060010190808311613153575b50505050509050919050565b60008181526011602052604081205461ffff1681805b8261ffff168161ffff16116118bb576000858152600f6020908152604080832061ffff851684529091529020546131c09083614aad565b9150806131cc81614d99565b915050613189565b6017546040517fa72aa27e0000000000000000000000000000000000000000000000000000000081526004810184905263ffffffff8316602482015273ffffffffffffffffffffffffffffffffffffffff9091169063a72aa27e90604401600060405180830381600087803b15801561324c57600080fd5b505af1158015613260573d6000803e3d6000fd5b505050600092835250600a602052604090912063ffffffff9091169055565b6017546040517f744bfe610000000000000000000000000000000000000000000000000000000081526004810183905230602482015273ffffffffffffffffffffffffffffffffffffffff9091169063744bfe6190604401600060405180830381600087803b1580156132f157600080fd5b505af1158015612071573d6000803e3d6000fd5b8060005b818163ffffffff161015612a26573063af953a4a858563ffffffff851681811061333557613335614eb4565b905060200201356040518263ffffffff1660e01b815260040161335a91815260200190565b600060405180830381600087803b15801561337457600080fd5b505af1158015613388573d6000803e3d6000fd5b50505050808061339790614ded565b915050613309565b6017546040517fc80480220000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff9091169063c804802290602401600060405180830381600087803b15801561340b57600080fd5b505af115801561341f573d6000803e3d6000fd5b50505050612267816013613a7190919063ffffffff16565b6000828152600d6020908152604080832080548251818502810185019093528083528493849392919083018282801561348f57602002820191906000526020600020905b81548152602001906001019080831161347b575b505050505090506114ee81856137b6565b8060005b81811015612a265760008484838181106134c0576134c0614eb4565b9050602002013590503073ffffffffffffffffffffffffffffffffffffffff16637e7a46dc82836040516020016134f991815260200190565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401613525929190614961565b600060405180830381600087803b15801561353f57600080fd5b505af1158015613553573d6000803e3d6000fd5b5050505050808061356390614dbb565b9150506134a4565b600d602052816000526040600020818154811061358757600080fd5b90600052602060002001600091509150505481565b6135a46138ec565b6135ad81613a7d565b50565b6010602052816000526040600020818154811061358757600080fd5b6000828152600f6020908152604080832061ffff8516845282528083208054825181850281018501909352808352849384939291908301828280156114dc57602002820191906000526020600020908154815260200190600101908083116114c857505050505090506114ee8182516137b6565b600061112b825490565b60006117808383613b73565b8251600090819083158061366a5750808410155b15613673578093505b60008467ffffffffffffffff81111561368e5761368e614ee3565b6040519080825280602002602001820160405280156136b7578160200160208202803683370190505b509050600092505b84831015613725578660016136d48585614c26565b6136de9190614c26565b815181106136ee576136ee614eb4565b602002602001015181848151811061370857613708614eb4565b60209081029190910101528261371d81614dbb565b9350506136bf565b61373e816000600184516137399190614c26565b613b9d565b85606414156137785780600182516137569190614c26565b8151811061376657613766614eb4565b60200260200101519350505050611780565b8060648251886137889190614b41565b6137929190614b2d565b815181106137a2576137a2614eb4565b602002602001015193505050509392505050565b8151600090819081908415806137cc5750808510155b156137d5578094505b60008092505b85831015613831578660016137f08585614c26565b6137fa9190614c26565b8151811061380a5761380a614eb4565b60200260200101518161381d9190614aad565b90508261382981614dbb565b9350506137db565b9694955050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000156138e757606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156138aa57600080fd5b505afa1580156138be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138e291906143dc565b905090565b504390565b60005473ffffffffffffffffffffffffffffffffffffffff16331461396d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401612784565b565b6015546040517f08b79da4000000000000000000000000000000000000000000000000000000008152600091829173ffffffffffffffffffffffffffffffffffffffff909116906308b79da4906139ca9086906004016147ed565b602060405180830381600087803b1580156139e457600080fd5b505af11580156139f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1c91906143dc565b9050613a29601382613d1e565b5060608301516000828152600a6020908152604080832063ffffffff90941690935560a0860151600b8252929091208251613a6a9391929190910190613f2c565b5092915050565b60006117808383613d2a565b73ffffffffffffffffffffffffffffffffffffffff8116331415613afd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401612784565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000826000018281548110613b8a57613b8a614eb4565b9060005260206000200154905092915050565b818180821415613bae575050505050565b6000856002613bbd8787614bb2565b613bc79190614ac5565b613bd19087614a39565b81518110613be157613be1614eb4565b602002602001015190505b818313613cf0575b80868481518110613c0757613c07614eb4565b60200260200101511015613c275782613c1f81614d60565b935050613bf4565b858281518110613c3957613c39614eb4565b6020026020010151811015613c5a5781613c5281614c69565b925050613c27565b818313613ceb57858281518110613c7357613c73614eb4565b6020026020010151868481518110613c8d57613c8d614eb4565b6020026020010151878581518110613ca757613ca7614eb4565b60200260200101888581518110613cc057613cc0614eb4565b60209081029190910101919091525282613cd981614d60565b9350508180613ce790614c69565b9250505b613bec565b81851215613d0357613d03868684613b9d565b83831215613d1657613d16868486613b9d565b505050505050565b60006117808383613e1d565b60008181526001830160205260408120548015613e13576000613d4e600183614c26565b8554909150600090613d6290600190614c26565b9050818114613dc7576000866000018281548110613d8257613d82614eb4565b9060005260206000200154905080876000018481548110613da557613da5614eb4565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613dd857613dd8614e85565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061112b565b600091505061112b565b6000818152600183016020526040812054613e645750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561112b565b50600061112b565b50805460008255906000526020600020908101906135ad9190613fa0565b828054613e9690614d0c565b90600052602060002090601f016020900481019282613eb85760008555613f1c565b82601f10613eef578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555613f1c565b82800160010185558215613f1c579182015b82811115613f1c578235825591602001919060010190613f01565b50613f28929150613fa0565b5090565b828054613f3890614d0c565b90600052602060002090601f016020900481019282613f5a5760008555613f1c565b82601f10613f7357805160ff1916838001178555613f1c565b82800160010185558215613f1c579182015b82811115613f1c578251825591602001919060010190613f85565b5b80821115613f285760008155600101613fa1565b8051613fc081614f12565b919050565b60008083601f840112613fd757600080fd5b50813567ffffffffffffffff811115613fef57600080fd5b6020830191508360208260051b85010111156114f457600080fd5b80518015158114613fc057600080fd5b60008083601f84011261402c57600080fd5b50813567ffffffffffffffff81111561404457600080fd5b6020830191508360208285010111156114f457600080fd5b600082601f83011261406d57600080fd5b815161408061407b826149f3565b6149a4565b81815284602083860101111561409557600080fd5b6140a6826020830160208701614c3d565b949350505050565b803561ffff81168114613fc057600080fd5b8051613fc081614f34565b805167ffffffffffffffff81168114613fc057600080fd5b803560ff81168114613fc057600080fd5b8051613fc081614f46565b60006020828403121561411157600080fd5b813561178081614f12565b6000806020838503121561412f57600080fd5b823567ffffffffffffffff81111561414657600080fd5b61415285828601613fc5565b90969095509350505050565b60008060006040848603121561417357600080fd5b833567ffffffffffffffff81111561418a57600080fd5b61419686828701613fc5565b90945092505060208401356141aa81614f34565b809150509250925092565b6000602082840312156141c757600080fd5b6117808261400a565b6000602082840312156141e257600080fd5b5035919050565b600080602083850312156141fc57600080fd5b823567ffffffffffffffff81111561421357600080fd5b6141528582860161401a565b60006020828403121561423157600080fd5b815161178081614f12565b600080600080600060a0868803121561425457600080fd5b85516003811061426357600080fd5b602087015190955061427481614f34565b604087015190945061428581614f34565b606087015190935061429681614f12565b80925050608086015190509295509295909350565b6000602082840312156142bd57600080fd5b815167ffffffffffffffff808211156142d557600080fd5b9083019061016082860312156142ea57600080fd5b6142f261497a565b6142fb83613fb5565b815261430960208401613fb5565b602082015261431a604084016140c0565b604082015260608301518281111561433157600080fd5b61433d8782860161405c565b60608301525061434f608084016140f4565b608082015261436060a08401613fb5565b60a082015261437160c084016140cb565b60c082015261438260e084016140c0565b60e08201526101006143958185016140f4565b908201526101206143a784820161400a565b9082015261014083810151838111156143bf57600080fd5b6143cb8882870161405c565b918301919091525095945050505050565b6000602082840312156143ee57600080fd5b5051919050565b60008060006040848603121561440a57600080fd5b83359250602084013567ffffffffffffffff81111561442857600080fd5b6144348682870161401a565b9497909650939450505050565b6000806040838503121561445457600080fd5b82359150602083013567ffffffffffffffff81111561447257600080fd5b8301601f8101851361448357600080fd5b803561449161407b826149f3565b8181528660208385010111156144a657600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080604083850312156144d957600080fd5b823591506144e9602084016140ae565b90509250929050565b60008060006060848603121561450757600080fd5b83359250614517602085016140ae565b9150604084013590509250925092565b6000806040838503121561453a57600080fd5b50508035926020909101359150565b60008060006060848603121561455e57600080fd5b8335925060208401359150614575604085016140ae565b90509250925092565b60008060006060848603121561459357600080fd5b505081359360208301359350604090920135919050565b600080604083850312156145bd57600080fd5b8235915060208301356145cf81614f34565b809150509250929050565b600080604083850312156145ed57600080fd5b8235915060208301356145cf81614f46565b60006020828403121561461157600080fd5b611780826140e3565b600080600080600060a0868803121561463257600080fd5b61463b866140e3565b9450602086013561464b81614f34565b9350604086013561465b81614f46565b94979396509394606081013594506080013592915050565b60006020828403121561468557600080fd5b813561178081614f46565b6000602082840312156146a257600080fd5b815161178081614f46565b600081518084526020808501945080840160005b838110156146dd578151875295820195908201906001016146c1565b509495945050505050565b60008151808452614700816020860160208601614c3d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815281602082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561476b57600080fd5b8260051b80856040850137600092016040019182525092915050565b60208152600061178060208301846146ad565b6040815260006147ad60408301856146ad565b8281036020840152612a9e81856146ad565b821515815260406020820152600061177d60408301846146e8565b60208152600061178060208301846146e8565b602081526000825161010080602085015261480c6101208501836146e8565b915060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08086850301604087015261484884836146e8565b935060408701519150614873606087018373ffffffffffffffffffffffffffffffffffffffff169052565b606087015163ffffffff811660808801529150608087015173ffffffffffffffffffffffffffffffffffffffff811660a0880152915060a08701519150808685030160c08701526148c484836146e8565b935060c08701519150808685030160e0870152506148e283826146e8565b92505060e0850151614903828601826bffffffffffffffffffffffff169052565b5090949350505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b82815260406020820152600061177d60408301846146e8565b604051610160810167ffffffffffffffff8111828210171561499e5761499e614ee3565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156149eb576149eb614ee3565b604052919050565b600067ffffffffffffffff821115614a0d57614a0d614ee3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615614a7357614a73614e27565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615614aa757614aa7614e27565b50500190565b60008219821115614ac057614ac0614e27565b500190565b600082614ad457614ad4614e56565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615614b2857614b28614e27565b500590565b600082614b3c57614b3c614e56565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b7957614b79614e27565b500290565b60006bffffffffffffffffffffffff80831681851681830481118215151615614ba957614ba9614e27565b02949350505050565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615614bec57614bec614e27565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615614c2057614c20614e27565b50500390565b600082821015614c3857614c38614e27565b500390565b60005b83811015614c58578181015183820152602001614c40565b83811115612a265750506000910152565b60007f8000000000000000000000000000000000000000000000000000000000000000821415614c9b57614c9b614e27565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600061ffff821680614cd557614cd5614e27565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b600081614c9b57614c9b614e27565b600181811c90821680614d2057607f821691505b60208210811415614d5a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d9257614d92614e27565b5060010190565b600061ffff80831681811415614db157614db1614e27565b6001019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d9257614d92614e27565b600063ffffffff80831681811415614db157614db1614e27565b600060ff821660ff811415614e1e57614e1e614e27565b60010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146135ad57600080fd5b63ffffffff811681146135ad57600080fd5b6bffffffffffffffffffffffff811681146135ad57600080fdfea164736f6c6343000806000a", } var VerifiableLoadUpkeepABI = VerifiableLoadUpkeepMetaData.ABI @@ -1272,16 +1272,16 @@ func (_VerifiableLoadUpkeep *VerifiableLoadUpkeepTransactorSession) BatchSetInte return _VerifiableLoadUpkeep.Contract.BatchSetIntervals(&_VerifiableLoadUpkeep.TransactOpts, upkeepIds, interval) } -func (_VerifiableLoadUpkeep *VerifiableLoadUpkeepTransactor) BatchUpdateCheckData(opts *bind.TransactOpts, upkeepIds []*big.Int) (*types.Transaction, error) { - return _VerifiableLoadUpkeep.contract.Transact(opts, "batchUpdateCheckData", upkeepIds) +func (_VerifiableLoadUpkeep *VerifiableLoadUpkeepTransactor) BatchUpdatePipelineData(opts *bind.TransactOpts, upkeepIds []*big.Int) (*types.Transaction, error) { + return _VerifiableLoadUpkeep.contract.Transact(opts, "batchUpdatePipelineData", upkeepIds) } -func (_VerifiableLoadUpkeep *VerifiableLoadUpkeepSession) BatchUpdateCheckData(upkeepIds []*big.Int) (*types.Transaction, error) { - return _VerifiableLoadUpkeep.Contract.BatchUpdateCheckData(&_VerifiableLoadUpkeep.TransactOpts, upkeepIds) +func (_VerifiableLoadUpkeep *VerifiableLoadUpkeepSession) BatchUpdatePipelineData(upkeepIds []*big.Int) (*types.Transaction, error) { + return _VerifiableLoadUpkeep.Contract.BatchUpdatePipelineData(&_VerifiableLoadUpkeep.TransactOpts, upkeepIds) } -func (_VerifiableLoadUpkeep *VerifiableLoadUpkeepTransactorSession) BatchUpdateCheckData(upkeepIds []*big.Int) (*types.Transaction, error) { - return _VerifiableLoadUpkeep.Contract.BatchUpdateCheckData(&_VerifiableLoadUpkeep.TransactOpts, upkeepIds) +func (_VerifiableLoadUpkeep *VerifiableLoadUpkeepTransactorSession) BatchUpdatePipelineData(upkeepIds []*big.Int) (*types.Transaction, error) { + return _VerifiableLoadUpkeep.Contract.BatchUpdatePipelineData(&_VerifiableLoadUpkeep.TransactOpts, upkeepIds) } func (_VerifiableLoadUpkeep *VerifiableLoadUpkeepTransactor) BatchWithdrawLinks(opts *bind.TransactOpts, upkeepIds []*big.Int) (*types.Transaction, error) { @@ -1452,16 +1452,16 @@ func (_VerifiableLoadUpkeep *VerifiableLoadUpkeepTransactorSession) TransferOwne return _VerifiableLoadUpkeep.Contract.TransferOwnership(&_VerifiableLoadUpkeep.TransactOpts, to) } -func (_VerifiableLoadUpkeep *VerifiableLoadUpkeepTransactor) UpdateCheckData(opts *bind.TransactOpts, upkeepId *big.Int, checkData []byte) (*types.Transaction, error) { - return _VerifiableLoadUpkeep.contract.Transact(opts, "updateCheckData", upkeepId, checkData) +func (_VerifiableLoadUpkeep *VerifiableLoadUpkeepTransactor) UpdateUpkeepPipelineData(opts *bind.TransactOpts, upkeepId *big.Int, pipelineData []byte) (*types.Transaction, error) { + return _VerifiableLoadUpkeep.contract.Transact(opts, "updateUpkeepPipelineData", upkeepId, pipelineData) } -func (_VerifiableLoadUpkeep *VerifiableLoadUpkeepSession) UpdateCheckData(upkeepId *big.Int, checkData []byte) (*types.Transaction, error) { - return _VerifiableLoadUpkeep.Contract.UpdateCheckData(&_VerifiableLoadUpkeep.TransactOpts, upkeepId, checkData) +func (_VerifiableLoadUpkeep *VerifiableLoadUpkeepSession) UpdateUpkeepPipelineData(upkeepId *big.Int, pipelineData []byte) (*types.Transaction, error) { + return _VerifiableLoadUpkeep.Contract.UpdateUpkeepPipelineData(&_VerifiableLoadUpkeep.TransactOpts, upkeepId, pipelineData) } -func (_VerifiableLoadUpkeep *VerifiableLoadUpkeepTransactorSession) UpdateCheckData(upkeepId *big.Int, checkData []byte) (*types.Transaction, error) { - return _VerifiableLoadUpkeep.Contract.UpdateCheckData(&_VerifiableLoadUpkeep.TransactOpts, upkeepId, checkData) +func (_VerifiableLoadUpkeep *VerifiableLoadUpkeepTransactorSession) UpdateUpkeepPipelineData(upkeepId *big.Int, pipelineData []byte) (*types.Transaction, error) { + return _VerifiableLoadUpkeep.Contract.UpdateUpkeepPipelineData(&_VerifiableLoadUpkeep.TransactOpts, upkeepId, pipelineData) } func (_VerifiableLoadUpkeep *VerifiableLoadUpkeepTransactor) WithdrawLinks(opts *bind.TransactOpts) (*types.Transaction, error) { @@ -2893,7 +2893,7 @@ type VerifiableLoadUpkeepInterface interface { BatchSetIntervals(opts *bind.TransactOpts, upkeepIds []*big.Int, interval uint32) (*types.Transaction, error) - BatchUpdateCheckData(opts *bind.TransactOpts, upkeepIds []*big.Int) (*types.Transaction, error) + BatchUpdatePipelineData(opts *bind.TransactOpts, upkeepIds []*big.Int) (*types.Transaction, error) BatchWithdrawLinks(opts *bind.TransactOpts, upkeepIds []*big.Int) (*types.Transaction, error) @@ -2923,7 +2923,7 @@ type VerifiableLoadUpkeepInterface interface { TransferOwnership(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) - UpdateCheckData(opts *bind.TransactOpts, upkeepId *big.Int, checkData []byte) (*types.Transaction, error) + UpdateUpkeepPipelineData(opts *bind.TransactOpts, upkeepId *big.Int, pipelineData []byte) (*types.Transaction, error) WithdrawLinks(opts *bind.TransactOpts) (*types.Transaction, error) diff --git a/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt index a8e3e1ac3f4..498bb5d6bea 100644 --- a/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -64,8 +64,8 @@ type_and_version_interface_wrapper: ../../contracts/solc/v0.8.6/TypeAndVersionIn upkeep_counter_wrapper: ../../contracts/solc/v0.7/UpkeepCounter.abi ../../contracts/solc/v0.7/UpkeepCounter.bin 901961ebf18906febc1c350f02da85c7ea1c2a68da70cfd94efa27c837a48663 upkeep_perform_counter_restrictive_wrapper: ../../contracts/solc/v0.7/UpkeepPerformCounterRestrictive.abi ../../contracts/solc/v0.7/UpkeepPerformCounterRestrictive.bin 8975a058fba528e16d8414dc6f13946d17a145fcbc66cf25a32449b6fe1ce878 upkeep_transcoder: ../../contracts/solc/v0.8.6/UpkeepTranscoder.abi ../../contracts/solc/v0.8.6/UpkeepTranscoder.bin 336c92a981597be26508455f81a908a0784a817b129a59686c5b2c4afcba730a -verifiable_load_mercury_upkeep_wrapper: ../../contracts/solc/v0.8.6/VerifiableLoadMercuryUpkeep.abi ../../contracts/solc/v0.8.6/VerifiableLoadMercuryUpkeep.bin f94c56c37fb64fab4201e4b218ebdb85602c98e1faa79948a27e4598b9432f30 -verifiable_load_upkeep_wrapper: ../../contracts/solc/v0.8.6/VerifiableLoadUpkeep.abi ../../contracts/solc/v0.8.6/VerifiableLoadUpkeep.bin 0e0cf6c7f4540dcc84b77acaf68487b61656efcd6e39105b19686063084c78e6 +verifiable_load_mercury_upkeep_wrapper: ../../contracts/solc/v0.8.6/VerifiableLoadMercuryUpkeep.abi ../../contracts/solc/v0.8.6/VerifiableLoadMercuryUpkeep.bin cecedbfaabc49f34311819fbcec38205d7f73ab98cdd3cbcd44af4ba65f75a89 +verifiable_load_upkeep_wrapper: ../../contracts/solc/v0.8.6/VerifiableLoadUpkeep.abi ../../contracts/solc/v0.8.6/VerifiableLoadUpkeep.bin 75800e0a60709b8ed9668affd65ee06c4487cb51ca2938a5d4a95c2138c4dc8d vrf_consumer_v2: ../../contracts/solc/v0.8.6/VRFConsumerV2.abi ../../contracts/solc/v0.8.6/VRFConsumerV2.bin 9ef258bf8e9f8d880fd229ceb145593d91e24fc89366baa0bf19169c5787d15f vrf_consumer_v2_upgradeable_example: ../../contracts/solc/v0.8.6/VRFConsumerV2UpgradeableExample.abi ../../contracts/solc/v0.8.6/VRFConsumerV2UpgradeableExample.bin f1790a9a2f2a04c730593e483459709cb89e897f8a19d7a3ac0cfe6a97265e6e vrf_coordinator_mock: ../../contracts/solc/v0.8.6/VRFCoordinatorMock.abi ../../contracts/solc/v0.8.6/VRFCoordinatorMock.bin 5c495cf8df1f46d8736b9150cdf174cce358cb8352f60f0d5bb9581e23920501 diff --git a/core/scripts/chaincli/config/config.go b/core/scripts/chaincli/config/config.go index 82a9854fa87..4a92272794c 100644 --- a/core/scripts/chaincli/config/config.go +++ b/core/scripts/chaincli/config/config.go @@ -16,6 +16,7 @@ const ( Conditional UpkeepType = iota Mercury LogTrigger + LogTriggeredFeedLookup ) // Config represents configuration fields @@ -43,22 +44,24 @@ type Config struct { OCR2Keepers bool `mapstructure:"KEEPER_OCR2"` // Keeper config - LinkETHFeedAddr string `mapstructure:"LINK_ETH_FEED"` - FastGasFeedAddr string `mapstructure:"FAST_GAS_FEED"` - PaymentPremiumPBB uint32 `mapstructure:"PAYMENT_PREMIUM_PBB"` - FlatFeeMicroLink uint32 `mapstructure:"FLAT_FEE_MICRO_LINK"` - BlockCountPerTurn int64 `mapstructure:"BLOCK_COUNT_PER_TURN"` - CheckGasLimit uint32 `mapstructure:"CHECK_GAS_LIMIT"` - StalenessSeconds int64 `mapstructure:"STALENESS_SECONDS"` - GasCeilingMultiplier uint16 `mapstructure:"GAS_CEILING_MULTIPLIER"` - MinUpkeepSpend int64 `mapstructure:"MIN_UPKEEP_SPEND"` - MaxPerformGas uint32 `mapstructure:"MAX_PERFORM_GAS"` - MaxCheckDataSize uint32 `mapstructure:"MAX_CHECK_DATA_SIZE"` - MaxPerformDataSize uint32 `mapstructure:"MAX_PERFORM_DATA_SIZE"` - FallbackGasPrice int64 `mapstructure:"FALLBACK_GAS_PRICE"` - FallbackLinkPrice int64 `mapstructure:"FALLBACK_LINK_PRICE"` - Transcoder string `mapstructure:"TRANSCODER"` - Registrar string `mapstructure:"REGISTRAR"` + Mode uint8 `mapstructure:"MODE"` + LinkETHFeedAddr string `mapstructure:"LINK_ETH_FEED"` + FastGasFeedAddr string `mapstructure:"FAST_GAS_FEED"` + PaymentPremiumPBB uint32 `mapstructure:"PAYMENT_PREMIUM_PBB"` + FlatFeeMicroLink uint32 `mapstructure:"FLAT_FEE_MICRO_LINK"` + BlockCountPerTurn int64 `mapstructure:"BLOCK_COUNT_PER_TURN"` + CheckGasLimit uint32 `mapstructure:"CHECK_GAS_LIMIT"` + StalenessSeconds int64 `mapstructure:"STALENESS_SECONDS"` + GasCeilingMultiplier uint16 `mapstructure:"GAS_CEILING_MULTIPLIER"` + MinUpkeepSpend int64 `mapstructure:"MIN_UPKEEP_SPEND"` + MaxPerformGas uint32 `mapstructure:"MAX_PERFORM_GAS"` + MaxCheckDataSize uint32 `mapstructure:"MAX_CHECK_DATA_SIZE"` + MaxPerformDataSize uint32 `mapstructure:"MAX_PERFORM_DATA_SIZE"` + FallbackGasPrice int64 `mapstructure:"FALLBACK_GAS_PRICE"` + FallbackLinkPrice int64 `mapstructure:"FALLBACK_LINK_PRICE"` + Transcoder string `mapstructure:"TRANSCODER"` + Registrar string `mapstructure:"REGISTRAR"` + UpkeepPrivilegeManager string `mapstructure:"UPKEEP_PRIVILEGE_MANAGER"` // Upkeep Config RegistryVersion keeper.RegistryVersion `mapstructure:"KEEPER_REGISTRY_VERSION"` diff --git a/core/scripts/chaincli/handler/keeper.go b/core/scripts/chaincli/handler/keeper.go index e82bb8cf250..70547c1661d 100644 --- a/core/scripts/chaincli/handler/keeper.go +++ b/core/scripts/chaincli/handler/keeper.go @@ -253,7 +253,7 @@ func (k *Keeper) deployRegistry21(ctx context.Context, verify bool) (common.Addr registryLogicBAddr, tx, _, err := registrylogicb21.DeployKeeperRegistryLogicB( k.buildTxOpts(ctx), k.client, - 0, + k.cfg.Mode, common.HexToAddress(k.cfg.LinkTokenAddr), common.HexToAddress(k.cfg.LinkETHFeedAddr), common.HexToAddress(k.cfg.FastGasFeedAddr), @@ -317,7 +317,7 @@ func (k *Keeper) deployRegistry20(ctx context.Context, verify bool) (common.Addr registryLogicAddr, deployKeeperRegistryLogicTx, _, err := registrylogic20.DeployKeeperRegistryLogic( k.buildTxOpts(ctx), k.client, - 0, + k.cfg.Mode, common.HexToAddress(k.cfg.LinkTokenAddr), common.HexToAddress(k.cfg.LinkETHFeedAddr), common.HexToAddress(k.cfg.FastGasFeedAddr), @@ -687,8 +687,8 @@ func (k *Keeper) deployUpkeeps(ctx context.Context, registryAddr common.Address, log.Println(upkeepId, upkeepAddr.Hex(), ": Upkeep funded - ", helpers.ExplorerLink(k.cfg.ChainID, addFundsTx.Hash())) } - // set upkeep privilege config for mercury upkeeps - if k.cfg.UpkeepType == config.Mercury && k.cfg.RegistryVersion == keeper.RegistryVersion_2_1 { + // set administrative offchain config for mercury upkeeps + if (k.cfg.UpkeepType == config.Mercury || k.cfg.UpkeepType == config.LogTriggeredFeedLookup) && k.cfg.RegistryVersion == keeper.RegistryVersion_2_1 { reg21, err := iregistry21.NewIKeeperRegistryMaster(registryAddr, k.client) if err != nil { log.Fatalf("cannot create registry 2.1: %v", err) diff --git a/core/scripts/chaincli/handler/keeper_deployer.go b/core/scripts/chaincli/handler/keeper_deployer.go index 1b99c2ac845..daeb7f252e4 100644 --- a/core/scripts/chaincli/handler/keeper_deployer.go +++ b/core/scripts/chaincli/handler/keeper_deployer.go @@ -152,7 +152,6 @@ func (d *v20KeeperDeployer) SetKeepers(opts *bind.TransactOpts, cls []cmd.HTTPCl offC, err := json.Marshal(offchain.OffchainConfig{ PerformLockoutWindow: 100 * 3 * 1000, // ~100 block lockout (on mumbai) MinConfirmations: 1, - MercuryLookup: d.cfg.UpkeepType == config.Mercury, }) if err != nil { panic(err) @@ -293,7 +292,7 @@ func (d *v21KeeperDeployer) SetKeepers(opts *bind.TransactOpts, cls []cmd.HTTPCl offC, err := json.Marshal(offchain.OffchainConfig{ PerformLockoutWindow: 100 * 3 * 1000, // ~100 block lockout (on mumbai) MinConfirmations: 1, - MercuryLookup: d.cfg.UpkeepType == config.Mercury, + MercuryLookup: d.cfg.UpkeepType == config.Mercury || d.cfg.UpkeepType == config.LogTriggeredFeedLookup, }) if err != nil { panic(err) @@ -351,25 +350,27 @@ func (d *v21KeeperDeployer) SetKeepers(opts *bind.TransactOpts, cls []cmd.HTTPCl {Name: "fallback_link_price", Type: "uint256"}, {Name: "transcoder", Type: "address"}, {Name: "registrars", Type: "address[]"}, + {Name: "upkeep_privilege_manager", Type: "address"}, }) if err != nil { return nil, fmt.Errorf("error creating onChainConfigType: %v", err) } var args gethabi.Arguments = []gethabi.Argument{{Type: onchainConfigType}} onchainConfig, err := args.Pack(iregistry21.KeeperRegistryBase21OnchainConfig{ - PaymentPremiumPPB: d.cfg.PaymentPremiumPBB, - FlatFeeMicroLink: d.cfg.PaymentPremiumPBB, - CheckGasLimit: d.cfg.CheckGasLimit, - StalenessSeconds: big.NewInt(d.cfg.StalenessSeconds), - GasCeilingMultiplier: d.cfg.GasCeilingMultiplier, - MinUpkeepSpend: big.NewInt(d.cfg.MinUpkeepSpend), - MaxPerformGas: d.cfg.MaxPerformGas, - MaxCheckDataSize: d.cfg.MaxCheckDataSize, - MaxPerformDataSize: d.cfg.MaxPerformDataSize, - FallbackGasPrice: big.NewInt(d.cfg.FallbackGasPrice), - FallbackLinkPrice: big.NewInt(d.cfg.FallbackLinkPrice), - Transcoder: common.HexToAddress(d.cfg.Transcoder), - Registrars: []common.Address{common.HexToAddress(d.cfg.Registrar)}, + PaymentPremiumPPB: d.cfg.PaymentPremiumPBB, + FlatFeeMicroLink: d.cfg.PaymentPremiumPBB, + CheckGasLimit: d.cfg.CheckGasLimit, + StalenessSeconds: big.NewInt(d.cfg.StalenessSeconds), + GasCeilingMultiplier: d.cfg.GasCeilingMultiplier, + MinUpkeepSpend: big.NewInt(d.cfg.MinUpkeepSpend), + MaxPerformGas: d.cfg.MaxPerformGas, + MaxCheckDataSize: d.cfg.MaxCheckDataSize, + MaxPerformDataSize: d.cfg.MaxPerformDataSize, + FallbackGasPrice: big.NewInt(d.cfg.FallbackGasPrice), + FallbackLinkPrice: big.NewInt(d.cfg.FallbackLinkPrice), + Transcoder: common.HexToAddress(d.cfg.Transcoder), + Registrars: []common.Address{common.HexToAddress(d.cfg.Registrar)}, + UpkeepPrivilegeManager: common.HexToAddress(d.cfg.UpkeepPrivilegeManager), }) if err != nil { return nil, fmt.Errorf("error packing onChainConfigType: %v", err) From 5fa2f37bd0fb203333d62676e66b8c8ce9b3adaf Mon Sep 17 00:00:00 2001 From: george-dorin <120329946+george-dorin@users.noreply.github.com> Date: Wed, 21 Jun 2023 13:50:46 +0300 Subject: [PATCH 7/8] Move EVM node pool config (#9656) * Move EVM node pool config * Update after merge * Add test * Update after merge --- core/chains/evm/chain.go | 13 +- core/chains/evm/client/client.go | 4 +- core/chains/evm/client/client_test.go | 6 +- core/chains/evm/client/helpers_test.go | 27 ++--- core/chains/evm/client/node.go | 30 ++--- core/chains/evm/client/node_fsm_test.go | 3 +- core/chains/evm/client/node_lifecycle.go | 18 +-- core/chains/evm/client/node_lifecycle_test.go | 113 +++++++++--------- core/chains/evm/client/pool.go | 40 ++++--- core/chains/evm/client/pool_test.go | 8 +- core/chains/evm/config/config.go | 9 +- core/chains/evm/config/config_node_pool.go | 10 ++ .../evm/config/config_node_pool_test.go | 32 +++++ .../evm/config/mocks/chain_scoped_config.go | 70 ----------- core/chains/evm/config/v2/chain_scoped.go | 40 +++---- core/chains/evm/config/v2/config_node_pool.go | 25 ++++ 16 files changed, 215 insertions(+), 233 deletions(-) create mode 100644 core/chains/evm/config/config_node_pool.go create mode 100644 core/chains/evm/config/config_node_pool_test.go create mode 100644 core/chains/evm/config/v2/config_node_pool.go diff --git a/core/chains/evm/chain.go b/core/chains/evm/chain.go index d98c7e8f5b8..d972aa3e316 100644 --- a/core/chains/evm/chain.go +++ b/core/chains/evm/chain.go @@ -5,6 +5,7 @@ import ( "fmt" "math/big" "net/url" + "time" "github.com/pkg/errors" "github.com/smartcontractkit/sqlx" @@ -93,7 +94,7 @@ func newChain(ctx context.Context, cfg evmconfig.ChainScopedConfig, nodes []*v2. client = evmclient.NewNullClient(chainID, l) } else if opts.GenEthClient == nil { var err2 error - client, err2 = newEthClientFromChain(cfg, l, chainID, chainType, nodes) + client, err2 = newEthClientFromChain(cfg.EVM().NodePool(), cfg.EVM().NodeNoNewHeadsThreshold(), l, chainID, chainType, nodes) if err2 != nil { return nil, errors.Wrapf(err2, "failed to instantiate eth client for chain with ID %s", cfg.EVM().ChainID().String()) } @@ -278,7 +279,7 @@ func (c *chain) Logger() logger.Logger { return c.logger } func (c *chain) BalanceMonitor() monitor.BalanceMonitor { return c.balanceMonitor } func (c *chain) GasEstimator() gas.EvmFeeEstimator { return c.gasEstimator } -func newEthClientFromChain(cfg evmclient.NodeConfig, lggr logger.Logger, chainID *big.Int, chainType config.ChainType, nodes []*v2.Node) (evmclient.Client, error) { +func newEthClientFromChain(cfg evmconfig.NodePool, noNewHeadsThreshold time.Duration, lggr logger.Logger, chainID *big.Int, chainType config.ChainType, nodes []*v2.Node) (evmclient.Client, error) { var primaries []evmclient.Node var sendonlys []evmclient.SendOnlyNode for i, node := range nodes { @@ -286,22 +287,22 @@ func newEthClientFromChain(cfg evmclient.NodeConfig, lggr logger.Logger, chainID sendonly := evmclient.NewSendOnlyNode(lggr, (url.URL)(*node.HTTPURL), *node.Name, chainID) sendonlys = append(sendonlys, sendonly) } else { - primary, err := newPrimary(cfg, lggr, node, int32(i), chainID) + primary, err := newPrimary(cfg, noNewHeadsThreshold, lggr, node, int32(i), chainID) if err != nil { return nil, err } primaries = append(primaries, primary) } } - return evmclient.NewClientWithNodes(lggr, cfg, primaries, sendonlys, chainID, chainType) + return evmclient.NewClientWithNodes(lggr, cfg.SelectionMode(), noNewHeadsThreshold, primaries, sendonlys, chainID, chainType) } -func newPrimary(cfg evmclient.NodeConfig, lggr logger.Logger, n *v2.Node, id int32, chainID *big.Int) (evmclient.Node, error) { +func newPrimary(cfg evmconfig.NodePool, noNewHeadsThreshold time.Duration, lggr logger.Logger, n *v2.Node, id int32, chainID *big.Int) (evmclient.Node, error) { if n.SendOnly != nil && *n.SendOnly { return nil, errors.New("cannot cast send-only node to primary") } - return evmclient.NewNode(cfg, lggr, (url.URL)(*n.WSURL), (*url.URL)(n.HTTPURL), *n.Name, id, chainID, *n.Order), nil + return evmclient.NewNode(cfg, noNewHeadsThreshold, lggr, (url.URL)(*n.WSURL), (*url.URL)(n.HTTPURL), *n.Name, id, chainID, *n.Order), nil } func EnsureChains(db *sqlx.DB, lggr logger.Logger, cfg pg.QConfig, ids []utils.Big) error { diff --git a/core/chains/evm/client/client.go b/core/chains/evm/client/client.go index b2bdad31b87..516bc68232c 100644 --- a/core/chains/evm/client/client.go +++ b/core/chains/evm/client/client.go @@ -94,8 +94,8 @@ var _ htrktypes.Client[*evmtypes.Head, ethereum.Subscription, *big.Int, common.H // NewClientWithNodes instantiates a client from a list of nodes // Currently only supports one primary -func NewClientWithNodes(logger logger.Logger, cfg PoolConfig, primaryNodes []Node, sendOnlyNodes []SendOnlyNode, chainID *big.Int, chainType config.ChainType) (*client, error) { - pool := NewPool(logger, cfg, primaryNodes, sendOnlyNodes, chainID, chainType) +func NewClientWithNodes(logger logger.Logger, selectionMode string, noNewHeadsThreshold time.Duration, primaryNodes []Node, sendOnlyNodes []SendOnlyNode, chainID *big.Int, chainType config.ChainType) (*client, error) { + pool := NewPool(logger, selectionMode, noNewHeadsThreshold, primaryNodes, sendOnlyNodes, chainID, chainType) return &client{ logger: logger, pool: pool, diff --git a/core/chains/evm/client/client_test.go b/core/chains/evm/client/client_test.go index 3ac1c688965..897928310ff 100644 --- a/core/chains/evm/client/client_test.go +++ b/core/chains/evm/client/client_test.go @@ -35,10 +35,10 @@ func mustNewClient(t *testing.T, wsURL string, sendonlys ...url.URL) evmclient.C } func mustNewClientWithChainID(t *testing.T, wsURL string, chainID *big.Int, sendonlys ...url.URL) evmclient.Client { - cfg := evmclient.TestNodeConfig{ - SelectionMode: evmclient.NodeSelectionMode_RoundRobin, + cfg := evmclient.TestNodePoolConfig{ + NodeSelectionMode: evmclient.NodeSelectionMode_RoundRobin, } - c, err := evmclient.NewClientWithTestNode(t, cfg, wsURL, nil, sendonlys, 42, chainID) + c, err := evmclient.NewClientWithTestNode(t, cfg, time.Second*0, wsURL, nil, sendonlys, 42, chainID) require.NoError(t, err) return c } diff --git a/core/chains/evm/client/helpers_test.go b/core/chains/evm/client/helpers_test.go index aa93fdff0e4..8a660eb38db 100644 --- a/core/chains/evm/client/helpers_test.go +++ b/core/chains/evm/client/helpers_test.go @@ -9,25 +9,24 @@ import ( "github.com/pkg/errors" + "github.com/smartcontractkit/chainlink/v2/core/chains/evm/config" "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/utils" ) -type TestNodeConfig struct { - NoNewHeadsThreshold time.Duration - PollFailureThreshold uint32 - PollInterval time.Duration - SelectionMode string - SyncThreshold uint32 +type TestNodePoolConfig struct { + NodePollFailureThreshold uint32 + NodePollInterval time.Duration + NodeSelectionMode string + NodeSyncThreshold uint32 } -func (tc TestNodeConfig) NodeNoNewHeadsThreshold() time.Duration { return tc.NoNewHeadsThreshold } -func (tc TestNodeConfig) NodePollFailureThreshold() uint32 { return tc.PollFailureThreshold } -func (tc TestNodeConfig) NodePollInterval() time.Duration { return tc.PollInterval } -func (tc TestNodeConfig) NodeSelectionMode() string { return tc.SelectionMode } -func (tc TestNodeConfig) NodeSyncThreshold() uint32 { return tc.SyncThreshold } +func (tc TestNodePoolConfig) PollFailureThreshold() uint32 { return tc.NodePollFailureThreshold } +func (tc TestNodePoolConfig) PollInterval() time.Duration { return tc.NodePollInterval } +func (tc TestNodePoolConfig) SelectionMode() string { return tc.NodeSelectionMode } +func (tc TestNodePoolConfig) SyncThreshold() uint32 { return tc.NodeSyncThreshold } -func NewClientWithTestNode(t *testing.T, cfg NodeConfig, rpcUrl string, rpcHTTPURL *url.URL, sendonlyRPCURLs []url.URL, id int32, chainID *big.Int) (*client, error) { +func NewClientWithTestNode(t *testing.T, nodePoolCfg config.NodePool, noNewHeadsThreshold time.Duration, rpcUrl string, rpcHTTPURL *url.URL, sendonlyRPCURLs []url.URL, id int32, chainID *big.Int) (*client, error) { parsed, err := url.ParseRequestURI(rpcUrl) if err != nil { return nil, err @@ -38,7 +37,7 @@ func NewClientWithTestNode(t *testing.T, cfg NodeConfig, rpcUrl string, rpcHTTPU } lggr := logger.TestLogger(t) - n := NewNode(cfg, lggr, *parsed, rpcHTTPURL, "eth-primary-0", id, chainID, 1) + n := NewNode(nodePoolCfg, noNewHeadsThreshold, lggr, *parsed, rpcHTTPURL, "eth-primary-0", id, chainID, 1) n.(*node).setLatestReceived(0, utils.NewBigI(0)) primaries := []Node{n} @@ -51,7 +50,7 @@ func NewClientWithTestNode(t *testing.T, cfg NodeConfig, rpcUrl string, rpcHTTPU sendonlys = append(sendonlys, s) } - pool := NewPool(lggr, cfg, primaries, sendonlys, chainID, "") + pool := NewPool(lggr, nodePoolCfg.SelectionMode(), noNewHeadsThreshold, primaries, sendonlys, chainID, "") c := &client{logger: lggr, pool: pool} t.Cleanup(c.Close) return c, nil diff --git a/core/chains/evm/client/node.go b/core/chains/evm/client/node.go index dcdce756a25..a876aae78d3 100644 --- a/core/chains/evm/client/node.go +++ b/core/chains/evm/client/node.go @@ -19,6 +19,7 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" + "github.com/smartcontractkit/chainlink/v2/core/chains/evm/config" evmtypes "github.com/smartcontractkit/chainlink/v2/core/chains/evm/types" "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/utils" @@ -130,13 +131,14 @@ type rawclient struct { // It must have a ws url and may have a http url type node struct { utils.StartStopOnce - lfcLog logger.Logger - rpcLog logger.Logger - name string - id int32 - chainID *big.Int - cfg NodeConfig - order int32 + lfcLog logger.Logger + rpcLog logger.Logger + name string + id int32 + chainID *big.Int + nodePoolCfg config.NodePool + noNewHeadsThreshold time.Duration + order int32 ws rawclient http *rawclient @@ -169,22 +171,14 @@ type node struct { nLiveNodes func() (count int, blockNumber int64, totalDifficulty *utils.Big) } -// NodeConfig allows configuration of the node -type NodeConfig interface { - NodeNoNewHeadsThreshold() time.Duration - NodePollFailureThreshold() uint32 - NodePollInterval() time.Duration - NodeSelectionMode() string - NodeSyncThreshold() uint32 -} - // NewNode returns a new *node as Node -func NewNode(nodeCfg NodeConfig, lggr logger.Logger, wsuri url.URL, httpuri *url.URL, name string, id int32, chainID *big.Int, nodeOrder int32) Node { +func NewNode(nodeCfg config.NodePool, noNewHeadsThreshold time.Duration, lggr logger.Logger, wsuri url.URL, httpuri *url.URL, name string, id int32, chainID *big.Int, nodeOrder int32) Node { n := new(node) n.name = name n.id = id n.chainID = chainID - n.cfg = nodeCfg + n.nodePoolCfg = nodeCfg + n.noNewHeadsThreshold = noNewHeadsThreshold n.ws.uri = wsuri n.order = nodeOrder if httpuri != nil { diff --git a/core/chains/evm/client/node_fsm_test.go b/core/chains/evm/client/node_fsm_test.go index 25b5b983e9a..ce63a62a8bd 100644 --- a/core/chains/evm/client/node_fsm_test.go +++ b/core/chains/evm/client/node_fsm_test.go @@ -2,6 +2,7 @@ package client import ( "testing" + "time" "github.com/ethereum/go-ethereum" "github.com/stretchr/testify/assert" @@ -42,7 +43,7 @@ func TestUnit_Node_StateTransitions(t *testing.T) { t.Parallel() s := testutils.NewWSServer(t, testutils.FixtureChainID, nil) - iN := NewNode(TestNodeConfig{}, logger.TestLogger(t), *s.WSURL(), nil, "test node", 42, nil, 1) + iN := NewNode(TestNodePoolConfig{}, time.Second*0, logger.TestLogger(t), *s.WSURL(), nil, "test node", 42, nil, 1) n := iN.(*node) assert.Equal(t, NodeStateUndialed, n.State()) diff --git a/core/chains/evm/client/node_lifecycle.go b/core/chains/evm/client/node_lifecycle.go index 486ceaa7285..d55df58d6ef 100644 --- a/core/chains/evm/client/node_lifecycle.go +++ b/core/chains/evm/client/node_lifecycle.go @@ -41,8 +41,8 @@ var ( // state change in case we have to force a state transition due to no available // nodes. // NOTE: This only applies to out-of-sync nodes if they are the last available node -func zombieNodeCheckInterval(cfg NodeConfig) time.Duration { - interval := cfg.NodeNoNewHeadsThreshold() +func zombieNodeCheckInterval(noNewHeadsThreshold time.Duration) time.Duration { + interval := noNewHeadsThreshold if interval <= 0 || interval > queryTimeout { interval = queryTimeout } @@ -83,9 +83,9 @@ func (n *node) aliveLoop() { } } - noNewHeadsTimeoutThreshold := n.cfg.NodeNoNewHeadsThreshold() - pollFailureThreshold := n.cfg.NodePollFailureThreshold() - pollInterval := n.cfg.NodePollInterval() + noNewHeadsTimeoutThreshold := n.noNewHeadsThreshold + pollFailureThreshold := n.nodePoolCfg.PollFailureThreshold() + pollInterval := n.nodePoolCfg.PollInterval() lggr := n.lfcLog.Named("Alive").With("noNewHeadsTimeoutThreshold", noNewHeadsTimeoutThreshold, "pollInterval", pollInterval, "pollFailureThreshold", pollFailureThreshold) lggr.Tracew("Alive loop starting", "nodeState", n.State()) @@ -208,7 +208,7 @@ func (n *node) aliveLoop() { lggr.Criticalf("RPC endpoint detected out of sync; %s %s", msgCannotDisable, msgDegradedState) // We don't necessarily want to wait the full timeout to check again, we should // check regularly and log noisily in this state - outOfSyncT.Reset(zombieNodeCheckInterval(n.cfg)) + outOfSyncT.Reset(zombieNodeCheckInterval(n.noNewHeadsThreshold)) continue } } @@ -230,13 +230,13 @@ func (n *node) syncStatus(num int64, td *utils.Big) (outOfSync bool, liveNodes i if n.nLiveNodes == nil { return // skip for tests } - threshold := n.cfg.NodeSyncThreshold() + threshold := n.nodePoolCfg.SyncThreshold() if threshold == 0 { return // disabled } // Check against best node ln, highest, greatest := n.nLiveNodes() - mode := n.cfg.NodeSelectionMode() + mode := n.nodePoolCfg.SelectionMode() switch mode { case NodeSelectionMode_HighestHead, NodeSelectionMode_RoundRobin, NodeSelectionMode_PriorityLevel: return num < highest-int64(threshold), ln @@ -320,7 +320,7 @@ func (n *node) outOfSyncLoop(isOutOfSync func(num int64, td *utils.Big) bool) { return } lggr.Debugw(msgReceivedBlock, "blockNumber", head.Number, "totalDifficulty", head.TotalDifficulty, "nodeState", n.State()) - case <-time.After(zombieNodeCheckInterval(n.cfg)): + case <-time.After(zombieNodeCheckInterval(n.noNewHeadsThreshold)): if n.nLiveNodes != nil { if l, _, _ := n.nLiveNodes(); l < 1 { lggr.Critical("RPC endpoint is still out of sync, but there are no other available nodes. This RPC node will be forcibly moved back into the live pool in a degraded state") diff --git a/core/chains/evm/client/node_lifecycle_test.go b/core/chains/evm/client/node_lifecycle_test.go index 1b119618485..9fdd9bb64e1 100644 --- a/core/chains/evm/client/node_lifecycle_test.go +++ b/core/chains/evm/client/node_lifecycle_test.go @@ -12,6 +12,7 @@ import ( "github.com/tidwall/gjson" "go.uber.org/zap" + "github.com/smartcontractkit/chainlink/v2/core/chains/evm/config" evmtypes "github.com/smartcontractkit/chainlink/v2/core/chains/evm/types" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/logger" @@ -27,13 +28,13 @@ func standardHandler(method string, _ gjson.Result) (resp testutils.JSONRPCRespo return } -func newTestNode(t *testing.T, cfg NodeConfig) *node { - return newTestNodeWithCallback(t, cfg, standardHandler) +func newTestNode(t *testing.T, cfg config.NodePool, noNewHeadsThresholds time.Duration) *node { + return newTestNodeWithCallback(t, cfg, noNewHeadsThresholds, standardHandler) } -func newTestNodeWithCallback(t *testing.T, cfg NodeConfig, callback testutils.JSONRPCHandler) *node { +func newTestNodeWithCallback(t *testing.T, cfg config.NodePool, noNewHeadsThreshold time.Duration, callback testutils.JSONRPCHandler) *node { s := testutils.NewWSServer(t, testutils.FixtureChainID, callback) - iN := NewNode(cfg, logger.TestLogger(t), *s.WSURL(), nil, "test node", 42, testutils.FixtureChainID, 1) + iN := NewNode(cfg, noNewHeadsThreshold, logger.TestLogger(t), *s.WSURL(), nil, "test node", 42, testutils.FixtureChainID, 1) n := iN.(*node) return n } @@ -68,8 +69,8 @@ func TestUnit_NodeLifecycle_aliveLoop(t *testing.T) { t.Parallel() t.Run("with no poll and sync timeouts, exits on close", func(t *testing.T) { - pollAndSyncTimeoutsDisabledCfg := TestNodeConfig{} - n := newTestNode(t, pollAndSyncTimeoutsDisabledCfg) + pollAndSyncTimeoutsDisabledCfg := TestNodePoolConfig{} + n := newTestNode(t, pollAndSyncTimeoutsDisabledCfg, 0*time.Second) dial(t, n) ch := make(chan struct{}) @@ -84,9 +85,9 @@ func TestUnit_NodeLifecycle_aliveLoop(t *testing.T) { t.Run("with no poll failures past threshold, stays alive", func(t *testing.T) { threshold := 5 - cfg := TestNodeConfig{PollFailureThreshold: uint32(threshold), PollInterval: testutils.TestInterval} + cfg := TestNodePoolConfig{NodePollFailureThreshold: uint32(threshold), NodePollInterval: testutils.TestInterval} var calls atomic.Int32 - n := newTestNodeWithCallback(t, cfg, func(method string, params gjson.Result) (resp testutils.JSONRPCResponse) { + n := newTestNodeWithCallback(t, cfg, time.Second*0, func(method string, params gjson.Result) (resp testutils.JSONRPCResponse) { switch method { case "eth_subscribe": resp.Result = `"0x00"` @@ -125,8 +126,8 @@ func TestUnit_NodeLifecycle_aliveLoop(t *testing.T) { }) t.Run("with threshold poll failures, transitions to unreachable", func(t *testing.T) { - syncTimeoutsDisabledCfg := TestNodeConfig{PollFailureThreshold: 3, PollInterval: testutils.TestInterval} - n := newTestNode(t, syncTimeoutsDisabledCfg) + syncTimeoutsDisabledCfg := TestNodePoolConfig{NodePollFailureThreshold: 3, NodePollInterval: testutils.TestInterval} + n := newTestNode(t, syncTimeoutsDisabledCfg, time.Second*0) dial(t, n) defer func() { assert.NoError(t, n.Close()) }() @@ -140,9 +141,9 @@ func TestUnit_NodeLifecycle_aliveLoop(t *testing.T) { t.Run("with threshold poll failures, but we are the last node alive, forcibly keeps it alive", func(t *testing.T) { threshold := 3 - cfg := TestNodeConfig{PollFailureThreshold: uint32(threshold), PollInterval: testutils.TestInterval} + cfg := TestNodePoolConfig{NodePollFailureThreshold: uint32(threshold), NodePollInterval: testutils.TestInterval} var calls atomic.Int32 - n := newTestNodeWithCallback(t, cfg, func(method string, params gjson.Result) (resp testutils.JSONRPCResponse) { + n := newTestNodeWithCallback(t, cfg, time.Second*0, func(method string, params gjson.Result) (resp testutils.JSONRPCResponse) { switch method { case "eth_subscribe": resp.Result = `"0x00"` @@ -177,8 +178,8 @@ func TestUnit_NodeLifecycle_aliveLoop(t *testing.T) { }) t.Run("if initial subscribe fails, transitions to unreachable", func(t *testing.T) { - pollDisabledCfg := TestNodeConfig{NoNewHeadsThreshold: testutils.TestInterval} - n := newTestNodeWithCallback(t, pollDisabledCfg, func(string, gjson.Result) (resp testutils.JSONRPCResponse) { return }) + pollDisabledCfg := TestNodePoolConfig{} + n := newTestNodeWithCallback(t, pollDisabledCfg, testutils.TestInterval, func(string, gjson.Result) (resp testutils.JSONRPCResponse) { return }) dial(t, n) defer func() { assert.NoError(t, n.Close()) }() @@ -197,7 +198,7 @@ func TestUnit_NodeLifecycle_aliveLoop(t *testing.T) { // NoNewHeadsThreshold needs to be positive but must be very large so // we don't time out waiting for a new head before we have a chance to // handle the server disconnect - cfg := TestNodeConfig{NoNewHeadsThreshold: testutils.WaitTimeout(t), PollInterval: 1 * time.Second} + cfg := TestNodePoolConfig{NodePollInterval: 1 * time.Second} chSubbed := make(chan struct{}, 1) chPolled := make(chan struct{}) s := testutils.NewWSServer(t, testutils.FixtureChainID, @@ -221,7 +222,7 @@ func TestUnit_NodeLifecycle_aliveLoop(t *testing.T) { return }) - iN := NewNode(cfg, logger.TestLogger(t), *s.WSURL(), nil, "test node", 42, testutils.FixtureChainID, 1) + iN := NewNode(cfg, testutils.WaitTimeout(t), logger.TestLogger(t), *s.WSURL(), nil, "test node", 42, testutils.FixtureChainID, 1) n := iN.(*node) dial(t, n) @@ -245,7 +246,7 @@ func TestUnit_NodeLifecycle_aliveLoop(t *testing.T) { }) t.Run("when no new heads received for threshold, transitions to out of sync", func(t *testing.T) { - cfg := TestNodeConfig{NoNewHeadsThreshold: 1 * time.Second} + cfg := TestNodePoolConfig{} chSubbed := make(chan struct{}, 2) s := testutils.NewWSServer(t, testutils.FixtureChainID, func(method string, params gjson.Result) (resp testutils.JSONRPCResponse) { @@ -267,7 +268,7 @@ func TestUnit_NodeLifecycle_aliveLoop(t *testing.T) { return }) - iN := NewNode(cfg, logger.TestLogger(t), *s.WSURL(), nil, "test node", 42, testutils.FixtureChainID, 1) + iN := NewNode(cfg, 1*time.Second, logger.TestLogger(t), *s.WSURL(), nil, "test node", 42, testutils.FixtureChainID, 1) n := iN.(*node) dial(t, n) @@ -288,7 +289,7 @@ func TestUnit_NodeLifecycle_aliveLoop(t *testing.T) { t.Run("when no new heads received for threshold but we are the last live node, forcibly stays alive", func(t *testing.T) { lggr, observedLogs := logger.TestLoggerObserved(t, zap.ErrorLevel) - pollDisabledCfg := TestNodeConfig{NoNewHeadsThreshold: testutils.TestInterval} + pollDisabledCfg := TestNodePoolConfig{} s := testutils.NewWSServer(t, testutils.FixtureChainID, func(method string, params gjson.Result) (resp testutils.JSONRPCResponse) { switch method { @@ -305,7 +306,7 @@ func TestUnit_NodeLifecycle_aliveLoop(t *testing.T) { return }) - iN := NewNode(pollDisabledCfg, lggr, *s.WSURL(), nil, "test node", 42, testutils.FixtureChainID, 1) + iN := NewNode(pollDisabledCfg, testutils.TestInterval, lggr, *s.WSURL(), nil, "test node", 42, testutils.FixtureChainID, 1) n := iN.(*node) n.nLiveNodes = func() (int, int64, *utils.Big) { return 1, 0, nil } dial(t, n) @@ -322,7 +323,7 @@ func TestUnit_NodeLifecycle_aliveLoop(t *testing.T) { }) t.Run("when behind more than SyncThreshold, transitions to out of sync", func(t *testing.T) { - cfg := TestNodeConfig{SyncThreshold: 10, PollFailureThreshold: 2, PollInterval: 100 * time.Millisecond, SelectionMode: NodeSelectionMode_HighestHead} + cfg := TestNodePoolConfig{NodeSyncThreshold: 10, NodePollFailureThreshold: 2, NodePollInterval: 100 * time.Millisecond, NodeSelectionMode: NodeSelectionMode_HighestHead} chSubbed := make(chan struct{}, 2) var highestHead atomic.Int64 const stall = 10 @@ -350,7 +351,7 @@ func TestUnit_NodeLifecycle_aliveLoop(t *testing.T) { return }) - iN := NewNode(cfg, logger.TestLogger(t), *s.WSURL(), nil, "test node", 42, testutils.FixtureChainID, 1) + iN := NewNode(cfg, 0*time.Second, logger.TestLogger(t), *s.WSURL(), nil, "test node", 42, testutils.FixtureChainID, 1) n := iN.(*node) n.nLiveNodes = func() (count int, blockNumber int64, totalDifficulty *utils.Big) { return 2, highestHead.Load(), nil @@ -377,14 +378,14 @@ func TestUnit_NodeLifecycle_aliveLoop(t *testing.T) { state, num, _ := n.StateAndLatest() return state == NodeStateOutOfSync && num == stall }) - assert.GreaterOrEqual(t, highestHead.Load(), int64(stall+cfg.SyncThreshold)) + assert.GreaterOrEqual(t, highestHead.Load(), int64(stall+cfg.SyncThreshold())) // Otherwise, there may be data race on dial() vs Close() (accessing ws.rpc) testutils.WaitWithTimeout(t, chSubbed, "timed out waiting for initial subscription for OutOfSync") }) t.Run("when behind but SyncThreshold=0, stay alive", func(t *testing.T) { - cfg := TestNodeConfig{SyncThreshold: 0, PollFailureThreshold: 2, PollInterval: 100 * time.Millisecond, SelectionMode: NodeSelectionMode_HighestHead} + cfg := TestNodePoolConfig{NodeSyncThreshold: 0, NodePollFailureThreshold: 2, NodePollInterval: 100 * time.Millisecond, NodeSelectionMode: NodeSelectionMode_HighestHead} chSubbed := make(chan struct{}, 1) var highestHead atomic.Int64 const stall = 10 @@ -412,7 +413,7 @@ func TestUnit_NodeLifecycle_aliveLoop(t *testing.T) { return }) - iN := NewNode(cfg, logger.TestLogger(t), *s.WSURL(), nil, "test node", 42, testutils.FixtureChainID, 1) + iN := NewNode(cfg, 0*time.Second, logger.TestLogger(t), *s.WSURL(), nil, "test node", 42, testutils.FixtureChainID, 1) n := iN.(*node) n.nLiveNodes = func() (count int, blockNumber int64, totalDifficulty *utils.Big) { return 2, highestHead.Load(), nil @@ -434,12 +435,12 @@ func TestUnit_NodeLifecycle_aliveLoop(t *testing.T) { }) assert.Equal(t, NodeStateAlive, n.state) - assert.GreaterOrEqual(t, highestHead.Load(), int64(stall+cfg.SyncThreshold)) + assert.GreaterOrEqual(t, highestHead.Load(), int64(stall+cfg.SyncThreshold())) }) t.Run("when behind more than SyncThreshold but we are the last live node, forcibly stays alive", func(t *testing.T) { lggr, observedLogs := logger.TestLoggerObserved(t, zap.ErrorLevel) - cfg := TestNodeConfig{SyncThreshold: 5, PollFailureThreshold: 2, PollInterval: 100 * time.Millisecond, SelectionMode: NodeSelectionMode_HighestHead} + cfg := TestNodePoolConfig{NodeSyncThreshold: 5, NodePollFailureThreshold: 2, NodePollInterval: 100 * time.Millisecond, NodeSelectionMode: NodeSelectionMode_HighestHead} chSubbed := make(chan struct{}, 1) var highestHead atomic.Int64 const stall = 10 @@ -471,7 +472,7 @@ func TestUnit_NodeLifecycle_aliveLoop(t *testing.T) { return }) - iN := NewNode(cfg, lggr, *s.WSURL(), nil, "test node", 42, testutils.FixtureChainID, 1) + iN := NewNode(cfg, 0*time.Second, lggr, *s.WSURL(), nil, "test node", 42, testutils.FixtureChainID, 1) n := iN.(*node) n.nLiveNodes = func() (count int, blockNumber int64, totalDifficulty *utils.Big) { return 1, highestHead.Load(), nil @@ -494,7 +495,7 @@ func TestUnit_NodeLifecycle_aliveLoop(t *testing.T) { assert.Equal(t, NodeStateAlive, n.state) testutils.AssertEventually(t, func() bool { - return highestHead.Load() >= int64(stall+cfg.SyncThreshold) + return highestHead.Load() >= int64(stall+cfg.SyncThreshold()) }) testutils.WaitForLogMessageCount(t, observedLogs, msgCannotDisable, 1) @@ -510,8 +511,8 @@ func TestUnit_NodeLifecycle_outOfSyncLoop(t *testing.T) { t.Parallel() t.Run("exits on close", func(t *testing.T) { - cfg := TestNodeConfig{} - n := newTestNode(t, cfg) + cfg := TestNodePoolConfig{} + n := newTestNode(t, cfg, time.Second*0) dial(t, n) n.setState(NodeStateOutOfSync) @@ -527,8 +528,8 @@ func TestUnit_NodeLifecycle_outOfSyncLoop(t *testing.T) { }) t.Run("if initial subscribe fails, transitions to unreachable", func(t *testing.T) { - cfg := TestNodeConfig{} - n := newTestNodeWithCallback(t, cfg, func(string, gjson.Result) (resp testutils.JSONRPCResponse) { return }) + cfg := TestNodePoolConfig{} + n := newTestNodeWithCallback(t, cfg, time.Second*0, func(string, gjson.Result) (resp testutils.JSONRPCResponse) { return }) dial(t, n) n.setState(NodeStateOutOfSync) defer func() { assert.NoError(t, n.Close()) }() @@ -540,7 +541,7 @@ func TestUnit_NodeLifecycle_outOfSyncLoop(t *testing.T) { }) t.Run("transitions to unreachable if remote RPC subscription channel closed", func(t *testing.T) { - cfg := TestNodeConfig{} + cfg := TestNodePoolConfig{} chSubbed := make(chan struct{}, 1) s := testutils.NewWSServer(t, testutils.FixtureChainID, func(method string, params gjson.Result) (resp testutils.JSONRPCResponse) { @@ -556,7 +557,7 @@ func TestUnit_NodeLifecycle_outOfSyncLoop(t *testing.T) { return }) - iN := NewNode(cfg, logger.TestLogger(t), *s.WSURL(), nil, "test node", 42, testutils.FixtureChainID, 1) + iN := NewNode(cfg, time.Duration(time.Second), logger.TestLogger(t), *s.WSURL(), nil, "test node", 42, testutils.FixtureChainID, 1) n := iN.(*node) dial(t, n) @@ -584,7 +585,7 @@ func TestUnit_NodeLifecycle_outOfSyncLoop(t *testing.T) { // we don't time out waiting for a new head before we have a chance to // handle the server disconnect lggr, observedLogs := logger.TestLoggerObserved(t, zap.DebugLevel) - cfg := TestNodeConfig{} + cfg := TestNodePoolConfig{} chSubbed := make(chan struct{}, 1) s := testutils.NewWSServer(t, testutils.FixtureChainID, func(method string, params gjson.Result) (resp testutils.JSONRPCResponse) { @@ -603,7 +604,7 @@ func TestUnit_NodeLifecycle_outOfSyncLoop(t *testing.T) { return }) - iN := NewNode(cfg, lggr, *s.WSURL(), nil, "test node", 0, testutils.FixtureChainID, 1) + iN := NewNode(cfg, time.Second*0, lggr, *s.WSURL(), nil, "test node", 0, testutils.FixtureChainID, 1) n := iN.(*node) start(t, n) @@ -638,7 +639,7 @@ func TestUnit_NodeLifecycle_outOfSyncLoop(t *testing.T) { t.Run("transitions to alive if back in-sync", func(t *testing.T) { lggr, observedLogs := logger.TestLoggerObserved(t, zap.DebugLevel) - cfg := TestNodeConfig{SyncThreshold: 5, SelectionMode: NodeSelectionMode_HighestHead} + cfg := TestNodePoolConfig{NodeSyncThreshold: 5, NodeSelectionMode: NodeSelectionMode_HighestHead} chSubbed := make(chan struct{}, 1) const stall = 42 s := testutils.NewWSServer(t, testutils.FixtureChainID, @@ -658,10 +659,10 @@ func TestUnit_NodeLifecycle_outOfSyncLoop(t *testing.T) { return }) - iN := NewNode(cfg, lggr, *s.WSURL(), nil, "test node", 0, testutils.FixtureChainID, 1) + iN := NewNode(cfg, time.Second*0, lggr, *s.WSURL(), nil, "test node", 0, testutils.FixtureChainID, 1) n := iN.(*node) n.nLiveNodes = func() (count int, blockNumber int64, totalDifficulty *utils.Big) { - return 2, stall + int64(cfg.SyncThreshold), nil + return 2, stall + int64(cfg.SyncThreshold()), nil } start(t, n) @@ -695,7 +696,7 @@ func TestUnit_NodeLifecycle_outOfSyncLoop(t *testing.T) { }) t.Run("if no live nodes are available, forcibly marks this one alive again", func(t *testing.T) { - cfg := TestNodeConfig{NoNewHeadsThreshold: testutils.TestInterval} + cfg := TestNodePoolConfig{} chSubbed := make(chan struct{}, 1) s := testutils.NewWSServer(t, testutils.FixtureChainID, func(method string, params gjson.Result) (resp testutils.JSONRPCResponse) { @@ -714,7 +715,7 @@ func TestUnit_NodeLifecycle_outOfSyncLoop(t *testing.T) { return }) - iN := NewNode(cfg, logger.TestLogger(t), *s.WSURL(), nil, "test node", 42, testutils.FixtureChainID, 1) + iN := NewNode(cfg, testutils.TestInterval, logger.TestLogger(t), *s.WSURL(), nil, "test node", 42, testutils.FixtureChainID, 1) n := iN.(*node) n.nLiveNodes = func() (int, int64, *utils.Big) { return 0, 0, nil } @@ -737,8 +738,8 @@ func TestUnit_NodeLifecycle_unreachableLoop(t *testing.T) { t.Parallel() t.Run("exits on close", func(t *testing.T) { - cfg := TestNodeConfig{} - n := newTestNode(t, cfg) + cfg := TestNodePoolConfig{} + n := newTestNode(t, cfg, time.Second*0) start(t, n) n.setState(NodeStateUnreachable) @@ -753,8 +754,8 @@ func TestUnit_NodeLifecycle_unreachableLoop(t *testing.T) { }) t.Run("on successful redial and verify, transitions to alive", func(t *testing.T) { - cfg := TestNodeConfig{} - n := newTestNode(t, cfg) + cfg := TestNodePoolConfig{} + n := newTestNode(t, cfg, time.Second*0) start(t, n) defer func() { assert.NoError(t, n.Close()) }() n.setState(NodeStateUnreachable) @@ -768,10 +769,10 @@ func TestUnit_NodeLifecycle_unreachableLoop(t *testing.T) { }) t.Run("on successful redial but failed verify, transitions to invalid chain ID", func(t *testing.T) { - cfg := TestNodeConfig{} + cfg := TestNodePoolConfig{} s := testutils.NewWSServer(t, testutils.FixtureChainID, standardHandler) lggr, observedLogs := logger.TestLoggerObserved(t, zap.ErrorLevel) - iN := NewNode(cfg, lggr, *s.WSURL(), nil, "test node", 0, big.NewInt(42), 1) + iN := NewNode(cfg, time.Second*0, lggr, *s.WSURL(), nil, "test node", 0, big.NewInt(42), 1) n := iN.(*node) defer func() { assert.NoError(t, n.Close()) }() start(t, n) @@ -788,9 +789,9 @@ func TestUnit_NodeLifecycle_unreachableLoop(t *testing.T) { }) t.Run("on failed redial, keeps trying to redial", func(t *testing.T) { - cfg := TestNodeConfig{} + cfg := TestNodePoolConfig{} lggr, observedLogs := logger.TestLoggerObserved(t, zap.DebugLevel) - iN := NewNode(cfg, lggr, *testutils.MustParseURL(t, "ws://test.invalid"), nil, "test node", 0, big.NewInt(42), 1) + iN := NewNode(cfg, time.Second*0, lggr, *testutils.MustParseURL(t, "ws://test.invalid"), nil, "test node", 0, big.NewInt(42), 1) n := iN.(*node) defer func() { assert.NoError(t, n.Close()) }() start(t, n) @@ -808,8 +809,8 @@ func TestUnit_NodeLifecycle_invalidChainIDLoop(t *testing.T) { t.Parallel() t.Run("exits on close", func(t *testing.T) { - cfg := TestNodeConfig{} - n := newTestNode(t, cfg) + cfg := TestNodePoolConfig{} + n := newTestNode(t, cfg, time.Second*0) start(t, n) n.setState(NodeStateInvalidChainID) @@ -824,8 +825,8 @@ func TestUnit_NodeLifecycle_invalidChainIDLoop(t *testing.T) { }) t.Run("on successful verify, transitions to alive", func(t *testing.T) { - cfg := TestNodeConfig{} - n := newTestNode(t, cfg) + cfg := TestNodePoolConfig{} + n := newTestNode(t, cfg, time.Second*0) dial(t, n) defer func() { assert.NoError(t, n.Close()) }() n.setState(NodeStateInvalidChainID) @@ -839,10 +840,10 @@ func TestUnit_NodeLifecycle_invalidChainIDLoop(t *testing.T) { }) t.Run("on failed verify, keeps checking", func(t *testing.T) { - cfg := TestNodeConfig{} + cfg := TestNodePoolConfig{} s := testutils.NewWSServer(t, testutils.FixtureChainID, standardHandler) lggr, observedLogs := logger.TestLoggerObserved(t, zap.ErrorLevel) - iN := NewNode(cfg, lggr, *s.WSURL(), nil, "test node", 0, big.NewInt(42), 1) + iN := NewNode(cfg, time.Second*0, lggr, *s.WSURL(), nil, "test node", 0, big.NewInt(42), 1) n := iN.(*node) defer func() { assert.NoError(t, n.Close()) }() dial(t, n) diff --git a/core/chains/evm/client/pool.go b/core/chains/evm/client/pool.go index 46f56ddd3f3..f9dca7e9cf8 100644 --- a/core/chains/evm/client/pool.go +++ b/core/chains/evm/client/pool.go @@ -57,13 +57,14 @@ type PoolConfig interface { // It is responsible for liveness checking and balancing queries across live nodes type Pool struct { utils.StartStopOnce - nodes []Node - sendonlys []SendOnlyNode - chainID *big.Int - chainType config.ChainType - logger logger.Logger - config PoolConfig - nodeSelector NodeSelector + nodes []Node + sendonlys []SendOnlyNode + chainID *big.Int + chainType config.ChainType + logger logger.Logger + selectionMode string + noNewHeadsThreshold time.Duration + nodeSelector NodeSelector activeMu sync.RWMutex activeNode Node @@ -72,13 +73,13 @@ type Pool struct { wg sync.WaitGroup } -func NewPool(logger logger.Logger, cfg PoolConfig, nodes []Node, sendonlys []SendOnlyNode, chainID *big.Int, chainType config.ChainType) *Pool { +func NewPool(logger logger.Logger, selectionMode string, noNewHeadsTreshold time.Duration, nodes []Node, sendonlys []SendOnlyNode, chainID *big.Int, chainType config.ChainType) *Pool { if chainID == nil { panic("chainID is required") } nodeSelector := func() NodeSelector { - switch cfg.NodeSelectionMode() { + switch selectionMode { case NodeSelectionMode_HighestHead: return NewHighestHeadNodeSelector(nodes) case NodeSelectionMode_RoundRobin: @@ -88,24 +89,25 @@ func NewPool(logger logger.Logger, cfg PoolConfig, nodes []Node, sendonlys []Sen case NodeSelectionMode_PriorityLevel: return NewPriorityLevelNodeSelector(nodes) default: - panic(fmt.Sprintf("unsupported NodeSelectionMode: %s", cfg.NodeSelectionMode())) + panic(fmt.Sprintf("unsupported NodeSelectionMode: %s", selectionMode)) } }() lggr := logger.Named("Pool").With("evmChainID", chainID.String()) p := &Pool{ - nodes: nodes, - sendonlys: sendonlys, - chainID: chainID, - chainType: chainType, - logger: lggr, - config: cfg, - nodeSelector: nodeSelector, - chStop: make(chan struct{}), + nodes: nodes, + sendonlys: sendonlys, + chainID: chainID, + chainType: chainType, + logger: lggr, + selectionMode: selectionMode, + noNewHeadsThreshold: noNewHeadsTreshold, + nodeSelector: nodeSelector, + chStop: make(chan struct{}), } - p.logger.Debugf("The pool is configured to use NodeSelectionMode: %s", cfg.NodeSelectionMode()) + p.logger.Debugf("The pool is configured to use NodeSelectionMode: %s", selectionMode) return p } diff --git a/core/chains/evm/client/pool_test.go b/core/chains/evm/client/pool_test.go index 59db2d3daf3..00c42597c36 100644 --- a/core/chains/evm/client/pool_test.go +++ b/core/chains/evm/client/pool_test.go @@ -157,7 +157,7 @@ func TestPool_Dial(t *testing.T) { for i, n := range test.sendNodes { sendNodes[i] = n.newSendOnlyNode(t, test.sendNodeChainID) } - p := evmclient.NewPool(logger.TestLogger(t), defaultConfig, nodes, sendNodes, test.poolChainID, "") + p := evmclient.NewPool(logger.TestLogger(t), defaultConfig.NodeSelectionMode(), time.Second*0, nodes, sendNodes, test.poolChainID, "") err := p.Dial(ctx) if err == nil { t.Cleanup(func() { assert.NoError(t, p.Close()) }) @@ -227,7 +227,7 @@ func (r *chainIDResps) newNode(t *testing.T, nodeChainID int64) evmclient.Node { } defer func() { r.id++ }() - return evmclient.NewNode(evmclient.TestNodeConfig{}, logger.TestLogger(t), *wsURL, httpURL, t.Name(), r.id, big.NewInt(nodeChainID), 0) + return evmclient.NewNode(evmclient.TestNodePoolConfig{}, time.Second*0, logger.TestLogger(t), *wsURL, httpURL, t.Name(), r.id, big.NewInt(nodeChainID), 0) } type chainIDService struct { @@ -250,7 +250,7 @@ func TestUnit_Pool_RunLoop(t *testing.T) { nodes := []evmclient.Node{n1, n2, n3} lggr, observedLogs := logger.TestLoggerObserved(t, zap.ErrorLevel) - p := evmclient.NewPool(lggr, defaultConfig, nodes, []evmclient.SendOnlyNode{}, &cltest.FixtureChainID, "") + p := evmclient.NewPool(lggr, defaultConfig.NodeSelectionMode(), time.Second*0, nodes, []evmclient.SendOnlyNode{}, &cltest.FixtureChainID, "") n1.On("String").Maybe().Return("n1") n2.On("String").Maybe().Return("n2") @@ -324,7 +324,7 @@ func TestUnit_Pool_BatchCallContextAll(t *testing.T) { sendonlys = append(sendonlys, s) } - p := evmclient.NewPool(logger.TestLogger(t), defaultConfig, nodes, sendonlys, &cltest.FixtureChainID, "") + p := evmclient.NewPool(logger.TestLogger(t), defaultConfig.NodeSelectionMode(), time.Second*0, nodes, sendonlys, &cltest.FixtureChainID, "") assert.True(t, p.ChainType().IsValid()) assert.False(t, p.ChainType().IsL2()) diff --git a/core/chains/evm/config/config.go b/core/chains/evm/config/config.go index 673ade92ccf..398bc1cc394 100644 --- a/core/chains/evm/config/config.go +++ b/core/chains/evm/config/config.go @@ -7,15 +7,9 @@ import ( gethcommon "github.com/ethereum/go-ethereum/common" "github.com/smartcontractkit/chainlink/v2/core/assets" - evmclient "github.com/smartcontractkit/chainlink/v2/core/chains/evm/client" "github.com/smartcontractkit/chainlink/v2/core/config" ) -// Deprecated, use EVM below -type ChainScopedOnlyConfig interface { - evmclient.NodeConfig -} - type EVM interface { HeadTracker() HeadTracker BalanceMonitor() BalanceMonitor @@ -23,6 +17,7 @@ type EVM interface { GasEstimator() GasEstimator OCR() OCR OCR2() OCR2 + NodePool() NodePool AutoCreateKey() bool BlockBackfillDepth() uint64 @@ -42,6 +37,7 @@ type EVM interface { NonceAutoSync() bool OperatorFactoryAddress() string RPCDefaultBatchSize() uint32 + NodeNoNewHeadsThreshold() time.Duration } type OCR interface { @@ -122,7 +118,6 @@ type BlockHistory interface { //go:generate mockery --quiet --name ChainScopedConfig --output ./mocks/ --case=underscore type ChainScopedConfig interface { config.AppConfig - ChainScopedOnlyConfig // Deprecated, to be replaced by EVM() below Validate() error EVM() EVM diff --git a/core/chains/evm/config/config_node_pool.go b/core/chains/evm/config/config_node_pool.go new file mode 100644 index 00000000000..aebe0b268ef --- /dev/null +++ b/core/chains/evm/config/config_node_pool.go @@ -0,0 +1,10 @@ +package config + +import "time" + +type NodePool interface { + PollFailureThreshold() uint32 + PollInterval() time.Duration + SelectionMode() string + SyncThreshold() uint32 +} diff --git a/core/chains/evm/config/config_node_pool_test.go b/core/chains/evm/config/config_node_pool_test.go new file mode 100644 index 00000000000..c04ce83997e --- /dev/null +++ b/core/chains/evm/config/config_node_pool_test.go @@ -0,0 +1,32 @@ +package config_test + +import ( + "math/big" + "math/rand" + "testing" + "time" + + "github.com/stretchr/testify/require" + + v2 "github.com/smartcontractkit/chainlink/v2/core/chains/evm/config/v2" + configtest "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/configtest/v2" + "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/evmtest" + "github.com/smartcontractkit/chainlink/v2/core/services/chainlink" + "github.com/smartcontractkit/chainlink/v2/core/utils" +) + +func TestNodePoolConfig(t *testing.T) { + gcfg := configtest.NewGeneralConfig(t, func(c *chainlink.Config, s *chainlink.Secrets) { + id := utils.NewBig(big.NewInt(rand.Int63())) + c.EVM[0] = &v2.EVMConfig{ + ChainID: id, + Chain: v2.Defaults(id, &v2.Chain{}), + } + }) + cfg := evmtest.NewChainScopedConfig(t, gcfg) + + require.Equal(t, "HighestHead", cfg.EVM().NodePool().SelectionMode()) + require.Equal(t, uint32(5), cfg.EVM().NodePool().SyncThreshold()) + require.Equal(t, time.Duration(10000000000), cfg.EVM().NodePool().PollInterval()) + require.Equal(t, uint32(5), cfg.EVM().NodePool().PollFailureThreshold()) +} diff --git a/core/chains/evm/config/mocks/chain_scoped_config.go b/core/chains/evm/config/mocks/chain_scoped_config.go index 80ccd0de128..bf84164cd3e 100644 --- a/core/chains/evm/config/mocks/chain_scoped_config.go +++ b/core/chains/evm/config/mocks/chain_scoped_config.go @@ -307,76 +307,6 @@ func (_m *ChainScopedConfig) Mercury() coreconfig.Mercury { return r0 } -// NodeNoNewHeadsThreshold provides a mock function with given fields: -func (_m *ChainScopedConfig) NodeNoNewHeadsThreshold() time.Duration { - ret := _m.Called() - - var r0 time.Duration - if rf, ok := ret.Get(0).(func() time.Duration); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(time.Duration) - } - - return r0 -} - -// NodePollFailureThreshold provides a mock function with given fields: -func (_m *ChainScopedConfig) NodePollFailureThreshold() uint32 { - ret := _m.Called() - - var r0 uint32 - if rf, ok := ret.Get(0).(func() uint32); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(uint32) - } - - return r0 -} - -// NodePollInterval provides a mock function with given fields: -func (_m *ChainScopedConfig) NodePollInterval() time.Duration { - ret := _m.Called() - - var r0 time.Duration - if rf, ok := ret.Get(0).(func() time.Duration); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(time.Duration) - } - - return r0 -} - -// NodeSelectionMode provides a mock function with given fields: -func (_m *ChainScopedConfig) NodeSelectionMode() string { - ret := _m.Called() - - var r0 string - if rf, ok := ret.Get(0).(func() string); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(string) - } - - return r0 -} - -// NodeSyncThreshold provides a mock function with given fields: -func (_m *ChainScopedConfig) NodeSyncThreshold() uint32 { - ret := _m.Called() - - var r0 uint32 - if rf, ok := ret.Get(0).(func() uint32); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(uint32) - } - - return r0 -} - // OCR provides a mock function with given fields: func (_m *ChainScopedConfig) OCR() coreconfig.OCR { ret := _m.Called() diff --git a/core/chains/evm/config/v2/chain_scoped.go b/core/chains/evm/config/v2/chain_scoped.go index 24ad1defcde..690d0b24b67 100644 --- a/core/chains/evm/config/v2/chain_scoped.go +++ b/core/chains/evm/config/v2/chain_scoped.go @@ -147,6 +147,22 @@ func (e *evmConfig) MinIncomingConfirmations() uint32 { return *e.c.MinIncomingConfirmations } +func (e *evmConfig) NodePool() config.NodePool { + return &nodePoolConfig{c: e.c.NodePool} +} + +func (e *evmConfig) NodeNoNewHeadsThreshold() time.Duration { + return e.c.NoNewHeadsThreshold.Duration() +} + +func (c *ChainScoped) EVM() config.EVM { + return &evmConfig{c: c.cfg} +} + +func (c *ChainScoped) BlockEmissionIdleWarningThreshold() time.Duration { + return c.EVM().NodeNoNewHeadsThreshold() +} + func (e *evmConfig) MinContractPayment() *assets.Link { return e.c.MinContractPayment } @@ -171,27 +187,3 @@ func (e *evmConfig) OperatorFactoryAddress() string { } return e.c.OperatorFactoryAddress.String() } - -func (c *ChainScoped) EVM() config.EVM { - return &evmConfig{c: c.cfg} -} - -func (c *ChainScoped) NodeNoNewHeadsThreshold() time.Duration { - return c.cfg.NoNewHeadsThreshold.Duration() -} - -func (c *ChainScoped) NodePollFailureThreshold() uint32 { - return *c.cfg.NodePool.PollFailureThreshold -} - -func (c *ChainScoped) NodePollInterval() time.Duration { - return c.cfg.NodePool.PollInterval.Duration() -} - -func (c *ChainScoped) NodeSelectionMode() string { - return *c.cfg.NodePool.SelectionMode -} - -func (c *ChainScoped) NodeSyncThreshold() uint32 { - return *c.cfg.NodePool.SyncThreshold -} diff --git a/core/chains/evm/config/v2/config_node_pool.go b/core/chains/evm/config/v2/config_node_pool.go new file mode 100644 index 00000000000..514c3d4822d --- /dev/null +++ b/core/chains/evm/config/v2/config_node_pool.go @@ -0,0 +1,25 @@ +package v2 + +import ( + "time" +) + +type nodePoolConfig struct { + c NodePool +} + +func (n *nodePoolConfig) PollFailureThreshold() uint32 { + return *n.c.PollFailureThreshold +} + +func (n *nodePoolConfig) PollInterval() time.Duration { + return n.c.PollInterval.Duration() +} + +func (n *nodePoolConfig) SelectionMode() string { + return *n.c.SelectionMode +} + +func (n *nodePoolConfig) SyncThreshold() uint32 { + return *n.c.SyncThreshold +} From ac54714267386b7a85fc7e29c30de115b50c5d36 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 21 Jun 2023 08:17:05 -0400 Subject: [PATCH 8/8] Update core/services/relay/evm/mercury/data_source.go Co-authored-by: Sergei Drugalev --- core/services/relay/evm/mercury/data_source.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/services/relay/evm/mercury/data_source.go b/core/services/relay/evm/mercury/data_source.go index ccce1f0087d..65d47b945b3 100644 --- a/core/services/relay/evm/mercury/data_source.go +++ b/core/services/relay/evm/mercury/data_source.go @@ -90,7 +90,7 @@ func (ds *datasource) Observe(ctx context.Context, repts ocrtypes.ReportTimestam ds.lggr.Infof("FetchInitialMaxFinalizedBlockNumber returned empty LatestReport; this is a new feed so maxFinalizedBlockNumber=%d (initialBlockNumber unset, using currentBlockNum=%d-1)", obs.MaxFinalizedBlockNumber.Val, obs.CurrentBlockNum.Val) } } else { - // NOTE: It's important to return -1 if the server is missing any past + // NOTE: It's important to subtract 1 if the server is missing any past // report (brand new feed) since we will add 1 to the // maxFinalizedBlockNumber to get the first validFromBlockNum, which // ought to be zero.