From da72d74df5a67ed4c36c0790bbf5c24368681f6d Mon Sep 17 00:00:00 2001 From: Ryan Hall Date: Thu, 12 Sep 2024 13:51:46 -0400 Subject: [PATCH] update snapshot & wrappers --- contracts/gas-snapshots/ccip.gas-snapshot | 385 +++++++++-------- .../ccip/generated/offramp/offramp.go | 2 +- .../ccip/generated/rmn_remote/rmn_remote.go | 394 +++++++++++++++++- ...rapper-dependency-versions-do-not-edit.txt | 4 +- 4 files changed, 577 insertions(+), 208 deletions(-) diff --git a/contracts/gas-snapshots/ccip.gas-snapshot b/contracts/gas-snapshots/ccip.gas-snapshot index 1590d6c3ae..5cc6bfabeb 100644 --- a/contracts/gas-snapshots/ccip.gas-snapshot +++ b/contracts/gas-snapshots/ccip.gas-snapshot @@ -34,7 +34,7 @@ BurnWithFromMintTokenPool_lockOrBurn:test_ChainNotAllowed_Revert() (gas: 28791) BurnWithFromMintTokenPool_lockOrBurn:test_PoolBurnRevertNotHealthy_Revert() (gas: 55142) BurnWithFromMintTokenPool_lockOrBurn:test_PoolBurn_Success() (gas: 243716) BurnWithFromMintTokenPool_lockOrBurn:test_Setup_Success() (gas: 23951) -CCIPClientExample_sanity:test_ImmutableExamples_Success() (gas: 2092239) +CCIPClientExample_sanity:test_ImmutableExamples_Success() (gas: 2092233) CCIPConfigSetup:test_getCapabilityConfiguration_Success() (gas: 9539) CCIPConfig_ConfigStateMachine:test__computeConfigDigest_Success() (gas: 66156) CCIPConfig_ConfigStateMachine:test__computeNewConfigWithMeta_InitToRunning_Success() (gas: 358893) @@ -118,73 +118,73 @@ CommitStore_verify:test_TooManyLeaves_Revert() (gas: 36809) DefensiveExampleTest:test_HappyPath_Success() (gas: 200052) DefensiveExampleTest:test_Recovery() (gas: 424299) E2E:test_E2E_3MessagesSuccess_gas() (gas: 1097175) -EVM2EVMOffRamp__releaseOrMintToken:test__releaseOrMintToken_NotACompatiblePool_Revert() (gas: 37854) -EVM2EVMOffRamp__releaseOrMintToken:test__releaseOrMintToken_Success() (gas: 104060) -EVM2EVMOffRamp__releaseOrMintToken:test__releaseOrMintToken_TokenHandlingError_transfer_Revert() (gas: 85597) -EVM2EVMOffRamp__releaseOrMintToken:test_releaseOrMintToken_InvalidDataLength_Revert() (gas: 37068) -EVM2EVMOffRamp__releaseOrMintToken:test_releaseOrMintToken_ReleaseOrMintBalanceMismatch_Revert() (gas: 94629) -EVM2EVMOffRamp__releaseOrMintToken:test_releaseOrMintToken_TokenHandlingError_BalanceOf_Revert() (gas: 40050) +EVM2EVMOffRamp__releaseOrMintToken:test__releaseOrMintToken_NotACompatiblePool_Revert() (gas: 37863) +EVM2EVMOffRamp__releaseOrMintToken:test__releaseOrMintToken_Success() (gas: 104057) +EVM2EVMOffRamp__releaseOrMintToken:test__releaseOrMintToken_TokenHandlingError_transfer_Revert() (gas: 85594) +EVM2EVMOffRamp__releaseOrMintToken:test_releaseOrMintToken_InvalidDataLength_Revert() (gas: 37071) +EVM2EVMOffRamp__releaseOrMintToken:test_releaseOrMintToken_ReleaseOrMintBalanceMismatch_Revert() (gas: 94632) +EVM2EVMOffRamp__releaseOrMintToken:test_releaseOrMintToken_TokenHandlingError_BalanceOf_Revert() (gas: 40053) EVM2EVMOffRamp__releaseOrMintToken:test_releaseOrMintToken_skip_ReleaseOrMintBalanceMismatch_if_pool_Revert() (gas: 86871) EVM2EVMOffRamp__releaseOrMintTokens:test_OverValueWithARLOff_Success() (gas: 379687) EVM2EVMOffRamp__releaseOrMintTokens:test_PriceNotFoundForToken_Reverts() (gas: 140056) EVM2EVMOffRamp__releaseOrMintTokens:test_RateLimitErrors_Reverts() (gas: 794492) EVM2EVMOffRamp__releaseOrMintTokens:test_TokenHandlingError_Reverts() (gas: 177527) -EVM2EVMOffRamp__releaseOrMintTokens:test__releaseOrMintTokens_NotACompatiblePool_Reverts() (gas: 29249) +EVM2EVMOffRamp__releaseOrMintTokens:test__releaseOrMintTokens_NotACompatiblePool_Reverts() (gas: 29246) EVM2EVMOffRamp__releaseOrMintTokens:test_releaseOrMintTokens_InvalidDataLengthReturnData_Revert() (gas: 66741) EVM2EVMOffRamp__releaseOrMintTokens:test_releaseOrMintTokens_InvalidEVMAddress_Revert() (gas: 43332) EVM2EVMOffRamp__releaseOrMintTokens:test_releaseOrMintTokens_Success() (gas: 207138) EVM2EVMOffRamp__releaseOrMintTokens:test_releaseOrMintTokens_destDenominatedDecimals_Success() (gas: 218390) -EVM2EVMOffRamp__report:test_Report_Success() (gas: 126727) -EVM2EVMOffRamp__trialExecute:test_RateLimitError_Success() (gas: 236077) -EVM2EVMOffRamp__trialExecute:test_TokenHandlingErrorIsCaught_Success() (gas: 244677) +EVM2EVMOffRamp__report:test_Report_Success() (gas: 126724) +EVM2EVMOffRamp__trialExecute:test_RateLimitError_Success() (gas: 236080) +EVM2EVMOffRamp__trialExecute:test_TokenHandlingErrorIsCaught_Success() (gas: 244680) EVM2EVMOffRamp__trialExecute:test_TokenPoolIsNotAContract_Success() (gas: 326076) EVM2EVMOffRamp__trialExecute:test_trialExecute_Success() (gas: 308501) -EVM2EVMOffRamp_ccipReceive:test_Reverts() (gas: 17033) +EVM2EVMOffRamp_ccipReceive:test_Reverts() (gas: 17030) EVM2EVMOffRamp_constructor:test_CommitStoreAlreadyInUse_Revert() (gas: 153451) -EVM2EVMOffRamp_constructor:test_Constructor_Success() (gas: 5479225) +EVM2EVMOffRamp_constructor:test_Constructor_Success() (gas: 5479207) EVM2EVMOffRamp_constructor:test_ZeroOnRampAddress_Revert() (gas: 144185) -EVM2EVMOffRamp_execute:test_EmptyReport_Revert() (gas: 21354) -EVM2EVMOffRamp_execute:test_InvalidMessageId_Revert() (gas: 36591) +EVM2EVMOffRamp_execute:test_EmptyReport_Revert() (gas: 21357) +EVM2EVMOffRamp_execute:test_InvalidMessageId_Revert() (gas: 36594) EVM2EVMOffRamp_execute:test_InvalidSourceChain_Revert() (gas: 51808) EVM2EVMOffRamp_execute:test_InvalidSourcePoolAddress_Success() (gas: 470171) EVM2EVMOffRamp_execute:test_ManualExecutionNotYetEnabled_Revert() (gas: 47902) -EVM2EVMOffRamp_execute:test_MessageTooLarge_Revert() (gas: 152518) +EVM2EVMOffRamp_execute:test_MessageTooLarge_Revert() (gas: 152521) EVM2EVMOffRamp_execute:test_Paused_Revert() (gas: 103079) -EVM2EVMOffRamp_execute:test_ReceiverError_Success() (gas: 164230) +EVM2EVMOffRamp_execute:test_ReceiverError_Success() (gas: 164224) EVM2EVMOffRamp_execute:test_RetryFailedMessageWithoutManualExecution_Success() (gas: 178625) EVM2EVMOffRamp_execute:test_RootNotCommitted_Revert() (gas: 42773) EVM2EVMOffRamp_execute:test_SingleMessageNoTokensUnordered_Success() (gas: 158079) EVM2EVMOffRamp_execute:test_SingleMessageNoTokens_Success() (gas: 173331) EVM2EVMOffRamp_execute:test_SingleMessageToNonCCIPReceiver_Success() (gas: 237073) -EVM2EVMOffRamp_execute:test_SingleMessagesNoTokensSuccess_gas() (gas: 113995) +EVM2EVMOffRamp_execute:test_SingleMessagesNoTokensSuccess_gas() (gas: 113998) EVM2EVMOffRamp_execute:test_SkippedIncorrectNonceStillExecutes_Success() (gas: 404062) EVM2EVMOffRamp_execute:test_SkippedIncorrectNonce_Success() (gas: 54294) -EVM2EVMOffRamp_execute:test_StrictUntouchedToSuccess_Success() (gas: 131440) -EVM2EVMOffRamp_execute:test_TokenDataMismatch_Revert() (gas: 52249) -EVM2EVMOffRamp_execute:test_TwoMessagesWithTokensAndGE_Success() (gas: 560385) -EVM2EVMOffRamp_execute:test_TwoMessagesWithTokensSuccess_gas() (gas: 490768) -EVM2EVMOffRamp_execute:test_UnexpectedTokenData_Revert() (gas: 35530) +EVM2EVMOffRamp_execute:test_StrictUntouchedToSuccess_Success() (gas: 131434) +EVM2EVMOffRamp_execute:test_TokenDataMismatch_Revert() (gas: 52252) +EVM2EVMOffRamp_execute:test_TwoMessagesWithTokensAndGE_Success() (gas: 560379) +EVM2EVMOffRamp_execute:test_TwoMessagesWithTokensSuccess_gas() (gas: 490771) +EVM2EVMOffRamp_execute:test_UnexpectedTokenData_Revert() (gas: 35533) EVM2EVMOffRamp_execute:test_Unhealthy_Revert() (gas: 541563) -EVM2EVMOffRamp_execute:test_UnsupportedNumberOfTokens_Revert() (gas: 64497) +EVM2EVMOffRamp_execute:test_UnsupportedNumberOfTokens_Revert() (gas: 64500) EVM2EVMOffRamp_execute:test__execute_SkippedAlreadyExecutedMessageUnordered_Success() (gas: 122733) EVM2EVMOffRamp_execute:test__execute_SkippedAlreadyExecutedMessage_Success() (gas: 142907) EVM2EVMOffRamp_execute:test_execute_RouterYULCall_Success() (gas: 427595) EVM2EVMOffRamp_executeSingleMessage:test_MessageSender_Revert() (gas: 18502) -EVM2EVMOffRamp_executeSingleMessage:test_NonContractWithTokens_Success() (gas: 274264) -EVM2EVMOffRamp_executeSingleMessage:test_NonContract_Success() (gas: 18668) -EVM2EVMOffRamp_executeSingleMessage:test_TokenHandlingError_Revert() (gas: 222198) +EVM2EVMOffRamp_executeSingleMessage:test_NonContractWithTokens_Success() (gas: 274255) +EVM2EVMOffRamp_executeSingleMessage:test_NonContract_Success() (gas: 18659) +EVM2EVMOffRamp_executeSingleMessage:test_TokenHandlingError_Revert() (gas: 222201) EVM2EVMOffRamp_executeSingleMessage:test_ZeroGasDONExecution_Revert() (gas: 47950) EVM2EVMOffRamp_executeSingleMessage:test_executeSingleMessage_NoTokens_Success() (gas: 47427) EVM2EVMOffRamp_executeSingleMessage:test_executeSingleMessage_WithTokens_Success() (gas: 310150) EVM2EVMOffRamp_executeSingleMessage:test_executeSingleMessage_ZeroGasZeroData_Success() (gas: 70101) -EVM2EVMOffRamp_execute_upgrade:test_V2NonceNewSenderStartsAtZero_Success() (gas: 229526) +EVM2EVMOffRamp_execute_upgrade:test_V2NonceNewSenderStartsAtZero_Success() (gas: 229520) EVM2EVMOffRamp_execute_upgrade:test_V2NonceStartsAtV1Nonce_Success() (gas: 277072) EVM2EVMOffRamp_execute_upgrade:test_V2OffRampNonceSkipsIfMsgInFlight_Success() (gas: 258912) EVM2EVMOffRamp_execute_upgrade:test_V2SenderNoncesReadsPreviousRamp_Success() (gas: 226538) EVM2EVMOffRamp_execute_upgrade:test_V2_Success() (gas: 130841) EVM2EVMOffRamp_getAllRateLimitTokens:test_GetAllRateLimitTokens_Success() (gas: 38446) -EVM2EVMOffRamp_getExecutionState:test_FillExecutionState_Success() (gas: 3251974) -EVM2EVMOffRamp_getExecutionState:test_GetExecutionState_Success() (gas: 83387) +EVM2EVMOffRamp_getExecutionState:test_FillExecutionState_Success() (gas: 3247348) +EVM2EVMOffRamp_getExecutionState:test_GetExecutionState_Success() (gas: 83333) EVM2EVMOffRamp_manuallyExecute:test_ManualExecFailedTx_Revert() (gas: 186015) EVM2EVMOffRamp_manuallyExecute:test_ManualExecForkedChain_Revert() (gas: 27052) EVM2EVMOffRamp_manuallyExecute:test_ManualExecGasLimitMismatch_Revert() (gas: 45200) @@ -192,7 +192,7 @@ EVM2EVMOffRamp_manuallyExecute:test_ManualExecInvalidGasLimit_Revert() (gas: 274 EVM2EVMOffRamp_manuallyExecute:test_ManualExecWithMultipleMessagesAndSourceTokens_Success() (gas: 526641) EVM2EVMOffRamp_manuallyExecute:test_ManualExecWithSourceTokens_Success() (gas: 342009) EVM2EVMOffRamp_manuallyExecute:test_ManualExec_Success() (gas: 187507) -EVM2EVMOffRamp_manuallyExecute:test_ReentrancyManualExecuteFails_Success() (gas: 2256449) +EVM2EVMOffRamp_manuallyExecute:test_ReentrancyManualExecuteFails_Success() (gas: 2256443) EVM2EVMOffRamp_manuallyExecute:test_manuallyExecute_DestinationGasAmountCountMismatch_Revert() (gas: 359222) EVM2EVMOffRamp_manuallyExecute:test_manuallyExecute_DoesNotRevertIfUntouched_Success() (gas: 143996) EVM2EVMOffRamp_manuallyExecute:test_manuallyExecute_InvalidTokenGasOverride_Revert() (gas: 362361) @@ -200,21 +200,21 @@ EVM2EVMOffRamp_manuallyExecute:test_manuallyExecute_LowGasLimitManualExec_Succes EVM2EVMOffRamp_manuallyExecute:test_manuallyExecute_WithGasOverride_Success() (gas: 189910) EVM2EVMOffRamp_manuallyExecute:test_manuallyExecute_WithInvalidReceiverExecutionGasOverride_Revert() (gas: 153740) EVM2EVMOffRamp_manuallyExecute:test_manuallyExecute_WithInvalidSourceTokenDataCount_Revert() (gas: 59897) -EVM2EVMOffRamp_metadataHash:test_MetadataHash_Success() (gas: 8865) -EVM2EVMOffRamp_setDynamicConfig:test_NonOwner_Revert() (gas: 40168) -EVM2EVMOffRamp_setDynamicConfig:test_RouterZeroAddress_Revert() (gas: 38239) -EVM2EVMOffRamp_setDynamicConfig:test_SetDynamicConfig_Success() (gas: 141938) -EVM2EVMOffRamp_updateRateLimitTokens:test_updateRateLimitTokens_AddsAndRemoves_Success() (gas: 162532) -EVM2EVMOffRamp_updateRateLimitTokens:test_updateRateLimitTokens_NonOwner_Revert() (gas: 16711) -EVM2EVMOffRamp_updateRateLimitTokens:test_updateRateLimitTokens_Success() (gas: 197728) -EVM2EVMOnRamp_constructor:test_Constructor_Success() (gas: 5322415) +EVM2EVMOffRamp_metadataHash:test_MetadataHash_Success() (gas: 8838) +EVM2EVMOffRamp_setDynamicConfig:test_NonOwner_Revert() (gas: 40165) +EVM2EVMOffRamp_setDynamicConfig:test_RouterZeroAddress_Revert() (gas: 38236) +EVM2EVMOffRamp_setDynamicConfig:test_SetDynamicConfig_Success() (gas: 141977) +EVM2EVMOffRamp_updateRateLimitTokens:test_updateRateLimitTokens_AddsAndRemoves_Success() (gas: 162530) +EVM2EVMOffRamp_updateRateLimitTokens:test_updateRateLimitTokens_NonOwner_Revert() (gas: 16708) +EVM2EVMOffRamp_updateRateLimitTokens:test_updateRateLimitTokens_Success() (gas: 197721) +EVM2EVMOnRamp_constructor:test_Constructor_Success() (gas: 5322427) EVM2EVMOnRamp_forwardFromRouter:test_CannotSendZeroTokens_Revert() (gas: 35880) -EVM2EVMOnRamp_forwardFromRouter:test_EnforceOutOfOrder_Revert() (gas: 98614) -EVM2EVMOnRamp_forwardFromRouter:test_ForwardFromRouterExtraArgsV2AllowOutOfOrderTrue_Success() (gas: 114321) -EVM2EVMOnRamp_forwardFromRouter:test_ForwardFromRouterExtraArgsV2_Success() (gas: 114363) -EVM2EVMOnRamp_forwardFromRouter:test_ForwardFromRouterSuccessCustomExtraArgs() (gas: 130351) -EVM2EVMOnRamp_forwardFromRouter:test_ForwardFromRouterSuccessLegacyExtraArgs() (gas: 138791) -EVM2EVMOnRamp_forwardFromRouter:test_ForwardFromRouter_Success() (gas: 129970) +EVM2EVMOnRamp_forwardFromRouter:test_EnforceOutOfOrder_Revert() (gas: 98596) +EVM2EVMOnRamp_forwardFromRouter:test_ForwardFromRouterExtraArgsV2AllowOutOfOrderTrue_Success() (gas: 114315) +EVM2EVMOnRamp_forwardFromRouter:test_ForwardFromRouterExtraArgsV2_Success() (gas: 114357) +EVM2EVMOnRamp_forwardFromRouter:test_ForwardFromRouterSuccessCustomExtraArgs() (gas: 130345) +EVM2EVMOnRamp_forwardFromRouter:test_ForwardFromRouterSuccessLegacyExtraArgs() (gas: 138785) +EVM2EVMOnRamp_forwardFromRouter:test_ForwardFromRouter_Success() (gas: 129961) EVM2EVMOnRamp_forwardFromRouter:test_InvalidAddressEncodePacked_Revert() (gas: 38431) EVM2EVMOnRamp_forwardFromRouter:test_InvalidAddress_Revert() (gas: 38614) EVM2EVMOnRamp_forwardFromRouter:test_InvalidChainSelector_Revert() (gas: 25540) @@ -236,7 +236,7 @@ EVM2EVMOnRamp_forwardFromRouter:test_TooManyTokens_Revert() (gas: 30289) EVM2EVMOnRamp_forwardFromRouter:test_Unhealthy_Revert() (gas: 43342) EVM2EVMOnRamp_forwardFromRouter:test_UnsupportedToken_Revert() (gas: 109557) EVM2EVMOnRamp_forwardFromRouter:test_ZeroAddressReceiver_Revert() (gas: 314265) -EVM2EVMOnRamp_forwardFromRouter:test_forwardFromRouter_ShouldStoreLinkFees_Success() (gas: 112547) +EVM2EVMOnRamp_forwardFromRouter:test_forwardFromRouter_ShouldStoreLinkFees_Success() (gas: 112538) EVM2EVMOnRamp_forwardFromRouter:test_forwardFromRouter_UnsupportedToken_Revert() (gas: 72386) EVM2EVMOnRamp_forwardFromRouter:test_forwardFromRouter_correctSourceTokenData_Success() (gas: 711856) EVM2EVMOnRamp_forwardFromRouter_upgrade:test_V2NonceNewSenderStartsAtZero_Success() (gas: 147925) @@ -245,14 +245,14 @@ EVM2EVMOnRamp_forwardFromRouter_upgrade:test_V2SenderNoncesReadsPreviousRamp_Suc EVM2EVMOnRamp_forwardFromRouter_upgrade:test_V2_Success() (gas: 95487) EVM2EVMOnRamp_getDataAvailabilityCost:test_EmptyMessageCalculatesDataAvailabilityCost_Success() (gas: 20568) EVM2EVMOnRamp_getDataAvailabilityCost:test_SimpleMessageCalculatesDataAvailabilityCost_Success() (gas: 20936) -EVM2EVMOnRamp_getFee:test_EmptyMessage_Success() (gas: 74147) +EVM2EVMOnRamp_getFee:test_EmptyMessage_Success() (gas: 74144) EVM2EVMOnRamp_getFee:test_GetFeeOfZeroForTokenMessage_Success() (gas: 79673) -EVM2EVMOnRamp_getFee:test_HighGasMessage_Success() (gas: 229995) +EVM2EVMOnRamp_getFee:test_HighGasMessage_Success() (gas: 229992) EVM2EVMOnRamp_getFee:test_MessageGasLimitTooHigh_Revert() (gas: 16778) EVM2EVMOnRamp_getFee:test_MessageTooLarge_Revert() (gas: 95328) -EVM2EVMOnRamp_getFee:test_MessageWithDataAndTokenTransfer_Success() (gas: 152747) +EVM2EVMOnRamp_getFee:test_MessageWithDataAndTokenTransfer_Success() (gas: 152744) EVM2EVMOnRamp_getFee:test_NotAFeeToken_Revert() (gas: 24158) -EVM2EVMOnRamp_getFee:test_SingleTokenMessage_Success() (gas: 113717) +EVM2EVMOnRamp_getFee:test_SingleTokenMessage_Success() (gas: 113714) EVM2EVMOnRamp_getFee:test_TooManyTokens_Revert() (gas: 19959) EVM2EVMOnRamp_getFee:test_ZeroDataAvailabilityMultiplier_Success() (gas: 62629) EVM2EVMOnRamp_getSupportedTokens:test_GetSupportedTokens_Revert() (gas: 10460) @@ -275,7 +275,7 @@ EVM2EVMOnRamp_payNops:test_NoFeesToPay_Revert() (gas: 127622) EVM2EVMOnRamp_payNops:test_NoNopsToPay_Revert() (gas: 133481) EVM2EVMOnRamp_payNops:test_NopPayNops_Success() (gas: 146695) EVM2EVMOnRamp_payNops:test_OwnerPayNops_Success() (gas: 141270) -EVM2EVMOnRamp_payNops:test_PayNopsSuccessAfterSetNops() (gas: 298116) +EVM2EVMOnRamp_payNops:test_PayNopsSuccessAfterSetNops() (gas: 298107) EVM2EVMOnRamp_payNops:test_WrongPermissions_Revert() (gas: 15300) EVM2EVMOnRamp_setDynamicConfig:test_SetConfigInvalidConfig_Revert() (gas: 42401) EVM2EVMOnRamp_setDynamicConfig:test_SetConfigOnlyOwner_Revert() (gas: 21270) @@ -347,10 +347,10 @@ FeeQuoter_convertTokenAmount:test_LinkTokenNotSupported_Revert() (gas: 29076) FeeQuoter_getDataAvailabilityCost:test_EmptyMessageCalculatesDataAvailabilityCost_Success() (gas: 94447) FeeQuoter_getDataAvailabilityCost:test_SimpleMessageCalculatesDataAvailabilityCostUnsupportedDestChainSelector_Success() (gas: 14650) FeeQuoter_getDataAvailabilityCost:test_SimpleMessageCalculatesDataAvailabilityCost_Success() (gas: 20482) -FeeQuoter_getTokenAndGasPrices:test_GetFeeTokenAndGasPrices_Success() (gas: 68277) +FeeQuoter_getTokenAndGasPrices:test_GetFeeTokenAndGasPrices_Success() (gas: 68262) FeeQuoter_getTokenAndGasPrices:test_StaleGasPrice_Revert() (gas: 16838) FeeQuoter_getTokenAndGasPrices:test_UnsupportedChain_Revert() (gas: 16140) -FeeQuoter_getTokenAndGasPrices:test_ZeroGasPrice_Success() (gas: 43590) +FeeQuoter_getTokenAndGasPrices:test_ZeroGasPrice_Success() (gas: 43575) FeeQuoter_getTokenPrice:test_GetTokenPriceFromFeed_Success() (gas: 66117) FeeQuoter_getTokenPrices:test_GetTokenPrices_Success() (gas: 78256) FeeQuoter_getTokenTransferCost:test_CustomTokenBpsFee_Success() (gas: 39106) @@ -363,15 +363,15 @@ FeeQuoter_getTokenTransferCost:test_ZeroAmountTokenTransferChargesMinFeeAndGas_S FeeQuoter_getTokenTransferCost:test_ZeroFeeConfigChargesMinFee_Success() (gas: 40076) FeeQuoter_getTokenTransferCost:test_getTokenTransferCost_selfServeUsesDefaults_Success() (gas: 29359) FeeQuoter_getValidatedFee:test_DestinationChainNotEnabled_Revert() (gas: 18210) -FeeQuoter_getValidatedFee:test_EmptyMessage_Success() (gas: 81749) +FeeQuoter_getValidatedFee:test_EmptyMessage_Success() (gas: 81746) FeeQuoter_getValidatedFee:test_EnforceOutOfOrder_Revert() (gas: 52224) -FeeQuoter_getValidatedFee:test_HighGasMessage_Success() (gas: 238167) +FeeQuoter_getValidatedFee:test_HighGasMessage_Success() (gas: 238164) FeeQuoter_getValidatedFee:test_InvalidEVMAddress_Revert() (gas: 22426) FeeQuoter_getValidatedFee:test_MessageGasLimitTooHigh_Revert() (gas: 29652) FeeQuoter_getValidatedFee:test_MessageTooLarge_Revert() (gas: 100163) -FeeQuoter_getValidatedFee:test_MessageWithDataAndTokenTransfer_Success() (gas: 140673) +FeeQuoter_getValidatedFee:test_MessageWithDataAndTokenTransfer_Success() (gas: 140670) FeeQuoter_getValidatedFee:test_NotAFeeToken_Revert() (gas: 21079) -FeeQuoter_getValidatedFee:test_SingleTokenMessage_Success() (gas: 112330) +FeeQuoter_getValidatedFee:test_SingleTokenMessage_Success() (gas: 112327) FeeQuoter_getValidatedFee:test_TooManyTokens_Revert() (gas: 22562) FeeQuoter_getValidatedFee:test_ZeroDataAvailabilityMultiplier_Success() (gas: 62255) FeeQuoter_getValidatedTokenPrice:test_GetValidatedTokenPriceFromFeedErc20Above18Decimals_Success() (gas: 2068728) @@ -426,56 +426,56 @@ FeeQuoter_validatePoolReturnData:test_InvalidEVMAddressDestToken_Revert() (gas: FeeQuoter_validatePoolReturnData:test_ProcessPoolReturnData_Success() (gas: 73330) FeeQuoter_validatePoolReturnData:test_SourceTokenDataTooLarge_Revert() (gas: 107927) FeeQuoter_validatePoolReturnData:test_TokenAmountArraysMismatching_Revert() (gas: 40112) -HybridUSDCTokenPoolMigrationTests:test_LockOrBurn_LockReleaseMechanism_then_switchToPrimary_Success() (gas: 209099) -HybridUSDCTokenPoolMigrationTests:test_LockOrBurn_PrimaryMechanism_Success() (gas: 135804) -HybridUSDCTokenPoolMigrationTests:test_LockOrBurn_WhileMigrationPause_Revert() (gas: 107078) -HybridUSDCTokenPoolMigrationTests:test_LockOrBurn_onLockReleaseMechanism_Success() (gas: 144568) -HybridUSDCTokenPoolMigrationTests:test_MintOrRelease_OnLockReleaseMechanism_Success() (gas: 214763) -HybridUSDCTokenPoolMigrationTests:test_MintOrRelease_OnLockReleaseMechanism_then_switchToPrimary_Success() (gas: 423554) -HybridUSDCTokenPoolMigrationTests:test_MintOrRelease_incomingMessageWithPrimaryMechanism() (gas: 268901) -HybridUSDCTokenPoolMigrationTests:test_ReleaseOrMint_WhileMigrationPause_Revert() (gas: 111457) +HybridUSDCTokenPoolMigrationTests:test_LockOrBurn_LockReleaseMechanism_then_switchToPrimary_Success() (gas: 209089) +HybridUSDCTokenPoolMigrationTests:test_LockOrBurn_PrimaryMechanism_Success() (gas: 135800) +HybridUSDCTokenPoolMigrationTests:test_LockOrBurn_WhileMigrationPause_Revert() (gas: 107069) +HybridUSDCTokenPoolMigrationTests:test_LockOrBurn_onLockReleaseMechanism_Success() (gas: 144559) +HybridUSDCTokenPoolMigrationTests:test_MintOrRelease_OnLockReleaseMechanism_Success() (gas: 214766) +HybridUSDCTokenPoolMigrationTests:test_MintOrRelease_OnLockReleaseMechanism_then_switchToPrimary_Success() (gas: 423536) +HybridUSDCTokenPoolMigrationTests:test_MintOrRelease_incomingMessageWithPrimaryMechanism() (gas: 268884) +HybridUSDCTokenPoolMigrationTests:test_ReleaseOrMint_WhileMigrationPause_Revert() (gas: 111454) HybridUSDCTokenPoolMigrationTests:test_burnLockedUSDC_invalidPermissions_Revert() (gas: 39338) HybridUSDCTokenPoolMigrationTests:test_cancelExistingCCTPMigrationProposal() (gas: 33151) HybridUSDCTokenPoolMigrationTests:test_cannotCancelANonExistentMigrationProposal() (gas: 12651) HybridUSDCTokenPoolMigrationTests:test_cannotModifyLiquidityWithoutPermissions_Revert() (gas: 13323) HybridUSDCTokenPoolMigrationTests:test_cannotTransferLiquidityDuringPendingMigration_Revert() (gas: 160885) -HybridUSDCTokenPoolMigrationTests:test_lockOrBurn_then_BurnInCCTPMigration_Success() (gas: 255833) +HybridUSDCTokenPoolMigrationTests:test_lockOrBurn_then_BurnInCCTPMigration_Success() (gas: 255819) HybridUSDCTokenPoolMigrationTests:test_transferLiquidity_Success() (gas: 165878) HybridUSDCTokenPoolMigrationTests:test_unstickManualTxAfterMigration_destChain_Success() (gas: 154182) -HybridUSDCTokenPoolMigrationTests:test_unstickManualTxAfterMigration_homeChain_Success() (gas: 463620) -HybridUSDCTokenPoolTests:test_LockOrBurn_LockReleaseMechanism_then_switchToPrimary_Success() (gas: 208712) -HybridUSDCTokenPoolTests:test_LockOrBurn_PrimaryMechanism_Success() (gas: 135647) -HybridUSDCTokenPoolTests:test_LockOrBurn_WhileMigrationPause_Revert() (gas: 106991) -HybridUSDCTokenPoolTests:test_LockOrBurn_onLockReleaseMechanism_Success() (gas: 144457) -HybridUSDCTokenPoolTests:test_MintOrRelease_OnLockReleaseMechanism_Success() (gas: 214471) -HybridUSDCTokenPoolTests:test_MintOrRelease_OnLockReleaseMechanism_then_switchToPrimary_Success() (gas: 422833) -HybridUSDCTokenPoolTests:test_MintOrRelease_incomingMessageWithPrimaryMechanism() (gas: 268620) -HybridUSDCTokenPoolTests:test_ReleaseOrMint_WhileMigrationPause_Revert() (gas: 111336) +HybridUSDCTokenPoolMigrationTests:test_unstickManualTxAfterMigration_homeChain_Success() (gas: 463604) +HybridUSDCTokenPoolTests:test_LockOrBurn_LockReleaseMechanism_then_switchToPrimary_Success() (gas: 208702) +HybridUSDCTokenPoolTests:test_LockOrBurn_PrimaryMechanism_Success() (gas: 135642) +HybridUSDCTokenPoolTests:test_LockOrBurn_WhileMigrationPause_Revert() (gas: 106982) +HybridUSDCTokenPoolTests:test_LockOrBurn_onLockReleaseMechanism_Success() (gas: 144448) +HybridUSDCTokenPoolTests:test_MintOrRelease_OnLockReleaseMechanism_Success() (gas: 214474) +HybridUSDCTokenPoolTests:test_MintOrRelease_OnLockReleaseMechanism_then_switchToPrimary_Success() (gas: 422815) +HybridUSDCTokenPoolTests:test_MintOrRelease_incomingMessageWithPrimaryMechanism() (gas: 268603) +HybridUSDCTokenPoolTests:test_ReleaseOrMint_WhileMigrationPause_Revert() (gas: 111333) HybridUSDCTokenPoolTests:test_cannotTransferLiquidityDuringPendingMigration_Revert() (gas: 160764) HybridUSDCTokenPoolTests:test_transferLiquidity_Success() (gas: 165649) LockReleaseTokenPoolAndProxy_setRebalancer:test_SetRebalancer_Revert() (gas: 10983) LockReleaseTokenPoolAndProxy_setRebalancer:test_SetRebalancer_Success() (gas: 18010) -LockReleaseTokenPoolPoolAndProxy_canAcceptLiquidity:test_CanAcceptLiquidity_Success() (gas: 3195288) -LockReleaseTokenPoolPoolAndProxy_provideLiquidity:test_LiquidityNotAccepted_Revert() (gas: 3191694) +LockReleaseTokenPoolPoolAndProxy_canAcceptLiquidity:test_CanAcceptLiquidity_Success() (gas: 3195285) +LockReleaseTokenPoolPoolAndProxy_provideLiquidity:test_LiquidityNotAccepted_Revert() (gas: 3191688) LockReleaseTokenPoolPoolAndProxy_provideLiquidity:test_Unauthorized_Revert() (gas: 11417) -LockReleaseTokenPoolPoolAndProxy_supportsInterface:test_SupportsInterface_Success() (gas: 10124) -LockReleaseTokenPoolPoolAndProxy_withdrawalLiquidity:test_InsufficientLiquidity_Revert() (gas: 60081) +LockReleaseTokenPoolPoolAndProxy_supportsInterface:test_SupportsInterface_Success() (gas: 10136) +LockReleaseTokenPoolPoolAndProxy_withdrawalLiquidity:test_InsufficientLiquidity_Revert() (gas: 60079) LockReleaseTokenPoolPoolAndProxy_withdrawalLiquidity:test_Unauthorized_Revert() (gas: 11386) -LockReleaseTokenPool_canAcceptLiquidity:test_CanAcceptLiquidity_Success() (gas: 2982884) +LockReleaseTokenPool_canAcceptLiquidity:test_CanAcceptLiquidity_Success() (gas: 2982881) LockReleaseTokenPool_lockOrBurn:test_LockOrBurnWithAllowList_Revert() (gas: 29972) LockReleaseTokenPool_lockOrBurn:test_LockOrBurnWithAllowList_Success() (gas: 79880) LockReleaseTokenPool_lockOrBurn:test_PoolBurnRevertNotHealthy_Revert() (gas: 59491) -LockReleaseTokenPool_provideLiquidity:test_LiquidityNotAccepted_Revert() (gas: 2979334) +LockReleaseTokenPool_provideLiquidity:test_LiquidityNotAccepted_Revert() (gas: 2979328) LockReleaseTokenPool_provideLiquidity:test_Unauthorized_Revert() (gas: 11417) LockReleaseTokenPool_releaseOrMint:test_ChainNotAllowed_Revert() (gas: 72680) LockReleaseTokenPool_releaseOrMint:test_PoolMintNotHealthy_Revert() (gas: 56223) LockReleaseTokenPool_releaseOrMint:test_ReleaseOrMint_Success() (gas: 225332) LockReleaseTokenPool_setRebalancer:test_SetRebalancer_Revert() (gas: 11005) LockReleaseTokenPool_setRebalancer:test_SetRebalancer_Success() (gas: 18064) -LockReleaseTokenPool_supportsInterface:test_SupportsInterface_Success() (gas: 10124) -LockReleaseTokenPool_transferLiquidity:test_transferLiquidity_Success() (gas: 83192) -LockReleaseTokenPool_transferLiquidity:test_transferLiquidity_transferTooMuch_Revert() (gas: 55899) -LockReleaseTokenPool_withdrawalLiquidity:test_InsufficientLiquidity_Revert() (gas: 60081) +LockReleaseTokenPool_supportsInterface:test_SupportsInterface_Success() (gas: 10136) +LockReleaseTokenPool_transferLiquidity:test_transferLiquidity_Success() (gas: 83189) +LockReleaseTokenPool_transferLiquidity:test_transferLiquidity_transferTooMuch_Revert() (gas: 55905) +LockReleaseTokenPool_withdrawalLiquidity:test_InsufficientLiquidity_Revert() (gas: 60079) LockReleaseTokenPool_withdrawalLiquidity:test_Unauthorized_Revert() (gas: 11386) LockRelease_setRateLimitAdmin:test_SetRateLimitAdmin_Revert() (gas: 11048) LockRelease_setRateLimitAdmin:test_SetRateLimitAdmin_Success() (gas: 35036) @@ -486,7 +486,7 @@ MerkleMultiProofTest:test_MerkleRootSingleLeaf_Success() (gas: 3649) MerkleMultiProofTest:test_SpecSync_gas() (gas: 34123) MockRouterTest:test_ccipSendWithInsufficientNativeTokens_Revert() (gas: 34025) MockRouterTest:test_ccipSendWithInvalidMsgValue_Revert() (gas: 60830) -MockRouterTest:test_ccipSendWithLinkFeeTokenAndValidMsgValue_Success() (gas: 126552) +MockRouterTest:test_ccipSendWithLinkFeeTokenAndValidMsgValue_Success() (gas: 126540) MockRouterTest:test_ccipSendWithLinkFeeTokenbutInsufficientAllowance_Revert() (gas: 63431) MockRouterTest:test_ccipSendWithSufficientNativeFeeTokens_Success() (gas: 44012) MultiAggregateRateLimiter_applyRateLimiterConfigUpdates:test_MultipleConfigsBothLanes_Success() (gas: 132457) @@ -534,7 +534,7 @@ MultiAggregateRateLimiter_updateRateLimitTokens:test_UpdateRateLimitTokens_AddsA MultiAggregateRateLimiter_updateRateLimitTokens:test_UpdateRateLimitTokens_RemoveNonExistentToken_Success() (gas: 28709) MultiAggregateRateLimiter_updateRateLimitTokens:test_ZeroDestToken_Revert() (gas: 18279) MultiAggregateRateLimiter_updateRateLimitTokens:test_ZeroSourceToken_Revert() (gas: 18208) -MultiOCR3Base_setOCR3Configs:test_FMustBePositive_Revert() (gas: 59255) +MultiOCR3Base_setOCR3Configs:test_FMustBePositive_Revert() (gas: 59358) MultiOCR3Base_setOCR3Configs:test_FTooHigh_Revert() (gas: 43632) MultiOCR3Base_setOCR3Configs:test_RepeatSignerAddress_Revert() (gas: 283639) MultiOCR3Base_setOCR3Configs:test_RepeatTransmitterAddress_Revert() (gas: 422264) @@ -542,7 +542,7 @@ MultiOCR3Base_setOCR3Configs:test_SetConfigIgnoreSigners_Success() (gas: 511308) MultiOCR3Base_setOCR3Configs:test_SetConfigWithSigners_Success() (gas: 828467) MultiOCR3Base_setOCR3Configs:test_SetConfigWithoutSigners_Success() (gas: 456913) MultiOCR3Base_setOCR3Configs:test_SetConfigsZeroInput_Success() (gas: 12382) -MultiOCR3Base_setOCR3Configs:test_SetMultipleConfigs_Success() (gas: 2140246) +MultiOCR3Base_setOCR3Configs:test_SetMultipleConfigs_Success() (gas: 2140346) MultiOCR3Base_setOCR3Configs:test_SignerCannotBeZeroAddress_Revert() (gas: 141720) MultiOCR3Base_setOCR3Configs:test_StaticConfigChange_Revert() (gas: 807349) MultiOCR3Base_setOCR3Configs:test_TooManySigners_Revert() (gas: 158802) @@ -564,12 +564,12 @@ MultiOCR3Base_transmit:test_UnAuthorizedTransmitter_Revert() (gas: 24195) MultiOCR3Base_transmit:test_UnauthorizedSigner_Revert() (gas: 61131) MultiOCR3Base_transmit:test_UnconfiguredPlugin_Revert() (gas: 39894) MultiOCR3Base_transmit:test_ZeroSignatures_Revert() (gas: 32977) -MultiOnRampTokenPoolReentrancy:test_OnRampTokenPoolReentrancy_Success() (gas: 409189) -MultiRampsE2E:test_E2E_3MessagesMMultiOffRampSuccess_gas() (gas: 1537029) +MultiOnRampTokenPoolReentrancy:test_OnRampTokenPoolReentrancy_Success() (gas: 409186) +MultiRampsE2E:test_E2E_3MessagesMMultiOffRampSuccess_gas() (gas: 1537075) NonceManager_NonceIncrementation:test_getIncrementedOutboundNonce_Success() (gas: 37922) -NonceManager_NonceIncrementation:test_incrementInboundNonce_Skip() (gas: 23709) -NonceManager_NonceIncrementation:test_incrementInboundNonce_Success() (gas: 38799) -NonceManager_NonceIncrementation:test_incrementNoncesInboundAndOutbound_Success() (gas: 71904) +NonceManager_NonceIncrementation:test_incrementInboundNonce_Skip() (gas: 23694) +NonceManager_NonceIncrementation:test_incrementInboundNonce_Success() (gas: 38766) +NonceManager_NonceIncrementation:test_incrementNoncesInboundAndOutbound_Success() (gas: 71871) NonceManager_OffRampUpgrade:test_NoPrevOffRampForChain_Success() (gas: 262138) NonceManager_OffRampUpgrade:test_UpgradedNonceNewSenderStartsAtZero_Success() (gas: 266256) NonceManager_OffRampUpgrade:test_UpgradedNonceStartsAtV1Nonce_Success() (gas: 331224) @@ -577,16 +577,16 @@ NonceManager_OffRampUpgrade:test_UpgradedOffRampNonceSkipsIfMsgInFlight_Success( NonceManager_OffRampUpgrade:test_UpgradedSenderNoncesReadsPreviousRampTransitive_Success() (gas: 245579) NonceManager_OffRampUpgrade:test_UpgradedSenderNoncesReadsPreviousRamp_Success() (gas: 233648) NonceManager_OffRampUpgrade:test_Upgraded_Success() (gas: 154815) -NonceManager_OnRampUpgrade:test_UpgradeNonceNewSenderStartsAtZero_Success() (gas: 168463) -NonceManager_OnRampUpgrade:test_UpgradeNonceStartsAtV1Nonce_Success() (gas: 220298) -NonceManager_OnRampUpgrade:test_UpgradeSenderNoncesReadsPreviousRamp_Success() (gas: 125472) +NonceManager_OnRampUpgrade:test_UpgradeNonceNewSenderStartsAtZero_Success() (gas: 168460) +NonceManager_OnRampUpgrade:test_UpgradeNonceStartsAtV1Nonce_Success() (gas: 220307) +NonceManager_OnRampUpgrade:test_UpgradeSenderNoncesReadsPreviousRamp_Success() (gas: 125475) NonceManager_OnRampUpgrade:test_Upgrade_Success() (gas: 107566) -NonceManager_applyPreviousRampsUpdates:test_MultipleRampsUpdates() (gas: 122961) -NonceManager_applyPreviousRampsUpdates:test_PreviousRampAlreadySetOffRamp_Revert() (gas: 42983) -NonceManager_applyPreviousRampsUpdates:test_PreviousRampAlreadySetOnRampAndOffRamp_Revert() (gas: 64312) -NonceManager_applyPreviousRampsUpdates:test_PreviousRampAlreadySetOnRamp_Revert() (gas: 42847) -NonceManager_applyPreviousRampsUpdates:test_SingleRampUpdate() (gas: 66594) -NonceManager_applyPreviousRampsUpdates:test_ZeroInput() (gas: 12025) +NonceManager_applyPreviousRampsUpdates:test_MultipleRampsUpdates() (gas: 122967) +NonceManager_applyPreviousRampsUpdates:test_PreviousRampAlreadySetOffRamp_Revert() (gas: 42989) +NonceManager_applyPreviousRampsUpdates:test_PreviousRampAlreadySetOnRampAndOffRamp_Revert() (gas: 64318) +NonceManager_applyPreviousRampsUpdates:test_PreviousRampAlreadySetOnRamp_Revert() (gas: 42853) +NonceManager_applyPreviousRampsUpdates:test_SingleRampUpdate() (gas: 66600) +NonceManager_applyPreviousRampsUpdates:test_ZeroInput() (gas: 12028) NonceManager_typeAndVersion:test_typeAndVersion() (gas: 9699) OCR2BaseNoChecks_setOCR2Config:test_FMustBePositive_Revert() (gas: 12195) OCR2BaseNoChecks_setOCR2Config:test_RepeatAddress_Revert() (gas: 42416) @@ -613,11 +613,11 @@ OCR2Base_transmit:test_Transmit2SignersSuccess_gas() (gas: 51689) OCR2Base_transmit:test_UnAuthorizedTransmitter_Revert() (gas: 23499) OCR2Base_transmit:test_UnauthorizedSigner_Revert() (gas: 39695) OCR2Base_transmit:test_WrongNumberOfSignatures_Revert() (gas: 20572) -OffRamp_afterOC3ConfigSet:test_afterOCR3ConfigSet_SignatureVerificationDisabled_Revert() (gas: 5983389) +OffRamp_afterOC3ConfigSet:test_afterOCR3ConfigSet_SignatureVerificationDisabled_Revert() (gas: 5987398) OffRamp_applySourceChainConfigUpdates:test_AddMultipleChains_Success() (gas: 468168) OffRamp_applySourceChainConfigUpdates:test_AddNewChain_Success() (gas: 99296) OffRamp_applySourceChainConfigUpdates:test_ApplyZeroUpdates_Success() (gas: 12472) -OffRamp_applySourceChainConfigUpdates:test_InvalidOnRampUpdate_Revert() (gas: 204676) +OffRamp_applySourceChainConfigUpdates:test_InvalidOnRampUpdate_Revert() (gas: 204722) OffRamp_applySourceChainConfigUpdates:test_ReplaceExistingChainOnRamp_Success() (gas: 101379) OffRamp_applySourceChainConfigUpdates:test_ReplaceExistingChain_Success() (gas: 110796) OffRamp_applySourceChainConfigUpdates:test_RouterAddress_Revert() (gas: 13418) @@ -632,27 +632,27 @@ OffRamp_batchExecute:test_SingleReport_Success() (gas: 157648) OffRamp_batchExecute:test_Unhealthy_Success() (gas: 578050) OffRamp_batchExecute:test_ZeroReports_Revert() (gas: 10576) OffRamp_ccipReceive:test_Reverts() (gas: 15782) -OffRamp_commit:test_CommitOnRampMismatch_Revert() (gas: 92492) -OffRamp_commit:test_FailedRMNVerification_Reverts() (gas: 63748) -OffRamp_commit:test_InvalidIntervalMinLargerThanMax_Revert() (gas: 67769) -OffRamp_commit:test_InvalidInterval_Revert() (gas: 63936) -OffRamp_commit:test_InvalidRootRevert() (gas: 63009) -OffRamp_commit:test_NoConfigWithOtherConfigPresent_Revert() (gas: 6587105) -OffRamp_commit:test_NoConfig_Revert() (gas: 6170887) +OffRamp_commit:test_CommitOnRampMismatch_Revert() (gas: 92541) +OffRamp_commit:test_FailedRMNVerification_Reverts() (gas: 63797) +OffRamp_commit:test_InvalidIntervalMinLargerThanMax_Revert() (gas: 67818) +OffRamp_commit:test_InvalidInterval_Revert() (gas: 63985) +OffRamp_commit:test_InvalidRootRevert() (gas: 63058) +OffRamp_commit:test_NoConfigWithOtherConfigPresent_Revert() (gas: 6591160) +OffRamp_commit:test_NoConfig_Revert() (gas: 6174942) OffRamp_commit:test_OnlyGasPriceUpdates_Success() (gas: 112719) OffRamp_commit:test_OnlyPriceUpdateStaleReport_Revert() (gas: 120939) OffRamp_commit:test_OnlyTokenPriceUpdates_Success() (gas: 112740) OffRamp_commit:test_PriceSequenceNumberCleared_Success() (gas: 354230) -OffRamp_commit:test_ReportAndPriceUpdate_Success() (gas: 163890) -OffRamp_commit:test_ReportOnlyRootSuccess_gas() (gas: 138880) -OffRamp_commit:test_RootAlreadyCommitted_Revert() (gas: 145911) -OffRamp_commit:test_SourceChainNotEnabled_Revert() (gas: 59492) -OffRamp_commit:test_StaleReportWithRoot_Success() (gas: 231183) -OffRamp_commit:test_UnauthorizedTransmitter_Revert() (gas: 124994) -OffRamp_commit:test_Unhealthy_Revert() (gas: 58244) -OffRamp_commit:test_ValidPriceUpdateThenStaleReportWithRoot_Success() (gas: 205947) +OffRamp_commit:test_ReportAndPriceUpdate_Success() (gas: 163936) +OffRamp_commit:test_ReportOnlyRootSuccess_gas() (gas: 138926) +OffRamp_commit:test_RootAlreadyCommitted_Revert() (gas: 146006) +OffRamp_commit:test_SourceChainNotEnabled_Revert() (gas: 59541) +OffRamp_commit:test_StaleReportWithRoot_Success() (gas: 231275) +OffRamp_commit:test_UnauthorizedTransmitter_Revert() (gas: 125040) +OffRamp_commit:test_Unhealthy_Revert() (gas: 58293) +OffRamp_commit:test_ValidPriceUpdateThenStaleReportWithRoot_Success() (gas: 205993) OffRamp_commit:test_ZeroEpochAndRound_Revert() (gas: 51483) -OffRamp_constructor:test_Constructor_Success() (gas: 6170587) +OffRamp_constructor:test_Constructor_Success() (gas: 6174596) OffRamp_constructor:test_SourceChainSelector_Revert() (gas: 135943) OffRamp_constructor:test_ZeroChainSelector_Revert() (gas: 103386) OffRamp_constructor:test_ZeroNonceManager_Revert() (gas: 101280) @@ -663,17 +663,17 @@ OffRamp_execute:test_IncorrectArrayType_Revert() (gas: 17610) OffRamp_execute:test_LargeBatch_Success() (gas: 3419182) OffRamp_execute:test_MultipleReportsWithPartialValidationFailures_Success() (gas: 375374) OffRamp_execute:test_MultipleReports_Success() (gas: 302902) -OffRamp_execute:test_NoConfigWithOtherConfigPresent_Revert() (gas: 6996650) -OffRamp_execute:test_NoConfig_Revert() (gas: 6221351) +OffRamp_execute:test_NoConfigWithOtherConfigPresent_Revert() (gas: 7000659) +OffRamp_execute:test_NoConfig_Revert() (gas: 6225360) OffRamp_execute:test_NonArray_Revert() (gas: 27961) OffRamp_execute:test_SingleReport_Success() (gas: 176939) OffRamp_execute:test_UnauthorizedTransmitter_Revert() (gas: 149068) -OffRamp_execute:test_WrongConfigWithSigners_Revert() (gas: 6999426) +OffRamp_execute:test_WrongConfigWithSigners_Revert() (gas: 7003435) OffRamp_execute:test_ZeroReports_Revert() (gas: 17293) OffRamp_executeSingleMessage:test_MessageSender_Revert() (gas: 18874) OffRamp_executeSingleMessage:test_NonContractWithTokens_Success() (gas: 248743) OffRamp_executeSingleMessage:test_NonContract_Success() (gas: 21206) -OffRamp_executeSingleMessage:test_TokenHandlingError_Revert() (gas: 209803) +OffRamp_executeSingleMessage:test_TokenHandlingError_Revert() (gas: 209800) OffRamp_executeSingleMessage:test_ZeroGasDONExecution_Revert() (gas: 49525) OffRamp_executeSingleMessage:test_executeSingleMessage_NoTokens_Success() (gas: 49013) OffRamp_executeSingleMessage:test_executeSingleMessage_WithFailingValidationNoRouterCall_Revert() (gas: 218730) @@ -686,8 +686,8 @@ OffRamp_executeSingleReport:test_InvalidSourcePoolAddress_Success() (gas: 503897 OffRamp_executeSingleReport:test_ManualExecutionNotYetEnabled_Revert() (gas: 49358) OffRamp_executeSingleReport:test_MismatchingDestChainSelector_Revert() (gas: 34462) OffRamp_executeSingleReport:test_NonExistingSourceChain_Revert() (gas: 28977) -OffRamp_executeSingleReport:test_ReceiverError_Success() (gas: 189608) -OffRamp_executeSingleReport:test_RetryFailedMessageWithoutManualExecution_Revert() (gas: 200597) +OffRamp_executeSingleReport:test_ReceiverError_Success() (gas: 189611) +OffRamp_executeSingleReport:test_RetryFailedMessageWithoutManualExecution_Revert() (gas: 200600) OffRamp_executeSingleReport:test_RootNotCommitted_Revert() (gas: 41727) OffRamp_executeSingleReport:test_RouterYULCall_Revert() (gas: 449309) OffRamp_executeSingleReport:test_SingleMessageNoTokensOtherChain_Success() (gas: 251345) @@ -711,8 +711,8 @@ OffRamp_getExecutionState:test_GetDifferentChainExecutionState_Success() (gas: 1 OffRamp_getExecutionState:test_GetExecutionState_Success() (gas: 89540) OffRamp_manuallyExecute:test_ManualExecGasLimitMismatchSingleReport_Revert() (gas: 81676) OffRamp_manuallyExecute:test_manuallyExecute_DestinationGasAmountCountMismatch_Revert() (gas: 80532) -OffRamp_manuallyExecute:test_manuallyExecute_DoesNotRevertIfUntouched_Success() (gas: 174130) -OffRamp_manuallyExecute:test_manuallyExecute_FailedTx_Revert() (gas: 215543) +OffRamp_manuallyExecute:test_manuallyExecute_DoesNotRevertIfUntouched_Success() (gas: 174133) +OffRamp_manuallyExecute:test_manuallyExecute_FailedTx_Revert() (gas: 215546) OffRamp_manuallyExecute:test_manuallyExecute_ForkedChain_Revert() (gas: 27365) OffRamp_manuallyExecute:test_manuallyExecute_GasLimitMismatchMultipleReports_Revert() (gas: 165597) OffRamp_manuallyExecute:test_manuallyExecute_InvalidReceiverExecutionGasLimit_Revert() (gas: 27936) @@ -721,10 +721,10 @@ OffRamp_manuallyExecute:test_manuallyExecute_LowGasLimit_Success() (gas: 534293) OffRamp_manuallyExecute:test_manuallyExecute_MultipleReportsWithSingleCursedLane_Revert() (gas: 321217) OffRamp_manuallyExecute:test_manuallyExecute_ReentrancyFails_Success() (gas: 2393253) OffRamp_manuallyExecute:test_manuallyExecute_SourceChainSelectorMismatch_Revert() (gas: 166568) -OffRamp_manuallyExecute:test_manuallyExecute_Success() (gas: 228525) -OffRamp_manuallyExecute:test_manuallyExecute_WithGasOverride_Success() (gas: 229065) -OffRamp_manuallyExecute:test_manuallyExecute_WithMultiReportGasOverride_Success() (gas: 788283) -OffRamp_manuallyExecute:test_manuallyExecute_WithPartialMessages_Success() (gas: 350237) +OffRamp_manuallyExecute:test_manuallyExecute_Success() (gas: 228528) +OffRamp_manuallyExecute:test_manuallyExecute_WithGasOverride_Success() (gas: 229068) +OffRamp_manuallyExecute:test_manuallyExecute_WithMultiReportGasOverride_Success() (gas: 788286) +OffRamp_manuallyExecute:test_manuallyExecute_WithPartialMessages_Success() (gas: 350240) OffRamp_releaseOrMintSingleToken:test__releaseOrMintSingleToken_NotACompatiblePool_Revert() (gas: 40611) OffRamp_releaseOrMintSingleToken:test__releaseOrMintSingleToken_Success() (gas: 105733) OffRamp_releaseOrMintSingleToken:test__releaseOrMintSingleToken_TokenHandlingError_transfer_Revert() (gas: 86956) @@ -744,49 +744,49 @@ OffRamp_setDynamicConfig:test_FeeQuoterZeroAddress_Revert() (gas: 11201) OffRamp_setDynamicConfig:test_NonOwner_Revert() (gas: 13811) OffRamp_setDynamicConfig:test_SetDynamicConfigWithValidator_Success() (gas: 46216) OffRamp_setDynamicConfig:test_SetDynamicConfig_Success() (gas: 24191) -OffRamp_trialExecute:test_RateLimitError_Success() (gas: 226586) -OffRamp_trialExecute:test_TokenHandlingErrorIsCaught_Success() (gas: 235208) +OffRamp_trialExecute:test_RateLimitError_Success() (gas: 226583) +OffRamp_trialExecute:test_TokenHandlingErrorIsCaught_Success() (gas: 235205) OffRamp_trialExecute:test_TokenPoolIsNotAContract_Success() (gas: 314371) OffRamp_trialExecute:test_trialExecute_Success() (gas: 284928) OnRampTokenPoolReentrancy:test_OnRampTokenPoolReentrancy_Success() (gas: 388215) OnRamp_applyAllowListUpdates:test_applyAllowListUpdates_InvalidAllowListRequestDisabledAllowListWithAdds() (gas: 17758) -OnRamp_applyAllowListUpdates:test_applyAllowListUpdates_Revert() (gas: 66553) -OnRamp_applyAllowListUpdates:test_applyAllowListUpdates_Success() (gas: 323605) -OnRamp_applyDestChainConfigUpdates:test_ApplyDestChainConfigUpdates_Success() (gas: 64546) +OnRamp_applyAllowListUpdates:test_applyAllowListUpdates_Revert() (gas: 66550) +OnRamp_applyAllowListUpdates:test_applyAllowListUpdates_Success() (gas: 323603) +OnRamp_applyDestChainConfigUpdates:test_ApplyDestChainConfigUpdates_Success() (gas: 64543) OnRamp_applyDestChainConfigUpdates:test_ApplyDestChainConfigUpdates_WithInvalidChainSelector_Revert() (gas: 13254) OnRamp_constructor:test_Constructor_InvalidConfigChainSelectorEqZero_Revert() (gas: 94823) OnRamp_constructor:test_Constructor_InvalidConfigNonceManagerEqAddressZero_Revert() (gas: 92757) OnRamp_constructor:test_Constructor_InvalidConfigRMNProxyEqAddressZero_Revert() (gas: 97783) OnRamp_constructor:test_Constructor_InvalidConfigTokenAdminRegistryEqAddressZero_Revert() (gas: 92815) OnRamp_constructor:test_Constructor_Success() (gas: 2817599) -OnRamp_forwardFromRouter:test_ForwardFromRouterExtraArgsV2AllowOutOfOrderTrue_Success() (gas: 114939) -OnRamp_forwardFromRouter:test_ForwardFromRouterExtraArgsV2_Success() (gas: 145710) -OnRamp_forwardFromRouter:test_ForwardFromRouterSuccessCustomExtraArgs() (gas: 145313) -OnRamp_forwardFromRouter:test_ForwardFromRouterSuccessEmptyExtraArgs() (gas: 143538) -OnRamp_forwardFromRouter:test_ForwardFromRouterSuccessLegacyExtraArgs() (gas: 145538) -OnRamp_forwardFromRouter:test_ForwardFromRouter_Success() (gas: 144917) -OnRamp_forwardFromRouter:test_ForwardFromRouter_Success_ConfigurableSourceRouter() (gas: 140249) +OnRamp_forwardFromRouter:test_ForwardFromRouterExtraArgsV2AllowOutOfOrderTrue_Success() (gas: 114933) +OnRamp_forwardFromRouter:test_ForwardFromRouterExtraArgsV2_Success() (gas: 145704) +OnRamp_forwardFromRouter:test_ForwardFromRouterSuccessCustomExtraArgs() (gas: 145307) +OnRamp_forwardFromRouter:test_ForwardFromRouterSuccessEmptyExtraArgs() (gas: 143520) +OnRamp_forwardFromRouter:test_ForwardFromRouterSuccessLegacyExtraArgs() (gas: 145532) +OnRamp_forwardFromRouter:test_ForwardFromRouter_Success() (gas: 144908) +OnRamp_forwardFromRouter:test_ForwardFromRouter_Success_ConfigurableSourceRouter() (gas: 140243) OnRamp_forwardFromRouter:test_InvalidExtraArgsTag_Revert() (gas: 28824) -OnRamp_forwardFromRouter:test_MessageValidationError_Revert() (gas: 138938) +OnRamp_forwardFromRouter:test_MessageValidationError_Revert() (gas: 138923) OnRamp_forwardFromRouter:test_MesssageFeeTooHigh_Revert() (gas: 26924) OnRamp_forwardFromRouter:test_MultiCannotSendZeroTokens_Revert() (gas: 74139) OnRamp_forwardFromRouter:test_OriginalSender_Revert() (gas: 12951) OnRamp_forwardFromRouter:test_Paused_Revert() (gas: 37338) OnRamp_forwardFromRouter:test_Permissions_Revert() (gas: 18284) -OnRamp_forwardFromRouter:test_ShouldIncrementNonceOnlyOnOrdered_Success() (gas: 184562) -OnRamp_forwardFromRouter:test_ShouldIncrementSeqNumAndNonce_Success() (gas: 210880) -OnRamp_forwardFromRouter:test_ShouldStoreLinkFees() (gas: 124838) +OnRamp_forwardFromRouter:test_ShouldIncrementNonceOnlyOnOrdered_Success() (gas: 184580) +OnRamp_forwardFromRouter:test_ShouldIncrementSeqNumAndNonce_Success() (gas: 210898) +OnRamp_forwardFromRouter:test_ShouldStoreLinkFees() (gas: 124829) OnRamp_forwardFromRouter:test_ShouldStoreNonLinkFees() (gas: 141462) OnRamp_forwardFromRouter:test_SourceTokenDataTooLarge_Revert() (gas: 3769244) OnRamp_forwardFromRouter:test_UnAllowedOriginalSender_Revert() (gas: 18714) OnRamp_forwardFromRouter:test_UnsupportedToken_Revert() (gas: 110919) OnRamp_forwardFromRouter:test_forwardFromRouter_UnsupportedToken_Revert() (gas: 76235) -OnRamp_forwardFromRouter:test_forwardFromRouter_WithValidation_Success() (gas: 281240) -OnRamp_getFee:test_EmptyMessage_Success() (gas: 97734) +OnRamp_forwardFromRouter:test_forwardFromRouter_WithValidation_Success() (gas: 281225) +OnRamp_getFee:test_EmptyMessage_Success() (gas: 97731) OnRamp_getFee:test_EnforceOutOfOrder_Revert() (gas: 64215) OnRamp_getFee:test_GetFeeOfZeroForTokenMessage_Success() (gas: 85428) OnRamp_getFee:test_NotAFeeTokenButPricedToken_Revert() (gas: 34978) -OnRamp_getFee:test_SingleTokenMessage_Success() (gas: 112749) +OnRamp_getFee:test_SingleTokenMessage_Success() (gas: 112746) OnRamp_getFee:test_Unhealthy_Revert() (gas: 17021) OnRamp_getSupportedTokens:test_GetSupportedTokens_Revert() (gas: 10438) OnRamp_getTokenPool:test_GetTokenPool_Success() (gas: 35204) @@ -795,13 +795,34 @@ OnRamp_setDynamicConfig:test_SetConfigInvalidConfigFeeQuoterEqAddressZero_Revert OnRamp_setDynamicConfig:test_SetConfigInvalidConfig_Revert() (gas: 11377) OnRamp_setDynamicConfig:test_SetConfigOnlyOwner_Revert() (gas: 16421) OnRamp_setDynamicConfig:test_SetDynamicConfig_Success() (gas: 55330) -OnRamp_withdrawFeeTokens:test_WithdrawFeeTokens_Success() (gas: 97235) +OnRamp_withdrawFeeTokens:test_WithdrawFeeTokens_Success() (gas: 97247) PingPong_ccipReceive:test_CcipReceive_Success() (gas: 150719) PingPong_plumbing:test_OutOfOrderExecution_Success() (gas: 20286) PingPong_plumbing:test_Pausing_Success() (gas: 17786) PingPong_startPingPong:test_StartPingPong_With_OOO_Success() (gas: 161185) PingPong_startPingPong:test_StartPingPong_With_Sequenced_Ordered_Success() (gas: 180603) -RMNHome:test() (gas: 186) +RMNRemote_constructor:test_constructor_success() (gas: 8345) +RMNRemote_curse:test_curse_calledByNonOwner_reverts() (gas: 18726) +RMNRemote_curse:test_curse_duplicateSubject_reverts() (gas: 132195) +RMNRemote_curse:test_curse_success() (gas: 126648) +RMNRemote_global_and_legacy_curses:test_global_and_legacy_curses_success() (gas: 133815) +RMNRemote_setConfig:test_setConfig_addSigner_removeSigner_success() (gas: 1313828) +RMNRemote_setConfig:test_setConfig_duplicateOnChainPublicKey_reverts() (gas: 323384) +RMNRemote_setConfig:test_setConfig_invalidSignerOrder_reverts() (gas: 80242) +RMNRemote_setConfig:test_setConfig_minSignersIs0_success() (gas: 609445) +RMNRemote_setConfig:test_setConfig_minSignersTooHigh_reverts() (gas: 54082) +RMNRemote_setConfig:test_setConfig_versionIncreases_success() (gas: 1300748) +RMNRemote_uncurse:test_uncurse_calledByNonOwner_reverts() (gas: 18629) +RMNRemote_uncurse:test_uncurse_duplicateSubject_reverts() (gas: 48972) +RMNRemote_uncurse:test_uncurse_success() (gas: 37043) +RMNRemote_verify_withConfigNotSet:test_verify_reverts() (gas: 13962) +RMNRemote_verify_withConfigSet:test_verify_duplicateSignature_reverts() (gas: 72374) +RMNRemote_verify_withConfigSet:test_verify_insufficientSignatures_reverts() (gas: 326497) +RMNRemote_verify_withConfigSet:test_verify_invalidSig_reverts() (gas: 74506) +RMNRemote_verify_withConfigSet:test_verify_minSignersIsZero_success() (gas: 200560) +RMNRemote_verify_withConfigSet:test_verify_outOfOrderSig_reverts() (gas: 79392) +RMNRemote_verify_withConfigSet:test_verify_success() (gas: 66433) +RMNRemote_verify_withConfigSet:test_verify_unknownSigner_reverts() (gas: 809923) RMN_constructor:test_Constructor_Success() (gas: 48874) RMN_getRecordedCurseRelatedOps:test_OpsPostDeployment() (gas: 19696) RMN_lazyVoteToCurseUpdate_Benchmark:test_VoteToCurseLazilyRetain3VotersUponConfigChange_gas() (gas: 152287) @@ -879,24 +900,24 @@ RegistryModuleOwnerCustom_registerAdminViaOwner:test_registerAdminViaOwner_Rever RegistryModuleOwnerCustom_registerAdminViaOwner:test_registerAdminViaOwner_Success() (gas: 129797) Router_applyRampUpdates:test_OffRampMismatch_Revert() (gas: 89321) Router_applyRampUpdates:test_OffRampUpdatesWithRouting() (gas: 10652272) -Router_applyRampUpdates:test_OnRampDisable() (gas: 55971) +Router_applyRampUpdates:test_OnRampDisable() (gas: 55949) Router_applyRampUpdates:test_OnlyOwner_Revert() (gas: 12317) Router_ccipSend:test_CCIPSendLinkFeeNoTokenSuccess_gas() (gas: 114017) Router_ccipSend:test_CCIPSendLinkFeeOneTokenSuccess_gas() (gas: 201533) Router_ccipSend:test_CCIPSendNativeFeeNoTokenSuccess_gas() (gas: 126386) Router_ccipSend:test_CCIPSendNativeFeeOneTokenSuccess_gas() (gas: 213904) -Router_ccipSend:test_FeeTokenAmountTooLow_Revert() (gas: 64241) +Router_ccipSend:test_FeeTokenAmountTooLow_Revert() (gas: 64229) Router_ccipSend:test_InvalidMsgValue() (gas: 32014) -Router_ccipSend:test_NativeFeeTokenInsufficientValue() (gas: 66706) +Router_ccipSend:test_NativeFeeTokenInsufficientValue() (gas: 66709) Router_ccipSend:test_NativeFeeTokenOverpay_Success() (gas: 169401) Router_ccipSend:test_NativeFeeTokenZeroValue() (gas: 53982) Router_ccipSend:test_NativeFeeToken_Success() (gas: 167995) -Router_ccipSend:test_NonLinkFeeToken_Success() (gas: 238462) +Router_ccipSend:test_NonLinkFeeToken_Success() (gas: 238459) Router_ccipSend:test_UnsupportedDestinationChain_Revert() (gas: 24767) Router_ccipSend:test_WhenNotHealthy_Revert() (gas: 44742) -Router_ccipSend:test_WrappedNativeFeeToken_Success() (gas: 170253) +Router_ccipSend:test_WrappedNativeFeeToken_Success() (gas: 170283) Router_ccipSend:test_ZeroFeeAndGasPrice_Success() (gas: 240550) -Router_constructor:test_Constructor_Success() (gas: 13070) +Router_constructor:test_Constructor_Success() (gas: 13074) Router_getArmProxy:test_getArmProxy() (gas: 10561) Router_getFee:test_GetFeeSupportedChain_Success() (gas: 44415) Router_getFee:test_UnsupportedDestinationChain_Revert() (gas: 17156) @@ -907,7 +928,7 @@ Router_recoverTokens:test_RecoverTokensNonOwner_Revert() (gas: 11171) Router_recoverTokens:test_RecoverTokensValueReceiver_Revert() (gas: 392489) Router_recoverTokens:test_RecoverTokens_Success() (gas: 52442) Router_routeMessage:test_AutoExec_Success() (gas: 42738) -Router_routeMessage:test_ExecutionEvent_Success() (gas: 158166) +Router_routeMessage:test_ExecutionEvent_Success() (gas: 158157) Router_routeMessage:test_ManualExec_Success() (gas: 35429) Router_routeMessage:test_OnlyOffRamp_Revert() (gas: 25146) Router_routeMessage:test_WhenNotHealthy_Revert() (gas: 44754) @@ -937,19 +958,19 @@ TokenAdminRegistry_setPool:test_setPool_Success() (gas: 35961) TokenAdminRegistry_setPool:test_setPool_ZeroAddressRemovesPool_Success() (gas: 30635) TokenAdminRegistry_transferAdminRole:test_transferAdminRole_OnlyAdministrator_Revert() (gas: 18091) TokenAdminRegistry_transferAdminRole:test_transferAdminRole_Success() (gas: 49402) -TokenPoolAndProxy:test_lockOrBurn_burnMint_Success() (gas: 5855541) -TokenPoolAndProxy:test_lockOrBurn_burnWithFromMint_Success() (gas: 5887014) -TokenPoolAndProxy:test_lockOrBurn_lockRelease_Success() (gas: 6040093) +TokenPoolAndProxy:test_lockOrBurn_burnMint_Success() (gas: 5855544) +TokenPoolAndProxy:test_lockOrBurn_burnWithFromMint_Success() (gas: 5887017) +TokenPoolAndProxy:test_lockOrBurn_lockRelease_Success() (gas: 6040096) TokenPoolAndProxy:test_setPreviousPool_Success() (gas: 3214305) -TokenPoolAndProxyMigration:test_tokenPoolMigration_Success_1_2() (gas: 6699954) -TokenPoolAndProxyMigration:test_tokenPoolMigration_Success_1_4() (gas: 6912610) -TokenPoolWithAllowList_applyAllowListUpdates:test_AllowListNotEnabled_Revert() (gas: 2069936) -TokenPoolWithAllowList_applyAllowListUpdates:test_OnlyOwner_Revert() (gas: 12101) +TokenPoolAndProxyMigration:test_tokenPoolMigration_Success_1_2() (gas: 6699975) +TokenPoolAndProxyMigration:test_tokenPoolMigration_Success_1_4() (gas: 6912625) +TokenPoolWithAllowList_applyAllowListUpdates:test_AllowListNotEnabled_Revert() (gas: 2069930) +TokenPoolWithAllowList_applyAllowListUpdates:test_OnlyOwner_Revert() (gas: 12107) TokenPoolWithAllowList_applyAllowListUpdates:test_SetAllowListSkipsZero_Success() (gas: 23464) -TokenPoolWithAllowList_applyAllowListUpdates:test_SetAllowList_Success() (gas: 177802) +TokenPoolWithAllowList_applyAllowListUpdates:test_SetAllowList_Success() (gas: 177804) TokenPoolWithAllowList_getAllowList:test_GetAllowList_Success() (gas: 23740) TokenPoolWithAllowList_getAllowListEnabled:test_GetAllowListEnabled_Success() (gas: 8363) -TokenPoolWithAllowList_setRouter:test_SetRouter_Success() (gas: 24843) +TokenPoolWithAllowList_setRouter:test_SetRouter_Success() (gas: 24831) TokenPool_applyChainUpdates:test_applyChainUpdates_DisabledNonZeroRateLimit_Revert() (gas: 271551) TokenPool_applyChainUpdates:test_applyChainUpdates_InvalidRateLimitRate_Revert() (gas: 542134) TokenPool_applyChainUpdates:test_applyChainUpdates_NonExistentChain_Revert() (gas: 18449) @@ -958,13 +979,13 @@ TokenPool_applyChainUpdates:test_applyChainUpdates_Success() (gas: 477675) TokenPool_applyChainUpdates:test_applyChainUpdates_ZeroAddressNotAllowed_Revert() (gas: 157356) TokenPool_constructor:test_ZeroAddressNotAllowed_Revert() (gas: 70564) TokenPool_constructor:test_immutableFields_Success() (gas: 20544) -TokenPool_getRemotePool:test_getRemotePool_Success() (gas: 274145) +TokenPool_getRemotePool:test_getRemotePool_Success() (gas: 274151) TokenPool_onlyOffRamp:test_CallerIsNotARampOnRouter_Revert() (gas: 277116) -TokenPool_onlyOffRamp:test_ChainNotAllowed_Revert() (gas: 289701) -TokenPool_onlyOffRamp:test_onlyOffRamp_Success() (gas: 349912) +TokenPool_onlyOffRamp:test_ChainNotAllowed_Revert() (gas: 289694) +TokenPool_onlyOffRamp:test_onlyOffRamp_Success() (gas: 349903) TokenPool_onlyOnRamp:test_CallerIsNotARampOnRouter_Revert() (gas: 276856) -TokenPool_onlyOnRamp:test_ChainNotAllowed_Revert() (gas: 253729) -TokenPool_onlyOnRamp:test_onlyOnRamp_Success() (gas: 304962) +TokenPool_onlyOnRamp:test_ChainNotAllowed_Revert() (gas: 253722) +TokenPool_onlyOnRamp:test_onlyOnRamp_Success() (gas: 304953) TokenPool_setChainRateLimiterConfig:test_NonExistentChain_Revert() (gas: 17148) TokenPool_setChainRateLimiterConfig:test_OnlyOwnerOrRateLimitAdmin_Revert() (gas: 15149) TokenPool_setRemotePool:test_setRemotePool_NonExistentChain_Reverts() (gas: 15665) @@ -979,16 +1000,16 @@ TokenProxy_ccipSend:test_CcipSend_Success() (gas: 261662) TokenProxy_constructor:test_Constructor() (gas: 13812) TokenProxy_getFee:test_GetFeeGasShouldBeZero_Revert() (gas: 16845) TokenProxy_getFee:test_GetFeeInvalidToken_Revert() (gas: 12670) -TokenProxy_getFee:test_GetFeeNoDataAllowed_Revert() (gas: 15864) +TokenProxy_getFee:test_GetFeeNoDataAllowed_Revert() (gas: 15861) TokenProxy_getFee:test_GetFee_Success() (gas: 84634) USDCTokenPool__validateMessage:test_ValidateInvalidMessage_Revert() (gas: 25407) -USDCTokenPool_lockOrBurn:test_CallerIsNotARampOnRouter_Revert() (gas: 35376) -USDCTokenPool_lockOrBurn:test_LockOrBurnWithAllowList_Revert() (gas: 30112) -USDCTokenPool_lockOrBurn:test_LockOrBurn_Success() (gas: 133148) -USDCTokenPool_lockOrBurn:test_UnknownDomain_Revert() (gas: 477486) -USDCTokenPool_releaseOrMint:test_ReleaseOrMintRealTx_Success() (gas: 268238) -USDCTokenPool_releaseOrMint:test_TokenMaxCapacityExceeded_Revert() (gas: 50724) -USDCTokenPool_releaseOrMint:test_UnlockingUSDCFailed_Revert() (gas: 98642) +USDCTokenPool_lockOrBurn:test_CallerIsNotARampOnRouter_Revert() (gas: 35358) +USDCTokenPool_lockOrBurn:test_LockOrBurnWithAllowList_Revert() (gas: 30103) +USDCTokenPool_lockOrBurn:test_LockOrBurn_Success() (gas: 133143) +USDCTokenPool_lockOrBurn:test_UnknownDomain_Revert() (gas: 477477) +USDCTokenPool_releaseOrMint:test_ReleaseOrMintRealTx_Success() (gas: 268221) +USDCTokenPool_releaseOrMint:test_TokenMaxCapacityExceeded_Revert() (gas: 50712) +USDCTokenPool_releaseOrMint:test_UnlockingUSDCFailed_Revert() (gas: 98624) USDCTokenPool_setDomains:test_InvalidDomain_Revert() (gas: 66189) USDCTokenPool_setDomains:test_OnlyOwner_Revert() (gas: 11345) USDCTokenPool_supportsInterface:test_SupportsInterface_Success() (gas: 9888) \ No newline at end of file diff --git a/core/gethwrappers/ccip/generated/offramp/offramp.go b/core/gethwrappers/ccip/generated/offramp/offramp.go index 1cae9daaa3..2450c9c077 100644 --- a/core/gethwrappers/ccip/generated/offramp/offramp.go +++ b/core/gethwrappers/ccip/generated/offramp/offramp.go @@ -155,7 +155,7 @@ type OffRampStaticConfig struct { var OffRampMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"contractIRMNV2\",\"name\":\"rmn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAdminRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nonceManager\",\"type\":\"address\"}],\"internalType\":\"structOffRamp.StaticConfig\",\"name\":\"staticConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeQuoter\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"permissionLessExecutionThresholdSeconds\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"messageValidator\",\"type\":\"address\"}],\"internalType\":\"structOffRamp.DynamicConfig\",\"name\":\"dynamicConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"contractIRouter\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"onRamp\",\"type\":\"bytes\"}],\"internalType\":\"structOffRamp.SourceChainConfigArgs[]\",\"name\":\"sourceChainConfigs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CanOnlySelfCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reportOnRamp\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"configOnRamp\",\"type\":\"bytes\"}],\"name\":\"CommitOnRampMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"expected\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"actual\",\"type\":\"bytes32\"}],\"name\":\"ConfigDigestMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"}],\"name\":\"CursedByRMN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyReport\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"err\",\"type\":\"bytes\"}],\"name\":\"ExecutionError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"}],\"name\":\"ForkedChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumMultiOCR3Base.InvalidConfigErrorType\",\"name\":\"errorType\",\"type\":\"uint8\"}],\"name\":\"InvalidConfig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"got\",\"type\":\"uint256\"}],\"name\":\"InvalidDataLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedAddress\",\"type\":\"bytes\"}],\"name\":\"InvalidEVMAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"InvalidInterval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"newLimit\",\"type\":\"uint256\"}],\"name\":\"InvalidManualExecutionGasLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"tokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oldLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenGasOverride\",\"type\":\"uint256\"}],\"name\":\"InvalidManualExecutionTokenGasOverride\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"messageDestChainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidMessageDestChainSelector\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"},{\"internalType\":\"enumInternal.MessageExecutionState\",\"name\":\"newState\",\"type\":\"uint8\"}],\"name\":\"InvalidNewState\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidOnRampUpdate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRoot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LeavesCannotBeEmpty\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"}],\"name\":\"ManualExecutionGasAmountCountMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ManualExecutionGasLimitMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"}],\"name\":\"ManualExecutionNotYetEnabled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"errorReason\",\"type\":\"bytes\"}],\"name\":\"MessageValidationError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonUniqueSignatures\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"notPool\",\"type\":\"address\"}],\"name\":\"NotACompatiblePool\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OracleCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"err\",\"type\":\"bytes\"}],\"name\":\"ReceiverError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountReleased\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balancePre\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balancePost\",\"type\":\"uint256\"}],\"name\":\"ReleaseOrMintBalanceMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"merkleRoot\",\"type\":\"bytes32\"}],\"name\":\"RootAlreadyCommitted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"}],\"name\":\"RootNotCommitted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureVerificationDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignaturesOutOfRegistration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"}],\"name\":\"SourceChainNotEnabled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"reportSourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageSourceChainSelector\",\"type\":\"uint64\"}],\"name\":\"SourceChainSelectorMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StaleCommitReport\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"ocrPluginType\",\"type\":\"uint8\"}],\"name\":\"StaticConfigCannotBeChanged\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"}],\"name\":\"TokenDataMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"err\",\"type\":\"bytes\"}],\"name\":\"TokenHandlingError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorizedSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorizedTransmitter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedTokenData\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"}],\"name\":\"WrongMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongNumberOfSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroChainSelectorNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"}],\"name\":\"AlreadyAttempted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"onRampAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"minSeqNr\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxSeqNr\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"merkleRoot\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"structInternal.MerkleRoot[]\",\"name\":\"merkleRoots\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sourceToken\",\"type\":\"address\"},{\"internalType\":\"uint224\",\"name\":\"usdPerToken\",\"type\":\"uint224\"}],\"internalType\":\"structInternal.TokenPriceUpdate[]\",\"name\":\"tokenPriceUpdates\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint224\",\"name\":\"usdPerUnitGas\",\"type\":\"uint224\"}],\"internalType\":\"structInternal.GasPriceUpdate[]\",\"name\":\"gasPriceUpdates\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structInternal.PriceUpdates\",\"name\":\"priceUpdates\",\"type\":\"tuple\"}],\"name\":\"CommitReportAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"ocrPluginType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"F\",\"type\":\"uint8\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"feeQuoter\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"permissionLessExecutionThresholdSeconds\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"messageValidator\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structOffRamp.DynamicConfig\",\"name\":\"dynamicConfig\",\"type\":\"tuple\"}],\"name\":\"DynamicConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enumInternal.MessageExecutionState\",\"name\":\"state\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"name\":\"ExecutionStateChanged\",\"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\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"RootRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"}],\"name\":\"SkippedAlreadyExecutedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"}],\"name\":\"SkippedReportExecution\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"contractIRouter\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"minSeqNr\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"onRamp\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structOffRamp.SourceChainConfig\",\"name\":\"sourceConfig\",\"type\":\"tuple\"}],\"name\":\"SourceChainConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"}],\"name\":\"SourceChainSelectorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"contractIRMNV2\",\"name\":\"rmn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAdminRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nonceManager\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structOffRamp.StaticConfig\",\"name\":\"staticConfig\",\"type\":\"tuple\"}],\"name\":\"StaticConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"ocrPluginType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"}],\"name\":\"Transmitted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contractIRouter\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"onRamp\",\"type\":\"bytes\"}],\"internalType\":\"structOffRamp.SourceChainConfigArgs[]\",\"name\":\"sourceChainConfigUpdates\",\"type\":\"tuple[]\"}],\"name\":\"applySourceChainConfigUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"ccipReceive\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[3]\",\"name\":\"reportContext\",\"type\":\"bytes32[3]\"},{\"internalType\":\"bytes\",\"name\":\"report\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"rs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"ss\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"rawVs\",\"type\":\"bytes32\"}],\"name\":\"commit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[3]\",\"name\":\"reportContext\",\"type\":\"bytes32[3]\"},{\"internalType\":\"bytes\",\"name\":\"report\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"structInternal.RampMessageHeader\",\"name\":\"header\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"sourcePoolAddress\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"destTokenAddress\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destExecData\",\"type\":\"bytes\"}],\"internalType\":\"structInternal.RampTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structInternal.Any2EVMRampMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"offchainTokenData\",\"type\":\"bytes[]\"},{\"internalType\":\"uint32[]\",\"name\":\"tokenGasOverrides\",\"type\":\"uint32[]\"}],\"name\":\"executeSingleMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDynamicConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"feeQuoter\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"permissionLessExecutionThresholdSeconds\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"messageValidator\",\"type\":\"address\"}],\"internalType\":\"structOffRamp.DynamicConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"}],\"name\":\"getExecutionState\",\"outputs\":[{\"internalType\":\"enumInternal.MessageExecutionState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLatestPriceSequenceNumber\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"getMerkleRoot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"}],\"name\":\"getSourceChainConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"contractIRouter\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"minSeqNr\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"onRamp\",\"type\":\"bytes\"}],\"internalType\":\"structOffRamp.SourceChainConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStaticConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"contractIRMNV2\",\"name\":\"rmn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAdminRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nonceManager\",\"type\":\"address\"}],\"internalType\":\"structOffRamp.StaticConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"ocrPluginType\",\"type\":\"uint8\"}],\"name\":\"latestConfigDetails\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"F\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"n\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSignatureVerificationEnabled\",\"type\":\"bool\"}],\"internalType\":\"structMultiOCR3Base.ConfigInfo\",\"name\":\"configInfo\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"}],\"internalType\":\"structMultiOCR3Base.OCRConfig\",\"name\":\"ocrConfig\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"structInternal.RampMessageHeader\",\"name\":\"header\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"sourcePoolAddress\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"destTokenAddress\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destExecData\",\"type\":\"bytes\"}],\"internalType\":\"structInternal.RampTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structInternal.Any2EVMRampMessage[]\",\"name\":\"messages\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[][]\",\"name\":\"offchainTokenData\",\"type\":\"bytes[][]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofs\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"proofFlagBits\",\"type\":\"uint256\"}],\"internalType\":\"structInternal.ExecutionReportSingleChain[]\",\"name\":\"reports\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receiverExecutionGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint32[]\",\"name\":\"tokenGasOverrides\",\"type\":\"uint32[]\"}],\"internalType\":\"structOffRamp.GasLimitOverride[][]\",\"name\":\"gasLimitOverrides\",\"type\":\"tuple[][]\"}],\"name\":\"manuallyExecute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"feeQuoter\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"permissionLessExecutionThresholdSeconds\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"messageValidator\",\"type\":\"address\"}],\"internalType\":\"structOffRamp.DynamicConfig\",\"name\":\"dynamicConfig\",\"type\":\"tuple\"}],\"name\":\"setDynamicConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"ocrPluginType\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"F\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSignatureVerificationEnabled\",\"type\":\"bool\"},{\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"}],\"internalType\":\"structMultiOCR3Base.OCRConfigArgs[]\",\"name\":\"ocrConfigArgs\",\"type\":\"tuple[]\"}],\"name\":\"setOCR3Configs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x6101206040523480156200001257600080fd5b506040516200689b3803806200689b833981016040819052620000359162000806565b33806000816200008c5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000bf57620000bf81620001fa565b5050466080525060208301516001600160a01b03161580620000ec575060408301516001600160a01b0316155b8062000103575060608301516001600160a01b0316155b1562000122576040516342bcdf7f60e11b815260040160405180910390fd5b82516001600160401b03166000036200014e5760405163c656089560e01b815260040160405180910390fd5b82516001600160401b0390811660a052602080850180516001600160a01b0390811660c05260408088018051831660e0526060808a01805185166101005283518b519098168852945184169587019590955251821690850152905116908201527f683eb52ee924eb817377cfa8f41f238f4bb7a877da5267869dfffbad85f564d89060800160405180910390a1620001e682620002a5565b620001f1816200036d565b50505062000b8d565b336001600160a01b03821603620002545760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000083565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80516001600160a01b0316620002ce576040516342bcdf7f60e11b815260040160405180910390fd5b805160048054602080850180516001600160a01b039586166001600160c01b03199094168417600160a01b63ffffffff928316021790945560408087018051600580546001600160a01b031916918916919091179055815194855291519094169183019190915251909216908201527fa1c15688cb2c24508e158f6942b9276c6f3028a85e1af8cf3fff0c3ff3d5fc8d9060600160405180910390a150565b60005b8151811015620005ba57600082828151811062000391576200039162000943565b60200260200101519050600081602001519050806001600160401b0316600003620003cf5760405163c656089560e01b815260040160405180910390fd5b81516001600160a01b0316620003f8576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160401b03811660009081526006602052604090206060830151600182018054620004269062000959565b905060000362000489578154600160a81b600160e81b031916600160a81b1782556040516001600160401b03841681527ff4c1390c70e5c0f491ae1ccbc06f9117cbbadf2767b247b3bc203280f24c0fb99060200160405180910390a1620004c8565b8154600160a81b90046001600160401b0316600114620004c857604051632105803760e11b81526001600160401b038416600482015260240162000083565b80511580620004fe5750604080516000602082015201604051602081830303815290604052805190602001208180519060200120145b156200051d576040516342bcdf7f60e11b815260040160405180910390fd5b600182016200052d8282620009ea565b50604080850151835486516001600160a01b03166001600160a01b0319921515600160a01b02929092166001600160a81b031990911617178355516001600160401b038416907f49f51971edd25182e97182d6ea372a0488ce2ab639f6a3a7ab4df0d2636fe56b90620005a290859062000ab6565b60405180910390a25050505080600101905062000370565b5050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620005f957620005f9620005be565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200062a576200062a620005be565b604052919050565b80516001600160401b03811681146200064a57600080fd5b919050565b6001600160a01b03811681146200066557600080fd5b50565b6000601f83601f8401126200067c57600080fd5b825160206001600160401b03808311156200069b576200069b620005be565b8260051b620006ac838201620005ff565b9384528681018301938381019089861115620006c757600080fd5b84890192505b85831015620007f957825184811115620006e75760008081fd5b89016080601f19828d038101821315620007015760008081fd5b6200070b620005d4565b888401516200071a816200064f565b815260406200072b85820162000632565b8a8301526060808601518015158114620007455760008081fd5b838301529385015193898511156200075d5760008081fd5b84860195508f603f8701126200077557600094508485fd5b8a8601519450898511156200078e576200078e620005be565b6200079f8b858f88011601620005ff565b93508484528f82868801011115620007b75760008081fd5b60005b85811015620007d7578681018301518582018d01528b01620007ba565b5060009484018b019490945250918201528352509184019190840190620006cd565b9998505050505050505050565b60008060008385036101008112156200081e57600080fd5b60808112156200082d57600080fd5b62000837620005d4565b620008428662000632565b8152602086015162000854816200064f565b6020820152604086015162000869816200064f565b604082015260608601516200087e816200064f565b606082810191909152909450607f19820112156200089b57600080fd5b50604051606081016001600160401b038082118383101715620008c257620008c2620005be565b8160405260808701519150620008d8826200064f565b90825260a08601519063ffffffff82168214620008f457600080fd5b81602084015260c087015191506200090c826200064f565b6040830182905260e0870151929450808311156200092957600080fd5b5050620009398682870162000668565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806200096e57607f821691505b6020821081036200098f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620009e5576000816000526020600020601f850160051c81016020861015620009c05750805b601f850160051c820191505b81811015620009e157828155600101620009cc565b5050505b505050565b81516001600160401b0381111562000a065762000a06620005be565b62000a1e8162000a17845462000959565b8462000995565b602080601f83116001811462000a56576000841562000a3d5750858301515b600019600386901b1c1916600185901b178555620009e1565b600085815260208120601f198616915b8281101562000a875788860151825594840194600190910190840162000a66565b508582101562000aa65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602080825282546001600160a01b0381168383015260a081901c60ff161515604084015260a81c6001600160401b0316606083015260808083015260018084018054600093929190849062000b0b8162000959565b8060a089015260c0600183166000811462000b2f576001811462000b4c5762000b7e565b60ff19841660c08b015260c083151560051b8b0101945062000b7e565b85600052602060002060005b8481101562000b755781548c820185015290880190890162000b58565b8b0160c0019550505b50929998505050505050505050565b60805160a05160c05160e05161010051615c9862000c036000396000818161022c01526129260152600081816101fd0152612bf80152600081816101ce01528181610552015281816106ff015261236a01526000818161019f01526125a9015260008181611d920152611dc50152615c986000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806379ba5097116100cd578063d434969111610081578063e9d68a8e11610066578063e9d68a8e146104bc578063f2fde38b146104dc578063f716f99f146104ef57600080fd5b8063d434969114610496578063e62653f5146104a957600080fd5b80638da5cb5b116100b25780638da5cb5b14610417578063c673e58414610432578063ccd37ba31461045257600080fd5b806379ba50971461040157806385572ffb1461040957600080fd5b8063311cd513116101245780635e36480c116101095780635e36480c1461033c5780636f9e320f1461035c5780637437ff9f1461036f57600080fd5b8063311cd5131461030e5780633f4b04aa1461032157600080fd5b806304666f9c1461015657806306285c691461016b578063181f5a77146102b25780632d04ab76146102fb575b600080fd5b610169610164366004613bbf565b610502565b005b61025c60408051608081018252600080825260208201819052918101829052606081019190915260405180608001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160401b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815250905090565b6040516102a9919081516001600160401b031681526020808301516001600160a01b0390811691830191909152604080840151821690830152606092830151169181019190915260800190565b60405180910390f35b6102ee6040518060400160405280601181526020017f4f666652616d7020312e362e302d64657600000000000000000000000000000081525081565b6040516102a99190613d2d565b610169610309366004613ddd565b610516565b61016961031c366004613e8f565b610a12565b6009546040516001600160401b0390911681526020016102a9565b61034f61034a366004613ee2565b610a7b565b6040516102a99190613f3f565b61016961036a366004613f6a565b610ad0565b6103cb604080516060810182526000808252602082018190529181019190915250604080516060810182526004546001600160a01b038082168352600160a01b90910463ffffffff166020830152600554169181019190915290565b6040805182516001600160a01b03908116825260208085015163ffffffff169083015292820151909216908201526060016102a9565b610169610ae1565b610169610151366004613fbe565b6000546040516001600160a01b0390911681526020016102a9565b610445610440366004614009565b610b92565b6040516102a99190614069565b6104886104603660046140de565b6001600160401b03919091166000908152600860209081526040808320938352929052205490565b6040519081526020016102a9565b6101696104a436600461437a565b610cf0565b6101696104b7366004614702565b610fd0565b6104cf6104ca366004614949565b611277565b6040516102a99190614964565b6101696104ea3660046149b1565b611383565b6101696104fd366004614a36565b611394565b61050a6113d6565b61051381611432565b50565b600061052487890189614d8b565b602081015151909150156105b6576020810151604080830151905162ccd5af60e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263ccd5af009261058592600401614fb3565b60006040518083038186803b15801561059d57600080fd5b505afa1580156105b1573d6000803e3d6000fd5b505050505b805151511515806105cc57508051602001515115155b156106985760095460208a0135906001600160401b0380831691161015610670576009805467ffffffffffffffff19166001600160401b038316179055600480548351604051633937306f60e01b81526001600160a01b0390921692633937306f926106399291016150e7565b600060405180830381600087803b15801561065357600080fd5b505af1158015610667573d6000803e3d6000fd5b50505050610696565b81602001515160000361069657604051632261116760e01b815260040160405180910390fd5b505b60005b816020015151811015610953576000826020015182815181106106c0576106c0615015565b60209081029190910101518051604051632cbc26bb60e01b815267ffffffffffffffff60801b608083901b166004820152919250906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632cbc26bb90602401602060405180830381865afa158015610746573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076a91906150fa565b1561079857604051637edeb53960e11b81526001600160401b03821660048201526024015b60405180910390fd5b60006107a382611685565b9050806001016040516107b69190615151565b6040518091039020836020015180519060200120146107f35782602001518160010160405163b80d8fa960e01b815260040161078f929190615244565b60408301518154600160a81b90046001600160401b039081169116141580610834575082606001516001600160401b031683604001516001600160401b0316115b1561087957825160408085015160608601519151636af0786b60e11b81526001600160401b03938416600482015290831660248201529116604482015260640161078f565b60808301518061089c5760405163504570e360e01b815260040160405180910390fd5b83516001600160401b03166000908152600860209081526040808320848452909152902054156108f45783516040516332cf0cbf60e01b81526001600160401b0390911660048201526024810182905260440161078f565b606084015161090490600161527f565b825467ffffffffffffffff60a81b1916600160a81b6001600160401b0392831602179092559251166000908152600860209081526040808320948352939052919091204290555060010161069b565b50602081015181516040517f35c02761bcd3ef995c6a601a1981f4ed3934dcbe5041e24e286c89f5531d17e49261098b9290916152a6565b60405180910390a1610a0760008a8a8a8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c9182918501908490808284376000920191909152508b92506116d1915050565b505050505050505050565b610a52610a21828401846152cb565b6040805160008082526020820190925290610a4c565b6060815260200190600190039081610a375790505b506119ca565b604080516000808252602082019092529050610a756001858585858660006116d1565b50505050565b6000610a89600160046152ff565b6002610a96608085615328565b6001600160401b0316610aa9919061534e565b610ab38585611a8c565b901c166003811115610ac757610ac7613f15565b90505b92915050565b610ad86113d6565b61051381611ad1565b6001546001600160a01b03163314610b3b5760405162461bcd60e51b815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e657200000000000000000000604482015260640161078f565b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610bd56040805160e081019091526000606082018181526080830182905260a0830182905260c08301919091528190815260200160608152602001606081525090565b60ff808316600090815260026020818152604092839020835160e081018552815460608201908152600183015480881660808401526101008104881660a0840152620100009004909616151560c082015294855291820180548451818402810184019095528085529293858301939092830182828015610c7e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610c60575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015610ce057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610cc2575b5050505050815250509050919050565b333014610d10576040516306e34e6560e31b815260040160405180910390fd5b6040805160008082526020820190925281610d4d565b6040805180820190915260008082526020820152815260200190600190039081610d265790505b5060a08701515190915015610d8357610d808660a001518760200151886060015189600001516020015189898989611bb0565b90505b6040805160a081018252875151815287516020908101516001600160401b031681830152808901518351600094840192610dbe929101613d2d565b60408051601f19818403018152918152908252898101516020830152018390526005549091506001600160a01b03168015610e99576040516308d450a160e01b81526001600160a01b038216906308d450a190610e1f908590600401615406565b600060405180830381600087803b158015610e3957600080fd5b505af1925050508015610e4a575060015b610e99573d808015610e78576040519150601f19603f3d011682016040523d82523d6000602084013e610e7d565b606091505b50806040516309c2532560e01b815260040161078f9190613d2d565b604088015151158015610eae57506080880151155b80610ec5575060608801516001600160a01b03163b155b80610eec57506060880151610eea906001600160a01b03166385572ffb60e01b611d73565b155b15610ef957505050610fc9565b87516020908101516001600160401b03166000908152600690915260408082205460808b015160608c01519251633cf9798360e01b815284936001600160a01b0390931692633cf9798392610f579289926113889291600401615419565b6000604051808303816000875af1158015610f76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9e9190810190615455565b509150915081610fc357806040516302a35ba360e21b815260040161078f9190613d2d565b50505050505b5050505050565b610fd8611d8f565b815181518114610ffb576040516320f8fd5960e21b815260040160405180910390fd5b60005b8181101561126757600084828151811061101a5761101a615015565b6020026020010151905060008160200151519050600085848151811061104257611042615015565b602002602001015190508051821461106d576040516320f8fd5960e21b815260040160405180910390fd5b60005b8281101561125857600082828151811061108c5761108c615015565b60200260200101516000015190506000856020015183815181106110b2576110b2615015565b6020026020010151905081600014611106578060800151821015611106578551815151604051633a98d46360e11b81526001600160401b03909216600483015260248201526044810183905260640161078f565b83838151811061111857611118615015565b602002602001015160200151518160a00151511461116557805180516060909101516040516370a193fd60e01b815260048101929092526001600160401b0316602482015260440161078f565b60005b8160a001515181101561124a57600085858151811061118957611189615015565b60200260200101516020015182815181106111a6576111a6615015565b602002602001015163ffffffff169050806000146112415760008360a0015183815181106111d6576111d6615015565b6020026020010151608001518060200190518101906111f591906154ea565b90508063ffffffff1682101561123f578351516040516348e617b360e01b815260048101919091526024810184905263ffffffff821660448201526064810183905260840161078f565b505b50600101611168565b505050806001019050611070565b50505050806001019050610ffe565b5061127283836119ca565b505050565b60408051608080820183526000808352602080840182905283850182905260608085018190526001600160401b03878116845260068352928690208651948501875280546001600160a01b0381168652600160a01b810460ff16151593860193909352600160a81b90920490921694830194909452600184018054939492939184019161130390615117565b80601f016020809104026020016040519081016040528092919081815260200182805461132f90615117565b8015610ce05780601f1061135157610100808354040283529160200191610ce0565b820191906000526020600020905b81548152906001019060200180831161135f57505050919092525091949350505050565b61138b6113d6565b61051381611df7565b61139c6113d6565b60005b81518110156113d2576113ca8282815181106113bd576113bd615015565b6020026020010151611ea0565b60010161139f565b5050565b6000546001600160a01b031633146114305760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015260640161078f565b565b60005b81518110156113d257600082828151811061145257611452615015565b60200260200101519050600081602001519050806001600160401b031660000361148f5760405163c656089560e01b815260040160405180910390fd5b81516001600160a01b03166114b7576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160401b038116600090815260066020526040902060608301516001820180546114e390615117565b905060000361154557815467ffffffffffffffff60a81b1916600160a81b1782556040516001600160401b03841681527ff4c1390c70e5c0f491ae1ccbc06f9117cbbadf2767b247b3bc203280f24c0fb99060200160405180910390a1611582565b8154600160a81b90046001600160401b031660011461158257604051632105803760e11b81526001600160401b038416600482015260240161078f565b805115806115b75750604080516000602082015201604051602081830303815290604052805190602001208180519060200120145b156115d5576040516342bcdf7f60e11b815260040160405180910390fd5b600182016115e38282615557565b50604080850151835486516001600160a01b03166001600160a01b0319921515600160a01b02929092167fffffffffffffffffffffff00000000000000000000000000000000000000000090911617178355516001600160401b038416907f49f51971edd25182e97182d6ea372a0488ce2ab639f6a3a7ab4df0d2636fe56b9061166e908590615616565b60405180910390a250505050806001019050611435565b6001600160401b03811660009081526006602052604081208054600160a01b900460ff16610aca5760405163ed053c5960e01b81526001600160401b038416600482015260240161078f565b60ff878116600090815260026020908152604080832081516080810183528154815260019091015480861693820193909352610100830485169181019190915262010000909104909216151560608301528735906117308760a4615664565b905082606001511561177857845161174990602061534e565b865161175690602061534e565b6117619060a0615664565b61176b9190615664565b6117759082615664565b90505b3681146117a157604051638e1192e160e01b81526004810182905236602482015260440161078f565b50815181146117d05781516040516324f7d61360e21b815260048101919091526024810182905260440161078f565b6117d8611d8f565b60ff808a166000908152600360209081526040808320338452825280832081518083019092528054808616835293949193909284019161010090910416600281111561182657611826613f15565b600281111561183757611837613f15565b905250905060028160200151600281111561185457611854613f15565b1480156118a85750600260008b60ff1660ff168152602001908152602001600020600301816000015160ff168154811061189057611890615015565b6000918252602090912001546001600160a01b031633145b6118c557604051631b41e11d60e31b815260040160405180910390fd5b508160600151156119755760208201516118e0906001615677565b60ff16855114611903576040516371253a2560e01b815260040160405180910390fd5b83518551146119255760405163a75d88af60e01b815260040160405180910390fd5b60008787604051611937929190615690565b60405190819003812061194e918b906020016156a0565b6040516020818303038152906040528051906020012090506119738a8288888861217f565b505b6040805182815260208a8101356001600160401b03169082015260ff8b16917f198d6990ef96613a9026203077e422916918b03ff47f0be6bee7b02d8e139ef0910160405180910390a2505050505050505050565b81516000036119eb5760405162bf199760e01b815260040160405180910390fd5b80516040805160008082526020820190925291159181611a2e565b604080518082019091526000815260606020820152815260200190600190039081611a065790505b50905060005b8451811015610fc957611a84858281518110611a5257611a52615015565b602002602001015184611a7e57858381518110611a7157611a71615015565b602002602001015161233c565b8361233c565b600101611a34565b6001600160401b038216600090815260076020526040812081611ab06080856156b4565b6001600160401b031681526020810191909152604001600020549392505050565b80516001600160a01b0316611af9576040516342bcdf7f60e11b815260040160405180910390fd5b805160048054602080850180516001600160a01b039586167fffffffffffffffff0000000000000000000000000000000000000000000000009094168417600160a01b63ffffffff928316021790945560408087018051600580546001600160a01b031916918916919091179055815194855291519094169183019190915251909216908201527fa1c15688cb2c24508e158f6942b9276c6f3028a85e1af8cf3fff0c3ff3d5fc8d9060600160405180910390a150565b606088516001600160401b03811115611bcb57611bcb6139df565b604051908082528060200260200182016040528015611c1057816020015b6040805180820190915260008082526020820152815260200190600190039081611be95790505b509050811560005b8a51811015611d655781611cc257848482818110611c3857611c38615015565b9050602002016020810190611c4d91906156da565b63ffffffff1615611cc257848482818110611c6a57611c6a615015565b9050602002016020810190611c7f91906156da565b6040805163ffffffff9092166020830152016040516020818303038152906040528b8281518110611cb257611cb2615015565b6020026020010151608001819052505b611d408b8281518110611cd757611cd7615015565b60200260200101518b8b8b8b8b87818110611cf457611cf4615015565b9050602002810190611d0691906156f7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612bb092505050565b838281518110611d5257611d52615015565b6020908102919091010152600101611c18565b505098975050505050505050565b6000611d7e83612eae565b8015610ac75750610ac78383612ef9565b467f00000000000000000000000000000000000000000000000000000000000000001461143057604051630f01ce8560e01b81527f0000000000000000000000000000000000000000000000000000000000000000600482015246602482015260440161078f565b336001600160a01b03821603611e4f5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640161078f565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b806040015160ff16600003611ecb576000604051631b3fab5160e11b815260040161078f919061573d565b60208082015160ff80821660009081526002909352604083206001810154929390928392169003611f1c576060840151600182018054911515620100000262ff000019909216919091179055611f58565b6060840151600182015460ff6201000090910416151590151514611f58576040516321fd80df60e21b815260ff8416600482015260240161078f565b60a084015180516101001015611f84576001604051631b3fab5160e11b815260040161078f919061573d565b611fea8484600301805480602002602001604051908101604052809291908181526020018280548015611fe057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611fc2575b5050505050612f9b565b8460600151156120f4576120588484600201805480602002602001604051908101604052809291908181526020018280548015611fe0576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611fc2575050505050612f9b565b608085015180516101001015612084576002604051631b3fab5160e11b815260040161078f919061573d565b6040860151612094906003615757565b60ff168151116120ba576003604051631b3fab5160e11b815260040161078f919061573d565b805160018401805461ff00191661010060ff8416021790556120e59060028601906020840190613965565b506120f285826001613004565b505b61210084826002613004565b80516121159060038501906020840190613965565b5060408581015160018401805460ff191660ff8316179055865180855560a088015192517fab8b1b57514019638d7b5ce9c638fe71366fe8e2be1c40a7a80f1733d0e9f5479361216e9389939260028a01929190615773565b60405180910390a1610fc98461315f565b8251600090815b818110156123325760006001888684602081106121a5576121a5615015565b6121b291901a601b615677565b8985815181106121c4576121c4615015565b60200260200101518986815181106121de576121de615015565b60200260200101516040516000815260200160405260405161221c949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa15801561223e573d6000803e3d6000fd5b505060408051601f1981015160ff808e166000908152600360209081528582206001600160a01b0385168352815285822085870190965285548084168652939750909550929392840191610100900416600281111561229f5761229f613f15565b60028111156122b0576122b0613f15565b90525090506001816020015160028111156122cd576122cd613f15565b146122eb57604051636518c33d60e11b815260040160405180910390fd5b8051600160ff9091161b85161561231557604051633d9ef1f160e21b815260040160405180910390fd5b806000015160ff166001901b851794505050806001019050612186565b5050505050505050565b81518151604051632cbc26bb60e01b8152608083901b67ffffffffffffffff60801b166004820152901515907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632cbc26bb90602401602060405180830381865afa1580156123b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123dd91906150fa565b1561244e57801561240c57604051637edeb53960e11b81526001600160401b038316600482015260240161078f565b6040516001600160401b03831681527faab522ed53d887e56ed53dd37398a01aeef6a58e0fa77c2173beb9512d8949339060200160405180910390a150505050565b600061245983611685565b600101805461246790615117565b80601f016020809104026020016040519081016040528092919081815260200182805461249390615117565b80156124e05780601f106124b5576101008083540402835291602001916124e0565b820191906000526020600020905b8154815290600101906020018083116124c357829003601f168201915b5050506020880151519293505050600081900361250f5760405162bf199760e01b815260040160405180910390fd5b8560400151518114612534576040516357e0e08360e01b815260040160405180910390fd5b6000816001600160401b0381111561254e5761254e6139df565b604051908082528060200260200182016040528015612577578160200160208202803683370190505b50905060005b828110156126985760008860200151828151811061259d5761259d615015565b602002602001015190507f00000000000000000000000000000000000000000000000000000000000000006001600160401b03168160000151604001516001600160401b0316146126145780516040908101519051631c21951160e11b81526001600160401b03909116600482015260240161078f565b866001600160401b03168160000151602001516001600160401b03161461266857805160200151604051636c95f1eb60e01b81526001600160401b03808a166004830152909116602482015260440161078f565b61267281866131b6565b83838151811061268457612684615015565b60209081029190910101525060010161257d565b5060006126af86838a606001518b608001516132d8565b9050806000036126dd57604051633ee8bd3f60e11b81526001600160401b038716600482015260240161078f565b60005b83811015610a075760005a905060008a60200151838151811061270557612705615015565b6020026020010151905060006127238a836000015160600151610a7b565b9050600081600381111561273957612739613f15565b14806127565750600381600381111561275457612754613f15565b145b6127ac57815160600151604080516001600160401b03808e16825290921660208301527f3b575419319662b2a6f5e2467d84521517a3382b908eb3d557bb3fdb0c50e23c910160405180910390a1505050612ba8565b6060891561288b578b85815181106127c6576127c6615015565b6020908102919091018101510151600454909150600090600160a01b900463ffffffff166127f488426152ff565b11905080806128145750600383600381111561281257612812613f15565b145b61283c576040516354e7e43160e11b81526001600160401b038d16600482015260240161078f565b8c868151811061284e5761284e615015565b602002602001015160000151600014612885578c868151811061287357612873615015565b60209081029190910101515160808501525b506128f7565b600082600381111561289f5761289f613f15565b146128f757825160600151604080516001600160401b03808f16825290921660208301527f3ef2a99c550a751d4b0b261268f05a803dfb049ab43616a1ffb388f61fe65120910160405180910390a150505050612ba8565b8251608001516001600160401b0316156129d057600082600381111561291f5761291f613f15565b036129d0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e0e03cae8c85600001516080015186602001516040518463ffffffff1660e01b815260040161298093929190615825565b6020604051808303816000875af115801561299f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c391906150fa565b6129d05750505050612ba8565b60008d6040015186815181106129e8576129e8615015565b6020026020010151905080518460a001515114612a3257835160600151604051631cfe6d8b60e01b81526001600160401b03808f166004830152909116602482015260440161078f565b612a468c8560000151606001516001613315565b600080612a548684866133ba565b91509150612a6b8e87600001516060015184613315565b8c15612ac2576003826003811115612a8557612a85613f15565b03612ac2576000856003811115612a9e57612a9e613f15565b14612ac257855151604051632b11b8d960e01b815261078f91908390600401615851565b6002826003811115612ad657612ad6613f15565b14612b1b576003826003811115612aef57612aef613f15565b14612b1b578d866000015160600151836040516349362d1f60e11b815260040161078f9392919061586a565b8560000151600001518660000151606001516001600160401b03168f6001600160401b03167f05665fe9ad095383d018353f4cbcba77e84db27dd215081bbf7cdf9ae6fbe48b8d8c81518110612b7357612b73615015565b602002602001015186865a612b88908f6152ff565b604051612b98949392919061588f565b60405180910390a4505050505050505b6001016126e0565b60408051808201909152600080825260208201526000612bd3876020015161346e565b60405163bbe4f6db60e01b81526001600160a01b0380831660048301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063bbe4f6db90602401602060405180830381865afa158015612c3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6391906158c6565b90506001600160a01b0381161580612c925750612c906001600160a01b03821663aff2afbf60e01b611d73565b155b15612cbb5760405163ae9b4ce960e01b81526001600160a01b038216600482015260240161078f565b600080612ce688858c60800151806020019051810190612cdb91906154ea565b63ffffffff166134e2565b915091506000806000612d996040518061010001604052808e81526020018c6001600160401b031681526020018d6001600160a01b031681526020018f606001518152602001896001600160a01b031681526020018f6000015181526020018f6040015181526020018b815250604051602401612d6391906158e3565b60408051601f198184030181529190526020810180516001600160e01b0316633907753760e01b179052878661138860846135c5565b92509250925082612dbf578160405163e1cd550960e01b815260040161078f9190613d2d565b8151602014612dee578151604051631e3be00960e21b815260206004820152602481019190915260440161078f565b600082806020019051810190612e0491906159af565b9050866001600160a01b03168c6001600160a01b031614612e80576000612e358d8a612e30868a6152ff565b6134e2565b50905086811080612e4f575081612e4c88836152ff565b14155b15612e7e5760405163a966e21f60e01b815260048101839052602481018890526044810182905260640161078f565b505b604080518082019091526001600160a01b039098168852602088015250949550505050505095945050505050565b6000612ec1826301ffc9a760e01b612ef9565b8015610aca5750612ef2827fffffffff00000000000000000000000000000000000000000000000000000000612ef9565b1592915050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000082166024820152600090819060440160408051601f19818403018152919052602080820180516001600160e01b03166301ffc9a760e01b178152825192935060009283928392909183918a617530fa92503d91506000519050828015612f84575060208210155b8015612f905750600081115b979650505050505050565b60005b81518110156112725760ff831660009081526003602052604081208351909190849084908110612fd057612fd0615015565b6020908102919091018101516001600160a01b03168252810191909152604001600020805461ffff19169055600101612f9e565b60005b8251811015610a7557600083828151811061302457613024615015565b602002602001015190506000600281111561304157613041613f15565b60ff80871660009081526003602090815260408083206001600160a01b0387168452909152902054610100900416600281111561308057613080613f15565b146130a1576004604051631b3fab5160e11b815260040161078f919061573d565b6001600160a01b0381166130c85760405163d6c62c9b60e01b815260040160405180910390fd5b60405180604001604052808360ff1681526020018460028111156130ee576130ee613f15565b905260ff80871660009081526003602090815260408083206001600160a01b0387168452825290912083518154931660ff198416811782559184015190929091839161ffff19161761010083600281111561314b5761314b613f15565b021790555090505050806001019050613007565b60ff81166105135760ff808216600090815260026020526040902060010154620100009004166131a257604051631e8ed32560e21b815260040160405180910390fd5b6009805467ffffffffffffffff1916905550565b8151602080820151604092830151925160009384936131fc937f2425b0b9f9054c76ff151b0a175b18f37a4a4e82013a72e9f15c9caa095ed21f939092918891016159c8565b60408051601f1981840301815290829052805160209182012086518051888401516060808b0151908401516080808d0151950151959761324597949693959294919391016159fa565b604051602081830303815290604052805190602001208560400151805190602001208660a0015160405160200161327c9190615afe565b60408051601f198184030181528282528051602091820120908301969096528101939093526060830191909152608082015260a081019190915260c0015b60405160208183030381529060405280519060200120905092915050565b6000806132e685858561369f565b6001600160401b038716600090815260086020908152604080832093835292905220549150505b949350505050565b60006002613324608085615328565b6001600160401b0316613337919061534e565b905060006133458585611a8c565b905081613354600160046152ff565b901b19168183600381111561336b5761336b613f15565b6001600160401b03871660009081526007602052604081209190921b929092179182916133996080886156b4565b6001600160401b031681526020810191909152604001600020555050505050565b60405163d434969160e01b8152600090606090309063d4349691906133e790889088908890600401615b95565b600060405180830381600087803b15801561340157600080fd5b505af1925050508015613412575060015b613451573d808015613440576040519150601f19603f3d011682016040523d82523d6000602084013e613445565b606091505b50600392509050613466565b50506040805160208101909152600081526002905b935093915050565b60008151602014613494578160405163046b337b60e51b815260040161078f9190613d2d565b6000828060200190518101906134aa91906159af565b90506001600160a01b038111806134c2575061040081105b15610aca578260405163046b337b60e51b815260040161078f9190613d2d565b60008060008060006135438860405160240161350d91906001600160a01b0391909116815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166370a0823160e01b179052888861138860846135c5565b92509250925082613569578160405163e1cd550960e01b815260040161078f9190613d2d565b6020825114613598578151604051631e3be00960e21b815260206004820152602481019190915260440161078f565b818060200190518101906135ac91906159af565b6135b682886152ff565b94509450505050935093915050565b6000606060008361ffff166001600160401b038111156135e7576135e76139df565b6040519080825280601f01601f191660200182016040528015613611576020820181803683370190505b509150863b61362b5763030ed58f60e21b60005260046000fd5b5a8581101561364557632be8ca8b60e21b60005260046000fd5b8590036040810481038710613665576337c3be2960e01b60005260046000fd5b505a6000808a5160208c0160008c8cf193505a900390503d848111156136885750835b808352806000602085013e50955095509592505050565b82518251600091908183036136c757604051630469ac9960e21b815260040160405180910390fd5b61010182118015906136db57506101018111155b6136f8576040516309bde33960e01b815260040160405180910390fd5b60001982820101610100811115613722576040516309bde33960e01b815260040160405180910390fd5b8060000361374f578660008151811061373d5761373d615015565b6020026020010151935050505061391d565b6000816001600160401b03811115613769576137696139df565b604051908082528060200260200182016040528015613792578160200160208202803683370190505b50905060008080805b858110156138bc5760006001821b8b8116036137f657888510156137df578c5160018601958e9181106137d0576137d0615015565b60200260200101519050613818565b85516001850194879181106137d0576137d0615015565b8b5160018401938d91811061380d5761380d615015565b602002602001015190505b600089861015613848578d5160018701968f91811061383957613839615015565b6020026020010151905061386a565b865160018601958891811061385f5761385f615015565b602002602001015190505b8285111561388b576040516309bde33960e01b815260040160405180910390fd5b6138958282613924565b8784815181106138a7576138a7615015565b6020908102919091010152505060010161379b565b5060018503821480156138ce57508683145b80156138d957508581145b6138f6576040516309bde33960e01b815260040160405180910390fd5b83600186038151811061390b5761390b615015565b60200260200101519750505050505050505b9392505050565b600081831061393c576139378284613942565b610ac7565b610ac783835b6040805160016020820152908101839052606081018290526000906080016132ba565b8280548282559060005260206000209081019282156139ba579160200282015b828111156139ba57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190613985565b506139c69291506139ca565b5090565b5b808211156139c657600081556001016139cb565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715613a1757613a176139df565b60405290565b604051606081016001600160401b0381118282101715613a1757613a176139df565b60405160a081016001600160401b0381118282101715613a1757613a176139df565b60405160c081016001600160401b0381118282101715613a1757613a176139df565b604080519081016001600160401b0381118282101715613a1757613a176139df565b604051601f8201601f191681016001600160401b0381118282101715613acd57613acd6139df565b604052919050565b60006001600160401b03821115613aee57613aee6139df565b5060051b60200190565b6001600160a01b038116811461051357600080fd5b80356001600160401b0381168114613b2457600080fd5b919050565b801515811461051357600080fd5b8035613b2481613b29565b60006001600160401b03821115613b5b57613b5b6139df565b50601f01601f191660200190565b600082601f830112613b7a57600080fd5b8135613b8d613b8882613b42565b613aa5565b818152846020838601011115613ba257600080fd5b816020850160208301376000918101602001919091529392505050565b60006020808385031215613bd257600080fd5b82356001600160401b0380821115613be957600080fd5b818501915085601f830112613bfd57600080fd5b8135613c0b613b8882613ad5565b81815260059190911b83018401908481019088831115613c2a57600080fd5b8585015b83811015613cd057803585811115613c465760008081fd5b86016080818c03601f1901811315613c5e5760008081fd5b613c666139f5565b89830135613c7381613af8565b81526040613c82848201613b0d565b8b830152606080850135613c9581613b29565b83830152928401359289841115613cae57600091508182fd5b613cbc8f8d86880101613b69565b908301525085525050918601918601613c2e565b5098975050505050505050565b60005b83811015613cf8578181015183820152602001613ce0565b50506000910152565b60008151808452613d19816020860160208601613cdd565b601f01601f19169290920160200192915050565b602081526000610ac76020830184613d01565b8060608101831015610aca57600080fd5b60008083601f840112613d6357600080fd5b5081356001600160401b03811115613d7a57600080fd5b602083019150836020828501011115613d9257600080fd5b9250929050565b60008083601f840112613dab57600080fd5b5081356001600160401b03811115613dc257600080fd5b6020830191508360208260051b8501011115613d9257600080fd5b60008060008060008060008060e0898b031215613df957600080fd5b613e038a8a613d40565b975060608901356001600160401b0380821115613e1f57600080fd5b613e2b8c838d01613d51565b909950975060808b0135915080821115613e4457600080fd5b613e508c838d01613d99565b909750955060a08b0135915080821115613e6957600080fd5b50613e768b828c01613d99565b999c989b50969995989497949560c00135949350505050565b600080600060808486031215613ea457600080fd5b613eae8585613d40565b925060608401356001600160401b03811115613ec957600080fd5b613ed586828701613d51565b9497909650939450505050565b60008060408385031215613ef557600080fd5b613efe83613b0d565b9150613f0c60208401613b0d565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b60048110613f3b57613f3b613f15565b9052565b60208101610aca8284613f2b565b8035613b2481613af8565b63ffffffff8116811461051357600080fd5b600060608284031215613f7c57600080fd5b613f84613a1d565b8235613f8f81613af8565b81526020830135613f9f81613f58565b60208201526040830135613fb281613af8565b60408201529392505050565b600060208284031215613fd057600080fd5b81356001600160401b03811115613fe657600080fd5b820160a0818503121561391d57600080fd5b803560ff81168114613b2457600080fd5b60006020828403121561401b57600080fd5b610ac782613ff8565b60008151808452602080850194506020840160005b8381101561405e5781516001600160a01b031687529582019590820190600101614039565b509495945050505050565b60208152600082518051602084015260ff602082015116604084015260ff604082015116606084015260608101511515608084015250602083015160c060a08401526140b860e0840182614024565b90506040840151601f198483030160c08501526140d58282614024565b95945050505050565b600080604083850312156140f157600080fd5b6140fa83613b0d565b946020939093013593505050565b600060a0828403121561411a57600080fd5b614122613a3f565b90508135815261413460208301613b0d565b602082015261414560408301613b0d565b604082015261415660608301613b0d565b606082015261416760808301613b0d565b608082015292915050565b600082601f83011261418357600080fd5b81356020614193613b8883613ad5565b82815260059290921b840181019181810190868411156141b257600080fd5b8286015b848110156142ac5780356001600160401b03808211156141d65760008081fd5b9088019060a0828b03601f19018113156141f05760008081fd5b6141f8613a3f565b878401358381111561420a5760008081fd5b6142188d8a83880101613b69565b8252506040808501358481111561422f5760008081fd5b61423d8e8b83890101613b69565b8a84015250606080860135858111156142565760008081fd5b6142648f8c838a0101613b69565b8385015250608091508186013581840152508285013592508383111561428a5760008081fd5b6142988d8a85880101613b69565b9082015286525050509183019183016141b6565b509695505050505050565b600061014082840312156142ca57600080fd5b6142d2613a61565b90506142de8383614108565b815260a08201356001600160401b03808211156142fa57600080fd5b61430685838601613b69565b602084015260c084013591508082111561431f57600080fd5b61432b85838601613b69565b604084015261433c60e08501613f4d565b6060840152610100840135608084015261012084013591508082111561436157600080fd5b5061436e84828501614172565b60a08301525092915050565b60008060008060006060868803121561439257600080fd5b85356001600160401b03808211156143a957600080fd5b6143b589838a016142b7565b965060208801359150808211156143cb57600080fd5b6143d789838a01613d99565b909650945060408801359150808211156143f057600080fd5b506143fd88828901613d99565b969995985093965092949392505050565b600082601f83011261441f57600080fd5b8135602061442f613b8883613ad5565b82815260059290921b8401810191818101908684111561444e57600080fd5b8286015b848110156142ac5780356001600160401b038111156144715760008081fd5b61447f8986838b01016142b7565b845250918301918301614452565b600082601f83011261449e57600080fd5b813560206144ae613b8883613ad5565b82815260059290921b840181019181810190868411156144cd57600080fd5b8286015b848110156142ac5780356001600160401b03808211156144f057600080fd5b818901915089603f83011261450457600080fd5b85820135614514613b8882613ad5565b81815260059190911b830160400190878101908c83111561453457600080fd5b604085015b8381101561456d5780358581111561455057600080fd5b61455f8f6040838a0101613b69565b845250918901918901614539565b508752505050928401925083016144d1565b600082601f83011261459057600080fd5b813560206145a0613b8883613ad5565b8083825260208201915060208460051b8701019350868411156145c257600080fd5b602086015b848110156142ac57803583529183019183016145c7565b600082601f8301126145ef57600080fd5b813560206145ff613b8883613ad5565b82815260059290921b8401810191818101908684111561461e57600080fd5b8286015b848110156142ac5780356001600160401b03808211156146425760008081fd5b9088019060a0828b03601f190181131561465c5760008081fd5b614664613a3f565b61466f888501613b0d565b8152604080850135848111156146855760008081fd5b6146938e8b8389010161440e565b8a84015250606080860135858111156146ac5760008081fd5b6146ba8f8c838a010161448d565b83850152506080915081860135858111156146d55760008081fd5b6146e38f8c838a010161457f565b9184019190915250919093013590830152508352918301918301614622565b6000806040838503121561471557600080fd5b6001600160401b038335111561472a57600080fd5b61473784843585016145de565b91506001600160401b036020840135111561475157600080fd5b6020830135830184601f82011261476757600080fd5b614774613b888235613ad5565b81358082526020808301929160051b84010187101561479257600080fd5b602083015b6020843560051b85010181101561493b576001600160401b03813511156147bd57600080fd5b87603f8235860101126147cf57600080fd5b6147e2613b886020833587010135613ad5565b81358501602081810135808452908301929160059190911b016040018a101561480a57600080fd5b604083358701015b83358701602081013560051b0160400181101561492b576001600160401b038135111561483e57600080fd5b833587018135016040818d03603f1901121561485957600080fd5b614861613a83565b604082013581526001600160401b036060830135111561488057600080fd5b8c605f60608401358401011261489557600080fd5b60406060830135830101356148ac613b8882613ad5565b808282526020820191508f60608460051b60608801358801010111156148d157600080fd5b6060808601358601015b60608460051b60608801358801010181101561490b576148fb8135613f58565b80358352602092830192016148db565b508060208501525050508085525050602083019250602081019050614812565b5084525060209283019201614797565b508093505050509250929050565b60006020828403121561495b57600080fd5b610ac782613b0d565b602081526001600160a01b0382511660208201526020820151151560408201526001600160401b0360408301511660608201526000606083015160808084015261330d60a0840182613d01565b6000602082840312156149c357600080fd5b813561391d81613af8565b600082601f8301126149df57600080fd5b813560206149ef613b8883613ad5565b8083825260208201915060208460051b870101935086841115614a1157600080fd5b602086015b848110156142ac578035614a2981613af8565b8352918301918301614a16565b60006020808385031215614a4957600080fd5b82356001600160401b0380821115614a6057600080fd5b818501915085601f830112614a7457600080fd5b8135614a82613b8882613ad5565b81815260059190911b83018401908481019088831115614aa157600080fd5b8585015b83811015613cd057803585811115614abc57600080fd5b860160c0818c03601f19011215614ad35760008081fd5b614adb613a61565b8882013581526040614aee818401613ff8565b8a8301526060614aff818501613ff8565b8284015260809150614b12828501613b37565b9083015260a08381013589811115614b2a5760008081fd5b614b388f8d838801016149ce565b838501525060c0840135915088821115614b525760008081fd5b614b608e8c848701016149ce565b9083015250845250918601918601614aa5565b80356001600160e01b0381168114613b2457600080fd5b600082601f830112614b9b57600080fd5b81356020614bab613b8883613ad5565b82815260069290921b84018101918181019086841115614bca57600080fd5b8286015b848110156142ac5760408189031215614be75760008081fd5b614bef613a83565b614bf882613b0d565b8152614c05858301614b73565b81860152835291830191604001614bce565b600082601f830112614c2857600080fd5b81356020614c38613b8883613ad5565b82815260059290921b84018101918181019086841115614c5757600080fd5b8286015b848110156142ac5780356001600160401b0380821115614c7b5760008081fd5b9088019060a0828b03601f1901811315614c955760008081fd5b614c9d613a3f565b614ca8888501613b0d565b815260408085013584811115614cbe5760008081fd5b614ccc8e8b83890101613b69565b8a8401525060609350614ce0848601613b0d565b908201526080614cf1858201613b0d565b93820193909352920135908201528352918301918301614c5b565b600082601f830112614d1d57600080fd5b81356020614d2d613b8883613ad5565b82815260069290921b84018101918181019086841115614d4c57600080fd5b8286015b848110156142ac5760408189031215614d695760008081fd5b614d71613a83565b813581528482013585820152835291830191604001614d50565b60006020808385031215614d9e57600080fd5b82356001600160401b0380821115614db557600080fd5b9084019060608287031215614dc957600080fd5b614dd1613a1d565b823582811115614de057600080fd5b83016040818903811315614df357600080fd5b614dfb613a83565b823585811115614e0a57600080fd5b8301601f81018b13614e1b57600080fd5b8035614e29613b8882613ad5565b81815260069190911b8201890190898101908d831115614e4857600080fd5b928a01925b82841015614e985785848f031215614e655760008081fd5b614e6d613a83565b8435614e7881613af8565b8152614e85858d01614b73565b818d0152825292850192908a0190614e4d565b845250505082870135915084821115614eb057600080fd5b614ebc8a838501614b8a565b81880152835250508284013582811115614ed557600080fd5b614ee188828601614c17565b85830152506040830135935081841115614efa57600080fd5b614f0687858501614d0c565b60408201529695505050505050565b600082825180855260208086019550808260051b84010181860160005b84811015614fa657601f19868403018952815160a06001600160401b03808351168652868301518288880152614f6a83880182613d01565b60408581015184169089015260608086015190931692880192909252506080928301519290950191909152509783019790830190600101614f32565b5090979650505050505050565b60006040808352614fc76040840186614f15565b83810360208581019190915285518083528682019282019060005b8181101561500757845180518452840151848401529383019391850191600101614fe2565b509098975050505050505050565b634e487b7160e01b600052603260045260246000fd5b805160408084528151848201819052600092602091908201906060870190855b8181101561508257835180516001600160a01b031684528501516001600160e01b031685840152928401929185019160010161504b565b50508583015187820388850152805180835290840192506000918401905b808310156150db57835180516001600160401b031683528501516001600160e01b0316858301529284019260019290920191908501906150a0565b50979650505050505050565b602081526000610ac7602083018461502b565b60006020828403121561510c57600080fd5b815161391d81613b29565b600181811c9082168061512b57607f821691505b60208210810361514b57634e487b7160e01b600052602260045260246000fd5b50919050565b600080835461515f81615117565b60018281168015615177576001811461518c576151bb565b60ff19841687528215158302870194506151bb565b8760005260208060002060005b858110156151b25781548a820152908401908201615199565b50505082870194505b50929695505050505050565b600081546151d481615117565b8085526020600183811680156151f1576001811461520b57615239565b60ff1985168884015283151560051b880183019550615239565b866000528260002060005b858110156152315781548a8201860152908301908401615216565b890184019650505b505050505092915050565b6040815260006152576040830185613d01565b82810360208401526140d581856151c7565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561529f5761529f615269565b5092915050565b6040815260006152b96040830185614f15565b82810360208401526140d5818561502b565b6000602082840312156152dd57600080fd5b81356001600160401b038111156152f357600080fd5b61330d848285016145de565b81810381811115610aca57610aca615269565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b038084168061534257615342615312565b92169190910692915050565b8082028115828204841417610aca57610aca615269565b80518252600060206001600160401b0381840151168185015260408084015160a0604087015261539860a0870182613d01565b9050606085015186820360608801526153b18282613d01565b608087810151898303918a01919091528051808352908601935060009250908501905b808310156150db57835180516001600160a01b03168352860151868301529285019260019290920191908401906153d4565b602081526000610ac76020830184615365565b60808152600061542c6080830187615365565b61ffff9590951660208301525060408101929092526001600160a01b0316606090910152919050565b60008060006060848603121561546a57600080fd5b835161547581613b29565b60208501519093506001600160401b0381111561549157600080fd5b8401601f810186136154a257600080fd5b80516154b0613b8882613b42565b8181528760208385010111156154c557600080fd5b6154d6826020830160208601613cdd565b809450505050604084015190509250925092565b6000602082840312156154fc57600080fd5b815161391d81613f58565b601f821115611272576000816000526020600020601f850160051c810160208610156155305750805b601f850160051c820191505b8181101561554f5782815560010161553c565b505050505050565b81516001600160401b03811115615570576155706139df565b6155848161557e8454615117565b84615507565b602080601f8311600181146155b957600084156155a15750858301515b600019600386901b1c1916600185901b17855561554f565b600085815260208120601f198616915b828110156155e8578886015182559484019460019091019084016155c9565b50858210156156065787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600082546001600160a01b038116602084015260ff8160a01c16151560408401526001600160401b038160a81c16606084015250608080830152610ac760a08301600185016151c7565b80820180821115610aca57610aca615269565b60ff8181168382160190811115610aca57610aca615269565b8183823760009101908152919050565b828152606082602083013760800192915050565b60006001600160401b03808416806156ce576156ce615312565b92169190910492915050565b6000602082840312156156ec57600080fd5b813561391d81613f58565b6000808335601e1984360301811261570e57600080fd5b8301803591506001600160401b0382111561572857600080fd5b602001915036819003821315613d9257600080fd5b602081016005831061575157615751613f15565b91905290565b60ff818116838216029081169081811461529f5761529f615269565b600060a0820160ff881683526020878185015260a0604085015281875480845260c0860191508860005282600020935060005b818110156157cb5784546001600160a01b0316835260019485019492840192016157a6565b50508481036060860152865180825290820192508187019060005b8181101561580b5782516001600160a01b0316855293830193918301916001016157e6565b50505060ff851660808501525090505b9695505050505050565b60006001600160401b038086168352808516602084015250606060408301526140d56060830184613d01565b82815260406020820152600061330d6040830184613d01565b6001600160401b038481168252831660208201526060810161330d6040830184613f2b565b84815261589f6020820185613f2b565b6080604082015260006158b56080830185613d01565b905082606083015295945050505050565b6000602082840312156158d857600080fd5b815161391d81613af8565b6020815260008251610100806020850152615902610120850183613d01565b9150602085015161591e60408601826001600160401b03169052565b5060408501516001600160a01b03811660608601525060608501516080850152608085015161595860a08601826001600160a01b03169052565b5060a0850151601f19808685030160c08701526159758483613d01565b935060c08701519150808685030160e08701526159928483613d01565b935060e087015191508086850301838701525061581b8382613d01565b6000602082840312156159c157600080fd5b5051919050565b84815260006001600160401b0380861660208401528085166040840152506080606083015261581b6080830184613d01565b86815260c060208201526000615a1360c0830188613d01565b6001600160a01b03969096166040830152506001600160401b039384166060820152608081019290925290911660a09091015292915050565b600082825180855260208086019550808260051b84010181860160005b84811015614fa657601f19868403018952815160a08151818652615a8f82870182613d01565b9150508582015185820387870152615aa78282613d01565b91505060408083015186830382880152615ac18382613d01565b92505050606080830151818701525060808083015192508582038187015250615aea8183613d01565b9a86019a9450505090830190600101615a69565b602081526000610ac76020830184615a4c565b60008282518085526020808601955060208260051b8401016020860160005b84811015614fa657601f19868403018952615b4c838351613d01565b98840198925090830190600101615b30565b60008151808452602080850194506020840160005b8381101561405e57815163ffffffff1687529582019590820190600101615b73565b60608152600084518051606084015260208101516001600160401b0380821660808601528060408401511660a08601528060608401511660c08601528060808401511660e0860152505050602085015161014080610100850152615bfd6101a0850183613d01565b91506040870151605f198086850301610120870152615c1c8483613d01565b935060608901519150615c39838701836001600160a01b03169052565b608089015161016087015260a0890151925080868503016101808701525050615c628282615a4c565b9150508281036020840152615c778186615b11565b9050828103604084015261581b8185615b5e56fea164736f6c6343000818000a", + Bin: "0x6101206040523480156200001257600080fd5b50604051620068b0380380620068b0833981016040819052620000359162000806565b33806000816200008c5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000bf57620000bf81620001fa565b5050466080525060208301516001600160a01b03161580620000ec575060408301516001600160a01b0316155b8062000103575060608301516001600160a01b0316155b1562000122576040516342bcdf7f60e11b815260040160405180910390fd5b82516001600160401b03166000036200014e5760405163c656089560e01b815260040160405180910390fd5b82516001600160401b0390811660a052602080850180516001600160a01b0390811660c05260408088018051831660e0526060808a01805185166101005283518b519098168852945184169587019590955251821690850152905116908201527f683eb52ee924eb817377cfa8f41f238f4bb7a877da5267869dfffbad85f564d89060800160405180910390a1620001e682620002a5565b620001f1816200036d565b50505062000b8d565b336001600160a01b03821603620002545760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000083565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80516001600160a01b0316620002ce576040516342bcdf7f60e11b815260040160405180910390fd5b805160048054602080850180516001600160a01b039586166001600160c01b03199094168417600160a01b63ffffffff928316021790945560408087018051600580546001600160a01b031916918916919091179055815194855291519094169183019190915251909216908201527fa1c15688cb2c24508e158f6942b9276c6f3028a85e1af8cf3fff0c3ff3d5fc8d9060600160405180910390a150565b60005b8151811015620005ba57600082828151811062000391576200039162000943565b60200260200101519050600081602001519050806001600160401b0316600003620003cf5760405163c656089560e01b815260040160405180910390fd5b81516001600160a01b0316620003f8576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160401b03811660009081526006602052604090206060830151600182018054620004269062000959565b905060000362000489578154600160a81b600160e81b031916600160a81b1782556040516001600160401b03841681527ff4c1390c70e5c0f491ae1ccbc06f9117cbbadf2767b247b3bc203280f24c0fb99060200160405180910390a1620004c8565b8154600160a81b90046001600160401b0316600114620004c857604051632105803760e11b81526001600160401b038416600482015260240162000083565b80511580620004fe5750604080516000602082015201604051602081830303815290604052805190602001208180519060200120145b156200051d576040516342bcdf7f60e11b815260040160405180910390fd5b600182016200052d8282620009ea565b50604080850151835486516001600160a01b03166001600160a01b0319921515600160a01b02929092166001600160a81b031990911617178355516001600160401b038416907f49f51971edd25182e97182d6ea372a0488ce2ab639f6a3a7ab4df0d2636fe56b90620005a290859062000ab6565b60405180910390a25050505080600101905062000370565b5050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620005f957620005f9620005be565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200062a576200062a620005be565b604052919050565b80516001600160401b03811681146200064a57600080fd5b919050565b6001600160a01b03811681146200066557600080fd5b50565b6000601f83601f8401126200067c57600080fd5b825160206001600160401b03808311156200069b576200069b620005be565b8260051b620006ac838201620005ff565b9384528681018301938381019089861115620006c757600080fd5b84890192505b85831015620007f957825184811115620006e75760008081fd5b89016080601f19828d038101821315620007015760008081fd5b6200070b620005d4565b888401516200071a816200064f565b815260406200072b85820162000632565b8a8301526060808601518015158114620007455760008081fd5b838301529385015193898511156200075d5760008081fd5b84860195508f603f8701126200077557600094508485fd5b8a8601519450898511156200078e576200078e620005be565b6200079f8b858f88011601620005ff565b93508484528f82868801011115620007b75760008081fd5b60005b85811015620007d7578681018301518582018d01528b01620007ba565b5060009484018b019490945250918201528352509184019190840190620006cd565b9998505050505050505050565b60008060008385036101008112156200081e57600080fd5b60808112156200082d57600080fd5b62000837620005d4565b620008428662000632565b8152602086015162000854816200064f565b6020820152604086015162000869816200064f565b604082015260608601516200087e816200064f565b606082810191909152909450607f19820112156200089b57600080fd5b50604051606081016001600160401b038082118383101715620008c257620008c2620005be565b8160405260808701519150620008d8826200064f565b90825260a08601519063ffffffff82168214620008f457600080fd5b81602084015260c087015191506200090c826200064f565b6040830182905260e0870151929450808311156200092957600080fd5b5050620009398682870162000668565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806200096e57607f821691505b6020821081036200098f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620009e5576000816000526020600020601f850160051c81016020861015620009c05750805b601f850160051c820191505b81811015620009e157828155600101620009cc565b5050505b505050565b81516001600160401b0381111562000a065762000a06620005be565b62000a1e8162000a17845462000959565b8462000995565b602080601f83116001811462000a56576000841562000a3d5750858301515b600019600386901b1c1916600185901b178555620009e1565b600085815260208120601f198616915b8281101562000a875788860151825594840194600190910190840162000a66565b508582101562000aa65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602080825282546001600160a01b0381168383015260a081901c60ff161515604084015260a81c6001600160401b0316606083015260808083015260018084018054600093929190849062000b0b8162000959565b8060a089015260c0600183166000811462000b2f576001811462000b4c5762000b7e565b60ff19841660c08b015260c083151560051b8b0101945062000b7e565b85600052602060002060005b8481101562000b755781548c820185015290880190890162000b58565b8b0160c0019550505b50929998505050505050505050565b60805160a05160c05160e05161010051615cad62000c036000396000818161022c015261292b0152600081816101fd0152612bfd0152600081816101ce0152818161055301528181610704015261236f01526000818161019f01526125ae015260008181611d970152611dca0152615cad6000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806379ba5097116100cd578063d434969111610081578063e9d68a8e11610066578063e9d68a8e146104bc578063f2fde38b146104dc578063f716f99f146104ef57600080fd5b8063d434969114610496578063e62653f5146104a957600080fd5b80638da5cb5b116100b25780638da5cb5b14610417578063c673e58414610432578063ccd37ba31461045257600080fd5b806379ba50971461040157806385572ffb1461040957600080fd5b8063311cd513116101245780635e36480c116101095780635e36480c1461033c5780636f9e320f1461035c5780637437ff9f1461036f57600080fd5b8063311cd5131461030e5780633f4b04aa1461032157600080fd5b806304666f9c1461015657806306285c691461016b578063181f5a77146102b25780632d04ab76146102fb575b600080fd5b610169610164366004613bc4565b610502565b005b61025c60408051608081018252600080825260208201819052918101829052606081019190915260405180608001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160401b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815250905090565b6040516102a9919081516001600160401b031681526020808301516001600160a01b0390811691830191909152604080840151821690830152606092830151169181019190915260800190565b60405180910390f35b6102ee6040518060400160405280601181526020017f4f666652616d7020312e362e302d64657600000000000000000000000000000081525081565b6040516102a99190613d32565b610169610309366004613de2565b610516565b61016961031c366004613e94565b610a17565b6009546040516001600160401b0390911681526020016102a9565b61034f61034a366004613ee7565b610a80565b6040516102a99190613f44565b61016961036a366004613f6f565b610ad5565b6103cb604080516060810182526000808252602082018190529181019190915250604080516060810182526004546001600160a01b038082168352600160a01b90910463ffffffff166020830152600554169181019190915290565b6040805182516001600160a01b03908116825260208085015163ffffffff169083015292820151909216908201526060016102a9565b610169610ae6565b610169610151366004613fc3565b6000546040516001600160a01b0390911681526020016102a9565b61044561044036600461400e565b610b97565b6040516102a9919061406e565b6104886104603660046140e3565b6001600160401b03919091166000908152600860209081526040808320938352929052205490565b6040519081526020016102a9565b6101696104a436600461437f565b610cf5565b6101696104b7366004614707565b610fd5565b6104cf6104ca36600461494e565b61127c565b6040516102a99190614969565b6101696104ea3660046149b6565b611388565b6101696104fd366004614a3b565b611399565b61050a6113db565b61051381611437565b50565b600061052487890189614d90565b602081015151909150156105bb5760208101516040808301519051633854844f60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926370a9089e9261058a9230929190600401614fb8565b60006040518083038186803b1580156105a257600080fd5b505afa1580156105b6573d6000803e3d6000fd5b505050505b805151511515806105d157508051602001515115155b1561069d5760095460208a0135906001600160401b0380831691161015610675576009805467ffffffffffffffff19166001600160401b038316179055600480548351604051633937306f60e01b81526001600160a01b0390921692633937306f9261063e9291016150fc565b600060405180830381600087803b15801561065857600080fd5b505af115801561066c573d6000803e3d6000fd5b5050505061069b565b81602001515160000361069b57604051632261116760e01b815260040160405180910390fd5b505b60005b816020015151811015610958576000826020015182815181106106c5576106c561502a565b60209081029190910101518051604051632cbc26bb60e01b815267ffffffffffffffff60801b608083901b166004820152919250906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632cbc26bb90602401602060405180830381865afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f919061510f565b1561079d57604051637edeb53960e11b81526001600160401b03821660048201526024015b60405180910390fd5b60006107a88261168a565b9050806001016040516107bb9190615166565b6040518091039020836020015180519060200120146107f85782602001518160010160405163b80d8fa960e01b8152600401610794929190615259565b60408301518154600160a81b90046001600160401b039081169116141580610839575082606001516001600160401b031683604001516001600160401b0316115b1561087e57825160408085015160608601519151636af0786b60e11b81526001600160401b039384166004820152908316602482015291166044820152606401610794565b6080830151806108a15760405163504570e360e01b815260040160405180910390fd5b83516001600160401b03166000908152600860209081526040808320848452909152902054156108f95783516040516332cf0cbf60e01b81526001600160401b03909116600482015260248101829052604401610794565b6060840151610909906001615294565b825467ffffffffffffffff60a81b1916600160a81b6001600160401b039283160217909255925116600090815260086020908152604080832094835293905291909120429055506001016106a0565b50602081015181516040517f35c02761bcd3ef995c6a601a1981f4ed3934dcbe5041e24e286c89f5531d17e4926109909290916152bb565b60405180910390a1610a0c60008a8a8a8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c9182918501908490808284376000920191909152508b92506116d6915050565b505050505050505050565b610a57610a26828401846152e0565b6040805160008082526020820190925290610a51565b6060815260200190600190039081610a3c5790505b506119cf565b604080516000808252602082019092529050610a7a6001858585858660006116d6565b50505050565b6000610a8e60016004615314565b6002610a9b60808561533d565b6001600160401b0316610aae9190615363565b610ab88585611a91565b901c166003811115610acc57610acc613f1a565b90505b92915050565b610add6113db565b61051381611ad6565b6001546001600160a01b03163314610b405760405162461bcd60e51b815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610794565b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610bda6040805160e081019091526000606082018181526080830182905260a0830182905260c08301919091528190815260200160608152602001606081525090565b60ff808316600090815260026020818152604092839020835160e081018552815460608201908152600183015480881660808401526101008104881660a0840152620100009004909616151560c082015294855291820180548451818402810184019095528085529293858301939092830182828015610c8357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610c65575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015610ce557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610cc7575b5050505050815250509050919050565b333014610d15576040516306e34e6560e31b815260040160405180910390fd5b6040805160008082526020820190925281610d52565b6040805180820190915260008082526020820152815260200190600190039081610d2b5790505b5060a08701515190915015610d8857610d858660a001518760200151886060015189600001516020015189898989611bb5565b90505b6040805160a081018252875151815287516020908101516001600160401b031681830152808901518351600094840192610dc3929101613d32565b60408051601f19818403018152918152908252898101516020830152018390526005549091506001600160a01b03168015610e9e576040516308d450a160e01b81526001600160a01b038216906308d450a190610e2490859060040161541b565b600060405180830381600087803b158015610e3e57600080fd5b505af1925050508015610e4f575060015b610e9e573d808015610e7d576040519150601f19603f3d011682016040523d82523d6000602084013e610e82565b606091505b50806040516309c2532560e01b81526004016107949190613d32565b604088015151158015610eb357506080880151155b80610eca575060608801516001600160a01b03163b155b80610ef157506060880151610eef906001600160a01b03166385572ffb60e01b611d78565b155b15610efe57505050610fce565b87516020908101516001600160401b03166000908152600690915260408082205460808b015160608c01519251633cf9798360e01b815284936001600160a01b0390931692633cf9798392610f5c928992611388929160040161542e565b6000604051808303816000875af1158015610f7b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fa3919081019061546a565b509150915081610fc857806040516302a35ba360e21b81526004016107949190613d32565b50505050505b5050505050565b610fdd611d94565b815181518114611000576040516320f8fd5960e21b815260040160405180910390fd5b60005b8181101561126c57600084828151811061101f5761101f61502a565b602002602001015190506000816020015151905060008584815181106110475761104761502a565b6020026020010151905080518214611072576040516320f8fd5960e21b815260040160405180910390fd5b60005b8281101561125d5760008282815181106110915761109161502a565b60200260200101516000015190506000856020015183815181106110b7576110b761502a565b602002602001015190508160001461110b57806080015182101561110b578551815151604051633a98d46360e11b81526001600160401b039092166004830152602482015260448101839052606401610794565b83838151811061111d5761111d61502a565b602002602001015160200151518160a00151511461116a57805180516060909101516040516370a193fd60e01b815260048101929092526001600160401b03166024820152604401610794565b60005b8160a001515181101561124f57600085858151811061118e5761118e61502a565b60200260200101516020015182815181106111ab576111ab61502a565b602002602001015163ffffffff169050806000146112465760008360a0015183815181106111db576111db61502a565b6020026020010151608001518060200190518101906111fa91906154ff565b90508063ffffffff16821015611244578351516040516348e617b360e01b815260048101919091526024810184905263ffffffff8216604482015260648101839052608401610794565b505b5060010161116d565b505050806001019050611075565b50505050806001019050611003565b5061127783836119cf565b505050565b60408051608080820183526000808352602080840182905283850182905260608085018190526001600160401b03878116845260068352928690208651948501875280546001600160a01b0381168652600160a01b810460ff16151593860193909352600160a81b9092049092169483019490945260018401805493949293918401916113089061512c565b80601f01602080910402602001604051908101604052809291908181526020018280546113349061512c565b8015610ce55780601f1061135657610100808354040283529160200191610ce5565b820191906000526020600020905b81548152906001019060200180831161136457505050919092525091949350505050565b6113906113db565b61051381611dfc565b6113a16113db565b60005b81518110156113d7576113cf8282815181106113c2576113c261502a565b6020026020010151611ea5565b6001016113a4565b5050565b6000546001600160a01b031633146114355760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610794565b565b60005b81518110156113d75760008282815181106114575761145761502a565b60200260200101519050600081602001519050806001600160401b03166000036114945760405163c656089560e01b815260040160405180910390fd5b81516001600160a01b03166114bc576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160401b038116600090815260066020526040902060608301516001820180546114e89061512c565b905060000361154a57815467ffffffffffffffff60a81b1916600160a81b1782556040516001600160401b03841681527ff4c1390c70e5c0f491ae1ccbc06f9117cbbadf2767b247b3bc203280f24c0fb99060200160405180910390a1611587565b8154600160a81b90046001600160401b031660011461158757604051632105803760e11b81526001600160401b0384166004820152602401610794565b805115806115bc5750604080516000602082015201604051602081830303815290604052805190602001208180519060200120145b156115da576040516342bcdf7f60e11b815260040160405180910390fd5b600182016115e8828261556c565b50604080850151835486516001600160a01b03166001600160a01b0319921515600160a01b02929092167fffffffffffffffffffffff00000000000000000000000000000000000000000090911617178355516001600160401b038416907f49f51971edd25182e97182d6ea372a0488ce2ab639f6a3a7ab4df0d2636fe56b9061167390859061562b565b60405180910390a25050505080600101905061143a565b6001600160401b03811660009081526006602052604081208054600160a01b900460ff16610acf5760405163ed053c5960e01b81526001600160401b0384166004820152602401610794565b60ff878116600090815260026020908152604080832081516080810183528154815260019091015480861693820193909352610100830485169181019190915262010000909104909216151560608301528735906117358760a4615679565b905082606001511561177d57845161174e906020615363565b865161175b906020615363565b6117669060a0615679565b6117709190615679565b61177a9082615679565b90505b3681146117a657604051638e1192e160e01b815260048101829052366024820152604401610794565b50815181146117d55781516040516324f7d61360e21b8152600481019190915260248101829052604401610794565b6117dd611d94565b60ff808a166000908152600360209081526040808320338452825280832081518083019092528054808616835293949193909284019161010090910416600281111561182b5761182b613f1a565b600281111561183c5761183c613f1a565b905250905060028160200151600281111561185957611859613f1a565b1480156118ad5750600260008b60ff1660ff168152602001908152602001600020600301816000015160ff16815481106118955761189561502a565b6000918252602090912001546001600160a01b031633145b6118ca57604051631b41e11d60e31b815260040160405180910390fd5b5081606001511561197a5760208201516118e590600161568c565b60ff16855114611908576040516371253a2560e01b815260040160405180910390fd5b835185511461192a5760405163a75d88af60e01b815260040160405180910390fd5b6000878760405161193c9291906156a5565b604051908190038120611953918b906020016156b5565b6040516020818303038152906040528051906020012090506119788a82888888612184565b505b6040805182815260208a8101356001600160401b03169082015260ff8b16917f198d6990ef96613a9026203077e422916918b03ff47f0be6bee7b02d8e139ef0910160405180910390a2505050505050505050565b81516000036119f05760405162bf199760e01b815260040160405180910390fd5b80516040805160008082526020820190925291159181611a33565b604080518082019091526000815260606020820152815260200190600190039081611a0b5790505b50905060005b8451811015610fce57611a89858281518110611a5757611a5761502a565b602002602001015184611a8357858381518110611a7657611a7661502a565b6020026020010151612341565b83612341565b600101611a39565b6001600160401b038216600090815260076020526040812081611ab56080856156c9565b6001600160401b031681526020810191909152604001600020549392505050565b80516001600160a01b0316611afe576040516342bcdf7f60e11b815260040160405180910390fd5b805160048054602080850180516001600160a01b039586167fffffffffffffffff0000000000000000000000000000000000000000000000009094168417600160a01b63ffffffff928316021790945560408087018051600580546001600160a01b031916918916919091179055815194855291519094169183019190915251909216908201527fa1c15688cb2c24508e158f6942b9276c6f3028a85e1af8cf3fff0c3ff3d5fc8d9060600160405180910390a150565b606088516001600160401b03811115611bd057611bd06139e4565b604051908082528060200260200182016040528015611c1557816020015b6040805180820190915260008082526020820152815260200190600190039081611bee5790505b509050811560005b8a51811015611d6a5781611cc757848482818110611c3d57611c3d61502a565b9050602002016020810190611c5291906156ef565b63ffffffff1615611cc757848482818110611c6f57611c6f61502a565b9050602002016020810190611c8491906156ef565b6040805163ffffffff9092166020830152016040516020818303038152906040528b8281518110611cb757611cb761502a565b6020026020010151608001819052505b611d458b8281518110611cdc57611cdc61502a565b60200260200101518b8b8b8b8b87818110611cf957611cf961502a565b9050602002810190611d0b919061570c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612bb592505050565b838281518110611d5757611d5761502a565b6020908102919091010152600101611c1d565b505098975050505050505050565b6000611d8383612eb3565b8015610acc5750610acc8383612efe565b467f00000000000000000000000000000000000000000000000000000000000000001461143557604051630f01ce8560e01b81527f00000000000000000000000000000000000000000000000000000000000000006004820152466024820152604401610794565b336001600160a01b03821603611e545760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610794565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b806040015160ff16600003611ed0576000604051631b3fab5160e11b81526004016107949190615752565b60208082015160ff80821660009081526002909352604083206001810154929390928392169003611f21576060840151600182018054911515620100000262ff000019909216919091179055611f5d565b6060840151600182015460ff6201000090910416151590151514611f5d576040516321fd80df60e21b815260ff84166004820152602401610794565b60a084015180516101001015611f89576001604051631b3fab5160e11b81526004016107949190615752565b611fef8484600301805480602002602001604051908101604052809291908181526020018280548015611fe557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611fc7575b5050505050612fa0565b8460600151156120f95761205d8484600201805480602002602001604051908101604052809291908181526020018280548015611fe5576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611fc7575050505050612fa0565b608085015180516101001015612089576002604051631b3fab5160e11b81526004016107949190615752565b604086015161209990600361576c565b60ff168151116120bf576003604051631b3fab5160e11b81526004016107949190615752565b805160018401805461ff00191661010060ff8416021790556120ea906002860190602084019061396a565b506120f785826001613009565b505b61210584826002613009565b805161211a906003850190602084019061396a565b5060408581015160018401805460ff191660ff8316179055865180855560a088015192517fab8b1b57514019638d7b5ce9c638fe71366fe8e2be1c40a7a80f1733d0e9f547936121739389939260028a01929190615788565b60405180910390a1610fce84613164565b8251600090815b818110156123375760006001888684602081106121aa576121aa61502a565b6121b791901a601b61568c565b8985815181106121c9576121c961502a565b60200260200101518986815181106121e3576121e361502a565b602002602001015160405160008152602001604052604051612221949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015612243573d6000803e3d6000fd5b505060408051601f1981015160ff808e166000908152600360209081528582206001600160a01b038516835281528582208587019096528554808416865293975090955092939284019161010090041660028111156122a4576122a4613f1a565b60028111156122b5576122b5613f1a565b90525090506001816020015160028111156122d2576122d2613f1a565b146122f057604051636518c33d60e11b815260040160405180910390fd5b8051600160ff9091161b85161561231a57604051633d9ef1f160e21b815260040160405180910390fd5b806000015160ff166001901b85179450505080600101905061218b565b5050505050505050565b81518151604051632cbc26bb60e01b8152608083901b67ffffffffffffffff60801b166004820152901515907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632cbc26bb90602401602060405180830381865afa1580156123be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e2919061510f565b1561245357801561241157604051637edeb53960e11b81526001600160401b0383166004820152602401610794565b6040516001600160401b03831681527faab522ed53d887e56ed53dd37398a01aeef6a58e0fa77c2173beb9512d8949339060200160405180910390a150505050565b600061245e8361168a565b600101805461246c9061512c565b80601f01602080910402602001604051908101604052809291908181526020018280546124989061512c565b80156124e55780601f106124ba576101008083540402835291602001916124e5565b820191906000526020600020905b8154815290600101906020018083116124c857829003601f168201915b505050602088015151929350505060008190036125145760405162bf199760e01b815260040160405180910390fd5b8560400151518114612539576040516357e0e08360e01b815260040160405180910390fd5b6000816001600160401b03811115612553576125536139e4565b60405190808252806020026020018201604052801561257c578160200160208202803683370190505b50905060005b8281101561269d576000886020015182815181106125a2576125a261502a565b602002602001015190507f00000000000000000000000000000000000000000000000000000000000000006001600160401b03168160000151604001516001600160401b0316146126195780516040908101519051631c21951160e11b81526001600160401b039091166004820152602401610794565b866001600160401b03168160000151602001516001600160401b03161461266d57805160200151604051636c95f1eb60e01b81526001600160401b03808a1660048301529091166024820152604401610794565b61267781866131bb565b8383815181106126895761268961502a565b602090810291909101015250600101612582565b5060006126b486838a606001518b608001516132dd565b9050806000036126e257604051633ee8bd3f60e11b81526001600160401b0387166004820152602401610794565b60005b83811015610a0c5760005a905060008a60200151838151811061270a5761270a61502a565b6020026020010151905060006127288a836000015160600151610a80565b9050600081600381111561273e5761273e613f1a565b148061275b5750600381600381111561275957612759613f1a565b145b6127b157815160600151604080516001600160401b03808e16825290921660208301527f3b575419319662b2a6f5e2467d84521517a3382b908eb3d557bb3fdb0c50e23c910160405180910390a1505050612bad565b60608915612890578b85815181106127cb576127cb61502a565b6020908102919091018101510151600454909150600090600160a01b900463ffffffff166127f98842615314565b11905080806128195750600383600381111561281757612817613f1a565b145b612841576040516354e7e43160e11b81526001600160401b038d166004820152602401610794565b8c86815181106128535761285361502a565b60200260200101516000015160001461288a578c86815181106128785761287861502a565b60209081029190910101515160808501525b506128fc565b60008260038111156128a4576128a4613f1a565b146128fc57825160600151604080516001600160401b03808f16825290921660208301527f3ef2a99c550a751d4b0b261268f05a803dfb049ab43616a1ffb388f61fe65120910160405180910390a150505050612bad565b8251608001516001600160401b0316156129d557600082600381111561292457612924613f1a565b036129d5577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e0e03cae8c85600001516080015186602001516040518463ffffffff1660e01b81526004016129859392919061583a565b6020604051808303816000875af11580156129a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c8919061510f565b6129d55750505050612bad565b60008d6040015186815181106129ed576129ed61502a565b6020026020010151905080518460a001515114612a3757835160600151604051631cfe6d8b60e01b81526001600160401b03808f1660048301529091166024820152604401610794565b612a4b8c856000015160600151600161331a565b600080612a598684866133bf565b91509150612a708e8760000151606001518461331a565b8c15612ac7576003826003811115612a8a57612a8a613f1a565b03612ac7576000856003811115612aa357612aa3613f1a565b14612ac757855151604051632b11b8d960e01b815261079491908390600401615866565b6002826003811115612adb57612adb613f1a565b14612b20576003826003811115612af457612af4613f1a565b14612b20578d866000015160600151836040516349362d1f60e11b81526004016107949392919061587f565b8560000151600001518660000151606001516001600160401b03168f6001600160401b03167f05665fe9ad095383d018353f4cbcba77e84db27dd215081bbf7cdf9ae6fbe48b8d8c81518110612b7857612b7861502a565b602002602001015186865a612b8d908f615314565b604051612b9d94939291906158a4565b60405180910390a4505050505050505b6001016126e5565b60408051808201909152600080825260208201526000612bd88760200151613473565b60405163bbe4f6db60e01b81526001600160a01b0380831660048301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063bbe4f6db90602401602060405180830381865afa158015612c44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6891906158db565b90506001600160a01b0381161580612c975750612c956001600160a01b03821663aff2afbf60e01b611d78565b155b15612cc05760405163ae9b4ce960e01b81526001600160a01b0382166004820152602401610794565b600080612ceb88858c60800151806020019051810190612ce091906154ff565b63ffffffff166134e7565b915091506000806000612d9e6040518061010001604052808e81526020018c6001600160401b031681526020018d6001600160a01b031681526020018f606001518152602001896001600160a01b031681526020018f6000015181526020018f6040015181526020018b815250604051602401612d6891906158f8565b60408051601f198184030181529190526020810180516001600160e01b0316633907753760e01b179052878661138860846135ca565b92509250925082612dc4578160405163e1cd550960e01b81526004016107949190613d32565b8151602014612df3578151604051631e3be00960e21b8152602060048201526024810191909152604401610794565b600082806020019051810190612e0991906159c4565b9050866001600160a01b03168c6001600160a01b031614612e85576000612e3a8d8a612e35868a615314565b6134e7565b50905086811080612e54575081612e518883615314565b14155b15612e835760405163a966e21f60e01b8152600481018390526024810188905260448101829052606401610794565b505b604080518082019091526001600160a01b039098168852602088015250949550505050505095945050505050565b6000612ec6826301ffc9a760e01b612efe565b8015610acf5750612ef7827fffffffff00000000000000000000000000000000000000000000000000000000612efe565b1592915050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000082166024820152600090819060440160408051601f19818403018152919052602080820180516001600160e01b03166301ffc9a760e01b178152825192935060009283928392909183918a617530fa92503d91506000519050828015612f89575060208210155b8015612f955750600081115b979650505050505050565b60005b81518110156112775760ff831660009081526003602052604081208351909190849084908110612fd557612fd561502a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805461ffff19169055600101612fa3565b60005b8251811015610a7a5760008382815181106130295761302961502a565b602002602001015190506000600281111561304657613046613f1a565b60ff80871660009081526003602090815260408083206001600160a01b0387168452909152902054610100900416600281111561308557613085613f1a565b146130a6576004604051631b3fab5160e11b81526004016107949190615752565b6001600160a01b0381166130cd5760405163d6c62c9b60e01b815260040160405180910390fd5b60405180604001604052808360ff1681526020018460028111156130f3576130f3613f1a565b905260ff80871660009081526003602090815260408083206001600160a01b0387168452825290912083518154931660ff198416811782559184015190929091839161ffff19161761010083600281111561315057613150613f1a565b02179055509050505080600101905061300c565b60ff81166105135760ff808216600090815260026020526040902060010154620100009004166131a757604051631e8ed32560e21b815260040160405180910390fd5b6009805467ffffffffffffffff1916905550565b815160208082015160409283015192516000938493613201937f2425b0b9f9054c76ff151b0a175b18f37a4a4e82013a72e9f15c9caa095ed21f939092918891016159dd565b60408051601f1981840301815290829052805160209182012086518051888401516060808b0151908401516080808d0151950151959761324a9794969395929491939101615a0f565b604051602081830303815290604052805190602001208560400151805190602001208660a001516040516020016132819190615b13565b60408051601f198184030181528282528051602091820120908301969096528101939093526060830191909152608082015260a081019190915260c0015b60405160208183030381529060405280519060200120905092915050565b6000806132eb8585856136a4565b6001600160401b038716600090815260086020908152604080832093835292905220549150505b949350505050565b6000600261332960808561533d565b6001600160401b031661333c9190615363565b9050600061334a8585611a91565b90508161335960016004615314565b901b19168183600381111561337057613370613f1a565b6001600160401b03871660009081526007602052604081209190921b9290921791829161339e6080886156c9565b6001600160401b031681526020810191909152604001600020555050505050565b60405163d434969160e01b8152600090606090309063d4349691906133ec90889088908890600401615baa565b600060405180830381600087803b15801561340657600080fd5b505af1925050508015613417575060015b613456573d808015613445576040519150601f19603f3d011682016040523d82523d6000602084013e61344a565b606091505b5060039250905061346b565b50506040805160208101909152600081526002905b935093915050565b60008151602014613499578160405163046b337b60e51b81526004016107949190613d32565b6000828060200190518101906134af91906159c4565b90506001600160a01b038111806134c7575061040081105b15610acf578260405163046b337b60e51b81526004016107949190613d32565b60008060008060006135488860405160240161351291906001600160a01b0391909116815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166370a0823160e01b179052888861138860846135ca565b9250925092508261356e578160405163e1cd550960e01b81526004016107949190613d32565b602082511461359d578151604051631e3be00960e21b8152602060048201526024810191909152604401610794565b818060200190518101906135b191906159c4565b6135bb8288615314565b94509450505050935093915050565b6000606060008361ffff166001600160401b038111156135ec576135ec6139e4565b6040519080825280601f01601f191660200182016040528015613616576020820181803683370190505b509150863b6136305763030ed58f60e21b60005260046000fd5b5a8581101561364a57632be8ca8b60e21b60005260046000fd5b859003604081048103871061366a576337c3be2960e01b60005260046000fd5b505a6000808a5160208c0160008c8cf193505a900390503d8481111561368d5750835b808352806000602085013e50955095509592505050565b82518251600091908183036136cc57604051630469ac9960e21b815260040160405180910390fd5b61010182118015906136e057506101018111155b6136fd576040516309bde33960e01b815260040160405180910390fd5b60001982820101610100811115613727576040516309bde33960e01b815260040160405180910390fd5b8060000361375457866000815181106137425761374261502a565b60200260200101519350505050613922565b6000816001600160401b0381111561376e5761376e6139e4565b604051908082528060200260200182016040528015613797578160200160208202803683370190505b50905060008080805b858110156138c15760006001821b8b8116036137fb57888510156137e4578c5160018601958e9181106137d5576137d561502a565b6020026020010151905061381d565b85516001850194879181106137d5576137d561502a565b8b5160018401938d9181106138125761381261502a565b602002602001015190505b60008986101561384d578d5160018701968f91811061383e5761383e61502a565b6020026020010151905061386f565b86516001860195889181106138645761386461502a565b602002602001015190505b82851115613890576040516309bde33960e01b815260040160405180910390fd5b61389a8282613929565b8784815181106138ac576138ac61502a565b602090810291909101015250506001016137a0565b5060018503821480156138d357508683145b80156138de57508581145b6138fb576040516309bde33960e01b815260040160405180910390fd5b8360018603815181106139105761391061502a565b60200260200101519750505050505050505b9392505050565b60008183106139415761393c8284613947565b610acc565b610acc83835b6040805160016020820152908101839052606081018290526000906080016132bf565b8280548282559060005260206000209081019282156139bf579160200282015b828111156139bf57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061398a565b506139cb9291506139cf565b5090565b5b808211156139cb57600081556001016139d0565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715613a1c57613a1c6139e4565b60405290565b604051606081016001600160401b0381118282101715613a1c57613a1c6139e4565b60405160a081016001600160401b0381118282101715613a1c57613a1c6139e4565b60405160c081016001600160401b0381118282101715613a1c57613a1c6139e4565b604080519081016001600160401b0381118282101715613a1c57613a1c6139e4565b604051601f8201601f191681016001600160401b0381118282101715613ad257613ad26139e4565b604052919050565b60006001600160401b03821115613af357613af36139e4565b5060051b60200190565b6001600160a01b038116811461051357600080fd5b80356001600160401b0381168114613b2957600080fd5b919050565b801515811461051357600080fd5b8035613b2981613b2e565b60006001600160401b03821115613b6057613b606139e4565b50601f01601f191660200190565b600082601f830112613b7f57600080fd5b8135613b92613b8d82613b47565b613aaa565b818152846020838601011115613ba757600080fd5b816020850160208301376000918101602001919091529392505050565b60006020808385031215613bd757600080fd5b82356001600160401b0380821115613bee57600080fd5b818501915085601f830112613c0257600080fd5b8135613c10613b8d82613ada565b81815260059190911b83018401908481019088831115613c2f57600080fd5b8585015b83811015613cd557803585811115613c4b5760008081fd5b86016080818c03601f1901811315613c635760008081fd5b613c6b6139fa565b89830135613c7881613afd565b81526040613c87848201613b12565b8b830152606080850135613c9a81613b2e565b83830152928401359289841115613cb357600091508182fd5b613cc18f8d86880101613b6e565b908301525085525050918601918601613c33565b5098975050505050505050565b60005b83811015613cfd578181015183820152602001613ce5565b50506000910152565b60008151808452613d1e816020860160208601613ce2565b601f01601f19169290920160200192915050565b602081526000610acc6020830184613d06565b8060608101831015610acf57600080fd5b60008083601f840112613d6857600080fd5b5081356001600160401b03811115613d7f57600080fd5b602083019150836020828501011115613d9757600080fd5b9250929050565b60008083601f840112613db057600080fd5b5081356001600160401b03811115613dc757600080fd5b6020830191508360208260051b8501011115613d9757600080fd5b60008060008060008060008060e0898b031215613dfe57600080fd5b613e088a8a613d45565b975060608901356001600160401b0380821115613e2457600080fd5b613e308c838d01613d56565b909950975060808b0135915080821115613e4957600080fd5b613e558c838d01613d9e565b909750955060a08b0135915080821115613e6e57600080fd5b50613e7b8b828c01613d9e565b999c989b50969995989497949560c00135949350505050565b600080600060808486031215613ea957600080fd5b613eb38585613d45565b925060608401356001600160401b03811115613ece57600080fd5b613eda86828701613d56565b9497909650939450505050565b60008060408385031215613efa57600080fd5b613f0383613b12565b9150613f1160208401613b12565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b60048110613f4057613f40613f1a565b9052565b60208101610acf8284613f30565b8035613b2981613afd565b63ffffffff8116811461051357600080fd5b600060608284031215613f8157600080fd5b613f89613a22565b8235613f9481613afd565b81526020830135613fa481613f5d565b60208201526040830135613fb781613afd565b60408201529392505050565b600060208284031215613fd557600080fd5b81356001600160401b03811115613feb57600080fd5b820160a0818503121561392257600080fd5b803560ff81168114613b2957600080fd5b60006020828403121561402057600080fd5b610acc82613ffd565b60008151808452602080850194506020840160005b838110156140635781516001600160a01b03168752958201959082019060010161403e565b509495945050505050565b60208152600082518051602084015260ff602082015116604084015260ff604082015116606084015260608101511515608084015250602083015160c060a08401526140bd60e0840182614029565b90506040840151601f198483030160c08501526140da8282614029565b95945050505050565b600080604083850312156140f657600080fd5b6140ff83613b12565b946020939093013593505050565b600060a0828403121561411f57600080fd5b614127613a44565b90508135815261413960208301613b12565b602082015261414a60408301613b12565b604082015261415b60608301613b12565b606082015261416c60808301613b12565b608082015292915050565b600082601f83011261418857600080fd5b81356020614198613b8d83613ada565b82815260059290921b840181019181810190868411156141b757600080fd5b8286015b848110156142b15780356001600160401b03808211156141db5760008081fd5b9088019060a0828b03601f19018113156141f55760008081fd5b6141fd613a44565b878401358381111561420f5760008081fd5b61421d8d8a83880101613b6e565b825250604080850135848111156142345760008081fd5b6142428e8b83890101613b6e565b8a840152506060808601358581111561425b5760008081fd5b6142698f8c838a0101613b6e565b8385015250608091508186013581840152508285013592508383111561428f5760008081fd5b61429d8d8a85880101613b6e565b9082015286525050509183019183016141bb565b509695505050505050565b600061014082840312156142cf57600080fd5b6142d7613a66565b90506142e3838361410d565b815260a08201356001600160401b03808211156142ff57600080fd5b61430b85838601613b6e565b602084015260c084013591508082111561432457600080fd5b61433085838601613b6e565b604084015261434160e08501613f52565b6060840152610100840135608084015261012084013591508082111561436657600080fd5b5061437384828501614177565b60a08301525092915050565b60008060008060006060868803121561439757600080fd5b85356001600160401b03808211156143ae57600080fd5b6143ba89838a016142bc565b965060208801359150808211156143d057600080fd5b6143dc89838a01613d9e565b909650945060408801359150808211156143f557600080fd5b5061440288828901613d9e565b969995985093965092949392505050565b600082601f83011261442457600080fd5b81356020614434613b8d83613ada565b82815260059290921b8401810191818101908684111561445357600080fd5b8286015b848110156142b15780356001600160401b038111156144765760008081fd5b6144848986838b01016142bc565b845250918301918301614457565b600082601f8301126144a357600080fd5b813560206144b3613b8d83613ada565b82815260059290921b840181019181810190868411156144d257600080fd5b8286015b848110156142b15780356001600160401b03808211156144f557600080fd5b818901915089603f83011261450957600080fd5b85820135614519613b8d82613ada565b81815260059190911b830160400190878101908c83111561453957600080fd5b604085015b838110156145725780358581111561455557600080fd5b6145648f6040838a0101613b6e565b84525091890191890161453e565b508752505050928401925083016144d6565b600082601f83011261459557600080fd5b813560206145a5613b8d83613ada565b8083825260208201915060208460051b8701019350868411156145c757600080fd5b602086015b848110156142b157803583529183019183016145cc565b600082601f8301126145f457600080fd5b81356020614604613b8d83613ada565b82815260059290921b8401810191818101908684111561462357600080fd5b8286015b848110156142b15780356001600160401b03808211156146475760008081fd5b9088019060a0828b03601f19018113156146615760008081fd5b614669613a44565b614674888501613b12565b81526040808501358481111561468a5760008081fd5b6146988e8b83890101614413565b8a84015250606080860135858111156146b15760008081fd5b6146bf8f8c838a0101614492565b83850152506080915081860135858111156146da5760008081fd5b6146e88f8c838a0101614584565b9184019190915250919093013590830152508352918301918301614627565b6000806040838503121561471a57600080fd5b6001600160401b038335111561472f57600080fd5b61473c84843585016145e3565b91506001600160401b036020840135111561475657600080fd5b6020830135830184601f82011261476c57600080fd5b614779613b8d8235613ada565b81358082526020808301929160051b84010187101561479757600080fd5b602083015b6020843560051b850101811015614940576001600160401b03813511156147c257600080fd5b87603f8235860101126147d457600080fd5b6147e7613b8d6020833587010135613ada565b81358501602081810135808452908301929160059190911b016040018a101561480f57600080fd5b604083358701015b83358701602081013560051b01604001811015614930576001600160401b038135111561484357600080fd5b833587018135016040818d03603f1901121561485e57600080fd5b614866613a88565b604082013581526001600160401b036060830135111561488557600080fd5b8c605f60608401358401011261489a57600080fd5b60406060830135830101356148b1613b8d82613ada565b808282526020820191508f60608460051b60608801358801010111156148d657600080fd5b6060808601358601015b60608460051b606088013588010101811015614910576149008135613f5d565b80358352602092830192016148e0565b508060208501525050508085525050602083019250602081019050614817565b508452506020928301920161479c565b508093505050509250929050565b60006020828403121561496057600080fd5b610acc82613b12565b602081526001600160a01b0382511660208201526020820151151560408201526001600160401b0360408301511660608201526000606083015160808084015261331260a0840182613d06565b6000602082840312156149c857600080fd5b813561392281613afd565b600082601f8301126149e457600080fd5b813560206149f4613b8d83613ada565b8083825260208201915060208460051b870101935086841115614a1657600080fd5b602086015b848110156142b1578035614a2e81613afd565b8352918301918301614a1b565b60006020808385031215614a4e57600080fd5b82356001600160401b0380821115614a6557600080fd5b818501915085601f830112614a7957600080fd5b8135614a87613b8d82613ada565b81815260059190911b83018401908481019088831115614aa657600080fd5b8585015b83811015613cd557803585811115614ac157600080fd5b860160c0818c03601f19011215614ad85760008081fd5b614ae0613a66565b8882013581526040614af3818401613ffd565b8a8301526060614b04818501613ffd565b8284015260809150614b17828501613b3c565b9083015260a08381013589811115614b2f5760008081fd5b614b3d8f8d838801016149d3565b838501525060c0840135915088821115614b575760008081fd5b614b658e8c848701016149d3565b9083015250845250918601918601614aaa565b80356001600160e01b0381168114613b2957600080fd5b600082601f830112614ba057600080fd5b81356020614bb0613b8d83613ada565b82815260069290921b84018101918181019086841115614bcf57600080fd5b8286015b848110156142b15760408189031215614bec5760008081fd5b614bf4613a88565b614bfd82613b12565b8152614c0a858301614b78565b81860152835291830191604001614bd3565b600082601f830112614c2d57600080fd5b81356020614c3d613b8d83613ada565b82815260059290921b84018101918181019086841115614c5c57600080fd5b8286015b848110156142b15780356001600160401b0380821115614c805760008081fd5b9088019060a0828b03601f1901811315614c9a5760008081fd5b614ca2613a44565b614cad888501613b12565b815260408085013584811115614cc35760008081fd5b614cd18e8b83890101613b6e565b8a8401525060609350614ce5848601613b12565b908201526080614cf6858201613b12565b93820193909352920135908201528352918301918301614c60565b600082601f830112614d2257600080fd5b81356020614d32613b8d83613ada565b82815260069290921b84018101918181019086841115614d5157600080fd5b8286015b848110156142b15760408189031215614d6e5760008081fd5b614d76613a88565b813581528482013585820152835291830191604001614d55565b60006020808385031215614da357600080fd5b82356001600160401b0380821115614dba57600080fd5b9084019060608287031215614dce57600080fd5b614dd6613a22565b823582811115614de557600080fd5b83016040818903811315614df857600080fd5b614e00613a88565b823585811115614e0f57600080fd5b8301601f81018b13614e2057600080fd5b8035614e2e613b8d82613ada565b81815260069190911b8201890190898101908d831115614e4d57600080fd5b928a01925b82841015614e9d5785848f031215614e6a5760008081fd5b614e72613a88565b8435614e7d81613afd565b8152614e8a858d01614b78565b818d0152825292850192908a0190614e52565b845250505082870135915084821115614eb557600080fd5b614ec18a838501614b8f565b81880152835250508284013582811115614eda57600080fd5b614ee688828601614c1c565b85830152506040830135935081841115614eff57600080fd5b614f0b87858501614d11565b60408201529695505050505050565b600082825180855260208086019550808260051b84010181860160005b84811015614fab57601f19868403018952815160a06001600160401b03808351168652868301518288880152614f6f83880182613d06565b60408581015184169089015260608086015190931692880192909252506080928301519290950191909152509783019790830190600101614f37565b5090979650505050505050565b6001600160a01b038416815260006020606081840152614fdb6060840186614f1a565b83810360408581019190915285518083528387019284019060005b8181101561501b57845180518452860151868401529385019391830191600101614ff6565b50909998505050505050505050565b634e487b7160e01b600052603260045260246000fd5b805160408084528151848201819052600092602091908201906060870190855b8181101561509757835180516001600160a01b031684528501516001600160e01b0316858401529284019291850191600101615060565b50508583015187820388850152805180835290840192506000918401905b808310156150f057835180516001600160401b031683528501516001600160e01b0316858301529284019260019290920191908501906150b5565b50979650505050505050565b602081526000610acc6020830184615040565b60006020828403121561512157600080fd5b815161392281613b2e565b600181811c9082168061514057607f821691505b60208210810361516057634e487b7160e01b600052602260045260246000fd5b50919050565b60008083546151748161512c565b6001828116801561518c57600181146151a1576151d0565b60ff19841687528215158302870194506151d0565b8760005260208060002060005b858110156151c75781548a8201529084019082016151ae565b50505082870194505b50929695505050505050565b600081546151e98161512c565b80855260206001838116801561520657600181146152205761524e565b60ff1985168884015283151560051b88018301955061524e565b866000528260002060005b858110156152465781548a820186015290830190840161522b565b890184019650505b505050505092915050565b60408152600061526c6040830185613d06565b82810360208401526140da81856151dc565b634e487b7160e01b600052601160045260246000fd5b6001600160401b038181168382160190808211156152b4576152b461527e565b5092915050565b6040815260006152ce6040830185614f1a565b82810360208401526140da8185615040565b6000602082840312156152f257600080fd5b81356001600160401b0381111561530857600080fd5b613312848285016145e3565b81810381811115610acf57610acf61527e565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b038084168061535757615357615327565b92169190910692915050565b8082028115828204841417610acf57610acf61527e565b80518252600060206001600160401b0381840151168185015260408084015160a060408701526153ad60a0870182613d06565b9050606085015186820360608801526153c68282613d06565b608087810151898303918a01919091528051808352908601935060009250908501905b808310156150f057835180516001600160a01b03168352860151868301529285019260019290920191908401906153e9565b602081526000610acc602083018461537a565b608081526000615441608083018761537a565b61ffff9590951660208301525060408101929092526001600160a01b0316606090910152919050565b60008060006060848603121561547f57600080fd5b835161548a81613b2e565b60208501519093506001600160401b038111156154a657600080fd5b8401601f810186136154b757600080fd5b80516154c5613b8d82613b47565b8181528760208385010111156154da57600080fd5b6154eb826020830160208601613ce2565b809450505050604084015190509250925092565b60006020828403121561551157600080fd5b815161392281613f5d565b601f821115611277576000816000526020600020601f850160051c810160208610156155455750805b601f850160051c820191505b8181101561556457828155600101615551565b505050505050565b81516001600160401b03811115615585576155856139e4565b61559981615593845461512c565b8461551c565b602080601f8311600181146155ce57600084156155b65750858301515b600019600386901b1c1916600185901b178555615564565b600085815260208120601f198616915b828110156155fd578886015182559484019460019091019084016155de565b508582101561561b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600082546001600160a01b038116602084015260ff8160a01c16151560408401526001600160401b038160a81c16606084015250608080830152610acc60a08301600185016151dc565b80820180821115610acf57610acf61527e565b60ff8181168382160190811115610acf57610acf61527e565b8183823760009101908152919050565b828152606082602083013760800192915050565b60006001600160401b03808416806156e3576156e3615327565b92169190910492915050565b60006020828403121561570157600080fd5b813561392281613f5d565b6000808335601e1984360301811261572357600080fd5b8301803591506001600160401b0382111561573d57600080fd5b602001915036819003821315613d9757600080fd5b602081016005831061576657615766613f1a565b91905290565b60ff81811683821602908116908181146152b4576152b461527e565b600060a0820160ff881683526020878185015260a0604085015281875480845260c0860191508860005282600020935060005b818110156157e05784546001600160a01b0316835260019485019492840192016157bb565b50508481036060860152865180825290820192508187019060005b818110156158205782516001600160a01b0316855293830193918301916001016157fb565b50505060ff851660808501525090505b9695505050505050565b60006001600160401b038086168352808516602084015250606060408301526140da6060830184613d06565b8281526040602082015260006133126040830184613d06565b6001600160401b03848116825283166020820152606081016133126040830184613f30565b8481526158b46020820185613f30565b6080604082015260006158ca6080830185613d06565b905082606083015295945050505050565b6000602082840312156158ed57600080fd5b815161392281613afd565b6020815260008251610100806020850152615917610120850183613d06565b9150602085015161593360408601826001600160401b03169052565b5060408501516001600160a01b03811660608601525060608501516080850152608085015161596d60a08601826001600160a01b03169052565b5060a0850151601f19808685030160c087015261598a8483613d06565b935060c08701519150808685030160e08701526159a78483613d06565b935060e08701519150808685030183870152506158308382613d06565b6000602082840312156159d657600080fd5b5051919050565b84815260006001600160401b038086166020840152808516604084015250608060608301526158306080830184613d06565b86815260c060208201526000615a2860c0830188613d06565b6001600160a01b03969096166040830152506001600160401b039384166060820152608081019290925290911660a09091015292915050565b600082825180855260208086019550808260051b84010181860160005b84811015614fab57601f19868403018952815160a08151818652615aa482870182613d06565b9150508582015185820387870152615abc8282613d06565b91505060408083015186830382880152615ad68382613d06565b92505050606080830151818701525060808083015192508582038187015250615aff8183613d06565b9a86019a9450505090830190600101615a7e565b602081526000610acc6020830184615a61565b60008282518085526020808601955060208260051b8401016020860160005b84811015614fab57601f19868403018952615b61838351613d06565b98840198925090830190600101615b45565b60008151808452602080850194506020840160005b8381101561406357815163ffffffff1687529582019590820190600101615b88565b60608152600084518051606084015260208101516001600160401b0380821660808601528060408401511660a08601528060608401511660c08601528060808401511660e0860152505050602085015161014080610100850152615c126101a0850183613d06565b91506040870151605f198086850301610120870152615c318483613d06565b935060608901519150615c4e838701836001600160a01b03169052565b608089015161016087015260a0890151925080868503016101808701525050615c778282615a61565b9150508281036020840152615c8c8186615b26565b905082810360408401526158308185615b7356fea164736f6c6343000818000a", } var OffRampABI = OffRampMetaData.ABI diff --git a/core/gethwrappers/ccip/generated/rmn_remote/rmn_remote.go b/core/gethwrappers/ccip/generated/rmn_remote/rmn_remote.go index bf210e2eb1..a4e7a501b9 100644 --- a/core/gethwrappers/ccip/generated/rmn_remote/rmn_remote.go +++ b/core/gethwrappers/ccip/generated/rmn_remote/rmn_remote.go @@ -60,8 +60,8 @@ type RMNRemoteVersionedConfig struct { } var RMNRemoteMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConfigNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateOnchainPublicKey\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignerOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinSignersTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OutOfOrderSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ThresholdNotMet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedSigner\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"version\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"rmnHomeContractConfigDigest\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"onchainPublicKey\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"nodeIndex\",\"type\":\"uint64\"}],\"internalType\":\"structRMNRemote.Signer[]\",\"name\":\"signers\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"minSigners\",\"type\":\"uint64\"}],\"internalType\":\"structRMNRemote.Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"structRMNRemote.VersionedConfig\",\"name\":\"versionedConfig\",\"type\":\"tuple\"}],\"name\":\"ConfigSet\",\"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\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVersionedConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"version\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"rmnHomeContractConfigDigest\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"onchainPublicKey\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"nodeIndex\",\"type\":\"uint64\"}],\"internalType\":\"structRMNRemote.Signer[]\",\"name\":\"signers\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"minSigners\",\"type\":\"uint64\"}],\"internalType\":\"structRMNRemote.Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"internalType\":\"structRMNRemote.VersionedConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes16\",\"name\":\"subject\",\"type\":\"bytes16\"}],\"name\":\"isCursed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCursed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"rmnHomeContractConfigDigest\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"onchainPublicKey\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"nodeIndex\",\"type\":\"uint64\"}],\"internalType\":\"structRMNRemote.Signer[]\",\"name\":\"signers\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"minSigners\",\"type\":\"uint64\"}],\"internalType\":\"structRMNRemote.Config\",\"name\":\"newConfig\",\"type\":\"tuple\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"onRampAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"minSeqNr\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxSeqNr\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"merkleRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structInternal.MerkleRoot[]\",\"name\":\"destLaneUpdates\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structIRMNV2.Signature[]\",\"name\":\"signatures\",\"type\":\"tuple[]\"}],\"name\":\"verify\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040523480156200001157600080fd5b50604051620018293803806200182983398101604081905262000034916200017e565b33806000816200008b5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000be57620000be81620000d3565b5050506001600160401b0316608052620001b0565b336001600160a01b038216036200012d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000082565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000602082840312156200019157600080fd5b81516001600160401b0381168114620001a957600080fd5b9392505050565b608051611660620001c9600039600050506116606000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806379ba509711610076578063ccd5af001161005b578063ccd5af001461019a578063f2fde38b146101ac578063f8a8fd6d1461012857600080fd5b806379ba50971461016a5780638da5cb5b1461017257600080fd5b80631add205f116100a75780631add205f1461012a5780632cbc26bb1461013f578063397796f71461016357600080fd5b8063181f5a77146100c3578063198f0f7714610115575b600080fd5b6100ff6040518060400160405280601381526020017f524d4e52656d6f746520312e362e302d6465760000000000000000000000000081525081565b60405161010c9190610c4b565b60405180910390f35b610128610123366004610c65565b6101bf565b005b6101326105f0565b60405161010c9190610ca0565b61015361014d366004610d58565b50600090565b604051901515815260200161010c565b6000610153565b6101286106d6565b60005460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010c565b6101286101a8366004610f60565b5050565b6101286101ba366004611137565b610a0d565b6101c7610a23565b60015b6101d76020830183611154565b90508110156102a7576101ed6020830183611154565b828181106101fd576101fd6111c3565b905060400201602001602081019061021591906111f2565b67ffffffffffffffff1661022c6020840184611154565b61023760018561123e565b818110610246576102466111c3565b905060400201602001602081019061025e91906111f2565b67ffffffffffffffff161061029f576040517f4485151700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001016101ca565b506102b56020820182611154565b90506102c760608301604084016111f2565b67ffffffffffffffff161115610309576040517ffba0d9e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025b60018101541561040557600180820180546006926000929161032e919061123e565b8154811061033e5761033e6111c3565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600181018054806103a8576103a8611257565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffff0000000000000000000000000000000000000000000000000000000016905501905561030c565b5060005b6104166020830183611154565b905081101561054b57600660006104306020850185611154565b84818110610440576104406111c3565b6104569260206040909202019081019150611137565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16156104b7576040517f28cae27d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600660006104ca6020860186611154565b858181106104da576104da6111c3565b6104f09260206040909202019081019150611137565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610409565b50806002610559828261133f565b5050600580546000919082906105749063ffffffff1661147a565b91906101000a81548163ffffffff021916908363ffffffff160217905590507f6cc65868ae41a007e6c3ed18ce591c123dd4e5864b421888c68ce92dae98cea460405180604001604052808363ffffffff168152602001846105d59061149d565b90526040516105e49190610ca0565b60405180910390a15050565b6105f8610b99565b60408051808201825260055463ffffffff1681528151606081018352600280548252600380548551602082810282018101909752818152949580870195858201939092909160009084015b828210156106b1576000848152602090819020604080518082019091529084015473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900467ffffffffffffffff1681830152825260019092019101610643565b505050908252506002919091015467ffffffffffffffff166020909101529052919050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461075c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b84518110156109bf5760008582815181106107f5576107f56111c3565b602002602001015190506000600186601b8460000151856020015160405160008152602001604052604051610846949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015610868573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166108e0576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610945576040517fbbe15e7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526006602052604090205460ff166109a4576040517faaaa914100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250826109b08561161b565b945050508060010190506107d8565b5060045467ffffffffffffffff16821015610a06576040517f59fa4a9300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b610a15610a23565b610a1e81610aa4565b50565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610753565b3373ffffffffffffffffffffffffffffffffffffffff821603610b23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610753565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6040518060400160405280600063ffffffff168152602001610be260405180606001604052806000801916815260200160608152602001600067ffffffffffffffff1681525090565b905290565b6000815180845260005b81811015610c0d57602081850181015186830182015201610bf1565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610c5e6020830184610be7565b9392505050565b600060208284031215610c7757600080fd5b813567ffffffffffffffff811115610c8e57600080fd5b820160608185031215610c5e57600080fd5b6000602080835263ffffffff8451168184015280840151604080604086015260c0850182516060870152838301516060608088015281815180845260e0890191508683019350600092505b80831015610d34578351805173ffffffffffffffffffffffffffffffffffffffff16835287015167ffffffffffffffff1687830152928601926001929092019190840190610ceb565b50604085015167ffffffffffffffff811660a08a0152955098975050505050505050565b600060208284031215610d6a57600080fd5b81357fffffffffffffffffffffffffffffffff0000000000000000000000000000000081168114610c5e57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610dec57610dec610d9a565b60405290565b60405160a0810167ffffffffffffffff81118282101715610dec57610dec610d9a565b6040516060810167ffffffffffffffff81118282101715610dec57610dec610d9a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610e7f57610e7f610d9a565b604052919050565b600067ffffffffffffffff821115610ea157610ea1610d9a565b5060051b60200190565b67ffffffffffffffff81168114610a1e57600080fd5b8035610ecc81610eab565b919050565b600082601f830112610ee257600080fd5b81356020610ef7610ef283610e87565b610e38565b82815260069290921b84018101918181019086841115610f1657600080fd5b8286015b84811015610f555760408189031215610f335760008081fd5b610f3b610dc9565b813581528482013585820152835291830191604001610f1a565b509695505050505050565b60008060408385031215610f7357600080fd5b823567ffffffffffffffff80821115610f8b57600080fd5b818501915085601f830112610f9f57600080fd5b81356020610faf610ef283610e87565b82815260059290921b84018101918181019089841115610fce57600080fd5b8286015b848110156110e757803586811115610fe957600080fd5b87017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060a0828e038201121561101e57600080fd5b611026610df2565b8683013561103381610eab565b815260408301358981111561104757600080fd5b8301603f81018f1361105857600080fd5b878101358a81111561106c5761106c610d9a565b61107c8985601f84011601610e38565b93508084528f604082840101111561109357600080fd5b80604083018a8601376000898286010152505081878201526110b760608401610ec1565b60408201526110c860808401610ec1565b606082015260a092909201356080830152508352918301918301610fd2565b50965050860135925050808211156110fe57600080fd5b5061110b85828601610ed1565b9150509250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a1e57600080fd5b60006020828403121561114957600080fd5b8135610c5e81611115565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261118957600080fd5b83018035915067ffffffffffffffff8211156111a457600080fd5b6020019150600681901b36038213156111bc57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561120457600080fd5b8135610c5e81610eab565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156112515761125161120f565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000813561125181610eab565b813561129e81611115565b73ffffffffffffffffffffffffffffffffffffffff811690508154817fffffffffffffffffffffffff0000000000000000000000000000000000000000821617835560208401356112ee81610eab565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b16837fffffffff000000000000000000000000000000000000000000000000000000008416171784555050505050565b81358155600180820160208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe185360301811261137d57600080fd5b8401803567ffffffffffffffff81111561139657600080fd5b6020820191508060061b36038213156113ae57600080fd5b680100000000000000008111156113c7576113c7610d9a565b8254818455808210156113fc576000848152602081208381019083015b808210156113f857828255908701906113e4565b5050505b50600092835260208320925b8181101561142c5761141a8385611293565b92840192604092909201918401611408565b50505050506101a861144060408401611286565b6002830167ffffffffffffffff82167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008254161781555050565b600063ffffffff8083168181036114935761149361120f565b6001019392505050565b6000606082360312156114af57600080fd5b6114b7610e15565b8235815260208084013567ffffffffffffffff8111156114d657600080fd5b840136601f8201126114e757600080fd5b80356114f5610ef282610e87565b81815260069190911b8201830190838101903683111561151457600080fd5b928401925b8284101561156a57604084360312156115325760008081fd5b61153a610dc9565b843561154581611115565b81528486013561155481610eab565b8187015282526040939093019290840190611519565b8085870152505050505061158060408401610ec1565b604082015292915050565b81811015611608577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee08d8a030184528751868151168a528a810151848c8c01526115d7858c0182610be7565b828e015189168c8f01528983015189168a8d0152918701519a87019a909a529850968901969289019260010161158b565b50969d9c50505050505050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361164c5761164c61120f565b506001019056fea164736f6c6343000818000a", + ABI: "[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes16\",\"name\":\"subject\",\"type\":\"bytes16\"}],\"name\":\"AlreadyCursed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ConfigNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateOnchainPublicKey\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignerOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinSignersTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes16\",\"name\":\"subject\",\"type\":\"bytes16\"}],\"name\":\"NotCursed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OutOfOrderSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ThresholdNotMet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedSigner\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"version\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"rmnHomeContractConfigDigest\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"onchainPublicKey\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"nodeIndex\",\"type\":\"uint64\"}],\"internalType\":\"structRMNRemote.Signer[]\",\"name\":\"signers\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"minSigners\",\"type\":\"uint64\"}],\"internalType\":\"structRMNRemote.Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"structRMNRemote.VersionedConfig\",\"name\":\"versionedConfig\",\"type\":\"tuple\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes16[]\",\"name\":\"subjects\",\"type\":\"bytes16[]\"}],\"name\":\"Cursed\",\"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\":\"bytes16[]\",\"name\":\"subjects\",\"type\":\"bytes16[]\"}],\"name\":\"Uncursed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes16\",\"name\":\"subject\",\"type\":\"bytes16\"}],\"name\":\"curse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes16[]\",\"name\":\"subjects\",\"type\":\"bytes16[]\"}],\"name\":\"curse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainSelector\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCursedSubjects\",\"outputs\":[{\"internalType\":\"bytes16[]\",\"name\":\"subjects\",\"type\":\"bytes16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVersionedConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"version\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"rmnHomeContractConfigDigest\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"onchainPublicKey\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"nodeIndex\",\"type\":\"uint64\"}],\"internalType\":\"structRMNRemote.Signer[]\",\"name\":\"signers\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"minSigners\",\"type\":\"uint64\"}],\"internalType\":\"structRMNRemote.Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"internalType\":\"structRMNRemote.VersionedConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes16\",\"name\":\"subject\",\"type\":\"bytes16\"}],\"name\":\"isCursed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCursed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"rmnHomeContractConfigDigest\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"onchainPublicKey\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"nodeIndex\",\"type\":\"uint64\"}],\"internalType\":\"structRMNRemote.Signer[]\",\"name\":\"signers\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"minSigners\",\"type\":\"uint64\"}],\"internalType\":\"structRMNRemote.Config\",\"name\":\"newConfig\",\"type\":\"tuple\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes16\",\"name\":\"subject\",\"type\":\"bytes16\"}],\"name\":\"uncurse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes16[]\",\"name\":\"subjects\",\"type\":\"bytes16[]\"}],\"name\":\"uncurse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"offrampAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"onRampAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"minSeqNr\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxSeqNr\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"merkleRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structInternal.MerkleRoot[]\",\"name\":\"destLaneUpdates\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structIRMNV2.Signature[]\",\"name\":\"signatures\",\"type\":\"tuple[]\"}],\"name\":\"verify\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60a06040523480156200001157600080fd5b50604051620022df380380620022df83398101604081905262000034916200017e565b33806000816200008b5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000be57620000be81620000d3565b5050506001600160401b0316608052620001b0565b336001600160a01b038216036200012d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000082565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000602082840312156200019157600080fd5b81516001600160401b0381168114620001a957600080fd5b9392505050565b60805161210c620001d3600039600081816101f00152610a5d015261210c6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a9089e116100975780639a19b329116100665780639a19b32914610242578063d881e09214610255578063f2fde38b1461026a578063f8bb876e1461027d57600080fd5b806370a9089e146101c757806379ba5097146101da5780637e72ffa6146101e25780638da5cb5b1461021a57600080fd5b80632cbc26bb116100d35780632cbc26bb14610176578063397796f71461019957806362eed415146101a15780636d2d3993146101b457600080fd5b8063181f5a77146100fa578063198f0f771461014c5780631add205f14610161575b600080fd5b6101366040518060400160405280601381526020017f524d4e52656d6f746520312e362e302d6465760000000000000000000000000081525081565b6040516101439190611535565b60405180910390f35b61015f61015a36600461154f565b610290565b005b6101696106c1565b604051610143919061158a565b610189610184366004611677565b6107a7565b6040519015158152602001610143565b610189610849565b61015f6101af366004611677565b610901565b61015f6101c2366004611677565b610975565b61015f6101d5366004611875565b6109e5565b61015f610d37565b60405167ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610143565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610143565b61015f610250366004611a46565b610e39565b61025d6110cf565b6040516101439190611ade565b61015f610278366004611b44565b61115d565b61015f61028b366004611a46565b611171565b61029861130b565b60015b6102a86020830183611b61565b9050811015610378576102be6020830183611b61565b828181106102ce576102ce611bd0565b90506040020160200160208101906102e69190611bff565b67ffffffffffffffff166102fd6020840184611b61565b610308600185611c4b565b81811061031757610317611bd0565b905060400201602001602081019061032f9190611bff565b67ffffffffffffffff1610610370576040517f4485151700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60010161029b565b506103866020820182611b61565b90506103986060830160408401611bff565b67ffffffffffffffff1611156103da576040517ffba0d9e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025b6001810154156104d65760018082018054600892600092916103ff9190611c4b565b8154811061040f5761040f611bd0565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556001810180548061047957610479611c5e565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffff000000000000000000000000000000000000000000000000000000001690550190556103dd565b5060005b6104e76020830183611b61565b905081101561061c57600860006105016020850185611b61565b8481811061051157610511611bd0565b6105279260206040909202019081019150611b44565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610588576040517f28cae27d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016008600061059b6020860186611b61565b858181106105ab576105ab611bd0565b6105c19260206040909202019081019150611b44565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016104da565b5080600261062a8282611d46565b5050600580546000919082906106459063ffffffff16611e81565b91906101000a81548163ffffffff021916908363ffffffff160217905590507f6cc65868ae41a007e6c3ed18ce591c123dd4e5864b421888c68ce92dae98cea460405180604001604052808363ffffffff168152602001846106a690611ea4565b90526040516106b5919061158a565b60405180910390a15050565b6106c9611483565b60408051808201825260055463ffffffff1681528151606081018352600280548252600380548551602082810282018101909752818152949580870195858201939092909160009084015b82821015610782576000848152602090819020604080518082019091529084015473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900467ffffffffffffffff1681830152825260019092019101610714565b505050908252506002919091015467ffffffffffffffff166020909101529052919050565b60065460009081036107bb57506000919050565b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000821660009081526007602052604090205415158061084357507f010000000000000000000000000000010000000000000000000000000000000060005260076020527f70b766b11586b6b505ed3893938b0cc6c6c98bd6f65e969ac311168d34e4f9e25415155b92915050565b600654600090810361085b5750600090565b7f010000000000000000000000000000000000000000000000000000000000000060005260076020527f7dde556524061d0ce70b736a6e842a48e4927608bf87fd31432ced12a03ffeb8541515806108fc57507f010000000000000000000000000000010000000000000000000000000000000060005260076020527f70b766b11586b6b505ed3893938b0cc6c6c98bd6f65e969ac311168d34e4f9e25415155b905090565b60408051600180825281830190925260009160208083019080368337019050509050818160008151811061093757610937611bd0565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000009092166020928302919091019091015261097181611171565b5050565b6040805160018082528183019092526000916020808301908036833701905050905081816000815181106109ab576109ab611bd0565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000009092166020928302919091019091015261097181610e39565b60055463ffffffff16600003610a27576040517face124bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f9651943783dbf81935a60e98f218a9d9b5b28823fb2228bbd91320d632facf536040518060c001604052804681526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff168152602001600260000154815260200185815250604051602001610ae3929190611f92565b60405160208183030381529060405280519060200120905060008060005b8451811015610ce8576000858281518110610b1e57610b1e611bd0565b602002602001015190506000600186601b8460000151856020015160405160008152602001604052604051610b6f949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015610b91573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610c09576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610c6e576040517fbbe15e7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604090205460ff16610ccd576040517faaaa914100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b925082610cd9856120c7565b94505050806001019050610b01565b5060045467ffffffffffffffff16821015610d2f576040517f59fa4a9300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610dbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610e4161130b565b60005b8151811015611094576000828281518110610e6157610e61611bd0565b6020908102919091018101517fffffffffffffffffffffffffffffffff00000000000000000000000000000000811660009081526007909252604082205490925090819003610f00576040517f73281fa10000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffff0000000000000000000000000000000083166004820152602401610db4565b6000610f0d600183611c4b565b60068054919250600091610f2390600190611c4b565b81548110610f3357610f33611bd0565b90600052602060002090600291828204019190066010029054906101000a900460801b90508060068381548110610f6c57610f6c611bd0565b90600052602060002090600291828204019190066010026101000a8154816fffffffffffffffffffffffffffffffff021916908360801c02179055508260076000836fffffffffffffffffffffffffffffffff19166fffffffffffffffffffffffffffffffff19168152602001908152602001600020819055506006805480610ff757610ff7611c5e565b6000828152602080822060027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940193840401805460018086166010026101000a6fffffffffffffffffffffffffffffffff0219909116909155929093557fffffffffffffffffffffffffffffffff000000000000000000000000000000009690961686526007909152604085209490945550505001610e44565b507f0676e709c9cc74fa0519fd78f7c33be0f1b2b0bae0507c724aef7229379c6ba1816040516110c49190611ade565b60405180910390a150565b6060600680548060200260200160405190810160405280929190818152602001828054801561115357602002820191906000526020600020906000905b82829054906101000a900460801b6fffffffffffffffffffffffffffffffff191681526020019060100190602082600f0104928301926001038202915080841161110c5790505b5050505050905090565b61116561130b565b61116e8161138e565b50565b61117961130b565b60005b81518110156112db57600082828151811061119957611199611bd0565b6020026020010151905060076000826fffffffffffffffffffffffffffffffff19166fffffffffffffffffffffffffffffffff191681526020019081526020016000205460001461123a576040517f19d5c79b0000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffff0000000000000000000000000000000082166004820152602401610db4565b60068054600180820183557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f600283040180546fffffffffffffffffffffffffffffffff9383166010026101000a9384021916608086901c939093029290921790915590547fffffffffffffffffffffffffffffffff000000000000000000000000000000009092166000908152600760205260409020919091550161117c565b507f1716e663a90a76d3b6c7e5f680673d1b051454c19c627e184c8daf28f3104f74816040516110c49190611ade565b60005473ffffffffffffffffffffffffffffffffffffffff16331461138c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610db4565b565b3373ffffffffffffffffffffffffffffffffffffffff82160361140d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610db4565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6040518060400160405280600063ffffffff1681526020016114cc60405180606001604052806000801916815260200160608152602001600067ffffffffffffffff1681525090565b905290565b6000815180845260005b818110156114f7576020818501810151868301820152016114db565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061154860208301846114d1565b9392505050565b60006020828403121561156157600080fd5b813567ffffffffffffffff81111561157857600080fd5b82016060818503121561154857600080fd5b6000602080835263ffffffff8451168184015280840151604080604086015260c0850182516060870152838301516060608088015281815180845260e0890191508683019350600092505b8083101561161e578351805173ffffffffffffffffffffffffffffffffffffffff16835287015167ffffffffffffffff16878301529286019260019290920191908401906115d5565b50604085015167ffffffffffffffff811660a08a0152955098975050505050505050565b80357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116811461167257600080fd5b919050565b60006020828403121561168957600080fd5b61154882611642565b73ffffffffffffffffffffffffffffffffffffffff8116811461116e57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611706576117066116b4565b60405290565b60405160a0810167ffffffffffffffff81118282101715611706576117066116b4565b6040516060810167ffffffffffffffff81118282101715611706576117066116b4565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611799576117996116b4565b604052919050565b600067ffffffffffffffff8211156117bb576117bb6116b4565b5060051b60200190565b67ffffffffffffffff8116811461116e57600080fd5b8035611672816117c5565b600082601f8301126117f757600080fd5b8135602061180c611807836117a1565b611752565b82815260069290921b8401810191818101908684111561182b57600080fd5b8286015b8481101561186a57604081890312156118485760008081fd5b6118506116e3565b81358152848201358582015283529183019160400161182f565b509695505050505050565b60008060006060848603121561188a57600080fd5b6118948435611692565b83359250602084013567ffffffffffffffff808211156118b357600080fd5b818601915086601f8301126118c757600080fd5b6118d461180783356117a1565b82358082526020808301929160051b850101898111156118f357600080fd5b602085015b81811015611a1557848135111561190e57600080fd5b803586017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060a081838f0301121561194557600080fd5b61194d61170c565b602083013561195b816117c5565b815260408301358881111561196f57600080fd5b8301603f81018f1361198057600080fd5b602081013589811115611995576119956116b4565b6119a6602085601f84011601611752565b93508084528f60408284010111156119bd57600080fd5b8060408301602086013760006020828601015250508160208201526119e4606084016117db565b60408201526119f5608084016117db565b606082015260a092909201356080830152508452602093840193016118f8565b5090955050506040860135915080821115611a2f57600080fd5b50611a3c868287016117e6565b9150509250925092565b60006020808385031215611a5957600080fd5b823567ffffffffffffffff811115611a7057600080fd5b8301601f81018513611a8157600080fd5b8035611a8f611807826117a1565b81815260059190911b82018301908381019087831115611aae57600080fd5b928401925b82841015611ad357611ac484611642565b82529284019290840190611ab3565b979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611b385783517fffffffffffffffffffffffffffffffff000000000000000000000000000000001683529284019291840191600101611afa565b50909695505050505050565b600060208284031215611b5657600080fd5b813561154881611692565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b9657600080fd5b83018035915067ffffffffffffffff821115611bb157600080fd5b6020019150600681901b3603821315611bc957600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611c1157600080fd5b8135611548816117c5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561084357610843611c1c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60008135610843816117c5565b8135611ca581611692565b73ffffffffffffffffffffffffffffffffffffffff811690508154817fffffffffffffffffffffffff000000000000000000000000000000000000000082161783556020840135611cf5816117c5565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b16837fffffffff000000000000000000000000000000000000000000000000000000008416171784555050505050565b81358155600180820160208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1853603018112611d8457600080fd5b8401803567ffffffffffffffff811115611d9d57600080fd5b6020820191508060061b3603821315611db557600080fd5b68010000000000000000811115611dce57611dce6116b4565b825481845580821015611e03576000848152602081208381019083015b80821015611dff5782825590870190611deb565b5050505b50600092835260208320925b81811015611e3357611e218385611c9a565b92840192604092909201918401611e0f565b5050505050610971611e4760408401611c8d565b6002830167ffffffffffffffff82167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008254161781555050565b600063ffffffff808316818103611e9a57611e9a611c1c565b6001019392505050565b600060608236031215611eb657600080fd5b611ebe61172f565b8235815260208084013567ffffffffffffffff811115611edd57600080fd5b840136601f820112611eee57600080fd5b8035611efc611807826117a1565b81815260069190911b82018301908381019036831115611f1b57600080fd5b928401925b82841015611f715760408436031215611f395760008081fd5b611f416116e3565b8435611f4c81611692565b815284860135611f5b816117c5565b8187015282526040939093019290840190611f20565b80858701525050505050611f87604084016117db565b604082015292915050565b60006040848352602060408185015261010084018551604086015281860151606067ffffffffffffffff808316606089015260408901519250608073ffffffffffffffffffffffffffffffffffffffff80851660808b015260608b0151945060a081861660a08c015260808c015160c08c015260a08c0151955060c060e08c015286915085518088526101209750878c019250878160051b8d01019750888701965060005b818110156120b4577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee08d8a030184528751868151168a528a810151848c8c0152612083858c01826114d1565b828e015189168c8f01528983015189168a8d0152918701519a87019a909a5298509689019692890192600101612037565b50969d9c50505050505050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036120f8576120f8611c1c565b506001019056fea164736f6c6343000818000a", } var RMNRemoteABI = RMNRemoteMetaData.ABI @@ -200,6 +200,50 @@ func (_RMNRemote *RMNRemoteTransactorRaw) Transact(opts *bind.TransactOpts, meth return _RMNRemote.Contract.contract.Transact(opts, method, params...) } +func (_RMNRemote *RMNRemoteCaller) GetChainSelector(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _RMNRemote.contract.Call(opts, &out, "getChainSelector") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +func (_RMNRemote *RMNRemoteSession) GetChainSelector() (uint64, error) { + return _RMNRemote.Contract.GetChainSelector(&_RMNRemote.CallOpts) +} + +func (_RMNRemote *RMNRemoteCallerSession) GetChainSelector() (uint64, error) { + return _RMNRemote.Contract.GetChainSelector(&_RMNRemote.CallOpts) +} + +func (_RMNRemote *RMNRemoteCaller) GetCursedSubjects(opts *bind.CallOpts) ([][16]byte, error) { + var out []interface{} + err := _RMNRemote.contract.Call(opts, &out, "getCursedSubjects") + + if err != nil { + return *new([][16]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][16]byte)).(*[][16]byte) + + return out0, err + +} + +func (_RMNRemote *RMNRemoteSession) GetCursedSubjects() ([][16]byte, error) { + return _RMNRemote.Contract.GetCursedSubjects(&_RMNRemote.CallOpts) +} + +func (_RMNRemote *RMNRemoteCallerSession) GetCursedSubjects() ([][16]byte, error) { + return _RMNRemote.Contract.GetCursedSubjects(&_RMNRemote.CallOpts) +} + func (_RMNRemote *RMNRemoteCaller) GetVersionedConfig(opts *bind.CallOpts) (RMNRemoteVersionedConfig, error) { var out []interface{} err := _RMNRemote.contract.Call(opts, &out, "getVersionedConfig") @@ -310,9 +354,9 @@ func (_RMNRemote *RMNRemoteCallerSession) TypeAndVersion() (string, error) { return _RMNRemote.Contract.TypeAndVersion(&_RMNRemote.CallOpts) } -func (_RMNRemote *RMNRemoteCaller) Verify(opts *bind.CallOpts, destLaneUpdates []InternalMerkleRoot, signatures []IRMNV2Signature) error { +func (_RMNRemote *RMNRemoteCaller) Verify(opts *bind.CallOpts, offrampAddress common.Address, destLaneUpdates []InternalMerkleRoot, signatures []IRMNV2Signature) error { var out []interface{} - err := _RMNRemote.contract.Call(opts, &out, "verify", destLaneUpdates, signatures) + err := _RMNRemote.contract.Call(opts, &out, "verify", offrampAddress, destLaneUpdates, signatures) if err != nil { return err @@ -322,12 +366,12 @@ func (_RMNRemote *RMNRemoteCaller) Verify(opts *bind.CallOpts, destLaneUpdates [ } -func (_RMNRemote *RMNRemoteSession) Verify(destLaneUpdates []InternalMerkleRoot, signatures []IRMNV2Signature) error { - return _RMNRemote.Contract.Verify(&_RMNRemote.CallOpts, destLaneUpdates, signatures) +func (_RMNRemote *RMNRemoteSession) Verify(offrampAddress common.Address, destLaneUpdates []InternalMerkleRoot, signatures []IRMNV2Signature) error { + return _RMNRemote.Contract.Verify(&_RMNRemote.CallOpts, offrampAddress, destLaneUpdates, signatures) } -func (_RMNRemote *RMNRemoteCallerSession) Verify(destLaneUpdates []InternalMerkleRoot, signatures []IRMNV2Signature) error { - return _RMNRemote.Contract.Verify(&_RMNRemote.CallOpts, destLaneUpdates, signatures) +func (_RMNRemote *RMNRemoteCallerSession) Verify(offrampAddress common.Address, destLaneUpdates []InternalMerkleRoot, signatures []IRMNV2Signature) error { + return _RMNRemote.Contract.Verify(&_RMNRemote.CallOpts, offrampAddress, destLaneUpdates, signatures) } func (_RMNRemote *RMNRemoteTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { @@ -342,28 +386,40 @@ func (_RMNRemote *RMNRemoteTransactorSession) AcceptOwnership() (*types.Transact return _RMNRemote.Contract.AcceptOwnership(&_RMNRemote.TransactOpts) } -func (_RMNRemote *RMNRemoteTransactor) SetConfig(opts *bind.TransactOpts, newConfig RMNRemoteConfig) (*types.Transaction, error) { - return _RMNRemote.contract.Transact(opts, "setConfig", newConfig) +func (_RMNRemote *RMNRemoteTransactor) Curse(opts *bind.TransactOpts, subject [16]byte) (*types.Transaction, error) { + return _RMNRemote.contract.Transact(opts, "curse", subject) } -func (_RMNRemote *RMNRemoteSession) SetConfig(newConfig RMNRemoteConfig) (*types.Transaction, error) { - return _RMNRemote.Contract.SetConfig(&_RMNRemote.TransactOpts, newConfig) +func (_RMNRemote *RMNRemoteSession) Curse(subject [16]byte) (*types.Transaction, error) { + return _RMNRemote.Contract.Curse(&_RMNRemote.TransactOpts, subject) } -func (_RMNRemote *RMNRemoteTransactorSession) SetConfig(newConfig RMNRemoteConfig) (*types.Transaction, error) { - return _RMNRemote.Contract.SetConfig(&_RMNRemote.TransactOpts, newConfig) +func (_RMNRemote *RMNRemoteTransactorSession) Curse(subject [16]byte) (*types.Transaction, error) { + return _RMNRemote.Contract.Curse(&_RMNRemote.TransactOpts, subject) } -func (_RMNRemote *RMNRemoteTransactor) Test(opts *bind.TransactOpts) (*types.Transaction, error) { - return _RMNRemote.contract.Transact(opts, "test") +func (_RMNRemote *RMNRemoteTransactor) Curse0(opts *bind.TransactOpts, subjects [][16]byte) (*types.Transaction, error) { + return _RMNRemote.contract.Transact(opts, "curse0", subjects) } -func (_RMNRemote *RMNRemoteSession) Test() (*types.Transaction, error) { - return _RMNRemote.Contract.Test(&_RMNRemote.TransactOpts) +func (_RMNRemote *RMNRemoteSession) Curse0(subjects [][16]byte) (*types.Transaction, error) { + return _RMNRemote.Contract.Curse0(&_RMNRemote.TransactOpts, subjects) } -func (_RMNRemote *RMNRemoteTransactorSession) Test() (*types.Transaction, error) { - return _RMNRemote.Contract.Test(&_RMNRemote.TransactOpts) +func (_RMNRemote *RMNRemoteTransactorSession) Curse0(subjects [][16]byte) (*types.Transaction, error) { + return _RMNRemote.Contract.Curse0(&_RMNRemote.TransactOpts, subjects) +} + +func (_RMNRemote *RMNRemoteTransactor) SetConfig(opts *bind.TransactOpts, newConfig RMNRemoteConfig) (*types.Transaction, error) { + return _RMNRemote.contract.Transact(opts, "setConfig", newConfig) +} + +func (_RMNRemote *RMNRemoteSession) SetConfig(newConfig RMNRemoteConfig) (*types.Transaction, error) { + return _RMNRemote.Contract.SetConfig(&_RMNRemote.TransactOpts, newConfig) +} + +func (_RMNRemote *RMNRemoteTransactorSession) SetConfig(newConfig RMNRemoteConfig) (*types.Transaction, error) { + return _RMNRemote.Contract.SetConfig(&_RMNRemote.TransactOpts, newConfig) } func (_RMNRemote *RMNRemoteTransactor) TransferOwnership(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { @@ -378,6 +434,30 @@ func (_RMNRemote *RMNRemoteTransactorSession) TransferOwnership(to common.Addres return _RMNRemote.Contract.TransferOwnership(&_RMNRemote.TransactOpts, to) } +func (_RMNRemote *RMNRemoteTransactor) Uncurse(opts *bind.TransactOpts, subject [16]byte) (*types.Transaction, error) { + return _RMNRemote.contract.Transact(opts, "uncurse", subject) +} + +func (_RMNRemote *RMNRemoteSession) Uncurse(subject [16]byte) (*types.Transaction, error) { + return _RMNRemote.Contract.Uncurse(&_RMNRemote.TransactOpts, subject) +} + +func (_RMNRemote *RMNRemoteTransactorSession) Uncurse(subject [16]byte) (*types.Transaction, error) { + return _RMNRemote.Contract.Uncurse(&_RMNRemote.TransactOpts, subject) +} + +func (_RMNRemote *RMNRemoteTransactor) Uncurse0(opts *bind.TransactOpts, subjects [][16]byte) (*types.Transaction, error) { + return _RMNRemote.contract.Transact(opts, "uncurse0", subjects) +} + +func (_RMNRemote *RMNRemoteSession) Uncurse0(subjects [][16]byte) (*types.Transaction, error) { + return _RMNRemote.Contract.Uncurse0(&_RMNRemote.TransactOpts, subjects) +} + +func (_RMNRemote *RMNRemoteTransactorSession) Uncurse0(subjects [][16]byte) (*types.Transaction, error) { + return _RMNRemote.Contract.Uncurse0(&_RMNRemote.TransactOpts, subjects) +} + type RMNRemoteConfigSetIterator struct { Event *RMNRemoteConfigSet @@ -495,6 +575,123 @@ func (_RMNRemote *RMNRemoteFilterer) ParseConfigSet(log types.Log) (*RMNRemoteCo return event, nil } +type RMNRemoteCursedIterator struct { + Event *RMNRemoteCursed + + contract *bind.BoundContract + event string + + logs chan types.Log + sub ethereum.Subscription + done bool + fail error +} + +func (it *RMNRemoteCursedIterator) Next() bool { + + if it.fail != nil { + return false + } + + if it.done { + select { + case log := <-it.logs: + it.Event = new(RMNRemoteCursed) + 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(RMNRemoteCursed) + 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 *RMNRemoteCursedIterator) Error() error { + return it.fail +} + +func (it *RMNRemoteCursedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +type RMNRemoteCursed struct { + Subjects [][16]byte + Raw types.Log +} + +func (_RMNRemote *RMNRemoteFilterer) FilterCursed(opts *bind.FilterOpts) (*RMNRemoteCursedIterator, error) { + + logs, sub, err := _RMNRemote.contract.FilterLogs(opts, "Cursed") + if err != nil { + return nil, err + } + return &RMNRemoteCursedIterator{contract: _RMNRemote.contract, event: "Cursed", logs: logs, sub: sub}, nil +} + +func (_RMNRemote *RMNRemoteFilterer) WatchCursed(opts *bind.WatchOpts, sink chan<- *RMNRemoteCursed) (event.Subscription, error) { + + logs, sub, err := _RMNRemote.contract.WatchLogs(opts, "Cursed") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + + event := new(RMNRemoteCursed) + if err := _RMNRemote.contract.UnpackLog(event, "Cursed", 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 (_RMNRemote *RMNRemoteFilterer) ParseCursed(log types.Log) (*RMNRemoteCursed, error) { + event := new(RMNRemoteCursed) + if err := _RMNRemote.contract.UnpackLog(event, "Cursed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + type RMNRemoteOwnershipTransferRequestedIterator struct { Event *RMNRemoteOwnershipTransferRequested @@ -767,14 +964,135 @@ func (_RMNRemote *RMNRemoteFilterer) ParseOwnershipTransferred(log types.Log) (* return event, nil } +type RMNRemoteUncursedIterator struct { + Event *RMNRemoteUncursed + + contract *bind.BoundContract + event string + + logs chan types.Log + sub ethereum.Subscription + done bool + fail error +} + +func (it *RMNRemoteUncursedIterator) Next() bool { + + if it.fail != nil { + return false + } + + if it.done { + select { + case log := <-it.logs: + it.Event = new(RMNRemoteUncursed) + 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(RMNRemoteUncursed) + 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 *RMNRemoteUncursedIterator) Error() error { + return it.fail +} + +func (it *RMNRemoteUncursedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +type RMNRemoteUncursed struct { + Subjects [][16]byte + Raw types.Log +} + +func (_RMNRemote *RMNRemoteFilterer) FilterUncursed(opts *bind.FilterOpts) (*RMNRemoteUncursedIterator, error) { + + logs, sub, err := _RMNRemote.contract.FilterLogs(opts, "Uncursed") + if err != nil { + return nil, err + } + return &RMNRemoteUncursedIterator{contract: _RMNRemote.contract, event: "Uncursed", logs: logs, sub: sub}, nil +} + +func (_RMNRemote *RMNRemoteFilterer) WatchUncursed(opts *bind.WatchOpts, sink chan<- *RMNRemoteUncursed) (event.Subscription, error) { + + logs, sub, err := _RMNRemote.contract.WatchLogs(opts, "Uncursed") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + + event := new(RMNRemoteUncursed) + if err := _RMNRemote.contract.UnpackLog(event, "Uncursed", 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 (_RMNRemote *RMNRemoteFilterer) ParseUncursed(log types.Log) (*RMNRemoteUncursed, error) { + event := new(RMNRemoteUncursed) + if err := _RMNRemote.contract.UnpackLog(event, "Uncursed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + func (_RMNRemote *RMNRemote) ParseLog(log types.Log) (generated.AbigenLog, error) { switch log.Topics[0] { case _RMNRemote.abi.Events["ConfigSet"].ID: return _RMNRemote.ParseConfigSet(log) + case _RMNRemote.abi.Events["Cursed"].ID: + return _RMNRemote.ParseCursed(log) case _RMNRemote.abi.Events["OwnershipTransferRequested"].ID: return _RMNRemote.ParseOwnershipTransferRequested(log) case _RMNRemote.abi.Events["OwnershipTransferred"].ID: return _RMNRemote.ParseOwnershipTransferred(log) + case _RMNRemote.abi.Events["Uncursed"].ID: + return _RMNRemote.ParseUncursed(log) default: return nil, fmt.Errorf("abigen wrapper received unknown log topic: %v", log.Topics[0]) @@ -785,6 +1103,10 @@ func (RMNRemoteConfigSet) Topic() common.Hash { return common.HexToHash("0x6cc65868ae41a007e6c3ed18ce591c123dd4e5864b421888c68ce92dae98cea4") } +func (RMNRemoteCursed) Topic() common.Hash { + return common.HexToHash("0x1716e663a90a76d3b6c7e5f680673d1b051454c19c627e184c8daf28f3104f74") +} + func (RMNRemoteOwnershipTransferRequested) Topic() common.Hash { return common.HexToHash("0xed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278") } @@ -793,11 +1115,19 @@ func (RMNRemoteOwnershipTransferred) Topic() common.Hash { return common.HexToHash("0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0") } +func (RMNRemoteUncursed) Topic() common.Hash { + return common.HexToHash("0x0676e709c9cc74fa0519fd78f7c33be0f1b2b0bae0507c724aef7229379c6ba1") +} + func (_RMNRemote *RMNRemote) Address() common.Address { return _RMNRemote.address } type RMNRemoteInterface interface { + GetChainSelector(opts *bind.CallOpts) (uint64, error) + + GetCursedSubjects(opts *bind.CallOpts) ([][16]byte, error) + GetVersionedConfig(opts *bind.CallOpts) (RMNRemoteVersionedConfig, error) IsCursed(opts *bind.CallOpts, subject [16]byte) (bool, error) @@ -808,22 +1138,34 @@ type RMNRemoteInterface interface { TypeAndVersion(opts *bind.CallOpts) (string, error) - Verify(opts *bind.CallOpts, destLaneUpdates []InternalMerkleRoot, signatures []IRMNV2Signature) error + Verify(opts *bind.CallOpts, offrampAddress common.Address, destLaneUpdates []InternalMerkleRoot, signatures []IRMNV2Signature) error AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) - SetConfig(opts *bind.TransactOpts, newConfig RMNRemoteConfig) (*types.Transaction, error) + Curse(opts *bind.TransactOpts, subject [16]byte) (*types.Transaction, error) - Test(opts *bind.TransactOpts) (*types.Transaction, error) + Curse0(opts *bind.TransactOpts, subjects [][16]byte) (*types.Transaction, error) + + SetConfig(opts *bind.TransactOpts, newConfig RMNRemoteConfig) (*types.Transaction, error) TransferOwnership(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) + Uncurse(opts *bind.TransactOpts, subject [16]byte) (*types.Transaction, error) + + Uncurse0(opts *bind.TransactOpts, subjects [][16]byte) (*types.Transaction, error) + FilterConfigSet(opts *bind.FilterOpts) (*RMNRemoteConfigSetIterator, error) WatchConfigSet(opts *bind.WatchOpts, sink chan<- *RMNRemoteConfigSet) (event.Subscription, error) ParseConfigSet(log types.Log) (*RMNRemoteConfigSet, error) + FilterCursed(opts *bind.FilterOpts) (*RMNRemoteCursedIterator, error) + + WatchCursed(opts *bind.WatchOpts, sink chan<- *RMNRemoteCursed) (event.Subscription, error) + + ParseCursed(log types.Log) (*RMNRemoteCursed, error) + FilterOwnershipTransferRequested(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*RMNRemoteOwnershipTransferRequestedIterator, error) WatchOwnershipTransferRequested(opts *bind.WatchOpts, sink chan<- *RMNRemoteOwnershipTransferRequested, from []common.Address, to []common.Address) (event.Subscription, error) @@ -836,6 +1178,12 @@ type RMNRemoteInterface interface { ParseOwnershipTransferred(log types.Log) (*RMNRemoteOwnershipTransferred, error) + FilterUncursed(opts *bind.FilterOpts) (*RMNRemoteUncursedIterator, error) + + WatchUncursed(opts *bind.WatchOpts, sink chan<- *RMNRemoteUncursed) (event.Subscription, error) + + ParseUncursed(log types.Log) (*RMNRemoteUncursed, error) + ParseLog(log types.Log) (generated.AbigenLog, error) Address() common.Address diff --git a/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt index cdcd337b8e..ff7f8d498b 100644 --- a/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -23,7 +23,7 @@ multi_aggregate_rate_limiter: ../../../contracts/solc/v0.8.24/MultiAggregateRate multi_ocr3_helper: ../../../contracts/solc/v0.8.24/MultiOCR3Helper/MultiOCR3Helper.abi ../../../contracts/solc/v0.8.24/MultiOCR3Helper/MultiOCR3Helper.bin 6b56e0114a4d50797d30a34aecc2641ef340451d0c3fcb9d729bba4df2435122 nonce_manager: ../../../contracts/solc/v0.8.24/NonceManager/NonceManager.abi ../../../contracts/solc/v0.8.24/NonceManager/NonceManager.bin 6f64e1083b356c06ee66b9138e398b9c97a4cd3e8c9ec38cf3010cebc79af536 ocr3_config_encoder: ../../../contracts/solc/v0.8.24/IOCR3ConfigEncoder/IOCR3ConfigEncoder.abi ../../../contracts/solc/v0.8.24/IOCR3ConfigEncoder/IOCR3ConfigEncoder.bin 9254b35a86f00fde7b7193a033ca58f6521a66e87b9cf9da6ce5660082e79f5d -offramp: ../../../contracts/solc/v0.8.24/OffRamp/OffRamp.abi ../../../contracts/solc/v0.8.24/OffRamp/OffRamp.bin 56945d1dff7a37553ad6db6b0701159af4ad2d85fb49acf368f66881c382f08a +offramp: ../../../contracts/solc/v0.8.24/OffRamp/OffRamp.abi ../../../contracts/solc/v0.8.24/OffRamp/OffRamp.bin 32c2112764f31939ab47dd1df1a21aec59a9f5a0c037b203fda6a1b43a56eca9 onramp: ../../../contracts/solc/v0.8.24/OnRamp/OnRamp.abi ../../../contracts/solc/v0.8.24/OnRamp/OnRamp.bin 594439983f963f4158f9c5009dee7cba4ee56be61900bb1d5b9108eaeac3d6a6 ping_pong_demo: ../../../contracts/solc/v0.8.24/PingPongDemo/PingPongDemo.abi ../../../contracts/solc/v0.8.24/PingPongDemo/PingPongDemo.bin c1c2f8a65c7ffd971899cae7fe62f2da57d09e936151e2b92163c4bebe699d6b price_registry: ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.abi ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.bin e7781d600c1bb7aa4620106af7f6e146a109b97f4cb6a7d06c9e15773340ecb2 @@ -31,7 +31,7 @@ registry_module_owner_custom: ../../../contracts/solc/v0.8.24/RegistryModuleOwne report_codec: ../../../contracts/solc/v0.8.24/ReportCodec/ReportCodec.abi ../../../contracts/solc/v0.8.24/ReportCodec/ReportCodec.bin cb9183d8d8ebbc1e64bc0d4c9525264e8b71de3e8d3622962dbada53970ecfc8 rmn_contract: ../../../contracts/solc/v0.8.24/RMN/RMN.abi ../../../contracts/solc/v0.8.24/RMN/RMN.bin 8b45b0fb08631c6b582fd3c0b4052a79cc2b4e091e6286af1ab131bef63661f9 rmn_proxy_contract: ../../../contracts/solc/v0.8.24/ARMProxy/ARMProxy.abi ../../../contracts/solc/v0.8.24/ARMProxy/ARMProxy.bin b048d8e752e3c41113ebb305c1efa06737ad36b4907b93e627fb0a3113023454 -rmn_remote: ../../../contracts/solc/v0.8.24/RMNRemote/RMNRemote.abi ../../../contracts/solc/v0.8.24/RMNRemote/RMNRemote.bin c58cc9f0102413373f45882e87d69b4bf9a4f4516ecfa866584618a1384a8416 +rmn_remote: ../../../contracts/solc/v0.8.24/RMNRemote/RMNRemote.abi ../../../contracts/solc/v0.8.24/RMNRemote/RMNRemote.bin cba6033c961a87fb84839e5c6d96fff845ab57ac90ec098e970fcebde0985ee3 router: ../../../contracts/solc/v0.8.24/Router/Router.abi ../../../contracts/solc/v0.8.24/Router/Router.bin 2e4f0a7826c8abb49d882bb49fc5ff20a186dbd3137624b9097ffed903ae4888 self_funded_ping_pong: ../../../contracts/solc/v0.8.24/SelfFundedPingPong/SelfFundedPingPong.abi ../../../contracts/solc/v0.8.24/SelfFundedPingPong/SelfFundedPingPong.bin 8ea5d75dbc3f8afd90d22c4a665a94e02892259cd16520c1c6b4cf0dc80c9148 token_admin_registry: ../../../contracts/solc/v0.8.24/TokenAdminRegistry/TokenAdminRegistry.abi ../../../contracts/solc/v0.8.24/TokenAdminRegistry/TokenAdminRegistry.bin 942be7d1681ac102e0615bee13f76838ebb0b261697cf1270d2bf82c12e57aeb