From 049cc0334b0efa279eb145c2ec2c9994ded0b0c2 Mon Sep 17 00:00:00 2001 From: Makram Kamaleddine Date: Thu, 20 Jun 2024 21:09:09 +0300 Subject: [PATCH] add bootstrap nodes to ocr config --- contracts/gas-snapshots/ccip.gas-snapshot | 87 ++++++++++--------- .../CCIPCapabilityConfiguration.sol | 9 ++ .../CCIPCapabilityConfiguration.t.sol | 71 +++++++++++++++ .../ccip_capability_configuration.go | 5 +- ...rapper-dependency-versions-do-not-edit.txt | 2 +- 5 files changed, 128 insertions(+), 46 deletions(-) diff --git a/contracts/gas-snapshots/ccip.gas-snapshot b/contracts/gas-snapshots/ccip.gas-snapshot index 38e8424e6e..c35e474e16 100644 --- a/contracts/gas-snapshots/ccip.gas-snapshot +++ b/contracts/gas-snapshots/ccip.gas-snapshot @@ -34,55 +34,56 @@ BurnWithFromMintTokenPool_lockOrBurn:test_ChainNotAllowed_Revert() (gas: 28789) BurnWithFromMintTokenPool_lockOrBurn:test_PoolBurnRevertNotHealthy_Revert() (gas: 55208) BurnWithFromMintTokenPool_lockOrBurn:test_PoolBurn_Success() (gas: 243659) BurnWithFromMintTokenPool_lockOrBurn:test_Setup_Success() (gas: 24260) -CCIPCapabilityConfigurationSetup:test_getCapabilityConfiguration_Success() (gas: 9539) -CCIPCapabilityConfiguration_ConfigStateMachine:test__computeConfigDigest_Success() (gas: 60232) -CCIPCapabilityConfiguration_ConfigStateMachine:test__computeNewConfigWithMeta_InitToRunning_Success() (gas: 341883) -CCIPCapabilityConfiguration_ConfigStateMachine:test__computeNewConfigWithMeta_RunningToStaging_Success() (gas: 448691) -CCIPCapabilityConfiguration_ConfigStateMachine:test__computeNewConfigWithMeta_StagingToRunning_Success() (gas: 420195) -CCIPCapabilityConfiguration_ConfigStateMachine:test__groupByPluginType_TooManyOCR3Configs_Reverts() (gas: 30911) -CCIPCapabilityConfiguration_ConfigStateMachine:test__groupByPluginType_threeCommitConfigs_Reverts() (gas: 54720) -CCIPCapabilityConfiguration_ConfigStateMachine:test__groupByPluginType_threeExecutionConfigs_Reverts() (gas: 54640) -CCIPCapabilityConfiguration_ConfigStateMachine:test__stateFromConfigLength_Success() (gas: 11698) -CCIPCapabilityConfiguration_ConfigStateMachine:test__validateConfigStateTransition_Success() (gas: 8893) -CCIPCapabilityConfiguration_ConfigStateMachine:test__validateConfigTransition_InitToRunning_Success() (gas: 298530) -CCIPCapabilityConfiguration_ConfigStateMachine:test__validateConfigTransition_InitToRunning_WrongConfigCount_Reverts() (gas: 43692) -CCIPCapabilityConfiguration_ConfigStateMachine:test__validateConfigTransition_NonExistentConfigTransition_Reverts() (gas: 27361) -CCIPCapabilityConfiguration_ConfigStateMachine:test__validateConfigTransition_RunningToStaging_Success() (gas: 354534) -CCIPCapabilityConfiguration_ConfigStateMachine:test__validateConfigTransition_RunningToStaging_WrongConfigCount_Reverts() (gas: 105001) -CCIPCapabilityConfiguration_ConfigStateMachine:test__validateConfigTransition_RunningToStaging_WrongConfigDigestBlueGreen_Reverts() (gas: 136211) -CCIPCapabilityConfiguration_ConfigStateMachine:test__validateConfigTransition_StagingToRunning_Success() (gas: 354310) -CCIPCapabilityConfiguration_ConfigStateMachine:test__validateConfigTransition_StagingToRunning_WrongConfigDigest_Reverts() (gas: 136278) -CCIPCapabilityConfiguration_ConfigStateMachine:test_getCapabilityConfiguration_Success() (gas: 9626) -CCIPCapabilityConfiguration__updatePluginConfig:test__updatePluginConfig_InitToRunning_Success() (gas: 971064) -CCIPCapabilityConfiguration__updatePluginConfig:test__updatePluginConfig_InvalidConfigLength_Reverts() (gas: 23816) -CCIPCapabilityConfiguration__updatePluginConfig:test__updatePluginConfig_InvalidConfigStateTransition_Reverts() (gas: 20637) -CCIPCapabilityConfiguration__updatePluginConfig:test__updatePluginConfig_RunningToStaging_Success() (gas: 1822088) -CCIPCapabilityConfiguration__updatePluginConfig:test__updatePluginConfig_StagingToRunning_Success() (gas: 2368496) -CCIPCapabilityConfiguration__updatePluginConfig:test_getCapabilityConfiguration_Success() (gas: 9604) -CCIPCapabilityConfiguration_beforeCapabilityConfigSet:test_beforeCapabilityConfigSet_CommitAndExecConfig_Success() (gas: 1686423) -CCIPCapabilityConfiguration_beforeCapabilityConfigSet:test_beforeCapabilityConfigSet_CommitConfigOnly_Success() (gas: 981509) -CCIPCapabilityConfiguration_beforeCapabilityConfigSet:test_beforeCapabilityConfigSet_ExecConfigOnly_Success() (gas: 981540) +CCIPCapabilityConfigurationSetup:test_getCapabilityConfiguration_Success() (gas: 9605) +CCIPCapabilityConfiguration_ConfigStateMachine:test__computeConfigDigest_Success() (gas: 67127) +CCIPCapabilityConfiguration_ConfigStateMachine:test__computeNewConfigWithMeta_InitToRunning_Success() (gas: 347376) +CCIPCapabilityConfiguration_ConfigStateMachine:test__computeNewConfigWithMeta_RunningToStaging_Success() (gas: 462890) +CCIPCapabilityConfiguration_ConfigStateMachine:test__computeNewConfigWithMeta_StagingToRunning_Success() (gas: 432620) +CCIPCapabilityConfiguration_ConfigStateMachine:test__groupByPluginType_TooManyOCR3Configs_Reverts() (gas: 34173) +CCIPCapabilityConfiguration_ConfigStateMachine:test__groupByPluginType_threeCommitConfigs_Reverts() (gas: 58966) +CCIPCapabilityConfiguration_ConfigStateMachine:test__groupByPluginType_threeExecutionConfigs_Reverts() (gas: 58886) +CCIPCapabilityConfiguration_ConfigStateMachine:test__stateFromConfigLength_Success() (gas: 11632) +CCIPCapabilityConfiguration_ConfigStateMachine:test__validateConfigStateTransition_Success() (gas: 8962) +CCIPCapabilityConfiguration_ConfigStateMachine:test__validateConfigTransition_InitToRunning_Success() (gas: 301488) +CCIPCapabilityConfiguration_ConfigStateMachine:test__validateConfigTransition_InitToRunning_WrongConfigCount_Reverts() (gas: 48077) +CCIPCapabilityConfiguration_ConfigStateMachine:test__validateConfigTransition_NonExistentConfigTransition_Reverts() (gas: 29982) +CCIPCapabilityConfiguration_ConfigStateMachine:test__validateConfigTransition_RunningToStaging_Success() (gas: 362852) +CCIPCapabilityConfiguration_ConfigStateMachine:test__validateConfigTransition_RunningToStaging_WrongConfigCount_Reverts() (gas: 116219) +CCIPCapabilityConfiguration_ConfigStateMachine:test__validateConfigTransition_RunningToStaging_WrongConfigDigestBlueGreen_Reverts() (gas: 150591) +CCIPCapabilityConfiguration_ConfigStateMachine:test__validateConfigTransition_StagingToRunning_Success() (gas: 362628) +CCIPCapabilityConfiguration_ConfigStateMachine:test__validateConfigTransition_StagingToRunning_WrongConfigDigest_Reverts() (gas: 150658) +CCIPCapabilityConfiguration_ConfigStateMachine:test_getCapabilityConfiguration_Success() (gas: 9692) +CCIPCapabilityConfiguration__updatePluginConfig:test__updatePluginConfig_InitToRunning_Success() (gas: 1019270) +CCIPCapabilityConfiguration__updatePluginConfig:test__updatePluginConfig_InvalidConfigLength_Reverts() (gas: 25809) +CCIPCapabilityConfiguration__updatePluginConfig:test__updatePluginConfig_InvalidConfigStateTransition_Reverts() (gas: 21958) +CCIPCapabilityConfiguration__updatePluginConfig:test__updatePluginConfig_RunningToStaging_Success() (gas: 1933829) +CCIPCapabilityConfiguration__updatePluginConfig:test__updatePluginConfig_StagingToRunning_Success() (gas: 2516812) +CCIPCapabilityConfiguration__updatePluginConfig:test_getCapabilityConfiguration_Success() (gas: 9670) +CCIPCapabilityConfiguration_beforeCapabilityConfigSet:test_beforeCapabilityConfigSet_CommitAndExecConfig_Success() (gas: 1783504) +CCIPCapabilityConfiguration_beforeCapabilityConfigSet:test_beforeCapabilityConfigSet_CommitConfigOnly_Success() (gas: 1030111) +CCIPCapabilityConfiguration_beforeCapabilityConfigSet:test_beforeCapabilityConfigSet_ExecConfigOnly_Success() (gas: 1030142) CCIPCapabilityConfiguration_beforeCapabilityConfigSet:test_beforeCapabilityConfigSet_OnlyCapabilityRegistryCanCall_Reverts() (gas: 9576) -CCIPCapabilityConfiguration_beforeCapabilityConfigSet:test_beforeCapabilityConfigSet_ZeroLengthConfig_Success() (gas: 15953) -CCIPCapabilityConfiguration_beforeCapabilityConfigSet:test_getCapabilityConfiguration_Success() (gas: 9604) +CCIPCapabilityConfiguration_beforeCapabilityConfigSet:test_beforeCapabilityConfigSet_ZeroLengthConfig_Success() (gas: 16106) +CCIPCapabilityConfiguration_beforeCapabilityConfigSet:test_getCapabilityConfiguration_Success() (gas: 9670) CCIPCapabilityConfiguration_chainConfig:test__applyChainConfigUpdates_FChainNotPositive_Reverts() (gas: 182901) CCIPCapabilityConfiguration_chainConfig:test_applyChainConfigUpdates_addChainConfigs_Success() (gas: 342456) CCIPCapabilityConfiguration_chainConfig:test_applyChainConfigUpdates_nodeNotInRegistry_Reverts() (gas: 19116) CCIPCapabilityConfiguration_chainConfig:test_applyChainConfigUpdates_removeChainConfigs_Success() (gas: 266058) CCIPCapabilityConfiguration_chainConfig:test_applyChainConfigUpdates_selectorNotFound_Reverts() (gas: 14807) -CCIPCapabilityConfiguration_chainConfig:test_getCapabilityConfiguration_Success() (gas: 9582) -CCIPCapabilityConfiguration_validateConfig:test__validateConfig_ChainSelectorNotFound_Reverts() (gas: 283253) -CCIPCapabilityConfiguration_validateConfig:test__validateConfig_ChainSelectorNotSet_Reverts() (gas: 280380) -CCIPCapabilityConfiguration_validateConfig:test__validateConfig_FMustBePositive_Reverts() (gas: 281292) -CCIPCapabilityConfiguration_validateConfig:test__validateConfig_FTooHigh_Reverts() (gas: 281458) -CCIPCapabilityConfiguration_validateConfig:test__validateConfig_NodeNotInRegistry_Reverts() (gas: 285653) -CCIPCapabilityConfiguration_validateConfig:test__validateConfig_NotEnoughTransmitters_Reverts() (gas: 1066372) -CCIPCapabilityConfiguration_validateConfig:test__validateConfig_OfframpAddressCannotBeZero_Reverts() (gas: 280288) -CCIPCapabilityConfiguration_validateConfig:test__validateConfig_P2PIdsLengthNotMatching_Reverts() (gas: 282147) -CCIPCapabilityConfiguration_validateConfig:test__validateConfig_Success() (gas: 287038) -CCIPCapabilityConfiguration_validateConfig:test__validateConfig_TooManySigners_Reverts() (gas: 1118481) -CCIPCapabilityConfiguration_validateConfig:test__validateConfig_TooManyTransmitters_Reverts() (gas: 1116822) -CCIPCapabilityConfiguration_validateConfig:test_getCapabilityConfiguration_Success() (gas: 9518) +CCIPCapabilityConfiguration_chainConfig:test_getCapabilityConfiguration_Success() (gas: 9648) +CCIPCapabilityConfiguration_validateConfig:test__validateConfig_ChainSelectorNotFound_Reverts() (gas: 284655) +CCIPCapabilityConfiguration_validateConfig:test__validateConfig_ChainSelectorNotSet_Reverts() (gas: 281782) +CCIPCapabilityConfiguration_validateConfig:test__validateConfig_FMustBePositive_Reverts() (gas: 282694) +CCIPCapabilityConfiguration_validateConfig:test__validateConfig_FTooHigh_Reverts() (gas: 282860) +CCIPCapabilityConfiguration_validateConfig:test__validateConfig_NodeNotInRegistry_Reverts() (gas: 287086) +CCIPCapabilityConfiguration_validateConfig:test__validateConfig_NotEnoughTransmitters_Reverts() (gas: 1067799) +CCIPCapabilityConfiguration_validateConfig:test__validateConfig_OfframpAddressCannotBeZero_Reverts() (gas: 281695) +CCIPCapabilityConfiguration_validateConfig:test__validateConfig_P2PIdsLengthNotMatching_Reverts() (gas: 283549) +CCIPCapabilityConfiguration_validateConfig:test__validateConfig_Success() (gas: 288494) +CCIPCapabilityConfiguration_validateConfig:test__validateConfig_TooManyBootstrapP2PIds_Reverts() (gas: 284789) +CCIPCapabilityConfiguration_validateConfig:test__validateConfig_TooManySigners_Reverts() (gas: 1119912) +CCIPCapabilityConfiguration_validateConfig:test__validateConfig_TooManyTransmitters_Reverts() (gas: 1118253) +CCIPCapabilityConfiguration_validateConfig:test_getCapabilityConfiguration_Success() (gas: 9584) CCIPClientExample_sanity:test_ImmutableExamples_Success() (gas: 2133850) CommitStore_constructor:test_Constructor_Success() (gas: 3091440) CommitStore_isUnpausedAndRMNHealthy:test_RMN_Success() (gas: 75331) diff --git a/contracts/src/v0.8/ccip/capability/CCIPCapabilityConfiguration.sol b/contracts/src/v0.8/ccip/capability/CCIPCapabilityConfiguration.sol index eab0696952..0e94e397c9 100644 --- a/contracts/src/v0.8/ccip/capability/CCIPCapabilityConfiguration.sol +++ b/contracts/src/v0.8/ccip/capability/CCIPCapabilityConfiguration.sol @@ -34,6 +34,7 @@ contract CCIPCapabilityConfiguration is ITypeAndVersion, ICapabilityConfiguratio error TooManyOCR3Configs(); error TooManySigners(); error TooManyTransmitters(); + error TooManyBootstrapP2PIds(); error P2PIdsLengthNotMatching(uint256 p2pIdsLength, uint256 signersLength, uint256 transmittersLength); error NotEnoughTransmitters(uint256 got, uint256 minimum); error FMustBePositive(); @@ -89,6 +90,7 @@ contract CCIPCapabilityConfiguration is ITypeAndVersion, ICapabilityConfiguratio uint8 F; // | The "big F" parameter for the role DON. uint64 offchainConfigVersion; // ─╯ The version of the offchain configuration. bytes32 offrampAddress; // The remote chain offramp address. + bytes32[] bootstrapP2PIds; // The bootstrap P2P IDs of the oracles that are part of the role DON. // len(p2pIds) == len(signers) == len(transmitters) == 3 * F + 1 // NOTE: indexes matter here! The p2p ID at index i corresponds to the signer at index i and the transmitter at index i. // This is crucial in order to build the oracle ID <-> peer ID mapping offchain. @@ -413,8 +415,13 @@ contract CCIPCapabilityConfiguration is ITypeAndVersion, ICapabilityConfiguratio revert P2PIdsLengthNotMatching(cfg.p2pIds.length, cfg.signers.length, cfg.transmitters.length); } + if (cfg.bootstrapP2PIds.length > cfg.p2pIds.length) { + revert TooManyBootstrapP2PIds(); + } + // Check that the readers are in the capability registry. // TODO: check for duplicate signers, duplicate p2p ids, etc. + // TODO: check that p2p ids in cfg.bootstrapP2PIds are included in cfg.p2pIds. for (uint256 i = 0; i < cfg.signers.length; ++i) { _ensureInRegistry(cfg.p2pIds[i]); } @@ -442,6 +449,8 @@ contract CCIPCapabilityConfiguration is ITypeAndVersion, ICapabilityConfiguratio ocr3Config.pluginType, ocr3Config.offrampAddress, configCount, + ocr3Config.bootstrapP2PIds, + ocr3Config.p2pIds, ocr3Config.signers, ocr3Config.transmitters, ocr3Config.F, diff --git a/contracts/src/v0.8/ccip/test/capability/CCIPCapabilityConfiguration.t.sol b/contracts/src/v0.8/ccip/test/capability/CCIPCapabilityConfiguration.t.sol index cb4d8ea70f..049d28a52c 100644 --- a/contracts/src/v0.8/ccip/test/capability/CCIPCapabilityConfiguration.t.sol +++ b/contracts/src/v0.8/ccip/test/capability/CCIPCapabilityConfiguration.t.sol @@ -34,6 +34,14 @@ contract CCIPCapabilityConfigurationSetup is Test { return arr; } + function _subset(bytes32[] memory arr, uint256 start, uint256 end) internal pure returns (bytes32[] memory) { + bytes32[] memory subset = new bytes32[](end - start); + for (uint256 i = start; i < end; i++) { + subset[i - start] = arr[i]; + } + return subset; + } + function _addChainConfig(uint256 numNodes) internal returns (bytes32[] memory p2pIds, bytes[] memory signers, bytes[] memory transmitters) @@ -239,6 +247,7 @@ contract CCIPCapabilityConfiguration_validateConfig is CCIPCapabilityConfigurati pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -259,6 +268,7 @@ contract CCIPCapabilityConfiguration_validateConfig is CCIPCapabilityConfigurati pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 0, // invalid + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -279,6 +289,7 @@ contract CCIPCapabilityConfiguration_validateConfig is CCIPCapabilityConfigurati pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: bytes32(uint256(0)), // invalid chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -299,6 +310,7 @@ contract CCIPCapabilityConfiguration_validateConfig is CCIPCapabilityConfigurati pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 2, // not set + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -319,6 +331,7 @@ contract CCIPCapabilityConfiguration_validateConfig is CCIPCapabilityConfigurati pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -344,6 +357,7 @@ contract CCIPCapabilityConfiguration_validateConfig is CCIPCapabilityConfigurati pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -370,6 +384,7 @@ contract CCIPCapabilityConfiguration_validateConfig is CCIPCapabilityConfigurati pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -390,6 +405,7 @@ contract CCIPCapabilityConfiguration_validateConfig is CCIPCapabilityConfigurati pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -409,6 +425,7 @@ contract CCIPCapabilityConfiguration_validateConfig is CCIPCapabilityConfigurati pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -433,6 +450,7 @@ contract CCIPCapabilityConfiguration_validateConfig is CCIPCapabilityConfigurati pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -449,6 +467,27 @@ contract CCIPCapabilityConfiguration_validateConfig is CCIPCapabilityConfigurati s_ccipCC.validateConfig(config); } + function test__validateConfig_TooManyBootstrapP2PIds_Reverts() public { + (bytes32[] memory p2pIds, bytes[] memory signers, bytes[] memory transmitters) = _addChainConfig(4); + + // Config is for 4 nodes, so f == 1. + CCIPCapabilityConfiguration.OCR3Config memory config = CCIPCapabilityConfiguration.OCR3Config({ + pluginType: CCIPCapabilityConfiguration.PluginType.Commit, + offrampAddress: keccak256(abi.encode("offramp")), + chainSelector: 1, + bootstrapP2PIds: _makeBytes32Array(5, 0), // too many bootstrap p2pIds, 5 > 4 + p2pIds: p2pIds, + signers: signers, + transmitters: transmitters, + F: 1, + offchainConfigVersion: 30, + offchainConfig: bytes("offchainConfig") + }); + + vm.expectRevert(CCIPCapabilityConfiguration.TooManyBootstrapP2PIds.selector); + s_ccipCC.validateConfig(config); + } + function test__validateConfig_NodeNotInRegistry_Reverts() public { (bytes32[] memory p2pIds, bytes[] memory signers, bytes[] memory transmitters) = _addChainConfig(4); bytes32 nonExistentP2PId = keccak256("notInRegistry"); @@ -473,6 +512,7 @@ contract CCIPCapabilityConfiguration_validateConfig is CCIPCapabilityConfigurati pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -529,6 +569,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -574,6 +615,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -587,6 +629,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Execution, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -630,6 +673,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -662,6 +706,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -673,6 +718,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -739,6 +785,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -750,6 +797,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -798,6 +846,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -826,6 +875,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -837,6 +887,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -876,6 +927,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -887,6 +939,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -937,6 +990,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -959,6 +1013,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Execution, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -983,6 +1038,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(_makeBytes32Array(4, 0), 0, 1), p2pIds: _makeBytes32Array(4, 0), signers: _makeBytesArray(4, 10), transmitters: _makeBytesArray(4, 20), @@ -1011,6 +1067,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(_makeBytes32Array(4, 0), 0, 1), p2pIds: _makeBytes32Array(4, 0), signers: _makeBytesArray(4, 10), transmitters: _makeBytesArray(4, 20), @@ -1022,6 +1079,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(_makeBytes32Array(4, 0), 0, 1), p2pIds: _makeBytes32Array(4, 0), signers: _makeBytesArray(4, 10), transmitters: _makeBytesArray(4, 20), @@ -1067,6 +1125,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(_makeBytes32Array(4, 0), 0, 1), p2pIds: _makeBytes32Array(4, 0), signers: _makeBytesArray(4, 10), transmitters: _makeBytesArray(4, 20), @@ -1078,6 +1137,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(_makeBytes32Array(4, 0), 0, 1), p2pIds: _makeBytes32Array(4, 0), signers: _makeBytesArray(4, 10), transmitters: _makeBytesArray(4, 20), @@ -1117,6 +1177,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(_makeBytes32Array(4, 0), 0, 1), p2pIds: _makeBytes32Array(4, 0), signers: _makeBytesArray(4, 10), transmitters: _makeBytesArray(4, 20), @@ -1128,6 +1189,7 @@ contract CCIPCapabilityConfiguration_ConfigStateMachine is CCIPCapabilityConfigu pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(_makeBytes32Array(4, 0), 0, 1), p2pIds: _makeBytes32Array(4, 0), signers: _makeBytesArray(4, 10), transmitters: _makeBytesArray(4, 20), @@ -1187,6 +1249,7 @@ contract CCIPCapabilityConfiguration__updatePluginConfig is CCIPCapabilityConfig pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -1216,6 +1279,7 @@ contract CCIPCapabilityConfiguration__updatePluginConfig is CCIPCapabilityConfig pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -1232,6 +1296,7 @@ contract CCIPCapabilityConfiguration__updatePluginConfig is CCIPCapabilityConfig pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -1274,6 +1339,7 @@ contract CCIPCapabilityConfiguration__updatePluginConfig is CCIPCapabilityConfig pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -1290,6 +1356,7 @@ contract CCIPCapabilityConfiguration__updatePluginConfig is CCIPCapabilityConfig pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -1376,6 +1443,7 @@ contract CCIPCapabilityConfiguration_beforeCapabilityConfigSet is CCIPCapability pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -1409,6 +1477,7 @@ contract CCIPCapabilityConfiguration_beforeCapabilityConfigSet is CCIPCapability pluginType: CCIPCapabilityConfiguration.PluginType.Execution, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -1442,6 +1511,7 @@ contract CCIPCapabilityConfiguration_beforeCapabilityConfigSet is CCIPCapability pluginType: CCIPCapabilityConfiguration.PluginType.Commit, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, @@ -1453,6 +1523,7 @@ contract CCIPCapabilityConfiguration_beforeCapabilityConfigSet is CCIPCapability pluginType: CCIPCapabilityConfiguration.PluginType.Execution, offrampAddress: keccak256(abi.encode("offramp")), chainSelector: 1, + bootstrapP2PIds: _subset(p2pIds, 0, 1), p2pIds: p2pIds, signers: signers, transmitters: transmitters, diff --git a/core/gethwrappers/ccip/generated/ccip_capability_configuration/ccip_capability_configuration.go b/core/gethwrappers/ccip/generated/ccip_capability_configuration/ccip_capability_configuration.go index 8be7bbaf56..f123c6dcec 100644 --- a/core/gethwrappers/ccip/generated/ccip_capability_configuration/ccip_capability_configuration.go +++ b/core/gethwrappers/ccip/generated/ccip_capability_configuration/ccip_capability_configuration.go @@ -47,6 +47,7 @@ type CCIPCapabilityConfigurationOCR3Config struct { F uint8 OffchainConfigVersion uint64 OfframpAddress [32]byte + BootstrapP2PIds [][32]byte P2pIds [][32]byte Signers [][]byte Transmitters [][]byte @@ -60,8 +61,8 @@ type CCIPCapabilityConfigurationOCR3ConfigWithMeta struct { } var CCIPCapabilityConfigurationMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"capabilityRegistry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"ChainConfigNotSetForChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"ChainSelectorNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ChainSelectorNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FChainMustBePositive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FMustBePositive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidConfigLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumCCIPCapabilityConfiguration.ConfigState\",\"name\":\"currentState\",\"type\":\"uint8\"},{\"internalType\":\"enumCCIPCapabilityConfiguration.ConfigState\",\"name\":\"proposedState\",\"type\":\"uint8\"}],\"name\":\"InvalidConfigStateTransition\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPluginType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"}],\"name\":\"NodeNotInRegistry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonExistentConfigTransition\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"got\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimum\",\"type\":\"uint256\"}],\"name\":\"NotEnoughTransmitters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfframpAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCapabilityRegistryCanCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"p2pIdsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"signersLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"transmittersLength\",\"type\":\"uint256\"}],\"name\":\"P2PIdsLengthNotMatching\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyOCR3Configs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManySigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyTransmitters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"got\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expected\",\"type\":\"uint64\"}],\"name\":\"WrongConfigCount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"got\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expected\",\"type\":\"bytes32\"}],\"name\":\"WrongConfigDigest\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"got\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expected\",\"type\":\"bytes32\"}],\"name\":\"WrongConfigDigestBlueGreen\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"CapabilityConfigurationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"ChainConfigRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"readers\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint8\",\"name\":\"fChain\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structCCIPCapabilityConfiguration.ChainConfig\",\"name\":\"chainConfig\",\"type\":\"tuple\"}],\"name\":\"ChainConfigSet\",\"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\":[{\"internalType\":\"uint64[]\",\"name\":\"chainSelectorRemoves\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"readers\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint8\",\"name\":\"fChain\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPCapabilityConfiguration.ChainConfig\",\"name\":\"chainConfig\",\"type\":\"tuple\"}],\"internalType\":\"structCCIPCapabilityConfiguration.ChainConfigInfo[]\",\"name\":\"chainConfigAdds\",\"type\":\"tuple[]\"}],\"name\":\"applyChainConfigUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"}],\"name\":\"beforeCapabilityConfigSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllChainConfigs\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"readers\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint8\",\"name\":\"fChain\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPCapabilityConfiguration.ChainConfig\",\"name\":\"chainConfig\",\"type\":\"tuple\"}],\"internalType\":\"structCCIPCapabilityConfiguration.ChainConfigInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"getCapabilityConfiguration\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"configuration\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"enumCCIPCapabilityConfiguration.PluginType\",\"name\":\"pluginType\",\"type\":\"uint8\"}],\"name\":\"getOCRConfig\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enumCCIPCapabilityConfiguration.PluginType\",\"name\":\"pluginType\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"F\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"offrampAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"p2pIds\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes[]\",\"name\":\"signers\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"transmitters\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPCapabilityConfiguration.OCR3Config\",\"name\":\"config\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"configCount\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"}],\"internalType\":\"structCCIPCapabilityConfiguration.OCR3ConfigWithMeta[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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: "0x60a06040523480156200001157600080fd5b5060405162003d1838038062003d1883398101604081905262000034916200017e565b33806000816200008b5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000be57620000be81620000d3565b5050506001600160a01b0316608052620001b0565b336001600160a01b038216036200012d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000082565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000602082840312156200019157600080fd5b81516001600160a01b0381168114620001a957600080fd5b9392505050565b608051613b45620001d360003960008181610c830152610f180152613b456000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80638da5cb5b11610076578063f2fde38b1161005b578063f2fde38b1461014e578063f442c89a14610161578063fba64a7c1461017457600080fd5b80638da5cb5b14610111578063ddc042a81461013957600080fd5b8063181f5a77146100a85780634bd0473f146100c657806379ba5097146100e65780638318ed5d146100f0575b600080fd5b6100b0610187565b6040516100bd9190612aa7565b60405180910390f35b6100d96100d4366004612aeb565b6101a3565b6040516100bd9190612c17565b6100ee610596565b005b6100b06100fe366004612dc4565b5060408051602081019091526000815290565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100bd565b610141610698565b6040516100bd9190612e25565b6100ee61015c366004612eb5565b61088a565b6100ee61016f366004612f37565b61089e565b6100ee610182366004612fbb565b610c6b565b604051806060016040528060258152602001613b146025913981565b63ffffffff821660009081526005602052604081206060918360018111156101cd576101cd612b20565b60018111156101de576101de612b20565b8152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561058957600084815260209020604080516101808101909152600884029091018054829060608201908390829060ff16600181111561025157610251612b20565b600181111561026257610262612b20565b8152815467ffffffffffffffff6101008204811660208085019190915260ff69010000000000000000008404166040808601919091526a010000000000000000000090930490911660608401526001840154608084015260028401805483518184028101840190945280845260a090940193909183018282801561030557602002820191906000526020600020905b8154815260200190600101908083116102f1575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156103df57838290600052602060002001805461035290613078565b80601f016020809104026020016040519081016040528092919081815260200182805461037e90613078565b80156103cb5780601f106103a0576101008083540402835291602001916103cb565b820191906000526020600020905b8154815290600101906020018083116103ae57829003601f168201915b505050505081526020019060010190610333565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156104b857838290600052602060002001805461042b90613078565b80601f016020809104026020016040519081016040528092919081815260200182805461045790613078565b80156104a45780601f10610479576101008083540402835291602001916104a4565b820191906000526020600020905b81548152906001019060200180831161048757829003601f168201915b50505050508152602001906001019061040c565b5050505081526020016005820180546104d090613078565b80601f01602080910402602001604051908101604052809291908181526020018280546104fc90613078565b80156105495780601f1061051e57610100808354040283529160200191610549565b820191906000526020600020905b81548152906001019060200180831161052c57829003601f168201915b505050919092525050508152600682015467ffffffffffffffff16602080830191909152600790920154604090910152908252600192909201910161020c565b5050505090505b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461061c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b606060006106a66003610d2c565b905060006106b46003610d40565b67ffffffffffffffff8111156106cc576106cc6130cb565b60405190808252806020026020018201604052801561070557816020015b6106f26127e9565b8152602001906001900390816106ea5790505b50905060005b8251811015610883576000838281518110610728576107286130fa565b60209081029190910181015160408051808201825267ffffffffffffffff8316808252600090815260028552829020825181546080818802830181019095526060820181815295975092958601949093919284928491908401828280156107ae57602002820191906000526020600020905b81548152602001906001019080831161079a575b5050509183525050600182015460ff1660208201526002820180546040909201916107d890613078565b80601f016020809104026020016040519081016040528092919081815260200182805461080490613078565b80156108515780601f1061082657610100808354040283529160200191610851565b820191906000526020600020905b81548152906001019060200180831161083457829003601f168201915b50505050508152505081525083838151811061086f5761086f6130fa565b60209081029190910101525060010161070b565b5092915050565b610892610d4a565b61089b81610dcd565b50565b6108a6610d4a565b60005b83811015610a8c576108ed8585838181106108c6576108c66130fa565b90506020020160208101906108db9190613129565b60039067ffffffffffffffff16610ec2565b61095757848482818110610903576109036130fa565b90506020020160208101906109189190613129565b6040517f1bd4d2d200000000000000000000000000000000000000000000000000000000815267ffffffffffffffff9091166004820152602401610613565b6002600086868481811061096d5761096d6130fa565b90506020020160208101906109829190613129565b67ffffffffffffffff16815260208101919091526040016000908120906109a98282612831565b6001820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556109e160028301600061284f565b5050610a1f8585838181106109f8576109f86130fa565b9050602002016020810190610a0d9190613129565b60039067ffffffffffffffff16610eda565b507f2a680691fef3b2d105196805935232c661ce703e92d464ef0b94a7bc62d714f0858583818110610a5357610a536130fa565b9050602002016020810190610a689190613129565b60405167ffffffffffffffff909116815260200160405180910390a16001016108a9565b5060005b81811015610c64576000838383818110610aac57610aac6130fa565b9050602002810190610abe9190613144565b610acc906020810190613182565b610ad590613384565b80519091506000858585818110610aee57610aee6130fa565b9050602002810190610b009190613144565b610b0e906020810190613129565b905060005b8251811015610b4657610b3e838281518110610b3157610b316130fa565b6020026020010151610ee6565b600101610b13565b50826020015160ff16600003610b88576040517fa9b3766e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff81166000908152600260209081526040909120845180518693610bb8928492910190612889565b5060208201516001820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff90921691909117905560408201516002820190610c05908261346b565b50610c1f91506003905067ffffffffffffffff8316611000565b507f05dd57854af2c291a94ea52e7c43d80bc3be7fa73022f98b735dea86642fa5e08184604051610c51929190613585565b60405180910390a1505050600101610a90565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610cda576040517f7b2485a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ce884860186613630565b9050600080610cf68361100c565b8151919350915015610d0e57610d0e8460008461125b565b805115610d2157610d218460018361125b565b505050505050505050565b60606000610d3983611933565b9392505050565b6000610590825490565b60005473ffffffffffffffffffffffffffffffffffffffff163314610dcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610613565b565b3373ffffffffffffffffffffffffffffffffffffffff821603610e4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610613565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60008181526001830160205260408120541515610d39565b6000610d39838361198f565b6040517f50c946fe000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906350c946fe90602401600060405180830381865afa158015610f74573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fba9190810190613800565b506040810151909150610ffc576040517f8907a4fa00000000000000000000000000000000000000000000000000000000815260048101839052602401610613565b5050565b6000610d398383611a82565b606080600460ff168351111561104e576040517f8854586400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160028082526060820190925290816020015b6040805161012081018252600080825260208083018290529282018190526060808301829052608083019190915260a0820181905260c0820181905260e0820181905261010082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161106457505060408051600280825260608201909252919350602082015b6040805161012081018252600080825260208083018290529282018190526060808301829052608083019190915260a0820181905260c0820181905260e0820181905261010082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816110f457905050905060008060005b855181101561124e576000868281518110611192576111926130fa565b60200260200101516000015160018111156111af576111af612b20565b036111ff578581815181106111c6576111c66130fa565b6020026020010151858460ff16815181106111e3576111e36130fa565b6020026020010181905250826111f89061392e565b9250611246565b858181518110611211576112116130fa565b6020026020010151848360ff168151811061122e5761122e6130fa565b6020026020010181905250816112439061392e565b91505b600101611175565b5090835281529092909150565b63ffffffff831660009081526005602052604081208184600181111561128357611283612b20565b600181111561129457611294612b20565b8152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561163f57600084815260209020604080516101808101909152600884029091018054829060608201908390829060ff16600181111561130757611307612b20565b600181111561131857611318612b20565b8152815467ffffffffffffffff6101008204811660208085019190915260ff69010000000000000000008404166040808601919091526a010000000000000000000090930490911660608401526001840154608084015260028401805483518184028101840190945280845260a09094019390918301828280156113bb57602002820191906000526020600020905b8154815260200190600101908083116113a7575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b8282101561149557838290600052602060002001805461140890613078565b80601f016020809104026020016040519081016040528092919081815260200182805461143490613078565b80156114815780601f1061145657610100808354040283529160200191611481565b820191906000526020600020905b81548152906001019060200180831161146457829003601f168201915b5050505050815260200190600101906113e9565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b8282101561156e5783829060005260206000200180546114e190613078565b80601f016020809104026020016040519081016040528092919081815260200182805461150d90613078565b801561155a5780601f1061152f5761010080835404028352916020019161155a565b820191906000526020600020905b81548152906001019060200180831161153d57829003601f168201915b5050505050815260200190600101906114c2565b50505050815260200160058201805461158690613078565b80601f01602080910402602001604051908101604052809291908181526020018280546115b290613078565b80156115ff5780601f106115d4576101008083540402835291602001916115ff565b820191906000526020600020905b8154815290600101906020018083116115e257829003601f168201915b505050919092525050508152600682015467ffffffffffffffff1660208083019190915260079092015460409091015290825260019290920191016112c2565b50505050905060006116518251611ad1565b9050600061165f8451611ad1565b905061166b8282611b23565b600061167a8785878686611c17565b90506116868482611ffb565b63ffffffff87166000908152600560205260408120908760018111156116ae576116ae612b20565b60018111156116bf576116bf612b20565b815260200190815260200160002060006116d991906128d4565b60005b81518110156119295763ffffffff881660009081526005602052604081209088600181111561170d5761170d612b20565b600181111561171e5761171e612b20565b815260200190815260200160002082828151811061173e5761173e6130fa565b6020908102919091018101518254600181810185556000948552929093208151805160089095029091018054929490939192849283917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169083818111156117a8576117a8612b20565b02179055506020828101518254604085015160608601517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90921661010067ffffffffffffffff948516027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff1617690100000000000000000060ff90921691909102177fffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffff166a010000000000000000000092909116919091021782556080830151600183015560a083015180516118859260028501920190612889565b5060c082015180516118a19160038401916020909101906128f5565b5060e082015180516118bd9160048401916020909101906128f5565b5061010082015160058201906118d3908261346b565b50505060208201516006820180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9092169190911790556040909101516007909101556001016116dc565b5050505050505050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561198357602002820191906000526020600020905b81548152602001906001019080831161196f575b50505050509050919050565b60008181526001830160205260408120548015611a785760006119b360018361394d565b85549091506000906119c79060019061394d565b9050818114611a2c5760008660000182815481106119e7576119e76130fa565b9060005260206000200154905080876000018481548110611a0a57611a0a6130fa565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611a3d57611a3d613960565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610590565b6000915050610590565b6000818152600183016020526040812054611ac957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610590565b506000610590565b60006002821115611b11576040517f3e47852600000000000000000000000000000000000000000000000000000000815260048101839052602401610613565b81600281111561059057610590612b20565b600080836002811115611b3857611b38612b20565b148015611b5657506001826002811115611b5457611b54612b20565b145b905060006001846002811115611b6e57611b6e612b20565b148015611b8c57506002836002811115611b8a57611b8a612b20565b145b905060006002856002811115611ba457611ba4612b20565b148015611bc257506001846002811115611bc057611bc0612b20565b145b90508280611bcd5750815b80611bd55750805b15611be1575050505050565b84846040517f0a6b675b00000000000000000000000000000000000000000000000000000000815260040161061392919061399f565b60606000845167ffffffffffffffff811115611c3557611c356130cb565b604051908082528060200260200182016040528015611c5e578160200160208202803683370190505b5090506000846002811115611c7557611c75612b20565b148015611c9357506001836002811115611c9157611c91612b20565b145b15611cd457600181600081518110611cad57611cad6130fa565b602002602001019067ffffffffffffffff16908167ffffffffffffffff1681525050611e3c565b6001846002811115611ce857611ce8612b20565b148015611d0657506002836002811115611d0457611d04612b20565b145b15611d9d5785600081518110611d1e57611d1e6130fa565b60200260200101516020015181600081518110611d3d57611d3d6130fa565b602002602001019067ffffffffffffffff16908167ffffffffffffffff168152505085600081518110611d7257611d726130fa565b6020026020010151602001516001611d8a91906139ba565b81600181518110611cad57611cad6130fa565b6002846002811115611db157611db1612b20565b148015611dcf57506001836002811115611dcd57611dcd612b20565b145b15611e065785600181518110611de757611de76130fa565b60200260200101516020015181600081518110611cad57611cad6130fa565b83836040517f0a6b675b00000000000000000000000000000000000000000000000000000000815260040161061392919061399f565b6000855167ffffffffffffffff811115611e5857611e586130cb565b604051908082528060200260200182016040528015611f0657816020015b6040805161018081018252600060608083018281526080840183905260a0840183905260c0840183905260e08401839052610100840182905261012084018290526101408401829052610160840191909152825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611e765790505b50905060005b8251811015611fef57611f37878281518110611f2a57611f2a6130fa565b602002602001015161237a565b6040518060600160405280888381518110611f5457611f546130fa565b60200260200101518152602001848381518110611f7357611f736130fa565b602002602001015167ffffffffffffffff168152602001611fc78b868581518110611fa057611fa06130fa565b60200260200101518b8681518110611fba57611fba6130fa565b6020026020010151612721565b815250828281518110611fdc57611fdc6130fa565b6020908102919091010152600101611f0c565b50979650505050505050565b815181518115801561200d5750806001145b156120af5782600081518110612025576120256130fa565b60200260200101516020015167ffffffffffffffff166001146120a95782600081518110612055576120556130fa565b60209081029190910181015101516040517fc1658eb800000000000000000000000000000000000000000000000000000000815267ffffffffffffffff909116600482015260016024820152604401610613565b50505050565b8160011480156120bf5750806002145b1561227557836000815181106120d7576120d76130fa565b602002602001015160400151836000815181106120f6576120f66130fa565b60200260200101516040015114612182578260008151811061211a5761211a6130fa565b60200260200101516040015184600081518110612139576121396130fa565b6020026020010151604001516040517fc7ccdd7f000000000000000000000000000000000000000000000000000000008152600401610613929190918252602082015260400190565b83600081518110612195576121956130fa565b60200260200101516020015160016121ad91906139ba565b67ffffffffffffffff16836001815181106121ca576121ca6130fa565b60200260200101516020015167ffffffffffffffff16146120a957826001815181106121f8576121f86130fa565b60200260200101516020015184600081518110612217576122176130fa565b602002602001015160200151600161222f91906139ba565b6040517fc1658eb800000000000000000000000000000000000000000000000000000000815267ffffffffffffffff928316600482015291166024820152604401610613565b8160021480156122855750806001145b15612348578360018151811061229d5761229d6130fa565b602002602001015160400151836000815181106122bc576122bc6130fa565b602002602001015160400151146120a957826000815181106122e0576122e06130fa565b602002602001015160400151846001815181106122ff576122ff6130fa565b6020026020010151604001516040517f9e975670000000000000000000000000000000000000000000000000000000008152600401610613929190918252602082015260400190565b6040517f1f1b2bb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff166000036123c2576040517f698cf8e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000815160018111156123d7576123d7612b20565b141580156123f857506001815160018111156123f5576123f5612b20565b14155b1561242f576040517f3302dbd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b608081015161246a576040517f358c192700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516124859060039067ffffffffffffffff16610ec2565b6124cd5760208101516040517f1bd4d2d200000000000000000000000000000000000000000000000000000000815267ffffffffffffffff9091166004820152602401610613565b60c081015151601f101561250d576040517f1b925da600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60e081015151601f101561254d576040517f645960ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208082015167ffffffffffffffff1660009081526002909152604081206001015461257d9060ff1660036139db565b6125889060016139f7565b60ff169050808260e001515110156125dd5760e0820151516040517f548dd21f000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610613565b816040015160ff1660000361261e576040517f39d1a4d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604082015161262e9060036139db565b60ff168260c00151511161266e576040517f4856694e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160c00151518260a001515114158061269157508160e00151518260a001515114155b156126eb5760a08201515160c08301515160e0840151516040517fba900f6d000000000000000000000000000000000000000000000000000000008152600481019390935260248301919091526044820152606401610613565b60005b8260c001515181101561271c576127148360a001518281518110610b3157610b316130fa565b6001016126ee565b505050565b60008082602001518584600001518560800151878760c001518860e0015189604001518a606001518b61010001516040516020016127689a99989796959493929190613a7b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101207dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e0a000000000000000000000000000000000000000000000000000000000000179150509392505050565b6040518060400160405280600067ffffffffffffffff16815260200161282c604051806060016040528060608152602001600060ff168152602001606081525090565b905290565b508054600082559060005260206000209081019061089b9190612947565b50805461285b90613078565b6000825580601f1061286b575050565b601f01602090049060005260206000209081019061089b9190612947565b8280548282559060005260206000209081019282156128c4579160200282015b828111156128c45782518255916020019190600101906128a9565b506128d0929150612947565b5090565b508054600082556008029060005260206000209081019061089b919061295c565b82805482825590600052602060002090810192821561293b579160200282015b8281111561293b578251829061292b908261346b565b5091602001919060010190612915565b506128d0929150612a08565b5b808211156128d05760008155600101612948565b808211156128d05780547fffffffffffffffffffffffffffff00000000000000000000000000000000000016815560006001820181905581816129a26002830182612831565b6129b0600383016000612a25565b6129be600483016000612a25565b6129cc60058301600061284f565b5050506006810180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001690556000600782015560080161295c565b808211156128d0576000612a1c828261284f565b50600101612a08565b508054600082559060005260206000209081019061089b9190612a08565b6000815180845260005b81811015612a6957602081850181015186830182015201612a4d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610d396020830184612a43565b63ffffffff8116811461089b57600080fd5b8035612ad781612aba565b919050565b803560028110612ad757600080fd5b60008060408385031215612afe57600080fd5b8235612b0981612aba565b9150612b1760208401612adc565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110612b5f57612b5f612b20565b9052565b60008151808452602080850194506020840160005b83811015612b9457815187529582019590820190600101612b78565b509495945050505050565b60008282518085526020808601955060208260051b8401016020860160005b84811015612c0a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868403018952612bf8838351612a43565b98840198925090830190600101612bbe565b5090979650505050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b83811015612db6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0898403018552815160608151818652612c858287018251612b4f565b898101516080612ca08189018367ffffffffffffffff169052565b8a830151915060a0612cb6818a018460ff169052565b938301519360c09250612cd48984018667ffffffffffffffff169052565b81840151945060e0915084828a01528084015194505061012061010081818b0152612d036101808b0187612b63565b95508385015193507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0808b880301838c0152612d3f8786612b9f565b9650838601519450808b8803016101408c0152612d5c8786612b9f565b9650818601519550808b8803016101608c01525050505050612d7e8282612a43565b91505088820151612d9a8a87018267ffffffffffffffff169052565b5090870151938701939093529386019390860190600101612c40565b509098975050505050505050565b600060208284031215612dd657600080fd5b8135610d3981612aba565b6000815160608452612df66060850182612b63565b905060ff602084015116602085015260408301518482036040860152612e1c8282612a43565b95945050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b83811015612db6578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805167ffffffffffffffff168452870151878401879052612ea287850182612de1565b9588019593505090860190600101612e4e565b600060208284031215612ec757600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610d3957600080fd5b60008083601f840112612efd57600080fd5b50813567ffffffffffffffff811115612f1557600080fd5b6020830191508360208260051b8501011115612f3057600080fd5b9250929050565b60008060008060408587031215612f4d57600080fd5b843567ffffffffffffffff80821115612f6557600080fd5b612f7188838901612eeb565b90965094506020870135915080821115612f8a57600080fd5b50612f9787828801612eeb565b95989497509550505050565b803567ffffffffffffffff81168114612ad757600080fd5b60008060008060008060808789031215612fd457600080fd5b863567ffffffffffffffff80821115612fec57600080fd5b612ff88a838b01612eeb565b9098509650602089013591508082111561301157600080fd5b818901915089601f83011261302557600080fd5b81358181111561303457600080fd5b8a602082850101111561304657600080fd5b60208301965080955050505061305e60408801612fa3565b915061306c60608801612acc565b90509295509295509295565b600181811c9082168061308c57607f821691505b6020821081036130c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561313b57600080fd5b610d3982612fa3565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261317857600080fd5b9190910192915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261317857600080fd5b604051610120810167ffffffffffffffff811182821017156131da576131da6130cb565b60405290565b6040516080810167ffffffffffffffff811182821017156131da576131da6130cb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561324a5761324a6130cb565b604052919050565b600067ffffffffffffffff82111561326c5761326c6130cb565b5060051b60200190565b600082601f83011261328757600080fd5b8135602061329c61329783613252565b613203565b8083825260208201915060208460051b8701019350868411156132be57600080fd5b602086015b848110156132da57803583529183019183016132c3565b509695505050505050565b803560ff81168114612ad757600080fd5b600082601f83011261330757600080fd5b813567ffffffffffffffff811115613321576133216130cb565b61335260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613203565b81815284602083860101111561336757600080fd5b816020850160208301376000918101602001919091529392505050565b60006060823603121561339657600080fd5b6040516060810167ffffffffffffffff82821081831117156133ba576133ba6130cb565b8160405284359150808211156133cf57600080fd5b6133db36838701613276565b83526133e9602086016132e5565b6020840152604085013591508082111561340257600080fd5b5061340f368286016132f6565b60408301525092915050565b601f82111561271c576000816000526020600020601f850160051c810160208610156134445750805b601f850160051c820191505b8181101561346357828155600101613450565b505050505050565b815167ffffffffffffffff811115613485576134856130cb565b613499816134938454613078565b8461341b565b602080601f8311600181146134ec57600084156134b65750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613463565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156135395788860151825594840194600190910190840161351a565b508582101561357557878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b67ffffffffffffffff831681526040602082015260006135a86040830184612de1565b949350505050565b600082601f8301126135c157600080fd5b813560206135d161329783613252565b82815260059290921b840181019181810190868411156135f057600080fd5b8286015b848110156132da57803567ffffffffffffffff8111156136145760008081fd5b6136228986838b01016132f6565b8452509183019183016135f4565b6000602080838503121561364357600080fd5b823567ffffffffffffffff8082111561365b57600080fd5b818501915085601f83011261366f57600080fd5b813561367d61329782613252565b81815260059190911b8301840190848101908883111561369c57600080fd5b8585015b838110156137e8578035858111156136b757600080fd5b8601610120818c037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156136ed57600080fd5b6136f56131b6565b6137008a8401612adc565b815261370e60408401612fa3565b8a82015261371e606084016132e5565b604082015261372f60808401612fa3565b606082015260a0830135608082015260c08301358881111561375057600080fd5b61375e8e8c83870101613276565b60a08301525060e0830135888111156137775760008081fd5b6137858e8c838701016135b0565b60c08301525061010080840135898111156137a05760008081fd5b6137ae8f8d838801016135b0565b60e0840152509183013591888311156137c75760008081fd5b6137d58e8c858701016132f6565b90820152855250509186019186016136a0565b5098975050505050505050565b8051612ad781612aba565b6000806040838503121561381357600080fd5b825167ffffffffffffffff8082111561382b57600080fd5b908401906080828703121561383f57600080fd5b6138476131e0565b825161385281612aba565b8152602083810151818301526040808501519083015260608401518381111561387a57600080fd5b80850194505087601f85011261388f57600080fd5b8351925061389f61329784613252565b83815260059390931b840181019281810190898511156138be57600080fd5b948201945b848610156138dc578551825294820194908201906138c3565b80606085015250508195506138f28188016137f5565b9450505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff8103613944576139446138ff565b60010192915050565b81810381811115610590576105906138ff565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60038110612b5f57612b5f612b20565b604081016139ad828561398f565b610d39602083018461398f565b67ffffffffffffffff818116838216019080821115610883576108836138ff565b60ff8181168382160290811690818114610883576108836138ff565b60ff8181168382160190811115610590576105906138ff565b60008282518085526020808601955060208260051b8401016020860160005b84811015612c0a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868403018952613a69838351612a43565b98840198925090830190600101613a2f565b600061014067ffffffffffffffff808e16845263ffffffff8d166020850152613aa7604085018d612b4f565b8a6060850152808a1660808501528160a0850152613ac78285018a613a10565b915083820360c0850152613adb8289613a10565b60ff881660e08601529086166101008501528381036101208501529050613b028185612a43565b9d9c5050505050505050505050505056fe434349504361706162696c697479436f6e66696775726174696f6e20312e362e302d646576a164736f6c6343000818000a", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"capabilityRegistry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"ChainConfigNotSetForChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"ChainSelectorNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ChainSelectorNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FChainMustBePositive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FMustBePositive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidConfigLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumCCIPCapabilityConfiguration.ConfigState\",\"name\":\"currentState\",\"type\":\"uint8\"},{\"internalType\":\"enumCCIPCapabilityConfiguration.ConfigState\",\"name\":\"proposedState\",\"type\":\"uint8\"}],\"name\":\"InvalidConfigStateTransition\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPluginType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"}],\"name\":\"NodeNotInRegistry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonExistentConfigTransition\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"got\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimum\",\"type\":\"uint256\"}],\"name\":\"NotEnoughTransmitters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfframpAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCapabilityRegistryCanCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"p2pIdsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"signersLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"transmittersLength\",\"type\":\"uint256\"}],\"name\":\"P2PIdsLengthNotMatching\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyBootstrapP2PIds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyOCR3Configs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManySigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyTransmitters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"got\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expected\",\"type\":\"uint64\"}],\"name\":\"WrongConfigCount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"got\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expected\",\"type\":\"bytes32\"}],\"name\":\"WrongConfigDigest\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"got\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expected\",\"type\":\"bytes32\"}],\"name\":\"WrongConfigDigestBlueGreen\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"CapabilityConfigurationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"ChainConfigRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"readers\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint8\",\"name\":\"fChain\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structCCIPCapabilityConfiguration.ChainConfig\",\"name\":\"chainConfig\",\"type\":\"tuple\"}],\"name\":\"ChainConfigSet\",\"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\":[{\"internalType\":\"uint64[]\",\"name\":\"chainSelectorRemoves\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"readers\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint8\",\"name\":\"fChain\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPCapabilityConfiguration.ChainConfig\",\"name\":\"chainConfig\",\"type\":\"tuple\"}],\"internalType\":\"structCCIPCapabilityConfiguration.ChainConfigInfo[]\",\"name\":\"chainConfigAdds\",\"type\":\"tuple[]\"}],\"name\":\"applyChainConfigUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"}],\"name\":\"beforeCapabilityConfigSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllChainConfigs\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"readers\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint8\",\"name\":\"fChain\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPCapabilityConfiguration.ChainConfig\",\"name\":\"chainConfig\",\"type\":\"tuple\"}],\"internalType\":\"structCCIPCapabilityConfiguration.ChainConfigInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"getCapabilityConfiguration\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"configuration\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"enumCCIPCapabilityConfiguration.PluginType\",\"name\":\"pluginType\",\"type\":\"uint8\"}],\"name\":\"getOCRConfig\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enumCCIPCapabilityConfiguration.PluginType\",\"name\":\"pluginType\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"F\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"offrampAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"bootstrapP2PIds\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"p2pIds\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes[]\",\"name\":\"signers\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"transmitters\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPCapabilityConfiguration.OCR3Config\",\"name\":\"config\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"configCount\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"}],\"internalType\":\"structCCIPCapabilityConfiguration.OCR3ConfigWithMeta[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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: "0x60a06040523480156200001157600080fd5b5060405162003eed38038062003eed83398101604081905262000034916200017e565b33806000816200008b5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000be57620000be81620000d3565b5050506001600160a01b0316608052620001b0565b336001600160a01b038216036200012d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000082565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000602082840312156200019157600080fd5b81516001600160a01b0381168114620001a957600080fd5b9392505050565b608051613d1a620001d360003960008181610cdb0152610f700152613d1a6000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80638da5cb5b11610076578063f2fde38b1161005b578063f2fde38b1461014e578063f442c89a14610161578063fba64a7c1461017457600080fd5b80638da5cb5b14610111578063ddc042a81461013957600080fd5b8063181f5a77146100a85780634bd0473f146100c657806379ba5097146100e65780638318ed5d146100f0575b600080fd5b6100b0610187565b6040516100bd9190612bf6565b60405180910390f35b6100d96100d4366004612c3a565b6101a3565b6040516100bd9190612d66565b6100ee6105ee565b005b6100b06100fe366004612f32565b5060408051602081019091526000815290565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100bd565b6101416106f0565b6040516100bd9190612f93565b6100ee61015c366004613023565b6108e2565b6100ee61016f3660046130a5565b6108f6565b6100ee610182366004613129565b610cc3565b604051806060016040528060258152602001613ce96025913981565b63ffffffff821660009081526005602052604081206060918360018111156101cd576101cd612c6f565b60018111156101de576101de612c6f565b8152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156105e157600084815260209020604080516101a08101909152600984029091018054829060608201908390829060ff16600181111561025157610251612c6f565b600181111561026257610262612c6f565b8152815467ffffffffffffffff6101008204811660208085019190915260ff69010000000000000000008404166040808601919091526a010000000000000000000090930490911660608401526001840154608084015260028401805483518184028101840190945280845260a090940193909183018282801561030557602002820191906000526020600020905b8154815260200190600101908083116102f1575b505050505081526020016003820180548060200260200160405190810160405280929190818152602001828054801561035d57602002820191906000526020600020905b815481526020019060010190808311610349575b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156104375783829060005260206000200180546103aa906131e6565b80601f01602080910402602001604051908101604052809291908181526020018280546103d6906131e6565b80156104235780601f106103f857610100808354040283529160200191610423565b820191906000526020600020905b81548152906001019060200180831161040657829003601f168201915b50505050508152602001906001019061038b565b50505050815260200160058201805480602002602001604051908101604052809291908181526020016000905b82821015610510578382906000526020600020018054610483906131e6565b80601f01602080910402602001604051908101604052809291908181526020018280546104af906131e6565b80156104fc5780601f106104d1576101008083540402835291602001916104fc565b820191906000526020600020905b8154815290600101906020018083116104df57829003601f168201915b505050505081526020019060010190610464565b505050508152602001600682018054610528906131e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610554906131e6565b80156105a15780601f10610576576101008083540402835291602001916105a1565b820191906000526020600020905b81548152906001019060200180831161058457829003601f168201915b505050919092525050508152600782015467ffffffffffffffff16602080830191909152600890920154604090910152908252600192909201910161020c565b5050505090505b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b606060006106fe6003610d84565b9050600061070c6003610d98565b67ffffffffffffffff81111561072457610724613239565b60405190808252806020026020018201604052801561075d57816020015b61074a61292a565b8152602001906001900390816107425790505b50905060005b82518110156108db57600083828151811061078057610780613268565b60209081029190910181015160408051808201825267ffffffffffffffff83168082526000908152600285528290208251815460808188028301810190955260608201818152959750929586019490939192849284919084018282801561080657602002820191906000526020600020905b8154815260200190600101908083116107f2575b5050509183525050600182015460ff166020820152600282018054604090920191610830906131e6565b80601f016020809104026020016040519081016040528092919081815260200182805461085c906131e6565b80156108a95780601f1061087e576101008083540402835291602001916108a9565b820191906000526020600020905b81548152906001019060200180831161088c57829003601f168201915b5050505050815250508152508383815181106108c7576108c7613268565b602090810291909101015250600101610763565b5092915050565b6108ea610da2565b6108f381610e25565b50565b6108fe610da2565b60005b83811015610ae45761094585858381811061091e5761091e613268565b90506020020160208101906109339190613297565b60039067ffffffffffffffff16610f1a565b6109af5784848281811061095b5761095b613268565b90506020020160208101906109709190613297565b6040517f1bd4d2d200000000000000000000000000000000000000000000000000000000815267ffffffffffffffff909116600482015260240161066b565b600260008686848181106109c5576109c5613268565b90506020020160208101906109da9190613297565b67ffffffffffffffff1681526020810191909152604001600090812090610a018282612972565b6001820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610a39600283016000612990565b5050610a77858583818110610a5057610a50613268565b9050602002016020810190610a659190613297565b60039067ffffffffffffffff16610f32565b507f2a680691fef3b2d105196805935232c661ce703e92d464ef0b94a7bc62d714f0858583818110610aab57610aab613268565b9050602002016020810190610ac09190613297565b60405167ffffffffffffffff909116815260200160405180910390a1600101610901565b5060005b81811015610cbc576000838383818110610b0457610b04613268565b9050602002810190610b1691906132b2565b610b249060208101906132f0565b610b2d906134f2565b80519091506000858585818110610b4657610b46613268565b9050602002810190610b5891906132b2565b610b66906020810190613297565b905060005b8251811015610b9e57610b96838281518110610b8957610b89613268565b6020026020010151610f3e565b600101610b6b565b50826020015160ff16600003610be0576040517fa9b3766e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff81166000908152600260209081526040909120845180518693610c109284929101906129ca565b5060208201516001820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff90921691909117905560408201516002820190610c5d90826135d9565b50610c7791506003905067ffffffffffffffff8316611058565b507f05dd57854af2c291a94ea52e7c43d80bc3be7fa73022f98b735dea86642fa5e08184604051610ca99291906136f3565b60405180910390a1505050600101610ae8565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d32576040517f7b2485a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d408486018661379e565b9050600080610d4e83611064565b8151919350915015610d6657610d66846000846112c9565b805115610d7957610d79846001836112c9565b505050505050505050565b60606000610d9183611a16565b9392505050565b60006105e8825490565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015260640161066b565b565b3373ffffffffffffffffffffffffffffffffffffffff821603610ea4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640161066b565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60008181526001830160205260408120541515610d91565b6000610d918383611a72565b6040517f50c946fe000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906350c946fe90602401600060405180830381865afa158015610fcc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526110129190810190613994565b506040810151909150611054576040517f8907a4fa0000000000000000000000000000000000000000000000000000000081526004810183905260240161066b565b5050565b6000610d918383611b65565b606080600460ff16835111156110a6576040517f8854586400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160028082526060820190925290816020015b61112d6040805161014081019091528060008152602001600067ffffffffffffffff168152602001600060ff168152602001600067ffffffffffffffff1681526020016000801916815260200160608152602001606081526020016060815260200160608152602001606081525090565b8152602001906001900390816110bc57505060408051600280825260608201909252919350602082015b6111c86040805161014081019091528060008152602001600067ffffffffffffffff168152602001600060ff168152602001600067ffffffffffffffff1681526020016000801916815260200160608152602001606081526020016060815260200160608152602001606081525090565b81526020019060019003908161115757905050905060008060005b85518110156112bc57600086828151811061120057611200613268565b602002602001015160000151600181111561121d5761121d612c6f565b0361126d5785818151811061123457611234613268565b6020026020010151858460ff168151811061125157611251613268565b60200260200101819052508261126690613ac2565b92506112b4565b85818151811061127f5761127f613268565b6020026020010151848360ff168151811061129c5761129c613268565b6020026020010181905250816112b190613ac2565b91505b6001016111e3565b5090835281529092909150565b63ffffffff83166000908152600560205260408120818460018111156112f1576112f1612c6f565b600181111561130257611302612c6f565b8152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561170557600084815260209020604080516101a08101909152600984029091018054829060608201908390829060ff16600181111561137557611375612c6f565b600181111561138657611386612c6f565b8152815467ffffffffffffffff6101008204811660208085019190915260ff69010000000000000000008404166040808601919091526a010000000000000000000090930490911660608401526001840154608084015260028401805483518184028101840190945280845260a090940193909183018282801561142957602002820191906000526020600020905b815481526020019060010190808311611415575b505050505081526020016003820180548060200260200160405190810160405280929190818152602001828054801561148157602002820191906000526020600020905b81548152602001906001019080831161146d575b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b8282101561155b5783829060005260206000200180546114ce906131e6565b80601f01602080910402602001604051908101604052809291908181526020018280546114fa906131e6565b80156115475780601f1061151c57610100808354040283529160200191611547565b820191906000526020600020905b81548152906001019060200180831161152a57829003601f168201915b5050505050815260200190600101906114af565b50505050815260200160058201805480602002602001604051908101604052809291908181526020016000905b828210156116345783829060005260206000200180546115a7906131e6565b80601f01602080910402602001604051908101604052809291908181526020018280546115d3906131e6565b80156116205780601f106115f557610100808354040283529160200191611620565b820191906000526020600020905b81548152906001019060200180831161160357829003601f168201915b505050505081526020019060010190611588565b50505050815260200160068201805461164c906131e6565b80601f0160208091040260200160405190810160405280929190818152602001828054611678906131e6565b80156116c55780601f1061169a576101008083540402835291602001916116c5565b820191906000526020600020905b8154815290600101906020018083116116a857829003601f168201915b505050919092525050508152600782015467ffffffffffffffff166020808301919091526008909201546040909101529082526001929092019101611330565b50505050905060006117178251611bb4565b905060006117258451611bb4565b90506117318282611c06565b60006117408785878686611cfa565b905061174c84826120e6565b63ffffffff871660009081526005602052604081209087600181111561177457611774612c6f565b600181111561178557611785612c6f565b8152602001908152602001600020600061179f9190612a15565b60005b8151811015611a0c5763ffffffff88166000908152600560205260408120908860018111156117d3576117d3612c6f565b60018111156117e4576117e4612c6f565b815260200190815260200160002082828151811061180457611804613268565b6020908102919091018101518254600181810185556000948552929093208151805160099095029091018054929490939192849283917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690838181111561186e5761186e612c6f565b02179055506020828101518254604085015160608601517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90921661010067ffffffffffffffff948516027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff1617690100000000000000000060ff90921691909102177fffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffff166a010000000000000000000092909116919091021782556080830151600183015560a0830151805161194b92600285019201906129ca565b5060c082015180516119679160038401916020909101906129ca565b5060e08201518051611983916004840191602090910190612a36565b5061010082015180516119a0916005840191602090910190612a36565b5061012082015160068201906119b690826135d9565b50505060208201516007820180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9092169190911790556040909101516008909101556001016117a2565b5050505050505050565b606081600001805480602002602001604051908101604052809291908181526020018280548015611a6657602002820191906000526020600020905b815481526020019060010190808311611a52575b50505050509050919050565b60008181526001830160205260408120548015611b5b576000611a96600183613ae1565b8554909150600090611aaa90600190613ae1565b9050818114611b0f576000866000018281548110611aca57611aca613268565b9060005260206000200154905080876000018481548110611aed57611aed613268565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611b2057611b20613af4565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506105e8565b60009150506105e8565b6000818152600183016020526040812054611bac575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105e8565b5060006105e8565b60006002821115611bf4576040517f3e4785260000000000000000000000000000000000000000000000000000000081526004810183905260240161066b565b8160028111156105e8576105e8612c6f565b600080836002811115611c1b57611c1b612c6f565b148015611c3957506001826002811115611c3757611c37612c6f565b145b905060006001846002811115611c5157611c51612c6f565b148015611c6f57506002836002811115611c6d57611c6d612c6f565b145b905060006002856002811115611c8757611c87612c6f565b148015611ca557506001846002811115611ca357611ca3612c6f565b145b90508280611cb05750815b80611cb85750805b15611cc4575050505050565b84846040517f0a6b675b00000000000000000000000000000000000000000000000000000000815260040161066b929190613b33565b60606000845167ffffffffffffffff811115611d1857611d18613239565b604051908082528060200260200182016040528015611d41578160200160208202803683370190505b5090506000846002811115611d5857611d58612c6f565b148015611d7657506001836002811115611d7457611d74612c6f565b145b15611db757600181600081518110611d9057611d90613268565b602002602001019067ffffffffffffffff16908167ffffffffffffffff1681525050611f1f565b6001846002811115611dcb57611dcb612c6f565b148015611de957506002836002811115611de757611de7612c6f565b145b15611e805785600081518110611e0157611e01613268565b60200260200101516020015181600081518110611e2057611e20613268565b602002602001019067ffffffffffffffff16908167ffffffffffffffff168152505085600081518110611e5557611e55613268565b6020026020010151602001516001611e6d9190613b4e565b81600181518110611d9057611d90613268565b6002846002811115611e9457611e94612c6f565b148015611eb257506001836002811115611eb057611eb0612c6f565b145b15611ee95785600181518110611eca57611eca613268565b60200260200101516020015181600081518110611d9057611d90613268565b83836040517f0a6b675b00000000000000000000000000000000000000000000000000000000815260040161066b929190613b33565b6000855167ffffffffffffffff811115611f3b57611f3b613239565b604051908082528060200260200182016040528015611ff157816020015b604080516101a081018252600060608083018281526080840183905260a0840183905260c0840183905260e084018390526101008401829052610120840182905261014084018290526101608401829052610180840191909152825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611f595790505b50905060005b82518110156120da5761202287828151811061201557612015613268565b6020026020010151612465565b604051806060016040528088838151811061203f5761203f613268565b6020026020010151815260200184838151811061205e5761205e613268565b602002602001015167ffffffffffffffff1681526020016120b28b86858151811061208b5761208b613268565b60200260200101518b86815181106120a5576120a5613268565b6020026020010151612855565b8152508282815181106120c7576120c7613268565b6020908102919091010152600101611ff7565b50979650505050505050565b81518151811580156120f85750806001145b1561219a578260008151811061211057612110613268565b60200260200101516020015167ffffffffffffffff16600114612194578260008151811061214057612140613268565b60209081029190910181015101516040517fc1658eb800000000000000000000000000000000000000000000000000000000815267ffffffffffffffff90911660048201526001602482015260440161066b565b50505050565b8160011480156121aa5750806002145b1561236057836000815181106121c2576121c2613268565b602002602001015160400151836000815181106121e1576121e1613268565b6020026020010151604001511461226d578260008151811061220557612205613268565b6020026020010151604001518460008151811061222457612224613268565b6020026020010151604001516040517fc7ccdd7f00000000000000000000000000000000000000000000000000000000815260040161066b929190918252602082015260400190565b8360008151811061228057612280613268565b60200260200101516020015160016122989190613b4e565b67ffffffffffffffff16836001815181106122b5576122b5613268565b60200260200101516020015167ffffffffffffffff161461219457826001815181106122e3576122e3613268565b6020026020010151602001518460008151811061230257612302613268565b602002602001015160200151600161231a9190613b4e565b6040517fc1658eb800000000000000000000000000000000000000000000000000000000815267ffffffffffffffff92831660048201529116602482015260440161066b565b8160021480156123705750806001145b15612433578360018151811061238857612388613268565b602002602001015160400151836000815181106123a7576123a7613268565b6020026020010151604001511461219457826000815181106123cb576123cb613268565b602002602001015160400151846001815181106123ea576123ea613268565b6020026020010151604001516040517f9e97567000000000000000000000000000000000000000000000000000000000815260040161066b929190918252602082015260400190565b6040517f1f1b2bb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015167ffffffffffffffff166000036124ad576040517f698cf8e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000815160018111156124c2576124c2612c6f565b141580156124e357506001815160018111156124e0576124e0612c6f565b14155b1561251a576040517f3302dbd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080810151612555576040517f358c192700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516125709060039067ffffffffffffffff16610f1a565b6125b85760208101516040517f1bd4d2d200000000000000000000000000000000000000000000000000000000815267ffffffffffffffff909116600482015260240161066b565b60e081015151601f10156125f8576040517f1b925da600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61010081015151601f1015612639576040517f645960ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208082015167ffffffffffffffff166000908152600290915260408120600101546126699060ff166003613b6f565b612674906001613b8b565b60ff169050808261010001515110156126cb57610100820151516040517f548dd21f00000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260440161066b565b816040015160ff1660000361270c576040517f39d1a4d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604082015161271c906003613b6f565b60ff168260e00151511161275c576040517f4856694e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160e00151518260c00151511415806127805750816101000151518260c001515114155b156127db5760c08201515160e083015151610100840151516040517fba900f6d00000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152604482015260640161066b565b8160c00151518260a0015151111561281f576040517f8473d80700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8260e0015151811015612850576128488360c001518281518110610b8957610b89613268565b600101612822565b505050565b60008082602001518584600001518560800151878760a001518860c001518960e001518a61010001518b604001518c606001518d61012001516040516020016128a99c9b9a99989796959493929190613c0f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101207dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e0a000000000000000000000000000000000000000000000000000000000000179150509392505050565b6040518060400160405280600067ffffffffffffffff16815260200161296d604051806060016040528060608152602001600060ff168152602001606081525090565b905290565b50805460008255906000526020600020908101906108f39190612a88565b50805461299c906131e6565b6000825580601f106129ac575050565b601f0160209004906000526020600020908101906108f39190612a88565b828054828255906000526020600020908101928215612a05579160200282015b82811115612a055782518255916020019190600101906129ea565b50612a11929150612a88565b5090565b50805460008255600902906000526020600020908101906108f39190612a9d565b828054828255906000526020600020908101928215612a7c579160200282015b82811115612a7c5782518290612a6c90826135d9565b5091602001919060010190612a56565b50612a11929150612b57565b5b80821115612a115760008155600101612a89565b80821115612a115780547fffffffffffffffffffffffffffff0000000000000000000000000000000000001681556000600182018190558181612ae36002830182612972565b612af1600383016000612972565b612aff600483016000612b74565b612b0d600583016000612b74565b612b1b600683016000612990565b5050506007810180547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016905560006008820155600901612a9d565b80821115612a11576000612b6b8282612990565b50600101612b57565b50805460008255906000526020600020908101906108f39190612b57565b6000815180845260005b81811015612bb857602081850181015186830182015201612b9c565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610d916020830184612b92565b63ffffffff811681146108f357600080fd5b8035612c2681612c09565b919050565b803560028110612c2657600080fd5b60008060408385031215612c4d57600080fd5b8235612c5881612c09565b9150612c6660208401612c2b565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110612cae57612cae612c6f565b9052565b60008151808452602080850194506020840160005b83811015612ce357815187529582019590820190600101612cc7565b509495945050505050565b60008282518085526020808601955060208260051b8401016020860160005b84811015612d59577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868403018952612d47838351612b92565b98840198925090830190600101612d0d565b5090979650505050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b83811015612f24577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0898403018552815160608151818652612dd48287018251612c9e565b898101516080612def8189018367ffffffffffffffff169052565b8a830151915060a0612e05818a018460ff169052565b938301519360c09250612e238984018667ffffffffffffffff169052565b81840151945060e0915084828a01528084015194505061014061010081818b0152612e526101a08b0187612cb2565b95508385015193507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0610120818c890301818d0152612e918887612cb2565b9750848701519550818c890301848d0152612eac8887612cee565b9750828701519550818c8903016101608d0152612ec98887612cee565b975080870151965050808b8803016101808c01525050505050612eec8282612b92565b91505088820151612f088a87018267ffffffffffffffff169052565b5090870151938701939093529386019390860190600101612d8f565b509098975050505050505050565b600060208284031215612f4457600080fd5b8135610d9181612c09565b6000815160608452612f646060850182612cb2565b905060ff602084015116602085015260408301518482036040860152612f8a8282612b92565b95945050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b83811015612f24578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805167ffffffffffffffff16845287015187840187905261301087850182612f4f565b9588019593505090860190600101612fbc565b60006020828403121561303557600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610d9157600080fd5b60008083601f84011261306b57600080fd5b50813567ffffffffffffffff81111561308357600080fd5b6020830191508360208260051b850101111561309e57600080fd5b9250929050565b600080600080604085870312156130bb57600080fd5b843567ffffffffffffffff808211156130d357600080fd5b6130df88838901613059565b909650945060208701359150808211156130f857600080fd5b5061310587828801613059565b95989497509550505050565b803567ffffffffffffffff81168114612c2657600080fd5b6000806000806000806080878903121561314257600080fd5b863567ffffffffffffffff8082111561315a57600080fd5b6131668a838b01613059565b9098509650602089013591508082111561317f57600080fd5b818901915089601f83011261319357600080fd5b8135818111156131a257600080fd5b8a60208285010111156131b457600080fd5b6020830196508095505050506131cc60408801613111565b91506131da60608801612c1b565b90509295509295509295565b600181811c908216806131fa57607f821691505b602082108103613233577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156132a957600080fd5b610d9182613111565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126132e657600080fd5b9190910192915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126132e657600080fd5b604051610140810167ffffffffffffffff8111828210171561334857613348613239565b60405290565b6040516080810167ffffffffffffffff8111828210171561334857613348613239565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156133b8576133b8613239565b604052919050565b600067ffffffffffffffff8211156133da576133da613239565b5060051b60200190565b600082601f8301126133f557600080fd5b8135602061340a613405836133c0565b613371565b8083825260208201915060208460051b87010193508684111561342c57600080fd5b602086015b848110156134485780358352918301918301613431565b509695505050505050565b803560ff81168114612c2657600080fd5b600082601f83011261347557600080fd5b813567ffffffffffffffff81111561348f5761348f613239565b6134c060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613371565b8181528460208386010111156134d557600080fd5b816020850160208301376000918101602001919091529392505050565b60006060823603121561350457600080fd5b6040516060810167ffffffffffffffff828210818311171561352857613528613239565b81604052843591508082111561353d57600080fd5b613549368387016133e4565b835261355760208601613453565b6020840152604085013591508082111561357057600080fd5b5061357d36828601613464565b60408301525092915050565b601f821115612850576000816000526020600020601f850160051c810160208610156135b25750805b601f850160051c820191505b818110156135d1578281556001016135be565b505050505050565b815167ffffffffffffffff8111156135f3576135f3613239565b6136078161360184546131e6565b84613589565b602080601f83116001811461365a57600084156136245750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556135d1565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156136a757888601518255948401946001909101908401613688565b50858210156136e357878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b67ffffffffffffffff831681526040602082015260006137166040830184612f4f565b949350505050565b600082601f83011261372f57600080fd5b8135602061373f613405836133c0565b82815260059290921b8401810191818101908684111561375e57600080fd5b8286015b8481101561344857803567ffffffffffffffff8111156137825760008081fd5b6137908986838b0101613464565b845250918301918301613762565b600060208083850312156137b157600080fd5b823567ffffffffffffffff808211156137c957600080fd5b818501915085601f8301126137dd57600080fd5b81356137eb613405826133c0565b81815260059190911b8301840190848101908883111561380a57600080fd5b8585015b8381101561397c5780358581111561382557600080fd5b8601610140818c037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001121561385a57600080fd5b613862613324565b61386d898301612c2b565b815261387b60408301613111565b8982015261388b60608301613453565b604082015261389c60808301613111565b606082015260a0820135608082015260c0820135878111156138bd57600080fd5b6138cb8d8b838601016133e4565b60a08301525060e0820135878111156138e357600080fd5b6138f18d8b838601016133e4565b60c083015250610100808301358881111561390b57600080fd5b6139198e8c8387010161371e565b60e084015250610120808401358981111561393357600080fd5b6139418f8d8388010161371e565b838501525061014084013591508882111561395b57600080fd5b6139698e8c84870101613464565b908301525084525091860191860161380e565b5098975050505050505050565b8051612c2681612c09565b600080604083850312156139a757600080fd5b825167ffffffffffffffff808211156139bf57600080fd5b90840190608082870312156139d357600080fd5b6139db61334e565b82516139e681612c09565b81526020838101518183015260408085015190830152606084015183811115613a0e57600080fd5b80850194505087601f850112613a2357600080fd5b83519250613a33613405846133c0565b83815260059390931b84018101928181019089851115613a5257600080fd5b948201945b84861015613a7057855182529482019490820190613a57565b8060608501525050819550613a86818801613989565b9450505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff8103613ad857613ad8613a93565b60010192915050565b818103818111156105e8576105e8613a93565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60038110612cae57612cae612c6f565b60408101613b418285613b23565b610d916020830184613b23565b67ffffffffffffffff8181168382160190808211156108db576108db613a93565b60ff81811683821602908116908181146108db576108db613a93565b60ff81811683821601908111156105e8576105e8613a93565b60008282518085526020808601955060208260051b8401016020860160005b84811015612d59577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868403018952613bfd838351612b92565b98840198925090830190600101613bc3565b67ffffffffffffffff8d16815263ffffffff8c1660208201526000610180613c3a604084018e612c9e565b8b6060840152613c56608084018c67ffffffffffffffff169052565b8060a0840152613c688184018b612cb2565b905082810360c0840152613c7c818a612cb2565b905082810360e0840152613c908189613ba4565b9050828103610100840152613ca58188613ba4565b60ff8716610120850152905067ffffffffffffffff8516610140840152828103610160840152613cd58185612b92565b9f9e50505050505050505050505050505056fe434349504361706162696c697479436f6e66696775726174696f6e20312e362e302d646576a164736f6c6343000818000a", } var CCIPCapabilityConfigurationABI = CCIPCapabilityConfigurationMetaData.ABI 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 455d82f07d..fbebf4e688 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 @@ -5,7 +5,7 @@ burn_from_mint_token_pool: ../../../contracts/solc/v0.8.24/BurnFromMintTokenPool burn_mint_token_pool: ../../../contracts/solc/v0.8.24/BurnMintTokenPool/BurnMintTokenPool.abi ../../../contracts/solc/v0.8.24/BurnMintTokenPool/BurnMintTokenPool.bin fee3f82935ce7a26c65e12f19a472a4fccdae62755abdb42d8b0a01f0f06981a burn_mint_token_pool_and_proxy: ../../../contracts/solc/v0.8.24/BurnMintTokenPoolAndProxy/BurnMintTokenPoolAndProxy.abi ../../../contracts/solc/v0.8.24/BurnMintTokenPoolAndProxy/BurnMintTokenPoolAndProxy.bin c7efa00d2be62a97a814730c8e13aa70794ebfdd38a9f3b3c11554a5dfd70478 burn_with_from_mint_token_pool: ../../../contracts/solc/v0.8.24/BurnWithFromMintTokenPool/BurnWithFromMintTokenPool.abi ../../../contracts/solc/v0.8.24/BurnWithFromMintTokenPool/BurnWithFromMintTokenPool.bin a0728e186af74968101135a58a483320ced9ab79b22b1b24ac6994254ee79097 -ccip_capability_configuration: ../../../contracts/solc/v0.8.24/CCIPCapabilityConfiguration/CCIPCapabilityConfiguration.abi ../../../contracts/solc/v0.8.24/CCIPCapabilityConfiguration/CCIPCapabilityConfiguration.bin 953641f1a6a89d755ed84cc58c955f06f9babe00cc0915e6c820f4c7391756ec +ccip_capability_configuration: ../../../contracts/solc/v0.8.24/CCIPCapabilityConfiguration/CCIPCapabilityConfiguration.abi ../../../contracts/solc/v0.8.24/CCIPCapabilityConfiguration/CCIPCapabilityConfiguration.bin fd41d8b85aaa692dea5ae37272a9487ed6fa2b51cc63e68249a9176ea92993ae commit_store: ../../../contracts/solc/v0.8.24/CommitStore/CommitStore.abi ../../../contracts/solc/v0.8.24/CommitStore/CommitStore.bin ddc26c10c2a52b59624faae9005827b09b98db4566887a736005e8cc37cf8a51 commit_store_helper: ../../../contracts/solc/v0.8.24/CommitStoreHelper/CommitStoreHelper.abi ../../../contracts/solc/v0.8.24/CommitStoreHelper/CommitStoreHelper.bin ebd8aac686fa28a71d4212bcd25a28f8f640d50dce5e50498b2f6b8534890b69 ether_sender_receiver: ../../../contracts/solc/v0.8.24/EtherSenderReceiver/EtherSenderReceiver.abi ../../../contracts/solc/v0.8.24/EtherSenderReceiver/EtherSenderReceiver.bin 09510a3f773f108a3c231e8d202835c845ded862d071ec54c4f89c12d868b8de