From 0e199ae27b9c2703523d1cccb9a10bbb16f5cc2e Mon Sep 17 00:00:00 2001 From: Alex Gartner Date: Tue, 13 Aug 2024 09:53:48 -0700 Subject: [PATCH 1/4] fix(ci): correct e2e nightly syntax (#2691) --- .github/workflows/e2e.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index a00ce4e2ec..d11e422b21 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -113,7 +113,7 @@ jobs: core.setOutput('ADMIN_TESTS', true); core.setOutput('PERFORMANCE_TESTS', true); core.setOutput('STATEFUL_DATA_TESTS', true); - core.setOutput('TSS_MIGRATION_TESTS', labels.includes('TSS_MIGRATION_TESTS')); + core.setOutput('TSS_MIGRATION_TESTS', true); core.setOutput('SOLANA_TESTS', true); } else if (context.eventName === 'workflow_dispatch') { core.setOutput('DEFAULT_TESTS', context.payload.inputs['default-test']); From 8efbf3c92c8dd581166adf72e644b5df7d72548e Mon Sep 17 00:00:00 2001 From: Alex Gartner Date: Tue, 13 Aug 2024 10:17:27 -0700 Subject: [PATCH 2/4] fix(e2e): skip tracker check in upgrade tests (#2688) * set OLD_VERSION before running e2e to tolerate missed upgrade height * add skip-tracker-check arg --- cmd/zetae2e/local/local.go | 7 ++++++- contrib/localnet/orchestrator/start-zetae2e.sh | 13 ++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/cmd/zetae2e/local/local.go b/cmd/zetae2e/local/local.go index cb24096859..86adfac7c4 100644 --- a/cmd/zetae2e/local/local.go +++ b/cmd/zetae2e/local/local.go @@ -41,6 +41,7 @@ const ( flagTestTSSMigration = "test-tss-migration" flagSkipBitcoinSetup = "skip-bitcoin-setup" flagSkipHeaderProof = "skip-header-proof" + flagSkipTrackerCheck = "skip-tracker-check" ) var ( @@ -73,6 +74,7 @@ func NewLocalCmd() *cobra.Command { cmd.Flags().Bool(flagSkipBitcoinSetup, false, "set to true to skip bitcoin wallet setup") cmd.Flags().Bool(flagSkipHeaderProof, false, "set to true to skip header proof tests") cmd.Flags().Bool(flagTestTSSMigration, false, "set to true to include a migration test at the end") + cmd.Flags().Bool(flagSkipTrackerCheck, false, "set to true to skip tracker check at the end of the tests") return cmd } @@ -94,6 +96,7 @@ func localE2ETest(cmd *cobra.Command, _ []string) { skipSetup = must(cmd.Flags().GetBool(flagSkipSetup)) skipBitcoinSetup = must(cmd.Flags().GetBool(flagSkipBitcoinSetup)) skipHeaderProof = must(cmd.Flags().GetBool(flagSkipHeaderProof)) + skipTrackerCheck = must(cmd.Flags().GetBool(flagSkipTrackerCheck)) testTSSMigration = must(cmd.Flags().GetBool(flagTestTSSMigration)) ) @@ -354,7 +357,9 @@ func localE2ETest(cmd *cobra.Command, _ []string) { runTSSMigrationTest(deployerRunner, logger, verbose, conf) } // Verify that there are no trackers left over after tests complete - deployerRunner.EnsureNoTrackers() + if !skipTrackerCheck { + deployerRunner.EnsureNoTrackers() + } // print and validate report networkReport, err := deployerRunner.GenerateNetworkReport() if err != nil { diff --git a/contrib/localnet/orchestrator/start-zetae2e.sh b/contrib/localnet/orchestrator/start-zetae2e.sh index dda5b12cd7..5fa2f3e443 100644 --- a/contrib/localnet/orchestrator/start-zetae2e.sh +++ b/contrib/localnet/orchestrator/start-zetae2e.sh @@ -99,9 +99,11 @@ if [ "$LOCALNET_MODE" == "upgrade" ]; then # set upgrade height to 225 by default UPGRADE_HEIGHT=${UPGRADE_HEIGHT:=225} + OLD_VERSION=$(get_zetacored_version) + COMMON_ARGS="--skip-header-proof --skip-tracker-check" if [[ ! -f deployed.yml ]]; then - zetae2e local $E2E_ARGS --setup-only --config config.yml --config-out deployed.yml --skip-header-proof + zetae2e local $E2E_ARGS --setup-only --config config.yml --config-out deployed.yml ${COMMON_ARGS} if [ $? -ne 0 ]; then echo "e2e setup failed" exit 1 @@ -115,7 +117,7 @@ if [ "$LOCALNET_MODE" == "upgrade" ]; then echo "running E2E command to setup the networks and populate the state..." # Use light flag to ensure tests can complete before the upgrade height - zetae2e local $E2E_ARGS --skip-setup --config deployed.yml --light --skip-header-proof + zetae2e local $E2E_ARGS --skip-setup --config deployed.yml --light ${COMMON_ARGS} if [ $? -ne 0 ]; then echo "first e2e failed" exit 1 @@ -123,9 +125,6 @@ if [ "$LOCALNET_MODE" == "upgrade" ]; then fi echo "Waiting for upgrade height..." - - OLD_VERSION=$(get_zetacored_version) - CURRENT_HEIGHT=0 WAIT_HEIGHT=$(( UPGRADE_HEIGHT - 1 )) # wait for upgrade height @@ -157,9 +156,9 @@ if [ "$LOCALNET_MODE" == "upgrade" ]; then # When the upgrade height is greater than 100 for upgrade test, the Bitcoin tests have been run once, therefore the Bitcoin wallet is already set up # Use light flag to skip advanced tests if [ "$UPGRADE_HEIGHT" -lt 100 ]; then - zetae2e local $E2E_ARGS --skip-setup --config deployed.yml --light --skip-header-proof + zetae2e local $E2E_ARGS --skip-setup --config deployed.yml --light ${COMMON_ARGS} else - zetae2e local $E2E_ARGS --skip-setup --config deployed.yml --skip-bitcoin-setup --light --skip-header-proof + zetae2e local $E2E_ARGS --skip-setup --config deployed.yml --skip-bitcoin-setup --light ${COMMON_ARGS} fi ZETAE2E_EXIT_CODE=$? From 3a542cc53aa08567b774abebac28992c2df5d1a2 Mon Sep 17 00:00:00 2001 From: Alex Gartner Date: Tue, 13 Aug 2024 11:41:22 -0700 Subject: [PATCH 3/4] feat: add created_timestamp to cctx status (#2644) * feat: add created_timestamp to cctx status * set LastUpdatedTimestamp in SetCrossChainTx to ensure it's always updated * guard against nil dereference * add changelog entry --- changelog.md | 1 + docs/openapi/openapi.swagger.yaml | 4 + .../zetacore/crosschain/cross_chain_tx.proto | 2 + testutil/sample/crosschain.go | 5 +- .../crosschain/cross_chain_tx_pb.d.ts | 7 + x/crosschain/keeper/abci.go | 1 - x/crosschain/keeper/abci_test.go | 9 + x/crosschain/keeper/cctx.go | 5 + x/crosschain/keeper/grpc_query_cctx_test.go | 3 + .../msg_server_abort_stuck_cctx_test.go | 2 + .../keeper/msg_server_refund_aborted_tx.go | 2 +- x/crosschain/types/cctx.go | 2 +- x/crosschain/types/cctx_test.go | 2 - x/crosschain/types/cross_chain_tx.pb.go | 177 +++++++++++------- x/crosschain/types/status.go | 3 +- x/crosschain/types/status_test.go | 5 +- 16 files changed, 148 insertions(+), 82 deletions(-) diff --git a/changelog.md b/changelog.md index 7cf196b8c8..32a5115576 100644 --- a/changelog.md +++ b/changelog.md @@ -8,6 +8,7 @@ * [2634](https://github.com/zeta-chain/node/pull/2634) - add support for EIP-1559 gas fees * [2597](https://github.com/zeta-chain/node/pull/2597) - Add generic rpc metrics to zetaclient * [2538](https://github.com/zeta-chain/node/pull/2538) - add background worker routines to shutdown zetaclientd when needed for tss migration +* [2644](https://github.com/zeta-chain/node/pull/2644) - add created_timestamp to cctx status ### Refactor diff --git a/docs/openapi/openapi.swagger.yaml b/docs/openapi/openapi.swagger.yaml index a91158997d..243e13c3af 100644 --- a/docs/openapi/openapi.swagger.yaml +++ b/docs/openapi/openapi.swagger.yaml @@ -58421,6 +58421,10 @@ definitions: format: int64 isAbortRefunded: type: boolean + created_timestamp: + type: string + format: int64 + description: when the CCTX was created. only populated on new transactions. zetacoreemissionsParams: type: object properties: diff --git a/proto/zetachain/zetacore/crosschain/cross_chain_tx.proto b/proto/zetachain/zetacore/crosschain/cross_chain_tx.proto index 88ca547482..c1df04e719 100644 --- a/proto/zetachain/zetacore/crosschain/cross_chain_tx.proto +++ b/proto/zetachain/zetacore/crosschain/cross_chain_tx.proto @@ -89,6 +89,8 @@ message Status { string status_message = 2; int64 lastUpdate_timestamp = 3; bool isAbortRefunded = 4; + // when the CCTX was created. only populated on new transactions. + int64 created_timestamp = 5; } message CrossChainTx { diff --git a/testutil/sample/crosschain.go b/testutil/sample/crosschain.go index c76ced9767..4fd1e70018 100644 --- a/testutil/sample/crosschain.go +++ b/testutil/sample/crosschain.go @@ -196,10 +196,13 @@ func OutboundParamsValidChainID(r *rand.Rand) *types.OutboundParams { func Status(t *testing.T, index string) *types.Status { r := newRandFromStringSeed(t, index) + createdAt := r.Int63() + return &types.Status{ Status: types.CctxStatus(r.Intn(100)), StatusMessage: String(), - LastUpdateTimestamp: r.Int63(), + CreatedTimestamp: createdAt, + LastUpdateTimestamp: createdAt, } } diff --git a/typescript/zetachain/zetacore/crosschain/cross_chain_tx_pb.d.ts b/typescript/zetachain/zetacore/crosschain/cross_chain_tx_pb.d.ts index c4839a61f5..a6a8bd9057 100644 --- a/typescript/zetachain/zetacore/crosschain/cross_chain_tx_pb.d.ts +++ b/typescript/zetachain/zetacore/crosschain/cross_chain_tx_pb.d.ts @@ -315,6 +315,13 @@ export declare class Status extends Message { */ isAbortRefunded: boolean; + /** + * when the CCTX was created. only populated on new transactions. + * + * @generated from field: int64 created_timestamp = 5; + */ + createdTimestamp: bigint; + constructor(data?: PartialMessage); static readonly runtime: typeof proto3; diff --git a/x/crosschain/keeper/abci.go b/x/crosschain/keeper/abci.go index 494603f473..391b417fb0 100644 --- a/x/crosschain/keeper/abci.go +++ b/x/crosschain/keeper/abci.go @@ -171,7 +171,6 @@ func CheckAndUpdateCctxGasPrice( // set new gas price and last update timestamp cctx.GetCurrentOutboundParam().GasPrice = newGasPrice.String() cctx.GetCurrentOutboundParam().GasPriorityFee = newPriorityFee.String() - cctx.CctxStatus.LastUpdateTimestamp = ctx.BlockHeader().Time.Unix() k.SetCrossChainTx(ctx, cctx) return gasPriceIncrease, additionalFees, nil diff --git a/x/crosschain/keeper/abci_test.go b/x/crosschain/keeper/abci_test.go index 7ac38cd917..03da0573f6 100644 --- a/x/crosschain/keeper/abci_test.go +++ b/x/crosschain/keeper/abci_test.go @@ -128,6 +128,7 @@ func TestCheckAndUpdateCctxGasPrice(t *testing.T) { cctx: types.CrossChainTx{ Index: "a1", CctxStatus: &types.Status{ + CreatedTimestamp: sampleTimestamp.Unix(), LastUpdateTimestamp: sampleTimestamp.Unix(), }, OutboundParams: []*types.OutboundParams{ @@ -152,6 +153,7 @@ func TestCheckAndUpdateCctxGasPrice(t *testing.T) { cctx: types.CrossChainTx{ Index: "a2", CctxStatus: &types.Status{ + CreatedTimestamp: sampleTimestamp.Unix(), LastUpdateTimestamp: sampleTimestamp.Unix(), }, OutboundParams: []*types.OutboundParams{ @@ -180,6 +182,7 @@ func TestCheckAndUpdateCctxGasPrice(t *testing.T) { cctx: types.CrossChainTx{ Index: "a3", CctxStatus: &types.Status{ + CreatedTimestamp: sampleTimestamp.Unix(), LastUpdateTimestamp: sampleTimestamp.Unix(), }, OutboundParams: []*types.OutboundParams{ @@ -208,6 +211,7 @@ func TestCheckAndUpdateCctxGasPrice(t *testing.T) { cctx: types.CrossChainTx{ Index: "b0", CctxStatus: &types.Status{ + CreatedTimestamp: sampleTimestamp.Unix(), LastUpdateTimestamp: sampleTimestamp.Unix(), }, OutboundParams: []*types.OutboundParams{ @@ -235,6 +239,7 @@ func TestCheckAndUpdateCctxGasPrice(t *testing.T) { cctx: types.CrossChainTx{ Index: "b1", CctxStatus: &types.Status{ + CreatedTimestamp: sampleTimestamp.Unix(), LastUpdateTimestamp: sampleTimestamp.Unix(), }, OutboundParams: []*types.OutboundParams{ @@ -257,6 +262,7 @@ func TestCheckAndUpdateCctxGasPrice(t *testing.T) { cctx: types.CrossChainTx{ Index: "b2", CctxStatus: &types.Status{ + CreatedTimestamp: sampleTimestamp.Unix(), LastUpdateTimestamp: sampleTimestamp.Unix(), }, OutboundParams: []*types.OutboundParams{ @@ -279,6 +285,7 @@ func TestCheckAndUpdateCctxGasPrice(t *testing.T) { cctx: types.CrossChainTx{ Index: "b3", CctxStatus: &types.Status{ + CreatedTimestamp: sampleTimestamp.Unix(), LastUpdateTimestamp: sampleTimestamp.Unix(), }, OutboundParams: []*types.OutboundParams{ @@ -301,6 +308,7 @@ func TestCheckAndUpdateCctxGasPrice(t *testing.T) { cctx: types.CrossChainTx{ Index: "c1", CctxStatus: &types.Status{ + CreatedTimestamp: sampleTimestamp.Unix(), LastUpdateTimestamp: sampleTimestamp.Unix(), }, OutboundParams: []*types.OutboundParams{ @@ -322,6 +330,7 @@ func TestCheckAndUpdateCctxGasPrice(t *testing.T) { cctx: types.CrossChainTx{ Index: "c2", CctxStatus: &types.Status{ + CreatedTimestamp: sampleTimestamp.Unix(), LastUpdateTimestamp: sampleTimestamp.Unix(), }, OutboundParams: []*types.OutboundParams{ diff --git a/x/crosschain/keeper/cctx.go b/x/crosschain/keeper/cctx.go index b89b517653..306df6979b 100644 --- a/x/crosschain/keeper/cctx.go +++ b/x/crosschain/keeper/cctx.go @@ -56,6 +56,11 @@ func (k Keeper) SetCctxAndNonceToCctxAndInboundHashToCctx(ctx sdk.Context, cctx // SetCrossChainTx set a specific send in the store from its index func (k Keeper) SetCrossChainTx(ctx sdk.Context, cctx types.CrossChainTx) { + // only set the update timestamp if the block height is >0 to allow + // for a genesis import + if cctx.CctxStatus != nil && ctx.BlockHeight() > 0 { + cctx.CctxStatus.LastUpdateTimestamp = ctx.BlockHeader().Time.Unix() + } p := types.KeyPrefix(fmt.Sprintf("%s", types.CCTXKey)) store := prefix.NewStore(ctx.KVStore(k.storeKey), p) b := k.cdc.MustMarshal(&cctx) diff --git a/x/crosschain/keeper/grpc_query_cctx_test.go b/x/crosschain/keeper/grpc_query_cctx_test.go index 77e9bbc175..6112d5e58c 100644 --- a/x/crosschain/keeper/grpc_query_cctx_test.go +++ b/x/crosschain/keeper/grpc_query_cctx_test.go @@ -283,5 +283,8 @@ func TestKeeper_CctxByNonce(t *testing.T) { }) require.NoError(t, err) require.Equal(t, cctx, res.CrossChainTx) + + // ensure that LastUpdateTimestamp is set to current block time + require.Equal(t, res.CrossChainTx.CctxStatus.LastUpdateTimestamp, ctx.BlockTime().Unix()) }) } diff --git a/x/crosschain/keeper/msg_server_abort_stuck_cctx_test.go b/x/crosschain/keeper/msg_server_abort_stuck_cctx_test.go index cdc38b36f2..5e6df45d9b 100644 --- a/x/crosschain/keeper/msg_server_abort_stuck_cctx_test.go +++ b/x/crosschain/keeper/msg_server_abort_stuck_cctx_test.go @@ -74,6 +74,8 @@ func TestMsgServer_AbortStuckCCTX(t *testing.T) { require.True(t, found) require.Equal(t, crosschaintypes.CctxStatus_Aborted, cctxFound.CctxStatus.Status) require.Equal(t, crosschainkeeper.AbortMessage, cctxFound.CctxStatus.StatusMessage) + // ensure the last update timestamp is updated + require.Equal(t, cctxFound.CctxStatus.LastUpdateTimestamp, ctx.BlockTime().Unix()) }) t.Run("can abort a cctx in pending revert", func(t *testing.T) { diff --git a/x/crosschain/keeper/msg_server_refund_aborted_tx.go b/x/crosschain/keeper/msg_server_refund_aborted_tx.go index 201b507af6..fb37dd1c4c 100644 --- a/x/crosschain/keeper/msg_server_refund_aborted_tx.go +++ b/x/crosschain/keeper/msg_server_refund_aborted_tx.go @@ -72,7 +72,7 @@ func (k msgServer) RefundAbortedCCTX( commit() // set the cctx as refunded - cctx.CctxStatus.AbortRefunded(ctx.BlockTime().Unix()) + cctx.CctxStatus.AbortRefunded() k.SetCrossChainTx(ctx, cctx) diff --git a/x/crosschain/types/cctx.go b/x/crosschain/types/cctx.go index 6952a5092f..debd1656d6 100644 --- a/x/crosschain/types/cctx.go +++ b/x/crosschain/types/cctx.go @@ -122,7 +122,6 @@ func (m *CrossChainTx) AddOutbound( m.GetCurrentOutboundParam().EffectiveGasPrice = msg.ObservedOutboundEffectiveGasPrice m.GetCurrentOutboundParam().EffectiveGasLimit = msg.ObservedOutboundEffectiveGasLimit m.GetCurrentOutboundParam().ObservedExternalHeight = msg.ObservedOutboundBlockHeight - m.CctxStatus.LastUpdateTimestamp = ctx.BlockHeader().Time.Unix() return nil } @@ -211,6 +210,7 @@ func NewCCTX(ctx sdk.Context, msg MsgVoteInbound, tssPubkey string) (CrossChainT status := &Status{ Status: CctxStatus_PendingInbound, StatusMessage: "", + CreatedTimestamp: ctx.BlockHeader().Time.Unix(), LastUpdateTimestamp: ctx.BlockHeader().Time.Unix(), IsAbortRefunded: false, } diff --git a/x/crosschain/types/cctx_test.go b/x/crosschain/types/cctx_test.go index 57d09ed188..6a8a460335 100644 --- a/x/crosschain/types/cctx_test.go +++ b/x/crosschain/types/cctx_test.go @@ -199,7 +199,6 @@ func TestCrossChainTx_AddOutbound(t *testing.T) { require.Equal(t, cctx.GetCurrentOutboundParam().EffectiveGasPrice, sdkmath.NewInt(100)) require.Equal(t, cctx.GetCurrentOutboundParam().EffectiveGasLimit, uint64(20)) require.Equal(t, cctx.GetCurrentOutboundParam().ObservedExternalHeight, uint64(10)) - require.Equal(t, cctx.CctxStatus.LastUpdateTimestamp, ctx.BlockHeader().Time.Unix()) }) t.Run("successfully get outbound tx for failed ballot without amount check", func(t *testing.T) { @@ -220,7 +219,6 @@ func TestCrossChainTx_AddOutbound(t *testing.T) { require.Equal(t, cctx.GetCurrentOutboundParam().EffectiveGasPrice, sdkmath.NewInt(100)) require.Equal(t, cctx.GetCurrentOutboundParam().EffectiveGasLimit, uint64(20)) require.Equal(t, cctx.GetCurrentOutboundParam().ObservedExternalHeight, uint64(10)) - require.Equal(t, cctx.CctxStatus.LastUpdateTimestamp, ctx.BlockHeader().Time.Unix()) }) t.Run("failed to get outbound tx if amount does not match value received", func(t *testing.T) { diff --git a/x/crosschain/types/cross_chain_tx.pb.go b/x/crosschain/types/cross_chain_tx.pb.go index 5817c7b709..0f33b7e929 100644 --- a/x/crosschain/types/cross_chain_tx.pb.go +++ b/x/crosschain/types/cross_chain_tx.pb.go @@ -404,6 +404,8 @@ type Status struct { StatusMessage string `protobuf:"bytes,2,opt,name=status_message,json=statusMessage,proto3" json:"status_message,omitempty"` LastUpdateTimestamp int64 `protobuf:"varint,3,opt,name=lastUpdate_timestamp,json=lastUpdateTimestamp,proto3" json:"lastUpdate_timestamp,omitempty"` IsAbortRefunded bool `protobuf:"varint,4,opt,name=isAbortRefunded,proto3" json:"isAbortRefunded,omitempty"` + // when the CCTX was created. only populated on new transactions. + CreatedTimestamp int64 `protobuf:"varint,5,opt,name=created_timestamp,json=createdTimestamp,proto3" json:"created_timestamp,omitempty"` } func (m *Status) Reset() { *m = Status{} } @@ -467,6 +469,13 @@ func (m *Status) GetIsAbortRefunded() bool { return false } +func (m *Status) GetCreatedTimestamp() int64 { + if m != nil { + return m.CreatedTimestamp + } + return 0 +} + type CrossChainTx struct { Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` Index string `protobuf:"bytes,2,opt,name=index,proto3" json:"index,omitempty"` @@ -567,76 +576,77 @@ func init() { } var fileDescriptor_d4c1966807fb5cb2 = []byte{ - // 1100 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcd, 0x72, 0x13, 0x47, - 0x10, 0xd6, 0x22, 0x21, 0x4b, 0xad, 0xbf, 0x65, 0x2c, 0x9c, 0x8d, 0x53, 0x08, 0x47, 0x29, 0x40, - 0x50, 0x41, 0x2a, 0xcc, 0x25, 0x95, 0x9b, 0xed, 0xc2, 0xe0, 0x10, 0xc0, 0xb5, 0x98, 0x1c, 0x38, - 0x64, 0x33, 0xda, 0x6d, 0xad, 0xa6, 0x2c, 0xed, 0x28, 0x3b, 0x23, 0xd7, 0x8a, 0xca, 0x43, 0x24, - 0xef, 0x90, 0x43, 0x8e, 0x79, 0x82, 0x9c, 0xb9, 0x85, 0x63, 0x2a, 0x07, 0x2a, 0x85, 0xdf, 0x20, - 0x4f, 0x90, 0x9a, 0x99, 0x5d, 0xc9, 0x72, 0xb9, 0x6c, 0x42, 0x72, 0x52, 0xf7, 0xd7, 0x33, 0x5f, - 0xb7, 0x7a, 0xbe, 0x9e, 0x59, 0xd8, 0x7c, 0x85, 0x92, 0xfa, 0x43, 0xca, 0xa2, 0x9e, 0xb6, 0x78, - 0x8c, 0x3d, 0x3f, 0xe6, 0x42, 0x18, 0x4c, 0x9b, 0x9e, 0xb6, 0x3d, 0x99, 0x74, 0x27, 0x31, 0x97, - 0x9c, 0x5c, 0x9b, 0xef, 0xe9, 0x66, 0x7b, 0xba, 0x8b, 0x3d, 0xeb, 0xcd, 0x90, 0x87, 0x5c, 0xaf, - 0xec, 0x29, 0xcb, 0x6c, 0x5a, 0xbf, 0x79, 0x46, 0xa2, 0xc9, 0x61, 0xd8, 0xf3, 0xb9, 0x4a, 0xc3, - 0x59, 0x64, 0xd6, 0xb5, 0x7f, 0x2d, 0x40, 0x6d, 0x2f, 0xea, 0xf3, 0x69, 0x14, 0xec, 0xd3, 0x98, - 0x8e, 0x05, 0x59, 0x83, 0xa2, 0xc0, 0x28, 0xc0, 0xd8, 0xb1, 0x36, 0xac, 0x4e, 0xd9, 0x4d, 0x3d, - 0x72, 0x13, 0x1a, 0xc6, 0x4a, 0xeb, 0x63, 0x81, 0x73, 0x69, 0xc3, 0xea, 0xe4, 0xdd, 0x9a, 0x81, - 0x77, 0x14, 0xba, 0x17, 0x90, 0x4f, 0xa0, 0x2c, 0x13, 0x8f, 0xc7, 0x2c, 0x64, 0x91, 0x93, 0xd7, - 0x14, 0x25, 0x99, 0x3c, 0xd3, 0x3e, 0xd9, 0x86, 0xb2, 0x4a, 0xee, 0xc9, 0xd9, 0x04, 0x9d, 0xc2, - 0x86, 0xd5, 0xa9, 0x6f, 0xde, 0xe8, 0x9e, 0xf1, 0xff, 0x26, 0x87, 0x61, 0x57, 0x57, 0xb9, 0xc3, - 0x59, 0x74, 0x30, 0x9b, 0xa0, 0x5b, 0xf2, 0x53, 0x8b, 0x34, 0xe1, 0x32, 0x15, 0x02, 0xa5, 0x73, - 0x59, 0x93, 0x1b, 0x87, 0x3c, 0x84, 0x22, 0x1d, 0xf3, 0x69, 0x24, 0x9d, 0xa2, 0x82, 0xb7, 0x7b, - 0xaf, 0xdf, 0x5e, 0xcf, 0xfd, 0xf9, 0xf6, 0xfa, 0xad, 0x90, 0xc9, 0xe1, 0xb4, 0xdf, 0xf5, 0xf9, - 0xb8, 0xe7, 0x73, 0x31, 0xe6, 0x22, 0xfd, 0xb9, 0x2b, 0x82, 0xc3, 0x9e, 0xaa, 0x43, 0x74, 0x5f, - 0xb0, 0x48, 0xba, 0xe9, 0x76, 0xf2, 0x19, 0xd4, 0x78, 0x5f, 0x60, 0x7c, 0x84, 0x81, 0x37, 0xa4, - 0x62, 0xe8, 0xac, 0xe8, 0x34, 0xd5, 0x0c, 0x7c, 0x44, 0xc5, 0x90, 0x7c, 0x01, 0xce, 0x7c, 0x11, - 0x26, 0x12, 0xe3, 0x88, 0x8e, 0xbc, 0x21, 0xb2, 0x70, 0x28, 0x9d, 0xd2, 0x86, 0xd5, 0x29, 0xb8, - 0x6b, 0x59, 0xfc, 0x41, 0x1a, 0x7e, 0xa4, 0xa3, 0xe4, 0x53, 0xa8, 0xf6, 0xe9, 0x68, 0xc4, 0xa5, - 0xc7, 0xa2, 0x00, 0x13, 0xa7, 0xac, 0xd9, 0x2b, 0x06, 0xdb, 0x53, 0x10, 0xd9, 0x84, 0xab, 0x03, - 0x16, 0xd1, 0x11, 0x7b, 0x85, 0x81, 0xa7, 0x5a, 0x92, 0x31, 0x83, 0x66, 0x5e, 0x9d, 0x07, 0x5f, - 0xa2, 0xa4, 0x29, 0x2d, 0x83, 0x35, 0x99, 0x78, 0x69, 0x84, 0x4a, 0xc6, 0x23, 0x4f, 0x48, 0x2a, - 0xa7, 0xc2, 0xa9, 0xe8, 0x2e, 0xdf, 0xef, 0x9e, 0xab, 0xa2, 0xee, 0x41, 0xb2, 0x7b, 0x62, 0xef, - 0x73, 0xbd, 0xd5, 0x6d, 0xca, 0x33, 0xd0, 0xf6, 0xf7, 0x50, 0x57, 0x89, 0xb7, 0x7c, 0x5f, 0xf5, - 0x8b, 0x45, 0x21, 0xf1, 0x60, 0x95, 0xf6, 0x79, 0x2c, 0xb3, 0x72, 0xd3, 0x83, 0xb0, 0x3e, 0xec, - 0x20, 0xae, 0xa4, 0x5c, 0x3a, 0x89, 0x66, 0x6a, 0xff, 0x54, 0x84, 0xfa, 0xb3, 0xa9, 0x3c, 0x29, - 0xd3, 0x75, 0x28, 0xc5, 0xe8, 0x23, 0x3b, 0x9a, 0x0b, 0x75, 0xee, 0x93, 0xdb, 0x60, 0x67, 0xb6, - 0x11, 0xeb, 0x5e, 0xa6, 0xd5, 0x46, 0x86, 0x67, 0x6a, 0x5d, 0x12, 0x64, 0xfe, 0xc3, 0x04, 0xb9, - 0x90, 0x5e, 0xe1, 0xbf, 0x49, 0x4f, 0x8d, 0x8e, 0x10, 0x5e, 0xc4, 0x23, 0x1f, 0xb5, 0xba, 0x0b, - 0x6e, 0x49, 0x0a, 0xf1, 0x54, 0xf9, 0x2a, 0x18, 0x52, 0xe1, 0x8d, 0xd8, 0x98, 0x19, 0x8d, 0x17, - 0xdc, 0x52, 0x48, 0xc5, 0xd7, 0xca, 0xcf, 0x82, 0x93, 0x98, 0xf9, 0x98, 0x0a, 0x56, 0x05, 0xf7, - 0x95, 0x4f, 0x3a, 0x60, 0xa7, 0x41, 0x1e, 0x33, 0x39, 0xf3, 0x06, 0x88, 0xce, 0x47, 0x7a, 0x4d, - 0xdd, 0xac, 0xd1, 0xf0, 0x2e, 0x22, 0x21, 0x50, 0xd0, 0x92, 0x2f, 0xe9, 0xa8, 0xb6, 0xdf, 0x47, - 0xb0, 0xe7, 0x4d, 0x03, 0x9c, 0x3b, 0x0d, 0x1f, 0x83, 0x2a, 0xd3, 0x9b, 0x0a, 0x0c, 0x9c, 0xa6, - 0x5e, 0xb9, 0x12, 0x52, 0xf1, 0x42, 0x60, 0x40, 0xbe, 0x85, 0x55, 0x1c, 0x0c, 0xd0, 0x97, 0xec, - 0x08, 0xbd, 0xc5, 0x9f, 0xbb, 0xaa, 0x5b, 0xdc, 0x4d, 0x5b, 0x7c, 0xf3, 0x3d, 0x5a, 0xbc, 0xa7, - 0x34, 0x35, 0xa7, 0x7a, 0x98, 0x75, 0xa5, 0x7b, 0x9a, 0xdf, 0x74, 0x76, 0x4d, 0x57, 0xb1, 0xb4, - 0xde, 0xb4, 0xf8, 0x1a, 0x80, 0x3a, 0x9c, 0xc9, 0xb4, 0x7f, 0x88, 0x33, 0x3d, 0x55, 0x65, 0x57, - 0x1d, 0xd7, 0xbe, 0x06, 0xce, 0x19, 0xc0, 0xea, 0xff, 0x3c, 0x80, 0x5f, 0x15, 0x4a, 0x35, 0xbb, - 0xd9, 0xfe, 0xdd, 0x82, 0xa2, 0x01, 0xc8, 0x16, 0x14, 0xd3, 0x5c, 0x96, 0xce, 0x75, 0xfb, 0x82, - 0x5c, 0x3b, 0xbe, 0x4c, 0xd2, 0x0c, 0xe9, 0x46, 0x72, 0x03, 0xea, 0xc6, 0xf2, 0xc6, 0x28, 0x04, - 0x0d, 0x51, 0x0f, 0x4c, 0xd9, 0xad, 0x19, 0xf4, 0x89, 0x01, 0xc9, 0x3d, 0x68, 0x8e, 0xa8, 0x90, - 0x2f, 0x26, 0x01, 0x95, 0xe8, 0x49, 0x36, 0x46, 0x21, 0xe9, 0x78, 0xa2, 0x27, 0x27, 0xef, 0xae, - 0x2e, 0x62, 0x07, 0x59, 0x88, 0x74, 0xa0, 0xc1, 0xc4, 0x96, 0x1a, 0x69, 0x17, 0x07, 0xd3, 0x28, - 0xc0, 0x40, 0x8f, 0x49, 0xc9, 0x3d, 0x0d, 0xb7, 0x7f, 0xcb, 0x43, 0x75, 0x47, 0x55, 0xa9, 0x87, - 0xf3, 0x20, 0x21, 0x0e, 0xac, 0xf8, 0x31, 0x52, 0xc9, 0xb3, 0x11, 0xcf, 0x5c, 0xf5, 0x06, 0x18, - 0x35, 0x9a, 0x2a, 0x8d, 0x43, 0xbe, 0x83, 0xb2, 0xbe, 0x7f, 0x06, 0x88, 0xc2, 0xbc, 0x0e, 0xdb, - 0x3b, 0xff, 0x72, 0x16, 0xff, 0x7e, 0x7b, 0xdd, 0x9e, 0xd1, 0xf1, 0xe8, 0xcb, 0xf6, 0x9c, 0xa9, - 0xed, 0x96, 0x94, 0xbd, 0x8b, 0x28, 0xc8, 0x2d, 0x68, 0xc4, 0x38, 0xa2, 0x33, 0x0c, 0xe6, 0x7d, - 0x2a, 0x9a, 0x49, 0x4a, 0xe1, 0xac, 0x51, 0xbb, 0x50, 0xf1, 0x7d, 0x99, 0x64, 0x1a, 0x50, 0x03, - 0x55, 0x39, 0xfb, 0x66, 0x39, 0x71, 0x2e, 0xe9, 0x99, 0x80, 0x3f, 0x3f, 0x1f, 0xf2, 0x1c, 0xea, - 0xcc, 0x3c, 0xcf, 0xde, 0x44, 0x5f, 0x7c, 0x7a, 0xfe, 0x2a, 0x9b, 0x9f, 0x5f, 0x40, 0xb5, 0xf4, - 0xa6, 0xbb, 0x35, 0xb6, 0xf4, 0xc4, 0x7f, 0x03, 0x0d, 0x9e, 0xde, 0xa6, 0x19, 0x2b, 0x6c, 0xe4, - 0x3b, 0x95, 0xcd, 0xbb, 0x17, 0xb0, 0x2e, 0xdf, 0xc1, 0x6e, 0x9d, 0x2f, 0xf9, 0x77, 0x7e, 0x00, - 0x58, 0x48, 0x8b, 0x10, 0xa8, 0xef, 0x63, 0x14, 0xb0, 0x28, 0x4c, 0x8b, 0xb1, 0x73, 0x64, 0x15, - 0x1a, 0x29, 0x96, 0x51, 0xd9, 0x16, 0xb9, 0x02, 0xb5, 0xcc, 0x7b, 0xc2, 0x22, 0x0c, 0xec, 0xbc, - 0x82, 0xd2, 0x75, 0x2e, 0x1e, 0x61, 0x2c, 0xed, 0x02, 0xa9, 0x42, 0xc9, 0xd8, 0x18, 0xd8, 0x97, - 0x49, 0x05, 0x56, 0xb6, 0xcc, 0x33, 0x61, 0x17, 0xd7, 0x0b, 0xbf, 0xfc, 0xdc, 0xb2, 0xee, 0x3c, - 0x86, 0xe6, 0x59, 0x43, 0x44, 0x6c, 0xa8, 0x3e, 0xe5, 0x72, 0x37, 0x7b, 0x34, 0xed, 0x1c, 0xa9, - 0x41, 0x79, 0xe1, 0x5a, 0x8a, 0xf9, 0x41, 0x82, 0xfe, 0x54, 0x91, 0x5d, 0x32, 0x64, 0xdb, 0x8f, - 0x5f, 0xbf, 0x6b, 0x59, 0x6f, 0xde, 0xb5, 0xac, 0xbf, 0xde, 0xb5, 0xac, 0x1f, 0x8f, 0x5b, 0xb9, - 0x37, 0xc7, 0xad, 0xdc, 0x1f, 0xc7, 0xad, 0xdc, 0xcb, 0x7b, 0x27, 0x94, 0xa4, 0x7a, 0x74, 0xf7, - 0xd4, 0x57, 0x56, 0x72, 0xf2, 0x83, 0x4e, 0x0b, 0xab, 0x5f, 0xd4, 0xdf, 0x5a, 0xf7, 0xff, 0x09, - 0x00, 0x00, 0xff, 0xff, 0xea, 0x6a, 0x48, 0x57, 0xfe, 0x09, 0x00, 0x00, + // 1119 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcf, 0x72, 0x13, 0xc7, + 0x13, 0xd6, 0x22, 0x59, 0x96, 0x5a, 0xff, 0x96, 0xb1, 0xf0, 0x6f, 0x7f, 0x4e, 0x21, 0x1c, 0xa5, + 0x00, 0x41, 0x82, 0x54, 0x98, 0x4b, 0x2a, 0x37, 0xdb, 0x85, 0xc1, 0x21, 0x80, 0x6b, 0x31, 0x39, + 0x70, 0xc8, 0x66, 0xb4, 0xdb, 0x5a, 0x4d, 0x59, 0xda, 0x51, 0x76, 0x46, 0xae, 0x15, 0x95, 0x87, + 0x48, 0xde, 0x21, 0x87, 0x1c, 0xf3, 0x04, 0x39, 0x73, 0xe4, 0x98, 0xca, 0x81, 0x4a, 0xc1, 0x1b, + 0xe4, 0x9c, 0x43, 0x6a, 0x66, 0x76, 0x25, 0xcb, 0xe5, 0xb2, 0x09, 0xc9, 0x69, 0xbb, 0xbf, 0x9e, + 0xf9, 0x7a, 0xb6, 0xe7, 0xeb, 0x99, 0x81, 0xad, 0x97, 0x28, 0xa9, 0x3f, 0xa4, 0x2c, 0xea, 0x69, + 0x8b, 0xc7, 0xd8, 0xf3, 0x63, 0x2e, 0x84, 0xc1, 0xb4, 0xe9, 0x69, 0xdb, 0x93, 0x49, 0x77, 0x12, + 0x73, 0xc9, 0xc9, 0xd5, 0xf9, 0x9c, 0x6e, 0x36, 0xa7, 0xbb, 0x98, 0xb3, 0xd1, 0x0c, 0x79, 0xc8, + 0xf5, 0xc8, 0x9e, 0xb2, 0xcc, 0xa4, 0x8d, 0x1b, 0x67, 0x24, 0x9a, 0x1c, 0x85, 0x3d, 0x9f, 0xab, + 0x34, 0x9c, 0x45, 0x66, 0x5c, 0xfb, 0x97, 0x02, 0xd4, 0xf6, 0xa3, 0x3e, 0x9f, 0x46, 0xc1, 0x01, + 0x8d, 0xe9, 0x58, 0x90, 0x75, 0x28, 0x0a, 0x8c, 0x02, 0x8c, 0x1d, 0x6b, 0xd3, 0xea, 0x94, 0xdd, + 0xd4, 0x23, 0x37, 0xa0, 0x61, 0xac, 0x74, 0x7d, 0x2c, 0x70, 0x2e, 0x6d, 0x5a, 0x9d, 0xbc, 0x5b, + 0x33, 0xf0, 0xae, 0x42, 0xf7, 0x03, 0xf2, 0x11, 0x94, 0x65, 0xe2, 0xf1, 0x98, 0x85, 0x2c, 0x72, + 0xf2, 0x9a, 0xa2, 0x24, 0x93, 0xa7, 0xda, 0x27, 0x3b, 0x50, 0x56, 0xc9, 0x3d, 0x39, 0x9b, 0xa0, + 0x53, 0xd8, 0xb4, 0x3a, 0xf5, 0xad, 0xeb, 0xdd, 0x33, 0xfe, 0x6f, 0x72, 0x14, 0x76, 0xf5, 0x2a, + 0x77, 0x39, 0x8b, 0x0e, 0x67, 0x13, 0x74, 0x4b, 0x7e, 0x6a, 0x91, 0x26, 0xac, 0x50, 0x21, 0x50, + 0x3a, 0x2b, 0x9a, 0xdc, 0x38, 0xe4, 0x01, 0x14, 0xe9, 0x98, 0x4f, 0x23, 0xe9, 0x14, 0x15, 0xbc, + 0xd3, 0x7b, 0xf5, 0xe6, 0x5a, 0xee, 0xf7, 0x37, 0xd7, 0x6e, 0x86, 0x4c, 0x0e, 0xa7, 0xfd, 0xae, + 0xcf, 0xc7, 0x3d, 0x9f, 0x8b, 0x31, 0x17, 0xe9, 0xe7, 0x8e, 0x08, 0x8e, 0x7a, 0x6a, 0x1d, 0xa2, + 0xfb, 0x9c, 0x45, 0xd2, 0x4d, 0xa7, 0x93, 0x4f, 0xa0, 0xc6, 0xfb, 0x02, 0xe3, 0x63, 0x0c, 0xbc, + 0x21, 0x15, 0x43, 0x67, 0x55, 0xa7, 0xa9, 0x66, 0xe0, 0x43, 0x2a, 0x86, 0xe4, 0x73, 0x70, 0xe6, + 0x83, 0x30, 0x91, 0x18, 0x47, 0x74, 0xe4, 0x0d, 0x91, 0x85, 0x43, 0xe9, 0x94, 0x36, 0xad, 0x4e, + 0xc1, 0x5d, 0xcf, 0xe2, 0xf7, 0xd3, 0xf0, 0x43, 0x1d, 0x25, 0x1f, 0x43, 0xb5, 0x4f, 0x47, 0x23, + 0x2e, 0x3d, 0x16, 0x05, 0x98, 0x38, 0x65, 0xcd, 0x5e, 0x31, 0xd8, 0xbe, 0x82, 0xc8, 0x16, 0x5c, + 0x19, 0xb0, 0x88, 0x8e, 0xd8, 0x4b, 0x0c, 0x3c, 0x55, 0x92, 0x8c, 0x19, 0x34, 0xf3, 0xda, 0x3c, + 0xf8, 0x02, 0x25, 0x4d, 0x69, 0x19, 0xac, 0xcb, 0xc4, 0x4b, 0x23, 0x54, 0x32, 0x1e, 0x79, 0x42, + 0x52, 0x39, 0x15, 0x4e, 0x45, 0x57, 0xf9, 0x5e, 0xf7, 0x5c, 0x15, 0x75, 0x0f, 0x93, 0xbd, 0x13, + 0x73, 0x9f, 0xe9, 0xa9, 0x6e, 0x53, 0x9e, 0x81, 0xb6, 0xbf, 0x83, 0xba, 0x4a, 0xbc, 0xed, 0xfb, + 0xaa, 0x5e, 0x2c, 0x0a, 0x89, 0x07, 0x6b, 0xb4, 0xcf, 0x63, 0x99, 0x2d, 0x37, 0xdd, 0x08, 0xeb, + 0xc3, 0x36, 0xe2, 0x72, 0xca, 0xa5, 0x93, 0x68, 0xa6, 0xf6, 0x8f, 0x45, 0xa8, 0x3f, 0x9d, 0xca, + 0x93, 0x32, 0xdd, 0x80, 0x52, 0x8c, 0x3e, 0xb2, 0xe3, 0xb9, 0x50, 0xe7, 0x3e, 0xb9, 0x05, 0x76, + 0x66, 0x1b, 0xb1, 0xee, 0x67, 0x5a, 0x6d, 0x64, 0x78, 0xa6, 0xd6, 0x25, 0x41, 0xe6, 0x3f, 0x4c, + 0x90, 0x0b, 0xe9, 0x15, 0xfe, 0x9d, 0xf4, 0x54, 0xeb, 0x08, 0xe1, 0x45, 0x3c, 0xf2, 0x51, 0xab, + 0xbb, 0xe0, 0x96, 0xa4, 0x10, 0x4f, 0x94, 0xaf, 0x82, 0x21, 0x15, 0xde, 0x88, 0x8d, 0x99, 0xd1, + 0x78, 0xc1, 0x2d, 0x85, 0x54, 0x7c, 0xa5, 0xfc, 0x2c, 0x38, 0x89, 0x99, 0x8f, 0xa9, 0x60, 0x55, + 0xf0, 0x40, 0xf9, 0xa4, 0x03, 0x76, 0x1a, 0xe4, 0x31, 0x93, 0x33, 0x6f, 0x80, 0xe8, 0xfc, 0x4f, + 0x8f, 0xa9, 0x9b, 0x31, 0x1a, 0xde, 0x43, 0x24, 0x04, 0x0a, 0x5a, 0xf2, 0x25, 0x1d, 0xd5, 0xf6, + 0xfb, 0x08, 0xf6, 0xbc, 0x6e, 0x80, 0x73, 0xbb, 0xe1, 0xff, 0xa0, 0x96, 0xe9, 0x4d, 0x05, 0x06, + 0x4e, 0x53, 0x8f, 0x5c, 0x0d, 0xa9, 0x78, 0x2e, 0x30, 0x20, 0xdf, 0xc0, 0x1a, 0x0e, 0x06, 0xe8, + 0x4b, 0x76, 0x8c, 0xde, 0xe2, 0xe7, 0xae, 0xe8, 0x12, 0x77, 0xd3, 0x12, 0xdf, 0x78, 0x8f, 0x12, + 0xef, 0x2b, 0x4d, 0xcd, 0xa9, 0x1e, 0x64, 0x55, 0xe9, 0x9e, 0xe6, 0x37, 0x95, 0x5d, 0xd7, 0xab, + 0x58, 0x1a, 0x6f, 0x4a, 0x7c, 0x15, 0x40, 0x6d, 0xce, 0x64, 0xda, 0x3f, 0xc2, 0x99, 0xee, 0xaa, + 0xb2, 0xab, 0xb6, 0xeb, 0x40, 0x03, 0xe7, 0x34, 0x60, 0xf5, 0x3f, 0x6e, 0xc0, 0x2f, 0x0b, 0xa5, + 0x9a, 0xdd, 0x6c, 0xff, 0x65, 0x41, 0xd1, 0x00, 0x64, 0x1b, 0x8a, 0x69, 0x2e, 0x4b, 0xe7, 0xba, + 0x75, 0x41, 0xae, 0x5d, 0x5f, 0x26, 0x69, 0x86, 0x74, 0x22, 0xb9, 0x0e, 0x75, 0x63, 0x79, 0x63, + 0x14, 0x82, 0x86, 0xa8, 0x1b, 0xa6, 0xec, 0xd6, 0x0c, 0xfa, 0xd8, 0x80, 0xe4, 0x2e, 0x34, 0x47, + 0x54, 0xc8, 0xe7, 0x93, 0x80, 0x4a, 0xf4, 0x24, 0x1b, 0xa3, 0x90, 0x74, 0x3c, 0xd1, 0x9d, 0x93, + 0x77, 0xd7, 0x16, 0xb1, 0xc3, 0x2c, 0x44, 0x3a, 0xd0, 0x60, 0x62, 0x5b, 0xb5, 0xb4, 0x8b, 0x83, + 0x69, 0x14, 0x60, 0xa0, 0xdb, 0xa4, 0xe4, 0x9e, 0x86, 0xc9, 0xa7, 0x70, 0xd9, 0x8f, 0x91, 0xaa, + 0x63, 0x64, 0xc1, 0xbc, 0xa2, 0x99, 0xed, 0x34, 0x30, 0xa7, 0x6d, 0xff, 0x9a, 0x87, 0xea, 0xae, + 0xfa, 0x25, 0xdd, 0xc9, 0x87, 0x09, 0x71, 0x60, 0x55, 0x0f, 0xe2, 0xd9, 0x79, 0x90, 0xb9, 0xea, + 0xc2, 0x30, 0xd2, 0x35, 0xbf, 0x64, 0x1c, 0xf2, 0x2d, 0x94, 0xf5, 0x61, 0x35, 0x40, 0x14, 0xe6, + 0x2a, 0xd9, 0xd9, 0xfd, 0x87, 0x8d, 0xfb, 0xe7, 0x9b, 0x6b, 0xf6, 0x8c, 0x8e, 0x47, 0x5f, 0xb4, + 0xe7, 0x4c, 0x6d, 0xb7, 0xa4, 0xec, 0x3d, 0x44, 0x41, 0x6e, 0x42, 0x23, 0xc6, 0x11, 0x9d, 0x61, + 0x30, 0x2f, 0x6a, 0xd1, 0xb4, 0x5d, 0x0a, 0x67, 0x55, 0xdd, 0x83, 0x8a, 0xef, 0xcb, 0x24, 0x13, + 0x8c, 0xea, 0xbe, 0xca, 0xd9, 0xc7, 0xd0, 0x89, 0x4d, 0x4c, 0x37, 0x10, 0xfc, 0xf9, 0x66, 0x92, + 0x67, 0x50, 0x67, 0xe6, 0x2e, 0xf7, 0x26, 0xfa, 0x94, 0xd4, 0xcd, 0x5a, 0xd9, 0xfa, 0xec, 0x02, + 0xaa, 0xa5, 0x07, 0x80, 0x5b, 0x63, 0x4b, 0xef, 0x81, 0xaf, 0xa1, 0xc1, 0xd3, 0xa3, 0x37, 0x63, + 0x85, 0xcd, 0x7c, 0xa7, 0xb2, 0x75, 0xe7, 0x02, 0xd6, 0xe5, 0x03, 0xdb, 0xad, 0xf3, 0x25, 0xff, + 0xf6, 0xf7, 0x00, 0x0b, 0x1d, 0x12, 0x02, 0xf5, 0x03, 0x8c, 0x02, 0x16, 0x85, 0xe9, 0x62, 0xec, + 0x1c, 0x59, 0x83, 0x46, 0x8a, 0x65, 0x54, 0xb6, 0x45, 0x2e, 0x43, 0x2d, 0xf3, 0x1e, 0xb3, 0x08, + 0x03, 0x3b, 0xaf, 0xa0, 0x74, 0x9c, 0x8b, 0xc7, 0x18, 0x4b, 0xbb, 0x40, 0xaa, 0x50, 0x32, 0x36, + 0x06, 0xf6, 0x0a, 0xa9, 0xc0, 0xea, 0xb6, 0xb9, 0x53, 0xec, 0xe2, 0x46, 0xe1, 0xe7, 0x9f, 0x5a, + 0xd6, 0xed, 0x47, 0xd0, 0x3c, 0xab, 0xe3, 0x88, 0x0d, 0xd5, 0x27, 0x5c, 0xee, 0x65, 0x37, 0xac, + 0x9d, 0x23, 0x35, 0x28, 0x2f, 0x5c, 0x4b, 0x31, 0xdf, 0x4f, 0xd0, 0x9f, 0x2a, 0xb2, 0x4b, 0x86, + 0x6c, 0xe7, 0xd1, 0xab, 0xb7, 0x2d, 0xeb, 0xf5, 0xdb, 0x96, 0xf5, 0xc7, 0xdb, 0x96, 0xf5, 0xc3, + 0xbb, 0x56, 0xee, 0xf5, 0xbb, 0x56, 0xee, 0xb7, 0x77, 0xad, 0xdc, 0x8b, 0xbb, 0x27, 0x94, 0xa4, + 0x6a, 0x74, 0xe7, 0xd4, 0x93, 0x2c, 0x39, 0xf9, 0xfa, 0xd3, 0xc2, 0xea, 0x17, 0xf5, 0xc3, 0xec, + 0xde, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x84, 0xca, 0xb3, 0xff, 0x2b, 0x0a, 0x00, 0x00, } func (m *InboundParams) Marshal() (dAtA []byte, err error) { @@ -918,6 +928,11 @@ func (m *Status) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.CreatedTimestamp != 0 { + i = encodeVarintCrossChainTx(dAtA, i, uint64(m.CreatedTimestamp)) + i-- + dAtA[i] = 0x28 + } if m.IsAbortRefunded { i-- if m.IsAbortRefunded { @@ -1188,6 +1203,9 @@ func (m *Status) Size() (n int) { if m.IsAbortRefunded { n += 2 } + if m.CreatedTimestamp != 0 { + n += 1 + sovCrossChainTx(uint64(m.CreatedTimestamp)) + } return n } @@ -2238,6 +2256,25 @@ func (m *Status) Unmarshal(dAtA []byte) error { } } m.IsAbortRefunded = bool(v != 0) + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CreatedTimestamp", wireType) + } + m.CreatedTimestamp = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCrossChainTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CreatedTimestamp |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipCrossChainTx(dAtA[iNdEx:]) diff --git a/x/crosschain/types/status.go b/x/crosschain/types/status.go index 320209ae78..cdaf5b0aae 100644 --- a/x/crosschain/types/status.go +++ b/x/crosschain/types/status.go @@ -4,10 +4,9 @@ import ( "fmt" ) -func (m *Status) AbortRefunded(timeStamp int64) { +func (m *Status) AbortRefunded() { m.IsAbortRefunded = true m.StatusMessage = "CCTX aborted and Refunded" - m.LastUpdateTimestamp = timeStamp } // ChangeStatus changes the status of the cross chain transaction diff --git a/x/crosschain/types/status_test.go b/x/crosschain/types/status_test.go index 247cc19f50..49ed1fc74f 100644 --- a/x/crosschain/types/status_test.go +++ b/x/crosschain/types/status_test.go @@ -3,7 +3,6 @@ package types_test import ( "fmt" "testing" - "time" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -19,11 +18,9 @@ func TestStatus_AbortRefunded(t *testing.T) { LastUpdateTimestamp: 0, IsAbortRefunded: false, } - timestamp := time.Now().Unix() - status.AbortRefunded(timestamp) + status.AbortRefunded() require.Equal(t, status.IsAbortRefunded, true) require.Equal(t, status.StatusMessage, "CCTX aborted and Refunded") - require.Equal(t, status.LastUpdateTimestamp, timestamp) }) } From de6ed7bfc1e6910923b947de562b524038cd65c1 Mon Sep 17 00:00:00 2001 From: Alex Gartner Date: Tue, 13 Aug 2024 12:36:35 -0700 Subject: [PATCH 4/4] fix(ci): update nightly evm performance nodejs version (#2694) --- .github/workflows/ci-nightly-performance-testing.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-nightly-performance-testing.yaml b/.github/workflows/ci-nightly-performance-testing.yaml index d4676b5271..500ba8f443 100644 --- a/.github/workflows/ci-nightly-performance-testing.yaml +++ b/.github/workflows/ci-nightly-performance-testing.yaml @@ -24,7 +24,7 @@ jobs: - name: "INSTALL:NODEJS" uses: actions/setup-node@v4 with: - node-version: 16 + node-version: 20 - name: "START:LOCAL:NET:WITH:STATE" run: | @@ -102,7 +102,7 @@ jobs: artillery report report.json --output artillery_report.html - name: "UPLOAD:REPORT" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: always() with: name: artillery-report