From 9168841d0eba241ee9a63caff38b9557ac240a02 Mon Sep 17 00:00:00 2001 From: matheus Date: Fri, 5 May 2023 15:53:02 -0300 Subject: [PATCH] Add events to cta clicks (#25325) * (wip) add unlock feature button to support page * Fix typo * (wip) add locked feature join session * Improve session join style * Add session join lock button * Remove hover on locked join menu * Update copy * Only show `join as...` when appropriate * (wip) * Make ButtonLockedFeature theme sensitive * Remove debug stuff * Adjust feature button height * Fix session join button on locked * Remove unused import * typo * Add link to cta button * Remove teams flag * Add cta service * Update snapshots * Lock button style * Add cta to context * Rename cta to ctaService * Stories and tests * Add comments clarifying that ctas are not used currently * add showActiveSessionsCTA to useSessions * Licenses * Lint license * Remove commented out code * Add missing types * Replace cta service for an object with cta on context * Fix menu hack * small refactor in styled stuff * Update SessionJoinBtn to use master code * Snapshot update * Add events to cta clicks * rebase * revert e ref update * Revert e change * Update proto message to start at 1 * Use enum from proto files instead of rewriting * Improve comments on usageevents.proto cta enum * Fix import * Fix type errs * Add comments * Rename CtaEvents > CtaEvent * Copy the CtaEvent enum instead of importing from proto * Add back blank line * Fix import order * Update proto files * Add TODO comment --- .../proto/go/usageevents/v1/usageevents.pb.go | 630 +++++++++---- .../teleport/usageevents/v1/usageevents.proto | 20 + e_imports.go | 35 +- gen/proto/go/prehog/v1alpha/teleport.pb.go | 886 +++++++++++------- gen/proto/js/prehog/v1alpha/teleport_pb.d.ts | 44 + gen/proto/js/prehog/v1alpha/teleport_pb.js | 254 ++++- lib/usagereporter/teleport/types.go | 20 + lib/usagereporter/web/userevent.go | 13 + proto/prehog/v1alpha/teleport.proto | 20 + .../Sessions/SessionList/SessionJoinBtn.tsx | 7 +- .../teleport/src/Sessions/Sessions.tsx | 7 +- web/packages/teleport/src/Support/Support.tsx | 3 +- .../ButtonLockedFeature.tsx | 17 +- .../teleport/src/services/userEvent/types.ts | 12 + .../src/services/userEvent/userEvent.ts | 20 +- 15 files changed, 1443 insertions(+), 545 deletions(-) diff --git a/api/gen/proto/go/usageevents/v1/usageevents.pb.go b/api/gen/proto/go/usageevents/v1/usageevents.pb.go index 2828594f43597..3f8cf8d0b4c9c 100644 --- a/api/gen/proto/go/usageevents/v1/usageevents.pb.go +++ b/api/gen/proto/go/usageevents/v1/usageevents.pb.go @@ -195,6 +195,50 @@ func (DiscoverStatus) EnumDescriptor() ([]byte, []int) { return fileDescriptor_94cf2ca1c69fd564, []int{1} } +// CTA represents teleport web UI's call to action buttons. +// We can't use prehog.v1alpha.CTA here because AuthService (and thus this file) +// is generated with gogofast, so we just copy the enum definition here instead. +// Make sure you update both. +type CTA int32 + +const ( + CTA_CTA_UNSPECIFIED CTA = 0 + CTA_CTA_AUTH_CONNECTOR CTA = 1 + CTA_CTA_ACTIVE_SESSIONS CTA = 2 + CTA_CTA_ACCESS_REQUESTS CTA = 3 + CTA_CTA_PREMIUM_SUPPORT CTA = 4 + CTA_CTA_TRUSTED_DEVICES CTA = 5 + CTA_CTA_UPGRADE_BANNER CTA = 6 +) + +var CTA_name = map[int32]string{ + 0: "CTA_UNSPECIFIED", + 1: "CTA_AUTH_CONNECTOR", + 2: "CTA_ACTIVE_SESSIONS", + 3: "CTA_ACCESS_REQUESTS", + 4: "CTA_PREMIUM_SUPPORT", + 5: "CTA_TRUSTED_DEVICES", + 6: "CTA_UPGRADE_BANNER", +} + +var CTA_value = map[string]int32{ + "CTA_UNSPECIFIED": 0, + "CTA_AUTH_CONNECTOR": 1, + "CTA_ACTIVE_SESSIONS": 2, + "CTA_ACCESS_REQUESTS": 3, + "CTA_PREMIUM_SUPPORT": 4, + "CTA_TRUSTED_DEVICES": 5, + "CTA_UPGRADE_BANNER": 6, +} + +func (x CTA) String() string { + return proto.EnumName(CTA_name, int32(x)) +} + +func (CTA) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_94cf2ca1c69fd564, []int{2} +} + // UIBannerClickEvent is a usage event sent by the UI when the upgrade // banner is clicked. type UIBannerClickEvent struct { @@ -1070,6 +1114,54 @@ func (m *UIDiscoverDatabaseRDSEnrollEvent) GetSelectedResourcesCount() int64 { return 0 } +// UICallToActionClickEvent is emmited when a user clicks a Teleport Web UI's CTA. +type UICallToActionClickEvent struct { + Cta CTA `protobuf:"varint,1,opt,name=cta,proto3,enum=teleport.usageevents.v1.CTA" json:"cta,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UICallToActionClickEvent) Reset() { *m = UICallToActionClickEvent{} } +func (m *UICallToActionClickEvent) String() string { return proto.CompactTextString(m) } +func (*UICallToActionClickEvent) ProtoMessage() {} +func (*UICallToActionClickEvent) Descriptor() ([]byte, []int) { + return fileDescriptor_94cf2ca1c69fd564, []int{16} +} +func (m *UICallToActionClickEvent) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *UICallToActionClickEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_UICallToActionClickEvent.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *UICallToActionClickEvent) XXX_Merge(src proto.Message) { + xxx_messageInfo_UICallToActionClickEvent.Merge(m, src) +} +func (m *UICallToActionClickEvent) XXX_Size() int { + return m.Size() +} +func (m *UICallToActionClickEvent) XXX_DiscardUnknown() { + xxx_messageInfo_UICallToActionClickEvent.DiscardUnknown(m) +} + +var xxx_messageInfo_UICallToActionClickEvent proto.InternalMessageInfo + +func (m *UICallToActionClickEvent) GetCta() CTA { + if m != nil { + return m.Cta + } + return CTA_CTA_UNSPECIFIED +} + // UIDiscoverDeployServiceEvent is emitted after the user installs a Teleport Agent. // For SSH this is the Teleport 'install-node' script. // @@ -1090,7 +1182,7 @@ func (m *UIDiscoverDeployServiceEvent) Reset() { *m = UIDiscoverDeploySe func (m *UIDiscoverDeployServiceEvent) String() string { return proto.CompactTextString(m) } func (*UIDiscoverDeployServiceEvent) ProtoMessage() {} func (*UIDiscoverDeployServiceEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_94cf2ca1c69fd564, []int{16} + return fileDescriptor_94cf2ca1c69fd564, []int{17} } func (m *UIDiscoverDeployServiceEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1154,7 +1246,7 @@ func (m *UIDiscoverDatabaseRegisterEvent) Reset() { *m = UIDiscoverDatab func (m *UIDiscoverDatabaseRegisterEvent) String() string { return proto.CompactTextString(m) } func (*UIDiscoverDatabaseRegisterEvent) ProtoMessage() {} func (*UIDiscoverDatabaseRegisterEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_94cf2ca1c69fd564, []int{17} + return fileDescriptor_94cf2ca1c69fd564, []int{18} } func (m *UIDiscoverDatabaseRegisterEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1218,7 +1310,7 @@ func (m *UIDiscoverDatabaseConfigureMTLSEvent) Reset() { *m = UIDiscover func (m *UIDiscoverDatabaseConfigureMTLSEvent) String() string { return proto.CompactTextString(m) } func (*UIDiscoverDatabaseConfigureMTLSEvent) ProtoMessage() {} func (*UIDiscoverDatabaseConfigureMTLSEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_94cf2ca1c69fd564, []int{18} + return fileDescriptor_94cf2ca1c69fd564, []int{19} } func (m *UIDiscoverDatabaseConfigureMTLSEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1286,7 +1378,7 @@ func (m *UIDiscoverDesktopActiveDirectoryToolsInstallEvent) String() string { } func (*UIDiscoverDesktopActiveDirectoryToolsInstallEvent) ProtoMessage() {} func (*UIDiscoverDesktopActiveDirectoryToolsInstallEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_94cf2ca1c69fd564, []int{19} + return fileDescriptor_94cf2ca1c69fd564, []int{20} } func (m *UIDiscoverDesktopActiveDirectoryToolsInstallEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1354,7 +1446,7 @@ func (m *UIDiscoverDesktopActiveDirectoryConfigureEvent) String() string { } func (*UIDiscoverDesktopActiveDirectoryConfigureEvent) ProtoMessage() {} func (*UIDiscoverDesktopActiveDirectoryConfigureEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_94cf2ca1c69fd564, []int{20} + return fileDescriptor_94cf2ca1c69fd564, []int{21} } func (m *UIDiscoverDesktopActiveDirectoryConfigureEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1422,7 +1514,7 @@ func (m *UIDiscoverAutoDiscoveredResourcesEvent) Reset() { func (m *UIDiscoverAutoDiscoveredResourcesEvent) String() string { return proto.CompactTextString(m) } func (*UIDiscoverAutoDiscoveredResourcesEvent) ProtoMessage() {} func (*UIDiscoverAutoDiscoveredResourcesEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_94cf2ca1c69fd564, []int{21} + return fileDescriptor_94cf2ca1c69fd564, []int{22} } func (m *UIDiscoverAutoDiscoveredResourcesEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1497,7 +1589,7 @@ func (m *UIDiscoverDatabaseConfigureIAMPolicyEvent) String() string { } func (*UIDiscoverDatabaseConfigureIAMPolicyEvent) ProtoMessage() {} func (*UIDiscoverDatabaseConfigureIAMPolicyEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_94cf2ca1c69fd564, []int{22} + return fileDescriptor_94cf2ca1c69fd564, []int{23} } func (m *UIDiscoverDatabaseConfigureIAMPolicyEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1561,7 +1653,7 @@ func (m *UIDiscoverPrincipalsConfigureEvent) Reset() { *m = UIDiscoverPr func (m *UIDiscoverPrincipalsConfigureEvent) String() string { return proto.CompactTextString(m) } func (*UIDiscoverPrincipalsConfigureEvent) ProtoMessage() {} func (*UIDiscoverPrincipalsConfigureEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_94cf2ca1c69fd564, []int{23} + return fileDescriptor_94cf2ca1c69fd564, []int{24} } func (m *UIDiscoverPrincipalsConfigureEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1626,7 +1718,7 @@ func (m *UIDiscoverTestConnectionEvent) Reset() { *m = UIDiscoverTestCon func (m *UIDiscoverTestConnectionEvent) String() string { return proto.CompactTextString(m) } func (*UIDiscoverTestConnectionEvent) ProtoMessage() {} func (*UIDiscoverTestConnectionEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_94cf2ca1c69fd564, []int{24} + return fileDescriptor_94cf2ca1c69fd564, []int{25} } func (m *UIDiscoverTestConnectionEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1690,7 +1782,7 @@ func (m *UIDiscoverCompletedEvent) Reset() { *m = UIDiscoverCompletedEve func (m *UIDiscoverCompletedEvent) String() string { return proto.CompactTextString(m) } func (*UIDiscoverCompletedEvent) ProtoMessage() {} func (*UIDiscoverCompletedEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_94cf2ca1c69fd564, []int{25} + return fileDescriptor_94cf2ca1c69fd564, []int{26} } func (m *UIDiscoverCompletedEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1751,7 +1843,7 @@ func (m *UICreateNewRoleClickEvent) Reset() { *m = UICreateNewRoleClickE func (m *UICreateNewRoleClickEvent) String() string { return proto.CompactTextString(m) } func (*UICreateNewRoleClickEvent) ProtoMessage() {} func (*UICreateNewRoleClickEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_94cf2ca1c69fd564, []int{26} + return fileDescriptor_94cf2ca1c69fd564, []int{27} } func (m *UICreateNewRoleClickEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1791,7 +1883,7 @@ func (m *UICreateNewRoleSaveClickEvent) Reset() { *m = UICreateNewRoleSa func (m *UICreateNewRoleSaveClickEvent) String() string { return proto.CompactTextString(m) } func (*UICreateNewRoleSaveClickEvent) ProtoMessage() {} func (*UICreateNewRoleSaveClickEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_94cf2ca1c69fd564, []int{27} + return fileDescriptor_94cf2ca1c69fd564, []int{28} } func (m *UICreateNewRoleSaveClickEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1831,7 +1923,7 @@ func (m *UICreateNewRoleCancelClickEvent) Reset() { *m = UICreateNewRole func (m *UICreateNewRoleCancelClickEvent) String() string { return proto.CompactTextString(m) } func (*UICreateNewRoleCancelClickEvent) ProtoMessage() {} func (*UICreateNewRoleCancelClickEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_94cf2ca1c69fd564, []int{28} + return fileDescriptor_94cf2ca1c69fd564, []int{29} } func (m *UICreateNewRoleCancelClickEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1875,7 +1967,7 @@ func (m *UICreateNewRoleViewDocumentationClickEvent) String() string { } func (*UICreateNewRoleViewDocumentationClickEvent) ProtoMessage() {} func (*UICreateNewRoleViewDocumentationClickEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_94cf2ca1c69fd564, []int{29} + return fileDescriptor_94cf2ca1c69fd564, []int{30} } func (m *UICreateNewRoleViewDocumentationClickEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1936,6 +2028,7 @@ type UsageEventOneOf struct { // *UsageEventOneOf_UiCreateNewRoleViewDocumentationClick // *UsageEventOneOf_UiDiscoverIntegrationAwsOidcConnectEvent // *UsageEventOneOf_UiDiscoverDatabaseRdsEnrollEvent + // *UsageEventOneOf_UiCallToActionClickEvent Event isUsageEventOneOf_Event `protobuf_oneof:"event"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -1946,7 +2039,7 @@ func (m *UsageEventOneOf) Reset() { *m = UsageEventOneOf{} } func (m *UsageEventOneOf) String() string { return proto.CompactTextString(m) } func (*UsageEventOneOf) ProtoMessage() {} func (*UsageEventOneOf) Descriptor() ([]byte, []int) { - return fileDescriptor_94cf2ca1c69fd564, []int{30} + return fileDescriptor_94cf2ca1c69fd564, []int{31} } func (m *UsageEventOneOf) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2062,6 +2155,9 @@ type UsageEventOneOf_UiDiscoverIntegrationAwsOidcConnectEvent struct { type UsageEventOneOf_UiDiscoverDatabaseRdsEnrollEvent struct { UiDiscoverDatabaseRdsEnrollEvent *UIDiscoverDatabaseRDSEnrollEvent `protobuf:"bytes,28,opt,name=ui_discover_database_rds_enroll_event,json=uiDiscoverDatabaseRdsEnrollEvent,proto3,oneof" json:"ui_discover_database_rds_enroll_event,omitempty"` } +type UsageEventOneOf_UiCallToActionClickEvent struct { + UiCallToActionClickEvent *UICallToActionClickEvent `protobuf:"bytes,29,opt,name=ui_call_to_action_click_event,json=uiCallToActionClickEvent,proto3,oneof" json:"ui_call_to_action_click_event,omitempty"` +} func (*UsageEventOneOf_UiBannerClick) isUsageEventOneOf_Event() {} func (*UsageEventOneOf_UiOnboardCompleteGoToDashboardClick) isUsageEventOneOf_Event() {} @@ -2090,6 +2186,7 @@ func (*UsageEventOneOf_UiCreateNewRoleCancelClick) isUsageEventOneOf_Event() func (*UsageEventOneOf_UiCreateNewRoleViewDocumentationClick) isUsageEventOneOf_Event() {} func (*UsageEventOneOf_UiDiscoverIntegrationAwsOidcConnectEvent) isUsageEventOneOf_Event() {} func (*UsageEventOneOf_UiDiscoverDatabaseRdsEnrollEvent) isUsageEventOneOf_Event() {} +func (*UsageEventOneOf_UiCallToActionClickEvent) isUsageEventOneOf_Event() {} func (m *UsageEventOneOf) GetEvent() isUsageEventOneOf_Event { if m != nil { @@ -2287,6 +2384,13 @@ func (m *UsageEventOneOf) GetUiDiscoverDatabaseRdsEnrollEvent() *UIDiscoverDatab return nil } +func (m *UsageEventOneOf) GetUiCallToActionClickEvent() *UICallToActionClickEvent { + if x, ok := m.GetEvent().(*UsageEventOneOf_UiCallToActionClickEvent); ok { + return x.UiCallToActionClickEvent + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*UsageEventOneOf) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -2317,12 +2421,14 @@ func (*UsageEventOneOf) XXX_OneofWrappers() []interface{} { (*UsageEventOneOf_UiCreateNewRoleViewDocumentationClick)(nil), (*UsageEventOneOf_UiDiscoverIntegrationAwsOidcConnectEvent)(nil), (*UsageEventOneOf_UiDiscoverDatabaseRdsEnrollEvent)(nil), + (*UsageEventOneOf_UiCallToActionClickEvent)(nil), } } func init() { proto.RegisterEnum("teleport.usageevents.v1.DiscoverResource", DiscoverResource_name, DiscoverResource_value) proto.RegisterEnum("teleport.usageevents.v1.DiscoverStatus", DiscoverStatus_name, DiscoverStatus_value) + proto.RegisterEnum("teleport.usageevents.v1.CTA", CTA_name, CTA_value) proto.RegisterType((*UIBannerClickEvent)(nil), "teleport.usageevents.v1.UIBannerClickEvent") proto.RegisterType((*UIOnboardCompleteGoToDashboardClickEvent)(nil), "teleport.usageevents.v1.UIOnboardCompleteGoToDashboardClickEvent") proto.RegisterType((*UIOnboardAddFirstResourceClickEvent)(nil), "teleport.usageevents.v1.UIOnboardAddFirstResourceClickEvent") @@ -2339,6 +2445,7 @@ func init() { proto.RegisterType((*UIDiscoverResourceSelectionEvent)(nil), "teleport.usageevents.v1.UIDiscoverResourceSelectionEvent") proto.RegisterType((*UIDiscoverIntegrationAWSOIDCConnectEvent)(nil), "teleport.usageevents.v1.UIDiscoverIntegrationAWSOIDCConnectEvent") proto.RegisterType((*UIDiscoverDatabaseRDSEnrollEvent)(nil), "teleport.usageevents.v1.UIDiscoverDatabaseRDSEnrollEvent") + proto.RegisterType((*UICallToActionClickEvent)(nil), "teleport.usageevents.v1.UICallToActionClickEvent") proto.RegisterType((*UIDiscoverDeployServiceEvent)(nil), "teleport.usageevents.v1.UIDiscoverDeployServiceEvent") proto.RegisterType((*UIDiscoverDatabaseRegisterEvent)(nil), "teleport.usageevents.v1.UIDiscoverDatabaseRegisterEvent") proto.RegisterType((*UIDiscoverDatabaseConfigureMTLSEvent)(nil), "teleport.usageevents.v1.UIDiscoverDatabaseConfigureMTLSEvent") @@ -2361,154 +2468,164 @@ func init() { } var fileDescriptor_94cf2ca1c69fd564 = []byte{ - // 2342 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x5a, 0xdd, 0x6f, 0xdc, 0x58, - 0x15, 0x1f, 0x4f, 0xfa, 0x91, 0xde, 0xdd, 0xa6, 0xde, 0xbb, 0xdd, 0x76, 0xd2, 0x7c, 0x4f, 0xbf, - 0x92, 0x6c, 0x49, 0x36, 0x6d, 0xd9, 0x16, 0xba, 0x50, 0x39, 0xb6, 0x13, 0x7b, 0x33, 0x89, 0x67, - 0xaf, 0x3d, 0x2d, 0x59, 0x09, 0x5d, 0x39, 0xe3, 0x9b, 0xa9, 0x55, 0xc7, 0x1e, 0xd9, 0x77, 0x12, - 0x22, 0x84, 0x56, 0x20, 0x40, 0x48, 0x45, 0x08, 0xde, 0x90, 0x90, 0x90, 0x10, 0x20, 0xf1, 0xc0, - 0x33, 0xfb, 0xcc, 0x1b, 0x8f, 0xfc, 0x09, 0xa8, 0xef, 0x3c, 0xf2, 0x00, 0x02, 0x81, 0xe6, 0xfa, - 0x73, 0x3e, 0xed, 0xad, 0x78, 0xca, 0xbe, 0x8d, 0xe7, 0xfe, 0xce, 0x39, 0xbf, 0x7b, 0xce, 0xb9, - 0x1f, 0xe7, 0xd8, 0x60, 0x85, 0x12, 0x87, 0xb4, 0x3d, 0x9f, 0xae, 0x77, 0x02, 0xb3, 0x45, 0xc8, - 0x31, 0x71, 0x69, 0xb0, 0x7e, 0xbc, 0x91, 0x7d, 0x5c, 0x6b, 0xfb, 0x1e, 0xf5, 0xe0, 0xf5, 0x18, - 0xba, 0x96, 0x1d, 0x3b, 0xde, 0xa8, 0xae, 0x02, 0xd8, 0x50, 0x37, 0x4d, 0xd7, 0x25, 0xbe, 0xe8, - 0xd8, 0xcd, 0x97, 0x72, 0x77, 0x04, 0x5e, 0x05, 0xe7, 0x4d, 0x87, 0xf8, 0xb4, 0xc2, 0x2d, 0x72, - 0xcb, 0x97, 0x50, 0xf8, 0x50, 0xdd, 0x02, 0xcb, 0x0d, 0x55, 0x73, 0x0f, 0x3c, 0xd3, 0xb7, 0x44, - 0xef, 0xa8, 0xed, 0x10, 0x4a, 0xb6, 0x3d, 0xc3, 0x93, 0xcc, 0xe0, 0x45, 0xf8, 0x67, 0xaa, 0xe1, - 0x06, 0x98, 0xec, 0x04, 0xc4, 0x77, 0xcd, 0x23, 0x12, 0x29, 0x49, 0x9e, 0xab, 0xb7, 0xc1, 0xcd, - 0x44, 0x8f, 0x60, 0x59, 0x5b, 0xb6, 0x1f, 0x50, 0x44, 0x02, 0xaf, 0xe3, 0x37, 0x49, 0xaa, 0xa2, - 0xba, 0x9a, 0x31, 0xd7, 0x0f, 0xab, 0x99, 0x34, 0x4b, 0xb8, 0xfa, 0x14, 0x2c, 0x25, 0x58, 0x9d, - 0x50, 0xd1, 0x27, 0x16, 0x71, 0xa9, 0x6d, 0x3a, 0x7a, 0xe7, 0xe0, 0xc8, 0xa6, 0xf9, 0x9c, 0xbe, - 0x07, 0x6e, 0x27, 0x0a, 0x10, 0x69, 0xd9, 0x41, 0x57, 0xff, 0x0b, 0xd3, 0x71, 0x88, 0xdb, 0x22, - 0x05, 0x95, 0xc0, 0x69, 0x30, 0x79, 0x74, 0x68, 0x62, 0x7a, 0xda, 0x26, 0x95, 0x32, 0x1b, 0xbb, - 0x78, 0x74, 0x68, 0x1a, 0xa7, 0x6d, 0x02, 0xe7, 0x00, 0x70, 0xbc, 0x96, 0xed, 0xe2, 0x43, 0xc7, - 0x3b, 0xa9, 0x4c, 0xb0, 0xc1, 0x4b, 0xec, 0x9f, 0x2d, 0xc7, 0x3b, 0x09, 0xf9, 0x23, 0xd2, 0xf4, - 0x8e, 0x89, 0x7f, 0x2a, 0x7a, 0x16, 0x09, 0x44, 0xcf, 0xa5, 0xb6, 0xdb, 0x21, 0x05, 0x7d, 0xfa, - 0x04, 0xcc, 0x0d, 0x28, 0x68, 0x9f, 0x16, 0x14, 0xfe, 0x08, 0xcc, 0xf7, 0x09, 0xd7, 0x7d, 0xdb, - 0xa5, 0x05, 0xa5, 0xab, 0x80, 0x97, 0xec, 0x80, 0x09, 0xef, 0x12, 0x6a, 0x5a, 0x26, 0x35, 0xe1, - 0x14, 0x28, 0xdb, 0x56, 0x84, 0x2c, 0xdb, 0x56, 0xd5, 0x04, 0x95, 0x18, 0x13, 0x87, 0x30, 0xc1, - 0xca, 0x60, 0xd2, 0x8f, 0xfe, 0x63, 0x12, 0x53, 0xf7, 0x57, 0xd6, 0x46, 0xa4, 0xeb, 0x5a, 0xbf, - 0x12, 0x94, 0x88, 0x56, 0x5f, 0x02, 0x18, 0x8f, 0xea, 0x94, 0xb4, 0x75, 0x6a, 0xd2, 0x4e, 0x00, - 0x9f, 0x82, 0x0b, 0x01, 0xfb, 0x15, 0xa9, 0xbe, 0x9b, 0xab, 0x3a, 0x14, 0x44, 0x91, 0x58, 0x77, - 0x29, 0x10, 0xdf, 0xf7, 0xfc, 0x28, 0xa0, 0xe1, 0x43, 0xf5, 0x77, 0x1c, 0xb8, 0xd6, 0x50, 0x33, - 0x22, 0x3e, 0x25, 0x56, 0xe8, 0x2a, 0x19, 0x4c, 0x1e, 0x45, 0x53, 0x63, 0x36, 0xdf, 0x2a, 0x30, - 0x9d, 0xd8, 0x17, 0x28, 0x11, 0x85, 0x62, 0x42, 0xbc, 0xcc, 0x94, 0xbc, 0x5f, 0x80, 0x78, 0x3c, - 0xeb, 0x98, 0x7c, 0xf5, 0x3f, 0x1c, 0x58, 0x4c, 0x69, 0xc6, 0x4e, 0xd3, 0x89, 0x43, 0x9a, 0xd4, - 0xf6, 0xdc, 0xff, 0x2b, 0xe1, 0xdd, 0x4c, 0x18, 0x43, 0xca, 0x1b, 0x85, 0xc3, 0x98, 0xaa, 0x8b, - 0x55, 0x64, 0xe6, 0x3f, 0xf1, 0xe6, 0xf3, 0xff, 0x51, 0xb9, 0xbb, 0x87, 0xc4, 0x00, 0xd5, 0xa5, - 0xa4, 0xe5, 0x9b, 0xdd, 0x99, 0x0b, 0xcf, 0x75, 0x4d, 0x95, 0x44, 0xd1, 0x73, 0x5d, 0xd2, 0xa4, - 0x67, 0xde, 0x0f, 0x9f, 0x97, 0xb3, 0x79, 0x20, 0x99, 0xd4, 0x3c, 0x30, 0x03, 0x82, 0x24, 0x5d, - 0x76, 0x7d, 0xcf, 0x71, 0xce, 0xfa, 0xfc, 0xe1, 0x63, 0x50, 0x09, 0x58, 0xd2, 0x13, 0x0b, 0xc7, - 0x9a, 0x03, 0xdc, 0xf4, 0x3a, 0x2e, 0xad, 0x9c, 0x5b, 0xe4, 0x96, 0x27, 0xd0, 0xb5, 0x78, 0x3c, - 0xa6, 0x12, 0x88, 0xdd, 0xd1, 0xea, 0x3f, 0x39, 0x30, 0x9b, 0xf1, 0x1c, 0x69, 0x3b, 0xde, 0xa9, - 0x4e, 0xfc, 0x63, 0xbb, 0x49, 0xce, 0x7c, 0xd6, 0xfc, 0x9b, 0x03, 0x0b, 0x43, 0xb2, 0x26, 0x3a, - 0x1d, 0xcf, 0xfc, 0xf4, 0xbf, 0x5f, 0x06, 0xb7, 0x06, 0xa7, 0x2f, 0x7a, 0xee, 0xa1, 0xdd, 0xea, - 0xf8, 0x64, 0xd7, 0xa8, 0xe9, 0x67, 0xde, 0x07, 0x3f, 0x2b, 0x83, 0x8d, 0x6c, 0xfa, 0x07, 0x2f, - 0xa9, 0xd7, 0x16, 0x9a, 0xd4, 0x3e, 0x26, 0x92, 0xed, 0x93, 0x26, 0xf5, 0xfc, 0x53, 0xc3, 0xf3, - 0x9c, 0x40, 0x75, 0x03, 0x6a, 0x9e, 0xfd, 0x9d, 0xa4, 0xfa, 0xaa, 0x0c, 0xd6, 0xf2, 0x1c, 0x92, - 0xa4, 0xc8, 0x99, 0xf7, 0xc6, 0x1f, 0xcb, 0xe0, 0x4e, 0xea, 0x0d, 0xa1, 0x43, 0xbd, 0xf8, 0x77, - 0x66, 0x23, 0x3d, 0xf3, 0xa7, 0xcb, 0x5d, 0x70, 0x65, 0xf8, 0xa1, 0x32, 0xe5, 0xf7, 0x1e, 0x26, - 0x3f, 0x2e, 0x83, 0x95, 0x31, 0x3b, 0x8a, 0x2a, 0xec, 0xd6, 0x3d, 0xc7, 0x6e, 0x9e, 0x9e, 0xf9, - 0xbc, 0xf9, 0x2f, 0x07, 0xaa, 0xa9, 0x23, 0xba, 0xc5, 0x46, 0xd3, 0x6e, 0x9b, 0x4e, 0xf0, 0xe5, - 0x59, 0x39, 0xff, 0xe2, 0xba, 0x05, 0x5b, 0x0c, 0x30, 0x48, 0x40, 0xa3, 0xbb, 0xe8, 0x97, 0xe1, - 0x5a, 0xfe, 0x0f, 0x0e, 0x54, 0xd2, 0xc9, 0xc7, 0xad, 0x04, 0xeb, 0xcc, 0xcf, 0x7b, 0x06, 0x4c, - 0x37, 0x54, 0xd1, 0x27, 0x26, 0x25, 0x7b, 0xe4, 0x04, 0x79, 0x4e, 0xb6, 0xdd, 0xb1, 0xd0, 0x4d, - 0x88, 0x9e, 0x41, 0xdd, 0x3c, 0xce, 0x02, 0x96, 0xba, 0xb7, 0xb1, 0x5e, 0x69, 0xd3, 0x6d, 0x12, - 0x27, 0x03, 0xb9, 0x07, 0x56, 0xfb, 0x20, 0xcf, 0x6c, 0x72, 0x22, 0x79, 0xcd, 0xce, 0x11, 0x71, - 0x29, 0xab, 0x7c, 0x32, 0xe8, 0x3f, 0xcd, 0x83, 0x2b, 0x8d, 0x2e, 0x79, 0xf6, 0xa8, 0xb9, 0x44, - 0x3b, 0x84, 0x0d, 0x70, 0xa5, 0x63, 0xe3, 0x03, 0xd6, 0x10, 0xc2, 0xcd, 0x2e, 0x36, 0x0a, 0xc2, - 0xe8, 0x09, 0x0f, 0xf6, 0x8f, 0x94, 0x12, 0xba, 0xdc, 0xb1, 0x33, 0xff, 0xc2, 0x5f, 0x71, 0x60, - 0xa5, 0x63, 0x63, 0x2f, 0x6c, 0xb0, 0xe0, 0x66, 0x14, 0x72, 0xdc, 0xf2, 0x30, 0xf5, 0xb0, 0x15, - 0x37, 0x90, 0x22, 0x8b, 0xa1, 0x8b, 0x85, 0x31, 0x16, 0x8b, 0x75, 0xa1, 0x94, 0x12, 0xba, 0xd9, - 0xb1, 0x73, 0xb1, 0xf0, 0x15, 0x07, 0x6e, 0x66, 0xd8, 0x99, 0x96, 0x85, 0x0f, 0x6d, 0x3f, 0xa0, - 0x49, 0xad, 0x10, 0xf1, 0x3a, 0xc7, 0x78, 0x7d, 0x94, 0xcf, 0x6b, 0x74, 0x57, 0x4b, 0x29, 0xa1, - 0xf9, 0x84, 0xd2, 0x50, 0x58, 0xbf, 0xaf, 0x86, 0xb0, 0x71, 0x4c, 0x9a, 0x44, 0xe7, 0x7c, 0x51, - 0x5f, 0xe5, 0xb4, 0xd0, 0x7a, 0x7c, 0x35, 0x1a, 0x0b, 0x7f, 0xc8, 0x81, 0xc5, 0x0c, 0xbb, 0x80, - 0x50, 0xdc, 0x4c, 0xba, 0x6d, 0x38, 0x60, 0x9d, 0xb2, 0xca, 0x05, 0x46, 0xea, 0xeb, 0xf9, 0xa4, - 0x46, 0xf5, 0xea, 0x94, 0x12, 0x9a, 0x4d, 0xd8, 0x0c, 0x01, 0xc1, 0x9f, 0x73, 0xe0, 0x56, 0x86, - 0x86, 0x1f, 0x15, 0x25, 0xb8, 0x19, 0xf7, 0xec, 0x62, 0x2a, 0x17, 0x19, 0x95, 0x6f, 0xe6, 0x53, - 0x19, 0xd7, 0xf5, 0x53, 0x4a, 0x68, 0x31, 0xa1, 0x33, 0x02, 0x18, 0x7b, 0xc6, 0x8f, 0xfa, 0x68, - 0xb8, 0xe9, 0x59, 0xec, 0x3e, 0x10, 0xf6, 0xf1, 0xa2, 0x70, 0x4d, 0xe6, 0x7a, 0x26, 0xa7, 0x0b, - 0x18, 0x7a, 0x66, 0x34, 0x08, 0x7e, 0x07, 0xcc, 0x0e, 0x63, 0xd1, 0x3e, 0x8d, 0x18, 0x5c, 0x62, - 0x0c, 0x3e, 0x2c, 0xce, 0x20, 0xdb, 0x46, 0x54, 0x4a, 0xa8, 0x32, 0x60, 0x3d, 0x02, 0xc0, 0xef, - 0x82, 0xb9, 0x41, 0xcb, 0x6d, 0xdf, 0x76, 0x69, 0x64, 0x1a, 0x30, 0xd3, 0x8f, 0x8a, 0x9a, 0xee, - 0x6b, 0x42, 0x2a, 0x25, 0x34, 0xdd, 0x67, 0x3b, 0x45, 0x40, 0x07, 0x4c, 0x77, 0x6c, 0x6c, 0x45, - 0x9b, 0x2f, 0x0e, 0xc2, 0x96, 0x1c, 0x66, 0xca, 0x2b, 0x6f, 0x31, 0xc3, 0xeb, 0x63, 0x0c, 0x0f, - 0x6b, 0xe5, 0x29, 0x25, 0x74, 0xad, 0x63, 0x0f, 0x6d, 0xf2, 0xbd, 0x0a, 0xd3, 0x2f, 0x31, 0x97, - 0x2c, 0xcd, 0x20, 0xee, 0xad, 0x45, 0x96, 0xdf, 0x66, 0x96, 0xbf, 0x56, 0xc0, 0xf2, 0xf0, 0xee, - 0x5c, 0x98, 0x79, 0x39, 0x1d, 0xbc, 0xcf, 0x58, 0xe2, 0x25, 0x64, 0x2c, 0xd6, 0xa5, 0xc0, 0x41, - 0xd8, 0xa6, 0x88, 0x88, 0x5c, 0x66, 0x44, 0xbe, 0x5a, 0x80, 0xc8, 0x60, 0x93, 0x23, 0xcc, 0xb9, - 0x31, 0x4d, 0x90, 0x9f, 0x84, 0x1b, 0x68, 0xca, 0x20, 0xba, 0xda, 0xa6, 0xeb, 0x32, 0x24, 0x31, - 0xc5, 0x48, 0x3c, 0x2e, 0x42, 0x62, 0x58, 0xb7, 0x41, 0x29, 0xa1, 0x85, 0x0c, 0x8f, 0xa1, 0x0d, - 0x89, 0x5f, 0x86, 0xbb, 0xe7, 0x20, 0x95, 0x66, 0x7c, 0xb7, 0xc4, 0x47, 0xd4, 0x09, 0x22, 0x42, - 0x57, 0x18, 0xa1, 0x6f, 0x7c, 0x01, 0x42, 0x83, 0xf5, 0xbf, 0x52, 0x42, 0xb7, 0x06, 0x59, 0xa5, - 0x38, 0xea, 0x44, 0x25, 0xd0, 0x9f, 0x39, 0xf0, 0xb8, 0x37, 0x4e, 0xac, 0x7a, 0xc4, 0x26, 0x2b, - 0x1f, 0xb1, 0x15, 0xd7, 0x8f, 0x98, 0x76, 0x2b, 0x6a, 0x6c, 0x87, 0x25, 0x75, 0xc4, 0x94, 0x67, - 0x4c, 0x3f, 0x2e, 0x14, 0xbf, 0x42, 0x55, 0xba, 0x52, 0x42, 0x1b, 0xd9, 0xa0, 0x16, 0x2b, 0xed, - 0x3f, 0xe7, 0xc0, 0xc3, 0x42, 0x73, 0x48, 0xdd, 0x1d, 0xf2, 0x7f, 0x87, 0xf1, 0xdf, 0x7e, 0x63, - 0xfe, 0xbd, 0xa5, 0x81, 0x52, 0x42, 0x6b, 0x79, 0xe4, 0xfb, 0x8a, 0x89, 0x5f, 0x73, 0xe0, 0xfd, - 0x2c, 0x73, 0xb3, 0xd3, 0xbd, 0x79, 0x24, 0xe5, 0x6a, 0xa6, 0x2f, 0x18, 0x12, 0x86, 0x8c, 0xf0, - 0xd3, 0x02, 0x84, 0xc7, 0xd5, 0xbd, 0x4a, 0x09, 0xdd, 0x49, 0x89, 0x8e, 0xad, 0x90, 0xff, 0xc0, - 0x81, 0xf5, 0x9c, 0xcc, 0xb5, 0xcd, 0x23, 0xdc, 0x66, 0x25, 0x62, 0x44, 0xf2, 0x5d, 0x46, 0x72, - 0xf3, 0x4d, 0xf2, 0xb7, 0xb7, 0xda, 0x54, 0x4a, 0x68, 0x65, 0x4c, 0x12, 0xab, 0xe6, 0x51, 0xb6, - 0x34, 0xfd, 0x05, 0x07, 0xee, 0x64, 0xa9, 0xb6, 0x93, 0x0a, 0x6e, 0x20, 0xee, 0x57, 0x19, 0xc3, - 0x27, 0x05, 0x18, 0x8e, 0x2a, 0x03, 0x95, 0x12, 0xaa, 0xa6, 0xd4, 0x46, 0x16, 0x8b, 0x3f, 0xe0, - 0xc0, 0x52, 0x96, 0x13, 0x25, 0x01, 0xed, 0xb2, 0x71, 0x7b, 0xf6, 0xe3, 0xf7, 0x72, 0x4f, 0xbf, - 0x31, 0x35, 0x99, 0x52, 0x42, 0x73, 0x29, 0x93, 0x61, 0x45, 0x9b, 0x0f, 0x66, 0xb2, 0x1c, 0xe2, - 0x7b, 0x6e, 0x7c, 0x0e, 0x5d, 0xcb, 0x29, 0x44, 0x46, 0x15, 0x45, 0xe1, 0xb1, 0x3b, 0xa2, 0x60, - 0x72, 0x40, 0xa5, 0x63, 0x77, 0x2f, 0x61, 0x26, 0x25, 0xd8, 0x25, 0x27, 0xd8, 0xf7, 0x9c, 0xf8, - 0xba, 0x71, 0x9d, 0x19, 0xbc, 0x3f, 0xc6, 0xe0, 0x88, 0x72, 0x44, 0x29, 0xa1, 0xab, 0x1d, 0x7b, - 0x70, 0x10, 0x9e, 0xb2, 0x43, 0xbe, 0xdf, 0x5a, 0x60, 0x1e, 0xc7, 0x26, 0x2b, 0xb9, 0x1e, 0x1e, - 0x53, 0xe4, 0x84, 0x13, 0x1d, 0x0e, 0x80, 0x9f, 0x81, 0x85, 0x61, 0x13, 0x65, 0x45, 0x50, 0x64, - 0x7c, 0x3a, 0xf7, 0x80, 0x19, 0x5b, 0x40, 0x29, 0x25, 0x74, 0xa3, 0x7f, 0xd6, 0x29, 0x04, 0xfe, - 0x26, 0xdc, 0x42, 0xfa, 0x19, 0x1c, 0xdb, 0xe4, 0x04, 0x5b, 0xd9, 0x22, 0x2b, 0x62, 0x73, 0x83, - 0xb1, 0x11, 0x8b, 0xb2, 0x19, 0x53, 0xab, 0x29, 0x25, 0x74, 0xbb, 0x8f, 0xd8, 0x70, 0x34, 0xfc, - 0x3d, 0x07, 0xd6, 0xb2, 0x29, 0x68, 0xa7, 0x2f, 0xbd, 0xb0, 0x79, 0x12, 0x60, 0xcf, 0xb6, 0x9a, - 0xf1, 0xb2, 0x88, 0xb2, 0x72, 0x26, 0xb7, 0x84, 0x28, 0xf6, 0x06, 0x4d, 0x29, 0xa1, 0xe5, 0x34, - 0x4b, 0xb3, 0xd8, 0x93, 0x40, 0xb3, 0xad, 0x66, 0xcf, 0xdb, 0xb6, 0x9f, 0x72, 0xe0, 0xf6, 0xf0, - 0x2b, 0x83, 0x15, 0x60, 0xc2, 0x5e, 0x4b, 0x45, 0xf4, 0x66, 0x0b, 0x5f, 0xa1, 0x86, 0xbf, 0xd8, - 0xea, 0xbd, 0x42, 0x25, 0x18, 0x2b, 0xc8, 0x60, 0x36, 0x2f, 0x82, 0xf3, 0x4c, 0xe3, 0xc7, 0xe7, - 0x26, 0xcb, 0xfc, 0x44, 0xf7, 0xba, 0x93, 0xd4, 0x16, 0x2d, 0x42, 0x93, 0xeb, 0x24, 0x8b, 0xeb, - 0xea, 0xdf, 0x2f, 0xa7, 0xaf, 0xbc, 0xe3, 0x4d, 0x1c, 0x2e, 0x81, 0x39, 0x49, 0xd5, 0x45, 0xed, - 0x99, 0x8c, 0x30, 0x92, 0x75, 0xad, 0x81, 0x44, 0x19, 0x37, 0xf6, 0xf4, 0xba, 0x2c, 0xaa, 0x5b, - 0xaa, 0x2c, 0xf1, 0x25, 0x38, 0x0b, 0x2a, 0x83, 0x10, 0x5d, 0x46, 0xcf, 0x64, 0xc4, 0x73, 0x70, - 0x11, 0xcc, 0x0e, 0x8e, 0xee, 0x34, 0x36, 0x65, 0xb4, 0x27, 0x1b, 0xb2, 0xce, 0x97, 0xe1, 0x03, - 0xb0, 0x3e, 0x88, 0x90, 0x04, 0x43, 0xd8, 0x14, 0x74, 0x19, 0xd7, 0x35, 0xdd, 0xd8, 0x46, 0xb2, - 0x8e, 0x75, 0xb9, 0xb6, 0x85, 0x15, 0x4d, 0x37, 0x64, 0x89, 0x9f, 0x80, 0x1f, 0x80, 0x7b, 0x63, - 0x84, 0x76, 0xf7, 0xf5, 0x4f, 0x6a, 0x3d, 0x12, 0xe7, 0xe0, 0x7d, 0xb0, 0x36, 0x4e, 0x42, 0xdb, - 0xdb, 0xd6, 0xa4, 0xcd, 0x1e, 0x99, 0xf3, 0xf0, 0x7d, 0x70, 0xb7, 0x08, 0x35, 0x24, 0xe9, 0xfc, - 0x05, 0xb8, 0x0c, 0x6e, 0xe5, 0x52, 0xea, 0x22, 0x2f, 0xc2, 0x3b, 0xa0, 0x3a, 0x88, 0x14, 0xea, - 0xf5, 0x9a, 0x2a, 0x0a, 0x86, 0xaa, 0xed, 0x61, 0xc5, 0x30, 0xea, 0xfc, 0x24, 0xbc, 0x0d, 0x96, - 0xc6, 0xe3, 0x0c, 0xb1, 0xce, 0x5f, 0x1a, 0x0e, 0x7b, 0xae, 0xee, 0x49, 0xda, 0x73, 0x1d, 0x4b, - 0xb2, 0xbe, 0x63, 0x68, 0x75, 0x1e, 0xc0, 0x7b, 0x60, 0x79, 0x0c, 0x3f, 0xfd, 0x93, 0x5a, 0x18, - 0x33, 0xc6, 0xf1, 0xad, 0x1c, 0x07, 0xa7, 0x53, 0x97, 0x25, 0x5d, 0x51, 0xb7, 0x0c, 0xfe, 0x6d, - 0xf8, 0x10, 0x7c, 0x50, 0x48, 0x7f, 0xd6, 0xc5, 0x97, 0x73, 0xec, 0x20, 0x59, 0x52, 0x7b, 0x43, - 0x3f, 0x55, 0x34, 0x28, 0xdb, 0x62, 0x9d, 0xbf, 0x52, 0x28, 0x28, 0x5d, 0x24, 0x5f, 0xd8, 0x3d, - 0x5d, 0xf4, 0x3b, 0xf0, 0x09, 0x78, 0xf4, 0x45, 0xdc, 0x13, 0xad, 0x87, 0x9a, 0xac, 0xeb, 0x3c, - 0x84, 0x5f, 0x01, 0x2b, 0x45, 0x84, 0x85, 0x4f, 0x1b, 0x48, 0xe6, 0xdf, 0x85, 0x77, 0xc1, 0xcd, - 0x31, 0x70, 0x69, 0x7f, 0x4f, 0xd8, 0xd5, 0xa4, 0x4d, 0xfe, 0x6a, 0x4e, 0x8a, 0x8b, 0x82, 0xae, - 0x0b, 0x7b, 0x12, 0x12, 0xf0, 0x8e, 0xbc, 0xaf, 0xd7, 0x05, 0x51, 0xd6, 0xf9, 0xf7, 0x72, 0xa2, - 0x96, 0xca, 0x64, 0x63, 0x70, 0x0d, 0x3e, 0x06, 0x0f, 0xc7, 0x48, 0xc9, 0x35, 0x41, 0x37, 0x54, - 0x51, 0x97, 0x05, 0x24, 0x2a, 0x3d, 0x92, 0xd7, 0x0b, 0xc5, 0x3b, 0x92, 0x17, 0x44, 0x45, 0xe6, - 0x2b, 0x39, 0xde, 0x0a, 0x25, 0x76, 0xe5, 0x5d, 0x0d, 0xed, 0x4b, 0x9b, 0xfc, 0x74, 0x21, 0x03, - 0xcc, 0xb3, 0x38, 0x34, 0x70, 0x23, 0x67, 0x32, 0xa1, 0x84, 0x58, 0x6b, 0xe8, 0x46, 0x5f, 0xf2, - 0xce, 0xc0, 0x55, 0x70, 0x27, 0x37, 0xbb, 0xc2, 0x28, 0xce, 0xc2, 0x35, 0xb0, 0x5a, 0x28, 0xbf, - 0x42, 0xfc, 0x5c, 0x4e, 0x30, 0x53, 0xfc, 0xae, 0x2a, 0x22, 0x4d, 0xd7, 0xb6, 0x0c, 0x7e, 0x1e, - 0x7e, 0x08, 0xee, 0x8f, 0x0b, 0xa6, 0x26, 0xee, 0x20, 0x4d, 0x10, 0x95, 0xbe, 0x7d, 0x6e, 0x21, - 0x27, 0xf7, 0xe3, 0xbd, 0x51, 0x30, 0x6a, 0x82, 0xce, 0x2f, 0xe6, 0xac, 0x29, 0x7d, 0x4f, 0x7b, - 0xbe, 0x55, 0x13, 0x76, 0x64, 0x7e, 0x69, 0x84, 0x5e, 0x4d, 0xcc, 0x78, 0x57, 0xd2, 0x71, 0x1d, - 0x69, 0xdf, 0xda, 0xe7, 0xab, 0x23, 0x52, 0x31, 0x8b, 0x56, 0xd4, 0x6d, 0x05, 0x0b, 0xcf, 0x04, - 0xb5, 0x26, 0x6c, 0xaa, 0x35, 0xd5, 0xd8, 0xe7, 0x6f, 0xc2, 0x47, 0xe0, 0x41, 0x8e, 0x14, 0x5b, - 0x21, 0xaa, 0x88, 0x91, 0xbc, 0xad, 0xea, 0x06, 0x62, 0x5b, 0x27, 0x7f, 0x6b, 0xf5, 0xb7, 0x1c, - 0x98, 0xea, 0xfd, 0x3c, 0x0a, 0x2e, 0x80, 0x99, 0x44, 0x97, 0x6e, 0x08, 0x46, 0x43, 0xef, 0x3b, - 0xeb, 0x66, 0xc0, 0xf5, 0x7e, 0x80, 0xde, 0x10, 0xc5, 0xee, 0xb2, 0xe6, 0x86, 0x0e, 0xee, 0xa8, - 0xf5, 0xba, 0x2c, 0xf1, 0x65, 0x38, 0x0d, 0xde, 0xeb, 0x1f, 0x94, 0x11, 0xd2, 0x10, 0x3f, 0x31, - 0x4c, 0x4e, 0xd8, 0xd4, 0x10, 0x3b, 0xb6, 0x36, 0xbf, 0xfd, 0x97, 0xd7, 0xf3, 0xdc, 0x5f, 0x5f, - 0xcf, 0x73, 0x7f, 0x7b, 0x3d, 0xcf, 0x7d, 0xaa, 0xb5, 0x6c, 0xfa, 0xa2, 0x73, 0xb0, 0xd6, 0xf4, - 0x8e, 0xd6, 0x5b, 0xbe, 0x79, 0x6c, 0x87, 0x97, 0x24, 0xd3, 0x59, 0x4f, 0xbe, 0x9a, 0x34, 0xdb, - 0xf6, 0x7a, 0x8b, 0xb8, 0xeb, 0xec, 0x13, 0xc9, 0xf5, 0x96, 0xd7, 0xf7, 0x19, 0xe5, 0x93, 0xcc, - 0xe3, 0xf1, 0xc6, 0xc1, 0x05, 0x06, 0x7b, 0xf0, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x86, 0x6e, - 0xe0, 0x5e, 0x76, 0x29, 0x00, 0x00, + // 2507 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x5a, 0xcb, 0x6f, 0xe4, 0x58, + 0xd5, 0x2f, 0x57, 0xfa, 0x91, 0xbe, 0x33, 0x9d, 0x78, 0x6e, 0xf7, 0xa4, 0x2b, 0x9d, 0x77, 0xf5, + 0x2b, 0xc9, 0xcc, 0x97, 0x4c, 0x7a, 0xe6, 0x9b, 0x69, 0xe8, 0x81, 0x91, 0xcb, 0x76, 0x62, 0x4f, + 0x2a, 0xe5, 0x9a, 0x7b, 0x5d, 0x69, 0x32, 0x12, 0xba, 0x72, 0xaa, 0x6e, 0x6a, 0xac, 0x71, 0xec, + 0x92, 0xed, 0x4a, 0x88, 0x10, 0x1a, 0x81, 0x00, 0x21, 0x35, 0x42, 0xb0, 0x43, 0x42, 0x42, 0x42, + 0x80, 0xc4, 0x62, 0xc4, 0x76, 0xd6, 0xec, 0x58, 0xf2, 0x27, 0xa0, 0xde, 0xb3, 0x64, 0x01, 0x02, + 0x81, 0x7c, 0xfd, 0x28, 0xd7, 0xd3, 0x9e, 0x16, 0xab, 0xcc, 0xae, 0xec, 0xfb, 0x3b, 0xe7, 0xfc, + 0xee, 0x39, 0xe7, 0x3e, 0xce, 0x71, 0x81, 0x0d, 0x9f, 0x5a, 0xb4, 0xe3, 0xb8, 0xfe, 0x76, 0xd7, + 0x33, 0xda, 0x94, 0x9e, 0x51, 0xdb, 0xf7, 0xb6, 0xcf, 0x76, 0xd2, 0x8f, 0x5b, 0x1d, 0xd7, 0xf1, + 0x1d, 0x78, 0x27, 0x86, 0x6e, 0xa5, 0xc7, 0xce, 0x76, 0xca, 0x9b, 0x00, 0x36, 0xd4, 0x8a, 0x61, + 0xdb, 0xd4, 0x15, 0x2d, 0xb3, 0xf9, 0xa9, 0x1c, 0x8c, 0xc0, 0xdb, 0xe0, 0xaa, 0x61, 0x51, 0xd7, + 0x2f, 0x71, 0xab, 0xdc, 0xfa, 0x0d, 0x14, 0x3e, 0x94, 0x77, 0xc1, 0x7a, 0x43, 0xd5, 0xec, 0x63, + 0xc7, 0x70, 0x5b, 0xa2, 0x73, 0xda, 0xb1, 0xa8, 0x4f, 0xf7, 0x1c, 0xdd, 0x91, 0x0c, 0xef, 0x93, + 0xf0, 0x65, 0x4f, 0xc3, 0x5d, 0x30, 0xdd, 0xf5, 0xa8, 0x6b, 0x1b, 0xa7, 0x34, 0x52, 0x92, 0x3c, + 0x97, 0x1f, 0x80, 0x7b, 0x89, 0x1e, 0xa1, 0xd5, 0xda, 0x35, 0x5d, 0xcf, 0x47, 0xd4, 0x73, 0xba, + 0x6e, 0x93, 0xf6, 0x54, 0x94, 0x37, 0x53, 0xe6, 0x06, 0x61, 0x55, 0xc3, 0x4f, 0x13, 0x2e, 0x7f, + 0x00, 0xd6, 0x12, 0x2c, 0xa6, 0xbe, 0xe8, 0xd2, 0x16, 0xb5, 0x7d, 0xd3, 0xb0, 0x70, 0xf7, 0xf8, + 0xd4, 0xf4, 0xb3, 0x39, 0x7d, 0x0f, 0x3c, 0x48, 0x14, 0x20, 0xda, 0x36, 0xbd, 0x40, 0xff, 0x27, + 0x86, 0x65, 0x51, 0xbb, 0x4d, 0x73, 0x2a, 0x81, 0xf3, 0x60, 0xfa, 0xf4, 0xc4, 0x20, 0xfe, 0x45, + 0x87, 0x96, 0x8a, 0x6c, 0xec, 0xfa, 0xe9, 0x89, 0xa1, 0x5f, 0x74, 0x28, 0x5c, 0x02, 0xc0, 0x72, + 0xda, 0xa6, 0x4d, 0x4e, 0x2c, 0xe7, 0xbc, 0x34, 0xc5, 0x06, 0x6f, 0xb0, 0x37, 0xbb, 0x96, 0x73, + 0x1e, 0xf2, 0x47, 0xb4, 0xe9, 0x9c, 0x51, 0xf7, 0x42, 0x74, 0x5a, 0xd4, 0x13, 0x1d, 0xdb, 0x37, + 0xed, 0x2e, 0xcd, 0xe9, 0xd3, 0xa7, 0x60, 0x69, 0x48, 0x41, 0xe7, 0x22, 0xa7, 0xf0, 0xfb, 0x60, + 0x79, 0x40, 0xb8, 0xee, 0x9a, 0xb6, 0x9f, 0x53, 0xba, 0x0c, 0x78, 0xc9, 0xf4, 0x98, 0xf0, 0x01, + 0xf5, 0x8d, 0x96, 0xe1, 0x1b, 0x70, 0x06, 0x14, 0xcd, 0x56, 0x84, 0x2c, 0x9a, 0xad, 0xb2, 0x01, + 0x4a, 0x31, 0x26, 0x0e, 0x61, 0x82, 0x95, 0xc1, 0xb4, 0x1b, 0xbd, 0x63, 0x12, 0x33, 0x8f, 0x37, + 0xb6, 0xc6, 0xa4, 0xeb, 0xd6, 0xa0, 0x12, 0x94, 0x88, 0x96, 0x3f, 0x05, 0x30, 0x1e, 0xc5, 0x3e, + 0xed, 0x60, 0xdf, 0xf0, 0xbb, 0x1e, 0xfc, 0x00, 0x5c, 0xf3, 0xd8, 0xaf, 0x48, 0xf5, 0xa3, 0x4c, + 0xd5, 0xa1, 0x20, 0x8a, 0xc4, 0x82, 0xa5, 0x40, 0x5d, 0xd7, 0x71, 0xa3, 0x80, 0x86, 0x0f, 0xe5, + 0xdf, 0x71, 0x60, 0xae, 0xa1, 0xa6, 0x44, 0x5c, 0x9f, 0xb6, 0x42, 0x57, 0xc9, 0x60, 0xfa, 0x34, + 0x9a, 0x1a, 0xb3, 0xf9, 0x4a, 0x8e, 0xe9, 0xc4, 0xbe, 0x40, 0x89, 0x28, 0x14, 0x13, 0xe2, 0x45, + 0xa6, 0xe4, 0x8d, 0x1c, 0xc4, 0xe3, 0x59, 0xc7, 0xe4, 0xcb, 0xff, 0xe6, 0xc0, 0x6a, 0x8f, 0x66, + 0xec, 0x34, 0x4c, 0x2d, 0xda, 0xf4, 0x4d, 0xc7, 0xfe, 0x9f, 0x12, 0x3e, 0x48, 0x85, 0x31, 0xa4, + 0xbc, 0x93, 0x3b, 0x8c, 0x3d, 0x75, 0xb1, 0x8a, 0xd4, 0xfc, 0xa7, 0x5e, 0x7e, 0xfe, 0x3f, 0x2a, + 0x06, 0x7b, 0x48, 0x0c, 0x50, 0x6d, 0x9f, 0xb6, 0x5d, 0x23, 0x98, 0xb9, 0xf0, 0x0c, 0x6b, 0xaa, + 0x24, 0x8a, 0x8e, 0x6d, 0xd3, 0xa6, 0x7f, 0xe9, 0xfd, 0xf0, 0x45, 0x31, 0x9d, 0x07, 0x92, 0xe1, + 0x1b, 0xc7, 0x86, 0x47, 0x91, 0x84, 0x65, 0xdb, 0x75, 0x2c, 0xeb, 0xb2, 0xcf, 0x1f, 0x3e, 0x01, + 0x25, 0x8f, 0x25, 0x3d, 0x6d, 0x91, 0x58, 0xb3, 0x47, 0x9a, 0x4e, 0xd7, 0xf6, 0x4b, 0x57, 0x56, + 0xb9, 0xf5, 0x29, 0x34, 0x17, 0x8f, 0xc7, 0x54, 0x3c, 0x31, 0x18, 0x2d, 0x7f, 0x08, 0x4a, 0x0d, + 0x55, 0x34, 0x2c, 0x4b, 0x77, 0x04, 0xb6, 0x66, 0x52, 0x9b, 0xe2, 0x16, 0x98, 0x6a, 0x46, 0xbe, + 0x9a, 0x79, 0xbc, 0x38, 0x96, 0x97, 0xa8, 0x0b, 0x28, 0x00, 0x96, 0xff, 0xc1, 0x81, 0xc5, 0x54, + 0x14, 0x68, 0xc7, 0x72, 0x2e, 0x30, 0x75, 0xcf, 0xcc, 0x26, 0xbd, 0xf4, 0x19, 0xf8, 0x2f, 0x0e, + 0xac, 0x8c, 0xc8, 0xc0, 0xe8, 0xa4, 0xbd, 0xf4, 0xd3, 0xff, 0x7e, 0x11, 0xdc, 0x1f, 0x9e, 0xbe, + 0xe8, 0xd8, 0x27, 0x66, 0xbb, 0xeb, 0xd2, 0x03, 0xbd, 0x8a, 0x2f, 0xbd, 0x0f, 0x7e, 0x56, 0x04, + 0x3b, 0xe9, 0xf4, 0xf7, 0x3e, 0xf5, 0x9d, 0x4e, 0xb0, 0xa8, 0xce, 0xa8, 0x64, 0xba, 0xb4, 0xe9, + 0x3b, 0xee, 0x85, 0xee, 0x38, 0x96, 0xa7, 0xda, 0x9e, 0x6f, 0x5c, 0xfe, 0x5d, 0xa9, 0xfc, 0xbc, + 0x08, 0xb6, 0xb2, 0x1c, 0x92, 0xa4, 0xc8, 0xa5, 0xf7, 0xc6, 0xe7, 0x45, 0xf0, 0xb0, 0xe7, 0x0d, + 0xa1, 0xeb, 0x3b, 0xf1, 0xef, 0xd4, 0xa6, 0x7c, 0xe9, 0x4f, 0xaa, 0x47, 0x60, 0x76, 0xf4, 0x01, + 0x35, 0xe3, 0xf6, 0x1f, 0x4c, 0x3f, 0x2e, 0x82, 0x8d, 0x09, 0x3b, 0x8a, 0x2a, 0x1c, 0xd4, 0x1d, + 0xcb, 0x6c, 0x5e, 0x5c, 0xfa, 0xbc, 0xf9, 0x0f, 0x07, 0xca, 0x3d, 0x47, 0x04, 0x85, 0x4b, 0xd3, + 0xec, 0x18, 0x96, 0xf7, 0xd5, 0x59, 0x39, 0xff, 0xe4, 0x82, 0xe2, 0x2f, 0x06, 0xe8, 0xd4, 0xf3, + 0xa3, 0x7b, 0xed, 0x57, 0xe1, 0x8a, 0xff, 0x77, 0x2e, 0xb8, 0xa1, 0xc5, 0x80, 0xb8, 0x2d, 0xd1, + 0xba, 0xf4, 0xf3, 0x5e, 0x00, 0xf3, 0x0d, 0x55, 0x74, 0xa9, 0xe1, 0xd3, 0x1a, 0x3d, 0x47, 0x8e, + 0x95, 0x6e, 0x9d, 0xac, 0x04, 0x09, 0xd1, 0x37, 0x88, 0x8d, 0xb3, 0x34, 0x60, 0x2d, 0xb8, 0x8d, + 0xf5, 0x4b, 0x1b, 0x76, 0x93, 0x5a, 0x29, 0xc8, 0x9b, 0x60, 0x73, 0x00, 0x72, 0x68, 0xd2, 0x73, + 0xc9, 0x69, 0x76, 0x4f, 0xa9, 0xed, 0x1b, 0xfd, 0x77, 0xe1, 0xf2, 0xe7, 0x2b, 0x60, 0xb6, 0x11, + 0x90, 0x67, 0x8f, 0x9a, 0x4d, 0xb5, 0x13, 0xd8, 0x00, 0xb3, 0x5d, 0x93, 0x1c, 0xb3, 0xe6, 0x12, + 0x69, 0x06, 0xd8, 0x28, 0x08, 0xe3, 0x27, 0x3c, 0xdc, 0x8b, 0x52, 0x0a, 0xe8, 0x66, 0xd7, 0x4c, + 0xbd, 0x85, 0xbf, 0xe2, 0xc0, 0x46, 0xd7, 0x24, 0x4e, 0xd8, 0xac, 0x21, 0xcd, 0x28, 0xe4, 0xa4, + 0xed, 0x10, 0xdf, 0x21, 0xad, 0xb8, 0x19, 0x15, 0x59, 0x0c, 0x5d, 0x2c, 0x4c, 0xb0, 0x98, 0xaf, + 0xa3, 0xa5, 0x14, 0xd0, 0xbd, 0xae, 0x99, 0x89, 0x85, 0xcf, 0x39, 0x70, 0x2f, 0xc5, 0xce, 0x68, + 0xb5, 0xc8, 0x89, 0xe9, 0x7a, 0x7e, 0x52, 0x77, 0x44, 0xbc, 0xae, 0x30, 0x5e, 0xef, 0x67, 0xf3, + 0x1a, 0xdf, 0x21, 0x53, 0x0a, 0x68, 0x39, 0xa1, 0x34, 0x12, 0x36, 0xe8, 0xab, 0x11, 0x6c, 0x2c, + 0xc3, 0x4f, 0xa2, 0x73, 0x35, 0xaf, 0xaf, 0x32, 0xda, 0x71, 0x7d, 0xbe, 0x1a, 0x8f, 0x85, 0x3f, + 0xe4, 0xc0, 0x6a, 0x8a, 0x9d, 0x47, 0x7d, 0xd2, 0x4c, 0x3a, 0x77, 0xc4, 0x63, 0x5d, 0xb7, 0xd2, + 0x35, 0x46, 0xea, 0xeb, 0xd9, 0xa4, 0xc6, 0xf5, 0xfd, 0x94, 0x02, 0x5a, 0x4c, 0xd8, 0x8c, 0x00, + 0xc1, 0x9f, 0x73, 0xe0, 0x7e, 0x8a, 0x86, 0x1b, 0x15, 0x25, 0xa4, 0x19, 0xf7, 0xff, 0x62, 0x2a, + 0xd7, 0x19, 0x95, 0x6f, 0x66, 0x53, 0x99, 0xd4, 0x41, 0x54, 0x0a, 0x68, 0x35, 0xa1, 0x33, 0x06, + 0x18, 0x7b, 0xc6, 0x8d, 0x7a, 0x72, 0xa4, 0xe9, 0xb4, 0xd8, 0x7d, 0x20, 0xec, 0x09, 0x46, 0xe1, + 0x9a, 0xce, 0xf4, 0x4c, 0x46, 0x47, 0x31, 0xf4, 0xcc, 0x78, 0x10, 0xfc, 0x0e, 0x58, 0x1c, 0xc5, + 0xa2, 0x73, 0x11, 0x31, 0xb8, 0xc1, 0x18, 0xbc, 0x9b, 0x9f, 0x41, 0xba, 0x25, 0xa9, 0x14, 0x50, + 0x69, 0xc8, 0x7a, 0x04, 0x80, 0xdf, 0x05, 0x4b, 0xc3, 0x96, 0x3b, 0xae, 0x69, 0xfb, 0x91, 0x69, + 0xc0, 0x4c, 0xbf, 0x97, 0xd7, 0xf4, 0x40, 0x43, 0x53, 0x29, 0xa0, 0xf9, 0x01, 0xdb, 0x3d, 0x04, + 0xb4, 0xc0, 0x7c, 0xd7, 0x24, 0xad, 0x68, 0xf3, 0x25, 0x5e, 0xd8, 0xde, 0x23, 0x4c, 0x79, 0xe9, + 0x15, 0x66, 0x78, 0x7b, 0x82, 0xe1, 0x51, 0x6d, 0x41, 0xa5, 0x80, 0xe6, 0xba, 0xe6, 0xc8, 0x86, + 0xe1, 0xf3, 0x30, 0xfd, 0x12, 0x73, 0xc9, 0xd2, 0xf4, 0xe2, 0x3e, 0x5d, 0x64, 0xf9, 0x55, 0x66, + 0xf9, 0x6b, 0x39, 0x2c, 0x8f, 0xee, 0xf4, 0x85, 0x99, 0x97, 0xd1, 0x0d, 0xfc, 0x8c, 0x25, 0x5e, + 0x42, 0xa6, 0xc5, 0xba, 0x14, 0xc4, 0x0b, 0xdb, 0x14, 0x11, 0x91, 0x9b, 0x8c, 0xc8, 0xff, 0xe7, + 0x20, 0x32, 0xdc, 0xe4, 0x08, 0x73, 0x6e, 0x42, 0x13, 0xe4, 0x27, 0xe1, 0x06, 0xda, 0x63, 0x10, + 0x5d, 0x6d, 0x7b, 0xeb, 0x32, 0x24, 0x31, 0xc3, 0x48, 0x3c, 0xc9, 0x43, 0x62, 0x54, 0xb7, 0x41, + 0x29, 0xa0, 0x95, 0x14, 0x8f, 0x91, 0x0d, 0x89, 0x5f, 0x86, 0xbb, 0xe7, 0x30, 0x95, 0x66, 0x7c, + 0xb7, 0x24, 0xa7, 0xbe, 0xe5, 0x45, 0x84, 0x66, 0x19, 0xa1, 0x6f, 0x7c, 0x09, 0x42, 0xc3, 0xf5, + 0xbf, 0x52, 0x40, 0xf7, 0x87, 0x59, 0xf5, 0x70, 0xbe, 0x15, 0x95, 0x40, 0x7f, 0xe2, 0xc0, 0x93, + 0xfe, 0x38, 0xb1, 0xea, 0x91, 0x18, 0xac, 0x7c, 0x24, 0xad, 0xb8, 0x7e, 0x24, 0x7e, 0x50, 0x51, + 0x13, 0x33, 0x2c, 0xa9, 0x23, 0xa6, 0x3c, 0x63, 0xfa, 0x61, 0xae, 0xf8, 0xe5, 0xaa, 0xd2, 0x95, + 0x02, 0xda, 0x49, 0x07, 0x35, 0x5f, 0x69, 0xff, 0x05, 0x07, 0xde, 0xc9, 0x35, 0x87, 0x9e, 0xbb, + 0x43, 0xfe, 0xaf, 0x31, 0xfe, 0x7b, 0x2f, 0xcd, 0xbf, 0xbf, 0x34, 0x50, 0x0a, 0x68, 0x2b, 0x8b, + 0xfc, 0x40, 0x31, 0xf1, 0x6b, 0x0e, 0xbc, 0x91, 0x66, 0x6e, 0x74, 0x83, 0x9b, 0x47, 0x52, 0xae, + 0xa6, 0x7a, 0x8c, 0x21, 0x61, 0xc8, 0x08, 0x7f, 0x90, 0x83, 0xf0, 0xa4, 0xba, 0x57, 0x29, 0xa0, + 0x87, 0x3d, 0xa2, 0x13, 0x2b, 0xe4, 0x3f, 0x70, 0x60, 0x3b, 0x23, 0x73, 0x4d, 0xe3, 0x94, 0x74, + 0x58, 0x89, 0x18, 0x91, 0xbc, 0xc5, 0x48, 0x56, 0x5e, 0x26, 0x7f, 0xfb, 0xab, 0x4d, 0xa5, 0x80, + 0x36, 0x26, 0x24, 0xb1, 0x6a, 0x9c, 0xa6, 0x4b, 0xd3, 0x5f, 0x70, 0xe0, 0x61, 0x9a, 0x6a, 0x27, + 0xa9, 0xe0, 0x86, 0xe2, 0x7e, 0x9b, 0x31, 0x7c, 0x9a, 0x83, 0xe1, 0xb8, 0x32, 0x50, 0x29, 0xa0, + 0x72, 0x8f, 0xda, 0xd8, 0x62, 0xf1, 0x07, 0x1c, 0x58, 0x4b, 0x73, 0xf2, 0xa9, 0xe7, 0x07, 0x6c, + 0xec, 0xbe, 0xfd, 0xf8, 0xf5, 0xcc, 0xd3, 0x6f, 0x42, 0x4d, 0xa6, 0x14, 0xd0, 0x52, 0x8f, 0xc9, + 0xa8, 0xa2, 0xcd, 0x05, 0x0b, 0x69, 0x0e, 0xf1, 0x3d, 0x37, 0x3e, 0x87, 0xe6, 0x32, 0x0a, 0x91, + 0x71, 0x45, 0x51, 0x78, 0xec, 0x8e, 0x29, 0x98, 0x2c, 0x50, 0xea, 0x9a, 0xc1, 0x25, 0xcc, 0xf0, + 0x29, 0xb1, 0xe9, 0x39, 0x71, 0x1d, 0x2b, 0xbe, 0x6e, 0xdc, 0x61, 0x06, 0x1f, 0x4f, 0x30, 0x38, + 0xa6, 0x1c, 0x51, 0x0a, 0xe8, 0x76, 0xd7, 0x1c, 0x1e, 0x84, 0x17, 0xec, 0x90, 0x1f, 0xb4, 0xe6, + 0x19, 0x67, 0xb1, 0xc9, 0x52, 0xa6, 0x87, 0x27, 0x14, 0x39, 0xe1, 0x44, 0x47, 0x03, 0xe0, 0x67, + 0x60, 0x65, 0xd4, 0x44, 0x59, 0x11, 0x14, 0x19, 0x9f, 0xcf, 0x3c, 0x60, 0x26, 0x16, 0x50, 0x4a, + 0x01, 0xdd, 0x1d, 0x9c, 0x75, 0x0f, 0x02, 0x7f, 0x13, 0x6e, 0x21, 0x83, 0x0c, 0xce, 0x4c, 0x7a, + 0x4e, 0x5a, 0xe9, 0x22, 0x2b, 0x62, 0x73, 0x97, 0xb1, 0x11, 0xf3, 0xb2, 0x99, 0x50, 0xab, 0x29, + 0x05, 0xf4, 0x60, 0x80, 0xd8, 0x68, 0x34, 0xfc, 0x3d, 0x07, 0xb6, 0xd2, 0x29, 0x68, 0xf6, 0x3e, + 0xa0, 0x11, 0xe3, 0xdc, 0x23, 0x8e, 0xd9, 0x6a, 0xc6, 0xcb, 0x22, 0xca, 0xca, 0x85, 0xcc, 0x12, + 0x22, 0xdf, 0xd7, 0x38, 0xa5, 0x80, 0xd6, 0x7b, 0x59, 0x9a, 0xc6, 0x9e, 0x7b, 0x9a, 0xd9, 0x6a, + 0xf6, 0x7d, 0xb9, 0xfb, 0x29, 0x07, 0x1e, 0x8c, 0xbe, 0x32, 0xb4, 0x3c, 0x42, 0xd9, 0x27, 0xae, + 0x88, 0xde, 0x62, 0xee, 0x2b, 0xd4, 0xe8, 0x8f, 0x64, 0xfd, 0x57, 0xa8, 0x04, 0xd3, 0xf2, 0xd2, + 0x1f, 0xd2, 0xfc, 0x30, 0xad, 0x83, 0xf3, 0xd6, 0x77, 0xd8, 0x69, 0x16, 0x47, 0x31, 0x62, 0xb1, + 0x94, 0xb9, 0x74, 0x47, 0x7f, 0x71, 0x8a, 0x32, 0x7a, 0xe4, 0x58, 0xe5, 0x3a, 0xb8, 0xca, 0x34, + 0x7c, 0x78, 0x65, 0xba, 0xc8, 0x4f, 0x05, 0x97, 0xac, 0xa4, 0xa2, 0x69, 0x53, 0x3f, 0xb9, 0xc4, + 0x32, 0x1e, 0x9b, 0x7f, 0xbb, 0xd9, 0xfb, 0x68, 0x1f, 0x1f, 0x1d, 0x70, 0x0d, 0x2c, 0x49, 0x2a, + 0x16, 0xb5, 0x43, 0x19, 0x11, 0x24, 0x63, 0xad, 0x81, 0x44, 0x99, 0x34, 0x6a, 0xb8, 0x2e, 0x8b, + 0xea, 0xae, 0x2a, 0x4b, 0x7c, 0x01, 0x2e, 0x82, 0xd2, 0x30, 0x04, 0xcb, 0xe8, 0x50, 0x46, 0x3c, + 0x07, 0x57, 0xc1, 0xe2, 0xf0, 0xe8, 0x7e, 0xa3, 0x22, 0xa3, 0x9a, 0xac, 0xcb, 0x98, 0x2f, 0xc2, + 0xb7, 0xc1, 0xf6, 0x30, 0x42, 0x12, 0x74, 0xa1, 0x22, 0x60, 0x99, 0xd4, 0x35, 0xac, 0xef, 0x21, + 0x19, 0x13, 0x2c, 0x57, 0x77, 0x89, 0xa2, 0x61, 0x5d, 0x96, 0xf8, 0x29, 0xf8, 0x16, 0x78, 0x73, + 0x82, 0xd0, 0xc1, 0x11, 0xfe, 0xa8, 0xda, 0x27, 0x71, 0x05, 0x3e, 0x06, 0x5b, 0x93, 0x24, 0xb4, + 0xda, 0x9e, 0x26, 0x55, 0xfa, 0x64, 0xae, 0xc2, 0x37, 0xc0, 0xa3, 0x3c, 0xd4, 0x90, 0x84, 0xf9, + 0x6b, 0x70, 0x1d, 0xdc, 0xcf, 0xa4, 0x14, 0x20, 0xaf, 0xc3, 0x87, 0xa0, 0x3c, 0x8c, 0x14, 0xea, + 0xf5, 0xaa, 0x2a, 0x0a, 0xba, 0xaa, 0xd5, 0x88, 0xa2, 0xeb, 0x75, 0x7e, 0x1a, 0x3e, 0x00, 0x6b, + 0x93, 0x71, 0xba, 0x58, 0xe7, 0x6f, 0x8c, 0x86, 0x3d, 0x53, 0x6b, 0x92, 0xf6, 0x0c, 0x13, 0x49, + 0xc6, 0xfb, 0xba, 0x56, 0xe7, 0x01, 0x7c, 0x13, 0xac, 0x4f, 0xe0, 0x87, 0x3f, 0xaa, 0x86, 0x31, + 0x63, 0x1c, 0x5f, 0xc9, 0x70, 0x70, 0x6f, 0xea, 0xb2, 0x84, 0x15, 0x75, 0x57, 0xe7, 0x5f, 0x85, + 0xef, 0x80, 0xb7, 0x72, 0xe9, 0x4f, 0xbb, 0xf8, 0x66, 0x86, 0x1d, 0x24, 0x4b, 0x6a, 0x7f, 0xe8, + 0x67, 0xf2, 0x06, 0x65, 0x4f, 0xac, 0xf3, 0xb3, 0xb9, 0x82, 0x12, 0x20, 0xf9, 0xdc, 0xee, 0x09, + 0xd0, 0xaf, 0xc1, 0xa7, 0xe0, 0xbd, 0x2f, 0xe3, 0x9e, 0x68, 0x3d, 0x54, 0x65, 0x8c, 0x79, 0x08, + 0xff, 0x0f, 0x6c, 0xe4, 0x11, 0x16, 0x3e, 0x6e, 0x20, 0x99, 0xbf, 0x05, 0x1f, 0x81, 0x7b, 0x13, + 0xe0, 0xd2, 0x51, 0x4d, 0x38, 0xd0, 0xa4, 0x0a, 0x7f, 0x3b, 0x23, 0xc5, 0x45, 0x01, 0x63, 0xa1, + 0x26, 0x21, 0x81, 0xec, 0xcb, 0x47, 0xb8, 0x2e, 0x88, 0x32, 0xe6, 0x5f, 0xcf, 0x88, 0x5a, 0x4f, + 0x26, 0x1d, 0x83, 0x39, 0xf8, 0x04, 0xbc, 0x33, 0x41, 0x4a, 0xae, 0x0a, 0x58, 0x57, 0x45, 0x2c, + 0x0b, 0x48, 0x54, 0xfa, 0x24, 0xef, 0xe4, 0x8a, 0x77, 0x24, 0x2f, 0x88, 0x8a, 0xcc, 0x97, 0x32, + 0xbc, 0x15, 0x4a, 0x1c, 0xc8, 0x07, 0x1a, 0x3a, 0x92, 0x2a, 0xfc, 0x7c, 0x2e, 0x03, 0xcc, 0xb3, + 0x24, 0x34, 0x70, 0x37, 0x63, 0x32, 0xa1, 0x84, 0x58, 0x6d, 0x60, 0x7d, 0x20, 0x79, 0x17, 0xe0, + 0x26, 0x78, 0x98, 0x99, 0x5d, 0x61, 0x14, 0x17, 0xe1, 0x16, 0xd8, 0xcc, 0x95, 0x5f, 0x21, 0x7e, + 0x29, 0x23, 0x98, 0x3d, 0xfc, 0x81, 0x2a, 0x22, 0x0d, 0x6b, 0xbb, 0x3a, 0xbf, 0x0c, 0xdf, 0x05, + 0x8f, 0x27, 0x05, 0x53, 0x13, 0xf7, 0x91, 0x26, 0x88, 0xca, 0xc0, 0x3e, 0xb7, 0x92, 0x91, 0xfb, + 0xf1, 0xde, 0x28, 0xe8, 0x55, 0x01, 0xf3, 0xab, 0x19, 0x6b, 0x0a, 0xd7, 0xb4, 0x67, 0xbb, 0x55, + 0x61, 0x5f, 0xe6, 0xd7, 0xc6, 0xe8, 0xd5, 0xc4, 0x94, 0x77, 0x25, 0x4c, 0xea, 0x48, 0xfb, 0xd6, + 0x11, 0x5f, 0x1e, 0x93, 0x8a, 0x69, 0xb4, 0xa2, 0xee, 0x29, 0x44, 0x38, 0x14, 0xd4, 0xaa, 0x50, + 0x51, 0xab, 0xaa, 0x7e, 0xc4, 0xdf, 0x83, 0xef, 0x81, 0xb7, 0x33, 0xa4, 0xd8, 0x0a, 0x51, 0x45, + 0x82, 0xe4, 0x3d, 0x15, 0xeb, 0x88, 0x6d, 0x9d, 0xfc, 0xfd, 0xcd, 0xdf, 0x72, 0x60, 0xa6, 0xff, + 0x0f, 0x5e, 0x70, 0x05, 0x2c, 0x24, 0xba, 0xb0, 0x2e, 0xe8, 0x0d, 0x3c, 0x70, 0xd6, 0x2d, 0x80, + 0x3b, 0x83, 0x00, 0xdc, 0x10, 0xc5, 0x60, 0x59, 0x73, 0x23, 0x07, 0xf7, 0xd5, 0x7a, 0x5d, 0x96, + 0xf8, 0x22, 0x9c, 0x07, 0xaf, 0x0f, 0x0e, 0xca, 0x08, 0x69, 0x88, 0x9f, 0x1a, 0x25, 0x27, 0x54, + 0x34, 0xc4, 0x8e, 0xad, 0xcd, 0x3f, 0x72, 0x60, 0x4a, 0xd4, 0x05, 0x78, 0x0b, 0xcc, 0x8a, 0xba, + 0x30, 0x40, 0x67, 0x0e, 0xc0, 0xe0, 0xa5, 0xd0, 0xd0, 0x15, 0x22, 0x6a, 0xb5, 0x9a, 0x2c, 0xea, + 0x5a, 0x70, 0xe8, 0xde, 0x01, 0xb7, 0xd8, 0x7b, 0x51, 0x57, 0x0f, 0x83, 0xb3, 0x18, 0x63, 0x55, + 0xab, 0x05, 0x67, 0x6d, 0x32, 0x10, 0x50, 0x26, 0x48, 0xfe, 0xa8, 0x21, 0x63, 0x1d, 0xf3, 0x53, + 0xf1, 0x40, 0x1d, 0xc9, 0x07, 0x6a, 0xe3, 0x80, 0xe0, 0x46, 0xbd, 0xae, 0x21, 0x9d, 0xbf, 0x12, + 0x0f, 0xe8, 0x28, 0xc8, 0x7f, 0x89, 0x48, 0xf2, 0xa1, 0x1a, 0x6c, 0x1c, 0x57, 0x63, 0xdb, 0x8d, + 0xfa, 0x1e, 0x12, 0x24, 0x99, 0x54, 0x84, 0x5a, 0x4d, 0x46, 0xfc, 0xb5, 0xca, 0xb7, 0xff, 0xfc, + 0x62, 0x99, 0xfb, 0xcb, 0x8b, 0x65, 0xee, 0xaf, 0x2f, 0x96, 0xb9, 0x8f, 0xb5, 0xb6, 0xe9, 0x7f, + 0xd2, 0x3d, 0xde, 0x6a, 0x3a, 0xa7, 0xdb, 0x6d, 0xd7, 0x38, 0x33, 0xc3, 0xbb, 0xa4, 0x61, 0x6d, + 0x27, 0x7f, 0x54, 0x35, 0x3a, 0xe6, 0x76, 0x9b, 0xda, 0xdb, 0xec, 0x5f, 0xa9, 0xdb, 0x6d, 0x67, + 0xe0, 0x9f, 0xab, 0x4f, 0x53, 0x8f, 0x67, 0x3b, 0xc7, 0xd7, 0x18, 0xec, 0xed, 0xff, 0x06, 0x00, + 0x00, 0xff, 0xff, 0x4d, 0xbd, 0x08, 0x6a, 0xe9, 0x2a, 0x00, 0x00, } func (m *UIBannerClickEvent) Marshal() (dAtA []byte, err error) { @@ -3167,6 +3284,38 @@ func (m *UIDiscoverDatabaseRDSEnrollEvent) MarshalToSizedBuffer(dAtA []byte) (in return len(dAtA) - i, nil } +func (m *UICallToActionClickEvent) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *UICallToActionClickEvent) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UICallToActionClickEvent) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if m.Cta != 0 { + i = encodeVarintUsageevents(dAtA, i, uint64(m.Cta)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *UIDiscoverDeployServiceEvent) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -4539,6 +4688,29 @@ func (m *UsageEventOneOf_UiDiscoverDatabaseRdsEnrollEvent) MarshalToSizedBuffer( } return len(dAtA) - i, nil } +func (m *UsageEventOneOf_UiCallToActionClickEvent) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UsageEventOneOf_UiCallToActionClickEvent) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.UiCallToActionClickEvent != nil { + { + size, err := m.UiCallToActionClickEvent.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintUsageevents(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xea + } + return len(dAtA) - i, nil +} func encodeVarintUsageevents(dAtA []byte, offset int, v uint64) int { offset -= sovUsageevents(v) base := offset @@ -4839,6 +5011,21 @@ func (m *UIDiscoverDatabaseRDSEnrollEvent) Size() (n int) { return n } +func (m *UICallToActionClickEvent) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Cta != 0 { + n += 1 + sovUsageevents(uint64(m.Cta)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *UIDiscoverDeployServiceEvent) Size() (n int) { if m == nil { return 0 @@ -5469,6 +5656,18 @@ func (m *UsageEventOneOf_UiDiscoverDatabaseRdsEnrollEvent) Size() (n int) { } return n } +func (m *UsageEventOneOf_UiCallToActionClickEvent) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.UiCallToActionClickEvent != nil { + l = m.UiCallToActionClickEvent.Size() + n += 2 + l + sovUsageevents(uint64(l)) + } + return n +} func sovUsageevents(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 @@ -7097,6 +7296,76 @@ func (m *UIDiscoverDatabaseRDSEnrollEvent) Unmarshal(dAtA []byte) error { } return nil } +func (m *UICallToActionClickEvent) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUsageevents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: UICallToActionClickEvent: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UICallToActionClickEvent: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Cta", wireType) + } + m.Cta = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUsageevents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Cta |= CTA(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipUsageevents(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthUsageevents + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *UIDiscoverDeployServiceEvent) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -9884,6 +10153,41 @@ func (m *UsageEventOneOf) Unmarshal(dAtA []byte) error { } m.Event = &UsageEventOneOf_UiDiscoverDatabaseRdsEnrollEvent{v} iNdEx = postIndex + case 29: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UiCallToActionClickEvent", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUsageevents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthUsageevents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthUsageevents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &UICallToActionClickEvent{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &UsageEventOneOf_UiCallToActionClickEvent{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipUsageevents(dAtA[iNdEx:]) diff --git a/api/proto/teleport/usageevents/v1/usageevents.proto b/api/proto/teleport/usageevents/v1/usageevents.proto index c0027c7cfe1b4..57073a0187f44 100644 --- a/api/proto/teleport/usageevents/v1/usageevents.proto +++ b/api/proto/teleport/usageevents/v1/usageevents.proto @@ -194,6 +194,25 @@ message UIDiscoverDatabaseRDSEnrollEvent { int64 selected_resources_count = 4; } +// UICallToActionClickEvent is emmited when a user clicks a Teleport Web UI's CTA. +message UICallToActionClickEvent { + CTA cta = 1; +} + +// CTA represents teleport web UI's call to action buttons. +// We can't use prehog.v1alpha.CTA here because AuthService (and thus this file) +// is generated with gogofast, so we just copy the enum definition here instead. +// Make sure you update both. +enum CTA { + CTA_UNSPECIFIED = 0; + CTA_AUTH_CONNECTOR = 1; + CTA_ACTIVE_SESSIONS = 2; + CTA_ACCESS_REQUESTS = 3; + CTA_PREMIUM_SUPPORT = 4; + CTA_TRUSTED_DEVICES = 5; + CTA_UPGRADE_BANNER = 6; +} + // UIDiscoverDeployServiceEvent is emitted after the user installs a Teleport Agent. // For SSH this is the Teleport 'install-node' script. // @@ -316,6 +335,7 @@ message UsageEventOneOf { UICreateNewRoleViewDocumentationClickEvent ui_create_new_role_view_documentation_click = 26; UIDiscoverIntegrationAWSOIDCConnectEvent ui_discover_integration_aws_oidc_connect_event = 27; UIDiscoverDatabaseRDSEnrollEvent ui_discover_database_rds_enroll_event = 28; + UICallToActionClickEvent ui_call_to_action_click_event = 29; } reserved 2; //UIOnboardGetStartedClickEvent reserved "ui_onboard_get_started_click"; diff --git a/e_imports.go b/e_imports.go index bac5fc240be86..a1f4cbf9a5819 100644 --- a/e_imports.go +++ b/e_imports.go @@ -60,23 +60,6 @@ import ( _ "github.com/gravitational/kingpin" _ "github.com/gravitational/license" _ "github.com/gravitational/roundtrip" - _ "github.com/gravitational/teleport/api/breaker" - _ "github.com/gravitational/teleport/api/client" - _ "github.com/gravitational/teleport/api/client/proto" - _ "github.com/gravitational/teleport/api/client/webclient" - _ "github.com/gravitational/teleport/api/constants" - _ "github.com/gravitational/teleport/api/defaults" - _ "github.com/gravitational/teleport/api/gen/proto/go/attestation/v1" - _ "github.com/gravitational/teleport/api/gen/proto/go/teleport/devicetrust/v1" - _ "github.com/gravitational/teleport/api/gen/proto/go/teleport/loginrule/v1" - _ "github.com/gravitational/teleport/api/gen/proto/go/teleport/plugins/v1" - _ "github.com/gravitational/teleport/api/gen/proto/go/teleport/samlidp/v1" - _ "github.com/gravitational/teleport/api/types" - _ "github.com/gravitational/teleport/api/types/events" - _ "github.com/gravitational/teleport/api/types/wrappers" - _ "github.com/gravitational/teleport/api/utils" - _ "github.com/gravitational/teleport/api/utils/keys" - _ "github.com/gravitational/teleport/api/utils/retryutils" _ "github.com/gravitational/trace" _ "github.com/gravitational/trace/trail" _ "github.com/jonboulle/clockwork" @@ -118,4 +101,22 @@ import ( _ "google.golang.org/protobuf/types/known/timestamppb" _ "gopkg.in/check.v1" _ "k8s.io/apimachinery/pkg/util/yaml" + + _ "github.com/gravitational/teleport/api/breaker" + _ "github.com/gravitational/teleport/api/client" + _ "github.com/gravitational/teleport/api/client/proto" + _ "github.com/gravitational/teleport/api/client/webclient" + _ "github.com/gravitational/teleport/api/constants" + _ "github.com/gravitational/teleport/api/defaults" + _ "github.com/gravitational/teleport/api/gen/proto/go/attestation/v1" + _ "github.com/gravitational/teleport/api/gen/proto/go/teleport/devicetrust/v1" + _ "github.com/gravitational/teleport/api/gen/proto/go/teleport/loginrule/v1" + _ "github.com/gravitational/teleport/api/gen/proto/go/teleport/plugins/v1" + _ "github.com/gravitational/teleport/api/gen/proto/go/teleport/samlidp/v1" + _ "github.com/gravitational/teleport/api/types" + _ "github.com/gravitational/teleport/api/types/events" + _ "github.com/gravitational/teleport/api/types/wrappers" + _ "github.com/gravitational/teleport/api/utils" + _ "github.com/gravitational/teleport/api/utils/keys" + _ "github.com/gravitational/teleport/api/utils/retryutils" ) diff --git a/gen/proto/go/prehog/v1alpha/teleport.pb.go b/gen/proto/go/prehog/v1alpha/teleport.pb.go index 3610edd327d8c..1356d5b297cc8 100644 --- a/gen/proto/go/prehog/v1alpha/teleport.pb.go +++ b/gen/proto/go/prehog/v1alpha/teleport.pb.go @@ -313,6 +313,68 @@ func (DiscoverStatus) EnumDescriptor() ([]byte, []int) { return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{2} } +// CTA represents teleport web UI's call to action buttons +type CTA int32 + +const ( + CTA_CTA_UNSPECIFIED CTA = 0 + CTA_CTA_AUTH_CONNECTOR CTA = 1 + CTA_CTA_ACTIVE_SESSIONS CTA = 2 + CTA_CTA_ACCESS_REQUESTS CTA = 3 + CTA_CTA_PREMIUM_SUPPORT CTA = 4 + CTA_CTA_TRUSTED_DEVICES CTA = 5 + CTA_CTA_UPGRADE_BANNER CTA = 6 +) + +// Enum value maps for CTA. +var ( + CTA_name = map[int32]string{ + 0: "CTA_UNSPECIFIED", + 1: "CTA_AUTH_CONNECTOR", + 2: "CTA_ACTIVE_SESSIONS", + 3: "CTA_ACCESS_REQUESTS", + 4: "CTA_PREMIUM_SUPPORT", + 5: "CTA_TRUSTED_DEVICES", + 6: "CTA_UPGRADE_BANNER", + } + CTA_value = map[string]int32{ + "CTA_UNSPECIFIED": 0, + "CTA_AUTH_CONNECTOR": 1, + "CTA_ACTIVE_SESSIONS": 2, + "CTA_ACCESS_REQUESTS": 3, + "CTA_PREMIUM_SUPPORT": 4, + "CTA_TRUSTED_DEVICES": 5, + "CTA_UPGRADE_BANNER": 6, + } +) + +func (x CTA) Enum() *CTA { + p := new(CTA) + *p = x + return p +} + +func (x CTA) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CTA) Descriptor() protoreflect.EnumDescriptor { + return file_prehog_v1alpha_teleport_proto_enumTypes[3].Descriptor() +} + +func (CTA) Type() protoreflect.EnumType { + return &file_prehog_v1alpha_teleport_proto_enumTypes[3] +} + +func (x CTA) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CTA.Descriptor instead. +func (CTA) EnumDescriptor() ([]byte, []int) { + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{3} +} + type UserLoginEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2503,6 +2565,63 @@ func (x *UICreateNewRoleViewDocumentationClickEvent) GetUserName() string { return "" } +// UICallToActionClickEvent is a click in a Teleport Web UI's CTA +type UICallToActionClickEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // anonymized + UserName string `protobuf:"bytes,1,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"` + Cta CTA `protobuf:"varint,2,opt,name=cta,proto3,enum=prehog.v1alpha.CTA" json:"cta,omitempty"` +} + +func (x *UICallToActionClickEvent) Reset() { + *x = UICallToActionClickEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UICallToActionClickEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UICallToActionClickEvent) ProtoMessage() {} + +func (x *UICallToActionClickEvent) ProtoReflect() protoreflect.Message { + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UICallToActionClickEvent.ProtoReflect.Descriptor instead. +func (*UICallToActionClickEvent) Descriptor() ([]byte, []int) { + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{37} +} + +func (x *UICallToActionClickEvent) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +func (x *UICallToActionClickEvent) GetCta() CTA { + if x != nil { + return x.Cta + } + return CTA_CTA_UNSPECIFIED +} + type KubeRequestEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2515,7 +2634,7 @@ type KubeRequestEvent struct { func (x *KubeRequestEvent) Reset() { *x = KubeRequestEvent{} if protoimpl.UnsafeEnabled { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[37] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2528,7 +2647,7 @@ func (x *KubeRequestEvent) String() string { func (*KubeRequestEvent) ProtoMessage() {} func (x *KubeRequestEvent) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[37] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2541,7 +2660,7 @@ func (x *KubeRequestEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use KubeRequestEvent.ProtoReflect.Descriptor instead. func (*KubeRequestEvent) Descriptor() ([]byte, []int) { - return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{37} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{38} } func (x *KubeRequestEvent) GetUserName() string { @@ -2565,7 +2684,7 @@ type SFTPEvent struct { func (x *SFTPEvent) Reset() { *x = SFTPEvent{} if protoimpl.UnsafeEnabled { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[38] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2578,7 +2697,7 @@ func (x *SFTPEvent) String() string { func (*SFTPEvent) ProtoMessage() {} func (x *SFTPEvent) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[38] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2591,7 +2710,7 @@ func (x *SFTPEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SFTPEvent.ProtoReflect.Descriptor instead. func (*SFTPEvent) Descriptor() ([]byte, []int) { - return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{38} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{39} } func (x *SFTPEvent) GetUserName() string { @@ -2629,7 +2748,7 @@ type AgentMetadataEvent struct { func (x *AgentMetadataEvent) Reset() { *x = AgentMetadataEvent{} if protoimpl.UnsafeEnabled { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[39] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2642,7 +2761,7 @@ func (x *AgentMetadataEvent) String() string { func (*AgentMetadataEvent) ProtoMessage() {} func (x *AgentMetadataEvent) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[39] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2655,7 +2774,7 @@ func (x *AgentMetadataEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentMetadataEvent.ProtoReflect.Descriptor instead. func (*AgentMetadataEvent) Descriptor() ([]byte, []int) { - return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{39} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{40} } func (x *AgentMetadataEvent) GetVersion() string { @@ -2784,13 +2903,14 @@ type SubmitEventRequest struct { // *SubmitEventRequest_ResourceHeartbeat // *SubmitEventRequest_UiDiscoverIntegrationAwsOidcConnectEvent // *SubmitEventRequest_UiDiscoverDatabaseRdsEnrollEvent + // *SubmitEventRequest_UiCallToActionClickEvent Event isSubmitEventRequest_Event `protobuf_oneof:"event"` } func (x *SubmitEventRequest) Reset() { *x = SubmitEventRequest{} if protoimpl.UnsafeEnabled { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[40] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2803,7 +2923,7 @@ func (x *SubmitEventRequest) String() string { func (*SubmitEventRequest) ProtoMessage() {} func (x *SubmitEventRequest) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[40] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2816,7 +2936,7 @@ func (x *SubmitEventRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitEventRequest.ProtoReflect.Descriptor instead. func (*SubmitEventRequest) Descriptor() ([]byte, []int) { - return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{40} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{41} } func (x *SubmitEventRequest) GetClusterName() string { @@ -3106,6 +3226,13 @@ func (x *SubmitEventRequest) GetUiDiscoverDatabaseRdsEnrollEvent() *UIDiscoverDa return nil } +func (x *SubmitEventRequest) GetUiCallToActionClickEvent() *UICallToActionClickEvent { + if x, ok := x.GetEvent().(*SubmitEventRequest_UiCallToActionClickEvent); ok { + return x.UiCallToActionClickEvent + } + return nil +} + type isSubmitEventRequest_Event interface { isSubmitEventRequest_Event() } @@ -3267,6 +3394,10 @@ type SubmitEventRequest_UiDiscoverDatabaseRdsEnrollEvent struct { UiDiscoverDatabaseRdsEnrollEvent *UIDiscoverDatabaseRDSEnrollEvent `protobuf:"bytes,41,opt,name=ui_discover_database_rds_enroll_event,json=uiDiscoverDatabaseRdsEnrollEvent,proto3,oneof"` } +type SubmitEventRequest_UiCallToActionClickEvent struct { + UiCallToActionClickEvent *UICallToActionClickEvent `protobuf:"bytes,42,opt,name=ui_call_to_action_click_event,json=uiCallToActionClickEvent,proto3,oneof"` +} + func (*SubmitEventRequest_UserLogin) isSubmitEventRequest_Event() {} func (*SubmitEventRequest_SsoCreate) isSubmitEventRequest_Event() {} @@ -3345,6 +3476,8 @@ func (*SubmitEventRequest_UiDiscoverIntegrationAwsOidcConnectEvent) isSubmitEven func (*SubmitEventRequest_UiDiscoverDatabaseRdsEnrollEvent) isSubmitEventRequest_Event() {} +func (*SubmitEventRequest_UiCallToActionClickEvent) isSubmitEventRequest_Event() {} + type SubmitEventResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3354,7 +3487,7 @@ type SubmitEventResponse struct { func (x *SubmitEventResponse) Reset() { *x = SubmitEventResponse{} if protoimpl.UnsafeEnabled { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[41] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3367,7 +3500,7 @@ func (x *SubmitEventResponse) String() string { func (*SubmitEventResponse) ProtoMessage() {} func (x *SubmitEventResponse) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[41] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3380,7 +3513,7 @@ func (x *SubmitEventResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitEventResponse.ProtoReflect.Descriptor instead. func (*SubmitEventResponse) Descriptor() ([]byte, []int) { - return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{41} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{42} } type SubmitEventsRequest struct { @@ -3394,7 +3527,7 @@ type SubmitEventsRequest struct { func (x *SubmitEventsRequest) Reset() { *x = SubmitEventsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[42] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3407,7 +3540,7 @@ func (x *SubmitEventsRequest) String() string { func (*SubmitEventsRequest) ProtoMessage() {} func (x *SubmitEventsRequest) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[42] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3420,7 +3553,7 @@ func (x *SubmitEventsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitEventsRequest.ProtoReflect.Descriptor instead. func (*SubmitEventsRequest) Descriptor() ([]byte, []int) { - return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{42} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{43} } func (x *SubmitEventsRequest) GetEvents() []*SubmitEventRequest { @@ -3439,7 +3572,7 @@ type SubmitEventsResponse struct { func (x *SubmitEventsResponse) Reset() { *x = SubmitEventsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[43] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3452,7 +3585,7 @@ func (x *SubmitEventsResponse) String() string { func (*SubmitEventsResponse) ProtoMessage() {} func (x *SubmitEventsResponse) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[43] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3465,7 +3598,7 @@ func (x *SubmitEventsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitEventsResponse.ProtoReflect.Descriptor instead. func (*SubmitEventsResponse) Descriptor() ([]byte, []int) { - return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{43} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{44} } type HelloTeleportRequest struct { @@ -3477,7 +3610,7 @@ type HelloTeleportRequest struct { func (x *HelloTeleportRequest) Reset() { *x = HelloTeleportRequest{} if protoimpl.UnsafeEnabled { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[44] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3490,7 +3623,7 @@ func (x *HelloTeleportRequest) String() string { func (*HelloTeleportRequest) ProtoMessage() {} func (x *HelloTeleportRequest) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[44] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3503,7 +3636,7 @@ func (x *HelloTeleportRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use HelloTeleportRequest.ProtoReflect.Descriptor instead. func (*HelloTeleportRequest) Descriptor() ([]byte, []int) { - return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{44} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{45} } type HelloTeleportResponse struct { @@ -3515,7 +3648,7 @@ type HelloTeleportResponse struct { func (x *HelloTeleportResponse) Reset() { *x = HelloTeleportResponse{} if protoimpl.UnsafeEnabled { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[45] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3528,7 +3661,7 @@ func (x *HelloTeleportResponse) String() string { func (*HelloTeleportResponse) ProtoMessage() {} func (x *HelloTeleportResponse) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[45] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3541,7 +3674,7 @@ func (x *HelloTeleportResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use HelloTeleportResponse.ProtoReflect.Descriptor instead. func (*HelloTeleportResponse) Descriptor() ([]byte, []int) { - return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{45} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{46} } var File_prehog_v1alpha_teleport_proto protoreflect.FileDescriptor @@ -3885,7 +4018,13 @@ var file_prehog_v1alpha_teleport_proto_rawDesc = []byte{ 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, - 0x6d, 0x65, 0x22, 0x2f, 0x0a, 0x10, 0x4b, 0x75, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x6d, 0x65, 0x22, 0x5e, 0x0a, 0x18, 0x55, 0x49, 0x43, 0x61, 0x6c, 0x6c, 0x54, 0x6f, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, + 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x03, 0x63, + 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, + 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x43, 0x54, 0x41, 0x52, 0x03, 0x63, + 0x74, 0x61, 0x22, 0x2f, 0x0a, 0x10, 0x4b, 0x75, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x40, 0x0a, 0x09, 0x53, 0x46, 0x54, 0x50, 0x45, 0x76, 0x65, 0x6e, 0x74, @@ -3918,7 +4057,7 @@ var file_prehog_v1alpha_teleport_proto_rawDesc = []byte{ 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x45, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xe8, 0x23, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x6d, 0x69, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xd5, 0x24, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, @@ -4202,189 +4341,207 @@ var file_prehog_v1alpha_teleport_proto_rawDesc = []byte{ 0x73, 0x65, 0x52, 0x44, 0x53, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x20, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x64, 0x73, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4a, 0x04, 0x08, - 0x08, 0x10, 0x09, 0x52, 0x1c, 0x75, 0x69, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, - 0x67, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x69, 0x63, - 0x6b, 0x22, 0x15, 0x0a, 0x13, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x51, 0x0a, 0x13, 0x53, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x3a, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x53, - 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x54, 0x65, 0x6c, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x17, 0x0a, 0x15, 0x48, - 0x65, 0x6c, 0x6c, 0x6f, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0xe2, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, - 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, - 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, - 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x50, - 0x50, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, - 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4b, 0x55, 0x42, 0x45, - 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x45, 0x53, - 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, - 0x52, 0x56, 0x45, 0x52, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, - 0x43, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x53, 0x5f, - 0x44, 0x45, 0x53, 0x4b, 0x54, 0x4f, 0x50, 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x45, 0x53, - 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, - 0x4f, 0x50, 0x45, 0x4e, 0x53, 0x53, 0x48, 0x10, 0x06, 0x2a, 0xed, 0x0d, 0x0a, 0x10, 0x44, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x21, - 0x0a, 0x1d, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, - 0x52, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, - 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x01, 0x12, - 0x20, 0x0a, 0x1c, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, - 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4b, 0x55, 0x42, 0x45, 0x52, 0x4e, 0x45, 0x54, 0x45, 0x53, 0x10, - 0x02, 0x12, 0x33, 0x0a, 0x2f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, - 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, - 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x48, 0x4f, - 0x53, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x30, 0x0a, 0x2c, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, - 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, - 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, - 0x48, 0x4f, 0x53, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x32, 0x0a, 0x2e, 0x44, 0x49, 0x53, 0x43, - 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, - 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4d, 0x4f, 0x4e, 0x47, 0x4f, 0x44, 0x42, 0x5f, 0x53, - 0x45, 0x4c, 0x46, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x45, 0x44, 0x10, 0x05, 0x12, 0x2b, 0x0a, 0x27, - 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, - 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x47, - 0x52, 0x45, 0x53, 0x5f, 0x52, 0x44, 0x53, 0x10, 0x06, 0x12, 0x28, 0x0a, 0x24, 0x44, 0x49, 0x53, - 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, - 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x52, 0x44, - 0x53, 0x10, 0x07, 0x12, 0x26, 0x0a, 0x22, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, - 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x10, 0x08, 0x12, 0x25, 0x0a, 0x21, 0x44, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x6b, 0x0a, 0x1d, 0x75, 0x69, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, + 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x5f, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x72, + 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x43, + 0x61, 0x6c, 0x6c, 0x54, 0x6f, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x18, 0x75, 0x69, 0x43, 0x61, 0x6c, 0x6c, 0x54, + 0x6f, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, + 0x52, 0x1c, 0x75, 0x69, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x67, 0x65, 0x74, + 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x22, 0x15, + 0x0a, 0x13, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x51, 0x0a, 0x13, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x06, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, + 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x75, + 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x53, 0x75, 0x62, 0x6d, + 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x16, 0x0a, 0x14, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x17, 0x0a, 0x15, 0x48, 0x65, 0x6c, 0x6c, + 0x6f, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2a, 0xe2, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x69, + 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4b, + 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4b, 0x49, + 0x4e, 0x44, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x53, + 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x50, 0x50, 0x5f, 0x53, + 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x53, 0x4f, 0x55, + 0x52, 0x43, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4b, 0x55, 0x42, 0x45, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x45, 0x52, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, + 0x43, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, + 0x52, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, + 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x53, 0x5f, 0x44, 0x45, 0x53, + 0x4b, 0x54, 0x4f, 0x50, 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, + 0x43, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x4f, 0x50, 0x45, + 0x4e, 0x53, 0x53, 0x48, 0x10, 0x06, 0x2a, 0xed, 0x0d, 0x0a, 0x10, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, - 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x43, 0x50, - 0x10, 0x09, 0x12, 0x25, 0x0a, 0x21, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, - 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x53, 0x5f, - 0x44, 0x45, 0x53, 0x4b, 0x54, 0x4f, 0x50, 0x10, 0x0a, 0x12, 0x2c, 0x0a, 0x28, 0x44, 0x49, 0x53, - 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, - 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x51, 0x4c, 0x53, 0x45, 0x52, 0x56, 0x45, - 0x52, 0x5f, 0x52, 0x44, 0x53, 0x10, 0x0b, 0x12, 0x30, 0x0a, 0x2c, 0x44, 0x49, 0x53, 0x43, 0x4f, - 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, - 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x5f, 0x52, - 0x45, 0x44, 0x53, 0x48, 0x49, 0x46, 0x54, 0x10, 0x0c, 0x12, 0x34, 0x0a, 0x30, 0x44, 0x49, 0x53, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, + 0x0a, 0x18, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, + 0x52, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, + 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, + 0x45, 0x5f, 0x4b, 0x55, 0x42, 0x45, 0x52, 0x4e, 0x45, 0x54, 0x45, 0x53, 0x10, 0x02, 0x12, 0x33, + 0x0a, 0x2f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, + 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x50, 0x4f, 0x53, + 0x54, 0x47, 0x52, 0x45, 0x53, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x45, + 0x44, 0x10, 0x03, 0x12, 0x30, 0x0a, 0x2c, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, + 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, + 0x45, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x48, 0x4f, 0x53, + 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x32, 0x0a, 0x2e, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, + 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, + 0x41, 0x53, 0x45, 0x5f, 0x4d, 0x4f, 0x4e, 0x47, 0x4f, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x4c, 0x46, + 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x45, 0x44, 0x10, 0x05, 0x12, 0x2b, 0x0a, 0x27, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, - 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x51, 0x4c, 0x53, 0x45, 0x52, 0x56, 0x45, - 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x45, 0x44, 0x10, 0x0d, 0x12, - 0x30, 0x0a, 0x2c, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, - 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x45, - 0x44, 0x49, 0x53, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x45, 0x44, 0x10, - 0x0e, 0x12, 0x2b, 0x0a, 0x27, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, - 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, - 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x5f, 0x47, 0x43, 0x50, 0x10, 0x0f, 0x12, 0x28, - 0x0a, 0x24, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, - 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4d, 0x59, 0x53, - 0x51, 0x4c, 0x5f, 0x47, 0x43, 0x50, 0x10, 0x10, 0x12, 0x2c, 0x0a, 0x28, 0x44, 0x49, 0x53, 0x43, - 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, - 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x51, 0x4c, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, - 0x5f, 0x47, 0x43, 0x50, 0x10, 0x11, 0x12, 0x3b, 0x0a, 0x37, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, + 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, + 0x5f, 0x52, 0x44, 0x53, 0x10, 0x06, 0x12, 0x28, 0x0a, 0x24, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, - 0x42, 0x41, 0x53, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x5f, 0x52, 0x45, - 0x44, 0x53, 0x48, 0x49, 0x46, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x4c, 0x45, 0x53, - 0x53, 0x10, 0x12, 0x12, 0x2d, 0x0a, 0x29, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, - 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, - 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, - 0x10, 0x13, 0x12, 0x27, 0x0a, 0x23, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, - 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, - 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x4f, 0x44, 0x42, 0x10, 0x14, 0x12, 0x32, 0x0a, 0x2e, 0x44, + 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x52, 0x44, 0x53, 0x10, 0x07, + 0x12, 0x26, 0x0a, 0x22, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, + 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x10, 0x08, 0x12, 0x25, 0x0a, 0x21, 0x44, 0x49, 0x53, 0x43, + 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x41, 0x50, + 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x43, 0x50, 0x10, 0x09, 0x12, + 0x25, 0x0a, 0x21, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, + 0x55, 0x52, 0x43, 0x45, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x53, 0x5f, 0x44, 0x45, 0x53, + 0x4b, 0x54, 0x4f, 0x50, 0x10, 0x0a, 0x12, 0x2c, 0x0a, 0x28, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, + 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, + 0x42, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x51, 0x4c, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x52, + 0x44, 0x53, 0x10, 0x0b, 0x12, 0x30, 0x0a, 0x2c, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, + 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, + 0x53, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x5f, 0x52, 0x45, 0x44, 0x53, + 0x48, 0x49, 0x46, 0x54, 0x10, 0x0c, 0x12, 0x34, 0x0a, 0x30, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, + 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, + 0x42, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x51, 0x4c, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x53, + 0x45, 0x4c, 0x46, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x45, 0x44, 0x10, 0x0d, 0x12, 0x30, 0x0a, 0x2c, + 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, + 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x53, + 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x45, 0x44, 0x10, 0x0e, 0x12, 0x2b, + 0x0a, 0x27, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, + 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x50, 0x4f, 0x53, + 0x54, 0x47, 0x52, 0x45, 0x53, 0x5f, 0x47, 0x43, 0x50, 0x10, 0x0f, 0x12, 0x28, 0x0a, 0x24, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, - 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x53, 0x41, 0x4e, - 0x44, 0x52, 0x41, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x50, 0x41, 0x43, 0x45, 0x53, 0x10, 0x15, 0x12, - 0x34, 0x0a, 0x30, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, - 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x41, - 0x53, 0x53, 0x41, 0x4e, 0x44, 0x52, 0x41, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x48, 0x4f, 0x53, - 0x54, 0x45, 0x44, 0x10, 0x16, 0x12, 0x38, 0x0a, 0x34, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, + 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x5f, + 0x47, 0x43, 0x50, 0x10, 0x10, 0x12, 0x2c, 0x0a, 0x28, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, - 0x41, 0x53, 0x45, 0x5f, 0x45, 0x4c, 0x41, 0x53, 0x54, 0x49, 0x43, 0x53, 0x45, 0x41, 0x52, 0x43, - 0x48, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x45, 0x44, 0x10, 0x17, 0x12, - 0x30, 0x0a, 0x2c, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, - 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x45, - 0x44, 0x49, 0x53, 0x5f, 0x45, 0x4c, 0x41, 0x53, 0x54, 0x49, 0x43, 0x41, 0x43, 0x48, 0x45, 0x10, - 0x18, 0x12, 0x2d, 0x0a, 0x29, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, - 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, - 0x52, 0x45, 0x44, 0x49, 0x53, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x44, 0x42, 0x10, 0x19, - 0x12, 0x30, 0x0a, 0x2c, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, - 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x52, - 0x45, 0x44, 0x49, 0x53, 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x5f, 0x43, 0x41, 0x43, 0x48, 0x45, - 0x10, 0x1a, 0x12, 0x38, 0x0a, 0x34, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, - 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, - 0x5f, 0x52, 0x45, 0x44, 0x49, 0x53, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, - 0x45, 0x4c, 0x46, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x45, 0x44, 0x10, 0x1b, 0x12, 0x2a, 0x0a, 0x26, - 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, - 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, - 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, 0x1c, 0x12, 0x2e, 0x0a, 0x2a, 0x44, 0x49, 0x53, 0x43, - 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, - 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x51, 0x4c, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, - 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, 0x1d, 0x12, 0x32, 0x0a, 0x2e, 0x44, 0x49, 0x53, 0x43, + 0x41, 0x53, 0x45, 0x5f, 0x53, 0x51, 0x4c, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x47, 0x43, + 0x50, 0x10, 0x11, 0x12, 0x3b, 0x0a, 0x37, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, + 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, + 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x5f, 0x52, 0x45, 0x44, 0x53, 0x48, + 0x49, 0x46, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x4c, 0x45, 0x53, 0x53, 0x10, 0x12, + 0x12, 0x2d, 0x0a, 0x29, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, + 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x50, + 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, 0x13, 0x12, + 0x27, 0x0a, 0x23, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, + 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x44, 0x59, + 0x4e, 0x41, 0x4d, 0x4f, 0x44, 0x42, 0x10, 0x14, 0x12, 0x32, 0x0a, 0x2e, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, - 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x51, 0x4c, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, - 0x5f, 0x4d, 0x49, 0x43, 0x52, 0x4f, 0x53, 0x4f, 0x46, 0x54, 0x10, 0x1e, 0x12, 0x36, 0x0a, 0x32, + 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x53, 0x41, 0x4e, 0x44, 0x52, 0x41, + 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x50, 0x41, 0x43, 0x45, 0x53, 0x10, 0x15, 0x12, 0x34, 0x0a, 0x30, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, - 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x43, 0x4b, 0x52, - 0x4f, 0x41, 0x43, 0x48, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x48, 0x4f, 0x53, 0x54, - 0x45, 0x44, 0x10, 0x1f, 0x12, 0x2c, 0x0a, 0x28, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, - 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, - 0x53, 0x45, 0x5f, 0x4d, 0x4f, 0x4e, 0x47, 0x4f, 0x44, 0x42, 0x5f, 0x41, 0x54, 0x4c, 0x41, 0x53, - 0x10, 0x20, 0x12, 0x28, 0x0a, 0x24, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, + 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x53, 0x41, + 0x4e, 0x44, 0x52, 0x41, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x45, 0x44, + 0x10, 0x16, 0x12, 0x38, 0x0a, 0x34, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, - 0x5f, 0x53, 0x4e, 0x4f, 0x57, 0x46, 0x4c, 0x41, 0x4b, 0x45, 0x10, 0x21, 0x12, 0x2c, 0x0a, 0x28, + 0x5f, 0x45, 0x4c, 0x41, 0x53, 0x54, 0x49, 0x43, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x5f, 0x53, + 0x45, 0x4c, 0x46, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x45, 0x44, 0x10, 0x17, 0x12, 0x30, 0x0a, 0x2c, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, - 0x45, 0x5f, 0x44, 0x4f, 0x43, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x52, - 0x44, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x22, 0x12, 0x34, 0x0a, 0x30, 0x44, 0x49, - 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, - 0x44, 0x4f, 0x43, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x48, 0x49, 0x47, - 0x48, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x23, - 0x12, 0x37, 0x0a, 0x33, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, - 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x4f, 0x43, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, - 0x53, 0x45, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, - 0x54, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x24, 0x2a, 0xa3, 0x01, 0x0a, 0x0e, 0x44, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, - 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, - 0x17, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, - 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, - 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x4b, - 0x49, 0x50, 0x50, 0x45, 0x44, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x49, 0x53, 0x43, 0x4f, - 0x56, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, - 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x42, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x04, 0x32, - 0xb4, 0x02, 0x0a, 0x18, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x0b, - 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x2e, 0x70, 0x72, - 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x75, 0x62, - 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x23, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x5b, 0x0a, 0x0c, 0x53, 0x75, 0x62, - 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x65, 0x68, + 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x53, + 0x5f, 0x45, 0x4c, 0x41, 0x53, 0x54, 0x49, 0x43, 0x41, 0x43, 0x48, 0x45, 0x10, 0x18, 0x12, 0x2d, + 0x0a, 0x29, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, + 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x44, + 0x49, 0x53, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x44, 0x42, 0x10, 0x19, 0x12, 0x30, 0x0a, + 0x2c, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, + 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x45, 0x44, 0x49, + 0x53, 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x5f, 0x43, 0x41, 0x43, 0x48, 0x45, 0x10, 0x1a, 0x12, + 0x38, 0x0a, 0x34, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, + 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x45, + 0x44, 0x49, 0x53, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x46, + 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x45, 0x44, 0x10, 0x1b, 0x12, 0x2a, 0x0a, 0x26, 0x44, 0x49, 0x53, + 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, + 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x41, 0x5a, + 0x55, 0x52, 0x45, 0x10, 0x1c, 0x12, 0x2e, 0x0a, 0x2a, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, + 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, + 0x41, 0x53, 0x45, 0x5f, 0x53, 0x51, 0x4c, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x5a, + 0x55, 0x52, 0x45, 0x10, 0x1d, 0x12, 0x32, 0x0a, 0x2e, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, + 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, + 0x41, 0x53, 0x45, 0x5f, 0x53, 0x51, 0x4c, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x49, + 0x43, 0x52, 0x4f, 0x53, 0x4f, 0x46, 0x54, 0x10, 0x1e, 0x12, 0x36, 0x0a, 0x32, 0x44, 0x49, 0x53, + 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, + 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x43, 0x4b, 0x52, 0x4f, 0x41, 0x43, + 0x48, 0x44, 0x42, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x45, 0x44, 0x10, + 0x1f, 0x12, 0x2c, 0x0a, 0x28, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, + 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, + 0x4d, 0x4f, 0x4e, 0x47, 0x4f, 0x44, 0x42, 0x5f, 0x41, 0x54, 0x4c, 0x41, 0x53, 0x10, 0x20, 0x12, + 0x28, 0x0a, 0x24, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, + 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x4e, + 0x4f, 0x57, 0x46, 0x4c, 0x41, 0x4b, 0x45, 0x10, 0x21, 0x12, 0x2c, 0x0a, 0x28, 0x44, 0x49, 0x53, + 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, + 0x4f, 0x43, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x44, 0x53, 0x5f, + 0x50, 0x52, 0x4f, 0x58, 0x59, 0x10, 0x22, 0x12, 0x34, 0x0a, 0x30, 0x44, 0x49, 0x53, 0x43, 0x4f, + 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x44, 0x4f, 0x43, + 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x5f, 0x41, + 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x23, 0x12, 0x37, 0x0a, + 0x33, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, + 0x43, 0x45, 0x5f, 0x44, 0x4f, 0x43, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, + 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x24, 0x2a, 0xa3, 0x01, 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x44, 0x49, 0x53, + 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, + 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x55, + 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53, 0x43, 0x4f, + 0x56, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x4b, 0x49, 0x50, 0x50, + 0x45, 0x44, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, + 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x41, 0x42, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x04, 0x2a, 0xae, 0x01, 0x0a, + 0x03, 0x43, 0x54, 0x41, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x54, 0x41, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x54, 0x41, + 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x10, + 0x01, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x54, 0x41, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, + 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x54, + 0x41, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, + 0x53, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x54, 0x41, 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, + 0x55, 0x4d, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, + 0x43, 0x54, 0x41, 0x5f, 0x54, 0x52, 0x55, 0x53, 0x54, 0x45, 0x44, 0x5f, 0x44, 0x45, 0x56, 0x49, + 0x43, 0x45, 0x53, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x54, 0x41, 0x5f, 0x55, 0x50, 0x47, + 0x52, 0x41, 0x44, 0x45, 0x5f, 0x42, 0x41, 0x4e, 0x4e, 0x45, 0x52, 0x10, 0x06, 0x32, 0xb4, 0x02, + 0x0a, 0x18, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x0b, 0x53, 0x75, + 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, - 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, - 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x0d, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x54, - 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x24, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x54, 0x65, - 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, - 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x48, - 0x65, 0x6c, 0x6c, 0x6f, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0xc9, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x70, - 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x42, 0x0d, 0x54, - 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4b, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x76, 0x69, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x70, - 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3b, 0x70, 0x72, - 0x65, 0x68, 0x6f, 0x67, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0xa2, 0x02, 0x03, 0x50, 0x58, - 0x58, 0xaa, 0x02, 0x0e, 0x50, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0xca, 0x02, 0x0e, 0x50, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x5c, 0x56, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0xe2, 0x02, 0x1a, 0x50, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x5c, 0x56, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x0f, 0x50, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, + 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, + 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x5b, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x6d, 0x69, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, + 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x75, + 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x0d, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x54, 0x65, 0x6c, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x24, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x54, 0x65, 0x6c, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x72, + 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x48, 0x65, 0x6c, + 0x6c, 0x6f, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x42, 0xc9, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x72, 0x65, + 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x42, 0x0d, 0x54, 0x65, 0x6c, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4b, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, + 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x65, + 0x68, 0x6f, 0x67, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3b, 0x70, 0x72, 0x65, 0x68, + 0x6f, 0x67, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0xa2, 0x02, 0x03, 0x50, 0x58, 0x58, 0xaa, + 0x02, 0x0e, 0x50, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0xca, 0x02, 0x0e, 0x50, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0xe2, 0x02, 0x1a, 0x50, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x0f, 0x50, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4399,158 +4556,162 @@ func file_prehog_v1alpha_teleport_proto_rawDescGZIP() []byte { return file_prehog_v1alpha_teleport_proto_rawDescData } -var file_prehog_v1alpha_teleport_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_prehog_v1alpha_teleport_proto_msgTypes = make([]protoimpl.MessageInfo, 46) +var file_prehog_v1alpha_teleport_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_prehog_v1alpha_teleport_proto_msgTypes = make([]protoimpl.MessageInfo, 47) var file_prehog_v1alpha_teleport_proto_goTypes = []interface{}{ (ResourceKind)(0), // 0: prehog.v1alpha.ResourceKind (DiscoverResource)(0), // 1: prehog.v1alpha.DiscoverResource (DiscoverStatus)(0), // 2: prehog.v1alpha.DiscoverStatus - (*UserLoginEvent)(nil), // 3: prehog.v1alpha.UserLoginEvent - (*SSOCreateEvent)(nil), // 4: prehog.v1alpha.SSOCreateEvent - (*ResourceCreateEvent)(nil), // 5: prehog.v1alpha.ResourceCreateEvent - (*ResourceHeartbeatEvent)(nil), // 6: prehog.v1alpha.ResourceHeartbeatEvent - (*SessionStartEvent)(nil), // 7: prehog.v1alpha.SessionStartEvent - (*UserCertificateIssuedEvent)(nil), // 8: prehog.v1alpha.UserCertificateIssuedEvent - (*UIBannerClickEvent)(nil), // 9: prehog.v1alpha.UIBannerClickEvent - (*UIOnboardCompleteGoToDashboardClickEvent)(nil), // 10: prehog.v1alpha.UIOnboardCompleteGoToDashboardClickEvent - (*UIOnboardAddFirstResourceClickEvent)(nil), // 11: prehog.v1alpha.UIOnboardAddFirstResourceClickEvent - (*UIOnboardAddFirstResourceLaterClickEvent)(nil), // 12: prehog.v1alpha.UIOnboardAddFirstResourceLaterClickEvent - (*UIOnboardSetCredentialSubmitEvent)(nil), // 13: prehog.v1alpha.UIOnboardSetCredentialSubmitEvent - (*UIOnboardRegisterChallengeSubmitEvent)(nil), // 14: prehog.v1alpha.UIOnboardRegisterChallengeSubmitEvent - (*UIRecoveryCodesContinueClickEvent)(nil), // 15: prehog.v1alpha.UIRecoveryCodesContinueClickEvent - (*UIRecoveryCodesCopyClickEvent)(nil), // 16: prehog.v1alpha.UIRecoveryCodesCopyClickEvent - (*UIRecoveryCodesPrintClickEvent)(nil), // 17: prehog.v1alpha.UIRecoveryCodesPrintClickEvent - (*DiscoverMetadata)(nil), // 18: prehog.v1alpha.DiscoverMetadata - (*DiscoverResourceMetadata)(nil), // 19: prehog.v1alpha.DiscoverResourceMetadata - (*DiscoverStepStatus)(nil), // 20: prehog.v1alpha.DiscoverStepStatus - (*UIDiscoverStartedEvent)(nil), // 21: prehog.v1alpha.UIDiscoverStartedEvent - (*UIDiscoverResourceSelectionEvent)(nil), // 22: prehog.v1alpha.UIDiscoverResourceSelectionEvent - (*UIDiscoverIntegrationAWSOIDCConnectEvent)(nil), // 23: prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent - (*UIDiscoverDatabaseRDSEnrollEvent)(nil), // 24: prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent - (*UIDiscoverDeployServiceEvent)(nil), // 25: prehog.v1alpha.UIDiscoverDeployServiceEvent - (*UIDiscoverDatabaseRegisterEvent)(nil), // 26: prehog.v1alpha.UIDiscoverDatabaseRegisterEvent - (*UIDiscoverDatabaseConfigureMTLSEvent)(nil), // 27: prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent - (*UIDiscoverDesktopActiveDirectoryToolsInstallEvent)(nil), // 28: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent - (*UIDiscoverDesktopActiveDirectoryConfigureEvent)(nil), // 29: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent - (*UIDiscoverAutoDiscoveredResourcesEvent)(nil), // 30: prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent - (*UIDiscoverDatabaseConfigureIAMPolicyEvent)(nil), // 31: prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent - (*UIDiscoverPrincipalsConfigureEvent)(nil), // 32: prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent - (*UIDiscoverTestConnectionEvent)(nil), // 33: prehog.v1alpha.UIDiscoverTestConnectionEvent - (*UIDiscoverCompletedEvent)(nil), // 34: prehog.v1alpha.UIDiscoverCompletedEvent - (*RoleCreateEvent)(nil), // 35: prehog.v1alpha.RoleCreateEvent - (*UICreateNewRoleClickEvent)(nil), // 36: prehog.v1alpha.UICreateNewRoleClickEvent - (*UICreateNewRoleSaveClickEvent)(nil), // 37: prehog.v1alpha.UICreateNewRoleSaveClickEvent - (*UICreateNewRoleCancelClickEvent)(nil), // 38: prehog.v1alpha.UICreateNewRoleCancelClickEvent - (*UICreateNewRoleViewDocumentationClickEvent)(nil), // 39: prehog.v1alpha.UICreateNewRoleViewDocumentationClickEvent - (*KubeRequestEvent)(nil), // 40: prehog.v1alpha.KubeRequestEvent - (*SFTPEvent)(nil), // 41: prehog.v1alpha.SFTPEvent - (*AgentMetadataEvent)(nil), // 42: prehog.v1alpha.AgentMetadataEvent - (*SubmitEventRequest)(nil), // 43: prehog.v1alpha.SubmitEventRequest - (*SubmitEventResponse)(nil), // 44: prehog.v1alpha.SubmitEventResponse - (*SubmitEventsRequest)(nil), // 45: prehog.v1alpha.SubmitEventsRequest - (*SubmitEventsResponse)(nil), // 46: prehog.v1alpha.SubmitEventsResponse - (*HelloTeleportRequest)(nil), // 47: prehog.v1alpha.HelloTeleportRequest - (*HelloTeleportResponse)(nil), // 48: prehog.v1alpha.HelloTeleportResponse - (*durationpb.Duration)(nil), // 49: google.protobuf.Duration - (*timestamppb.Timestamp)(nil), // 50: google.protobuf.Timestamp + (CTA)(0), // 3: prehog.v1alpha.CTA + (*UserLoginEvent)(nil), // 4: prehog.v1alpha.UserLoginEvent + (*SSOCreateEvent)(nil), // 5: prehog.v1alpha.SSOCreateEvent + (*ResourceCreateEvent)(nil), // 6: prehog.v1alpha.ResourceCreateEvent + (*ResourceHeartbeatEvent)(nil), // 7: prehog.v1alpha.ResourceHeartbeatEvent + (*SessionStartEvent)(nil), // 8: prehog.v1alpha.SessionStartEvent + (*UserCertificateIssuedEvent)(nil), // 9: prehog.v1alpha.UserCertificateIssuedEvent + (*UIBannerClickEvent)(nil), // 10: prehog.v1alpha.UIBannerClickEvent + (*UIOnboardCompleteGoToDashboardClickEvent)(nil), // 11: prehog.v1alpha.UIOnboardCompleteGoToDashboardClickEvent + (*UIOnboardAddFirstResourceClickEvent)(nil), // 12: prehog.v1alpha.UIOnboardAddFirstResourceClickEvent + (*UIOnboardAddFirstResourceLaterClickEvent)(nil), // 13: prehog.v1alpha.UIOnboardAddFirstResourceLaterClickEvent + (*UIOnboardSetCredentialSubmitEvent)(nil), // 14: prehog.v1alpha.UIOnboardSetCredentialSubmitEvent + (*UIOnboardRegisterChallengeSubmitEvent)(nil), // 15: prehog.v1alpha.UIOnboardRegisterChallengeSubmitEvent + (*UIRecoveryCodesContinueClickEvent)(nil), // 16: prehog.v1alpha.UIRecoveryCodesContinueClickEvent + (*UIRecoveryCodesCopyClickEvent)(nil), // 17: prehog.v1alpha.UIRecoveryCodesCopyClickEvent + (*UIRecoveryCodesPrintClickEvent)(nil), // 18: prehog.v1alpha.UIRecoveryCodesPrintClickEvent + (*DiscoverMetadata)(nil), // 19: prehog.v1alpha.DiscoverMetadata + (*DiscoverResourceMetadata)(nil), // 20: prehog.v1alpha.DiscoverResourceMetadata + (*DiscoverStepStatus)(nil), // 21: prehog.v1alpha.DiscoverStepStatus + (*UIDiscoverStartedEvent)(nil), // 22: prehog.v1alpha.UIDiscoverStartedEvent + (*UIDiscoverResourceSelectionEvent)(nil), // 23: prehog.v1alpha.UIDiscoverResourceSelectionEvent + (*UIDiscoverIntegrationAWSOIDCConnectEvent)(nil), // 24: prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent + (*UIDiscoverDatabaseRDSEnrollEvent)(nil), // 25: prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent + (*UIDiscoverDeployServiceEvent)(nil), // 26: prehog.v1alpha.UIDiscoverDeployServiceEvent + (*UIDiscoverDatabaseRegisterEvent)(nil), // 27: prehog.v1alpha.UIDiscoverDatabaseRegisterEvent + (*UIDiscoverDatabaseConfigureMTLSEvent)(nil), // 28: prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent + (*UIDiscoverDesktopActiveDirectoryToolsInstallEvent)(nil), // 29: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent + (*UIDiscoverDesktopActiveDirectoryConfigureEvent)(nil), // 30: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent + (*UIDiscoverAutoDiscoveredResourcesEvent)(nil), // 31: prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent + (*UIDiscoverDatabaseConfigureIAMPolicyEvent)(nil), // 32: prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent + (*UIDiscoverPrincipalsConfigureEvent)(nil), // 33: prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent + (*UIDiscoverTestConnectionEvent)(nil), // 34: prehog.v1alpha.UIDiscoverTestConnectionEvent + (*UIDiscoverCompletedEvent)(nil), // 35: prehog.v1alpha.UIDiscoverCompletedEvent + (*RoleCreateEvent)(nil), // 36: prehog.v1alpha.RoleCreateEvent + (*UICreateNewRoleClickEvent)(nil), // 37: prehog.v1alpha.UICreateNewRoleClickEvent + (*UICreateNewRoleSaveClickEvent)(nil), // 38: prehog.v1alpha.UICreateNewRoleSaveClickEvent + (*UICreateNewRoleCancelClickEvent)(nil), // 39: prehog.v1alpha.UICreateNewRoleCancelClickEvent + (*UICreateNewRoleViewDocumentationClickEvent)(nil), // 40: prehog.v1alpha.UICreateNewRoleViewDocumentationClickEvent + (*UICallToActionClickEvent)(nil), // 41: prehog.v1alpha.UICallToActionClickEvent + (*KubeRequestEvent)(nil), // 42: prehog.v1alpha.KubeRequestEvent + (*SFTPEvent)(nil), // 43: prehog.v1alpha.SFTPEvent + (*AgentMetadataEvent)(nil), // 44: prehog.v1alpha.AgentMetadataEvent + (*SubmitEventRequest)(nil), // 45: prehog.v1alpha.SubmitEventRequest + (*SubmitEventResponse)(nil), // 46: prehog.v1alpha.SubmitEventResponse + (*SubmitEventsRequest)(nil), // 47: prehog.v1alpha.SubmitEventsRequest + (*SubmitEventsResponse)(nil), // 48: prehog.v1alpha.SubmitEventsResponse + (*HelloTeleportRequest)(nil), // 49: prehog.v1alpha.HelloTeleportRequest + (*HelloTeleportResponse)(nil), // 50: prehog.v1alpha.HelloTeleportResponse + (*durationpb.Duration)(nil), // 51: google.protobuf.Duration + (*timestamppb.Timestamp)(nil), // 52: google.protobuf.Timestamp } var file_prehog_v1alpha_teleport_proto_depIdxs = []int32{ 0, // 0: prehog.v1alpha.ResourceHeartbeatEvent.resource_kind:type_name -> prehog.v1alpha.ResourceKind - 49, // 1: prehog.v1alpha.UserCertificateIssuedEvent.ttl:type_name -> google.protobuf.Duration + 51, // 1: prehog.v1alpha.UserCertificateIssuedEvent.ttl:type_name -> google.protobuf.Duration 1, // 2: prehog.v1alpha.DiscoverResourceMetadata.resource:type_name -> prehog.v1alpha.DiscoverResource 2, // 3: prehog.v1alpha.DiscoverStepStatus.status:type_name -> prehog.v1alpha.DiscoverStatus - 18, // 4: prehog.v1alpha.UIDiscoverStartedEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 20, // 5: prehog.v1alpha.UIDiscoverStartedEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 18, // 6: prehog.v1alpha.UIDiscoverResourceSelectionEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 19, // 7: prehog.v1alpha.UIDiscoverResourceSelectionEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 20, // 8: prehog.v1alpha.UIDiscoverResourceSelectionEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 18, // 9: prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 19, // 10: prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 20, // 11: prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 18, // 12: prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 19, // 13: prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 20, // 14: prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 18, // 15: prehog.v1alpha.UIDiscoverDeployServiceEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 19, // 16: prehog.v1alpha.UIDiscoverDeployServiceEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 20, // 17: prehog.v1alpha.UIDiscoverDeployServiceEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 18, // 18: prehog.v1alpha.UIDiscoverDatabaseRegisterEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 19, // 19: prehog.v1alpha.UIDiscoverDatabaseRegisterEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 20, // 20: prehog.v1alpha.UIDiscoverDatabaseRegisterEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 18, // 21: prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 19, // 22: prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 20, // 23: prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 18, // 24: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 19, // 25: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 20, // 26: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 18, // 27: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 19, // 28: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 20, // 29: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 18, // 30: prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 19, // 31: prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 20, // 32: prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 18, // 33: prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 19, // 34: prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 20, // 35: prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 18, // 36: prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 19, // 37: prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 20, // 38: prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 18, // 39: prehog.v1alpha.UIDiscoverTestConnectionEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 19, // 40: prehog.v1alpha.UIDiscoverTestConnectionEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 20, // 41: prehog.v1alpha.UIDiscoverTestConnectionEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 18, // 42: prehog.v1alpha.UIDiscoverCompletedEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 19, // 43: prehog.v1alpha.UIDiscoverCompletedEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 20, // 44: prehog.v1alpha.UIDiscoverCompletedEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 50, // 45: prehog.v1alpha.SubmitEventRequest.timestamp:type_name -> google.protobuf.Timestamp - 3, // 46: prehog.v1alpha.SubmitEventRequest.user_login:type_name -> prehog.v1alpha.UserLoginEvent - 4, // 47: prehog.v1alpha.SubmitEventRequest.sso_create:type_name -> prehog.v1alpha.SSOCreateEvent - 5, // 48: prehog.v1alpha.SubmitEventRequest.resource_create:type_name -> prehog.v1alpha.ResourceCreateEvent - 7, // 49: prehog.v1alpha.SubmitEventRequest.session_start:type_name -> prehog.v1alpha.SessionStartEvent - 9, // 50: prehog.v1alpha.SubmitEventRequest.ui_banner_click:type_name -> prehog.v1alpha.UIBannerClickEvent - 10, // 51: prehog.v1alpha.SubmitEventRequest.ui_onboard_complete_go_to_dashboard_click:type_name -> prehog.v1alpha.UIOnboardCompleteGoToDashboardClickEvent - 11, // 52: prehog.v1alpha.SubmitEventRequest.ui_onboard_add_first_resource_click:type_name -> prehog.v1alpha.UIOnboardAddFirstResourceClickEvent - 12, // 53: prehog.v1alpha.SubmitEventRequest.ui_onboard_add_first_resource_later_click:type_name -> prehog.v1alpha.UIOnboardAddFirstResourceLaterClickEvent - 13, // 54: prehog.v1alpha.SubmitEventRequest.ui_onboard_set_credential_submit:type_name -> prehog.v1alpha.UIOnboardSetCredentialSubmitEvent - 14, // 55: prehog.v1alpha.SubmitEventRequest.ui_onboard_register_challenge_submit:type_name -> prehog.v1alpha.UIOnboardRegisterChallengeSubmitEvent - 15, // 56: prehog.v1alpha.SubmitEventRequest.ui_recovery_codes_continue_click:type_name -> prehog.v1alpha.UIRecoveryCodesContinueClickEvent - 16, // 57: prehog.v1alpha.SubmitEventRequest.ui_recovery_codes_copy_click:type_name -> prehog.v1alpha.UIRecoveryCodesCopyClickEvent - 17, // 58: prehog.v1alpha.SubmitEventRequest.ui_recovery_codes_print_click:type_name -> prehog.v1alpha.UIRecoveryCodesPrintClickEvent - 21, // 59: prehog.v1alpha.SubmitEventRequest.ui_discover_started_event:type_name -> prehog.v1alpha.UIDiscoverStartedEvent - 22, // 60: prehog.v1alpha.SubmitEventRequest.ui_discover_resource_selection_event:type_name -> prehog.v1alpha.UIDiscoverResourceSelectionEvent - 8, // 61: prehog.v1alpha.SubmitEventRequest.user_certificate_issued_event:type_name -> prehog.v1alpha.UserCertificateIssuedEvent - 7, // 62: prehog.v1alpha.SubmitEventRequest.session_start_v2:type_name -> prehog.v1alpha.SessionStartEvent - 25, // 63: prehog.v1alpha.SubmitEventRequest.ui_discover_deploy_service_event:type_name -> prehog.v1alpha.UIDiscoverDeployServiceEvent - 26, // 64: prehog.v1alpha.SubmitEventRequest.ui_discover_database_register_event:type_name -> prehog.v1alpha.UIDiscoverDatabaseRegisterEvent - 27, // 65: prehog.v1alpha.SubmitEventRequest.ui_discover_database_configure_mtls_event:type_name -> prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent - 28, // 66: prehog.v1alpha.SubmitEventRequest.ui_discover_desktop_active_directory_tools_install_event:type_name -> prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent - 29, // 67: prehog.v1alpha.SubmitEventRequest.ui_discover_desktop_active_directory_configure_event:type_name -> prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent - 30, // 68: prehog.v1alpha.SubmitEventRequest.ui_discover_auto_discovered_resources_event:type_name -> prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent - 31, // 69: prehog.v1alpha.SubmitEventRequest.ui_discover_database_configure_iam_policy_event:type_name -> prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent - 32, // 70: prehog.v1alpha.SubmitEventRequest.ui_discover_principals_configure_event:type_name -> prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent - 33, // 71: prehog.v1alpha.SubmitEventRequest.ui_discover_test_connection_event:type_name -> prehog.v1alpha.UIDiscoverTestConnectionEvent - 34, // 72: prehog.v1alpha.SubmitEventRequest.ui_discover_completed_event:type_name -> prehog.v1alpha.UIDiscoverCompletedEvent - 35, // 73: prehog.v1alpha.SubmitEventRequest.role_create:type_name -> prehog.v1alpha.RoleCreateEvent - 36, // 74: prehog.v1alpha.SubmitEventRequest.ui_create_new_role_click:type_name -> prehog.v1alpha.UICreateNewRoleClickEvent - 37, // 75: prehog.v1alpha.SubmitEventRequest.ui_create_new_role_save_click:type_name -> prehog.v1alpha.UICreateNewRoleSaveClickEvent - 38, // 76: prehog.v1alpha.SubmitEventRequest.ui_create_new_role_cancel_click:type_name -> prehog.v1alpha.UICreateNewRoleCancelClickEvent - 39, // 77: prehog.v1alpha.SubmitEventRequest.ui_create_new_role_view_documentation_click:type_name -> prehog.v1alpha.UICreateNewRoleViewDocumentationClickEvent - 40, // 78: prehog.v1alpha.SubmitEventRequest.kube_request:type_name -> prehog.v1alpha.KubeRequestEvent - 41, // 79: prehog.v1alpha.SubmitEventRequest.sftp:type_name -> prehog.v1alpha.SFTPEvent - 42, // 80: prehog.v1alpha.SubmitEventRequest.agent_metadata_event:type_name -> prehog.v1alpha.AgentMetadataEvent - 6, // 81: prehog.v1alpha.SubmitEventRequest.resource_heartbeat:type_name -> prehog.v1alpha.ResourceHeartbeatEvent - 23, // 82: prehog.v1alpha.SubmitEventRequest.ui_discover_integration_aws_oidc_connect_event:type_name -> prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent - 24, // 83: prehog.v1alpha.SubmitEventRequest.ui_discover_database_rds_enroll_event:type_name -> prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent - 43, // 84: prehog.v1alpha.SubmitEventsRequest.events:type_name -> prehog.v1alpha.SubmitEventRequest - 43, // 85: prehog.v1alpha.TeleportReportingService.SubmitEvent:input_type -> prehog.v1alpha.SubmitEventRequest - 45, // 86: prehog.v1alpha.TeleportReportingService.SubmitEvents:input_type -> prehog.v1alpha.SubmitEventsRequest - 47, // 87: prehog.v1alpha.TeleportReportingService.HelloTeleport:input_type -> prehog.v1alpha.HelloTeleportRequest - 44, // 88: prehog.v1alpha.TeleportReportingService.SubmitEvent:output_type -> prehog.v1alpha.SubmitEventResponse - 46, // 89: prehog.v1alpha.TeleportReportingService.SubmitEvents:output_type -> prehog.v1alpha.SubmitEventsResponse - 48, // 90: prehog.v1alpha.TeleportReportingService.HelloTeleport:output_type -> prehog.v1alpha.HelloTeleportResponse - 88, // [88:91] is the sub-list for method output_type - 85, // [85:88] is the sub-list for method input_type - 85, // [85:85] is the sub-list for extension type_name - 85, // [85:85] is the sub-list for extension extendee - 0, // [0:85] is the sub-list for field type_name + 19, // 4: prehog.v1alpha.UIDiscoverStartedEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 21, // 5: prehog.v1alpha.UIDiscoverStartedEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 19, // 6: prehog.v1alpha.UIDiscoverResourceSelectionEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 20, // 7: prehog.v1alpha.UIDiscoverResourceSelectionEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 21, // 8: prehog.v1alpha.UIDiscoverResourceSelectionEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 19, // 9: prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 20, // 10: prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 21, // 11: prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 19, // 12: prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 20, // 13: prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 21, // 14: prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 19, // 15: prehog.v1alpha.UIDiscoverDeployServiceEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 20, // 16: prehog.v1alpha.UIDiscoverDeployServiceEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 21, // 17: prehog.v1alpha.UIDiscoverDeployServiceEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 19, // 18: prehog.v1alpha.UIDiscoverDatabaseRegisterEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 20, // 19: prehog.v1alpha.UIDiscoverDatabaseRegisterEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 21, // 20: prehog.v1alpha.UIDiscoverDatabaseRegisterEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 19, // 21: prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 20, // 22: prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 21, // 23: prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 19, // 24: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 20, // 25: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 21, // 26: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 19, // 27: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 20, // 28: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 21, // 29: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 19, // 30: prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 20, // 31: prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 21, // 32: prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 19, // 33: prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 20, // 34: prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 21, // 35: prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 19, // 36: prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 20, // 37: prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 21, // 38: prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 19, // 39: prehog.v1alpha.UIDiscoverTestConnectionEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 20, // 40: prehog.v1alpha.UIDiscoverTestConnectionEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 21, // 41: prehog.v1alpha.UIDiscoverTestConnectionEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 19, // 42: prehog.v1alpha.UIDiscoverCompletedEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 20, // 43: prehog.v1alpha.UIDiscoverCompletedEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 21, // 44: prehog.v1alpha.UIDiscoverCompletedEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 3, // 45: prehog.v1alpha.UICallToActionClickEvent.cta:type_name -> prehog.v1alpha.CTA + 52, // 46: prehog.v1alpha.SubmitEventRequest.timestamp:type_name -> google.protobuf.Timestamp + 4, // 47: prehog.v1alpha.SubmitEventRequest.user_login:type_name -> prehog.v1alpha.UserLoginEvent + 5, // 48: prehog.v1alpha.SubmitEventRequest.sso_create:type_name -> prehog.v1alpha.SSOCreateEvent + 6, // 49: prehog.v1alpha.SubmitEventRequest.resource_create:type_name -> prehog.v1alpha.ResourceCreateEvent + 8, // 50: prehog.v1alpha.SubmitEventRequest.session_start:type_name -> prehog.v1alpha.SessionStartEvent + 10, // 51: prehog.v1alpha.SubmitEventRequest.ui_banner_click:type_name -> prehog.v1alpha.UIBannerClickEvent + 11, // 52: prehog.v1alpha.SubmitEventRequest.ui_onboard_complete_go_to_dashboard_click:type_name -> prehog.v1alpha.UIOnboardCompleteGoToDashboardClickEvent + 12, // 53: prehog.v1alpha.SubmitEventRequest.ui_onboard_add_first_resource_click:type_name -> prehog.v1alpha.UIOnboardAddFirstResourceClickEvent + 13, // 54: prehog.v1alpha.SubmitEventRequest.ui_onboard_add_first_resource_later_click:type_name -> prehog.v1alpha.UIOnboardAddFirstResourceLaterClickEvent + 14, // 55: prehog.v1alpha.SubmitEventRequest.ui_onboard_set_credential_submit:type_name -> prehog.v1alpha.UIOnboardSetCredentialSubmitEvent + 15, // 56: prehog.v1alpha.SubmitEventRequest.ui_onboard_register_challenge_submit:type_name -> prehog.v1alpha.UIOnboardRegisterChallengeSubmitEvent + 16, // 57: prehog.v1alpha.SubmitEventRequest.ui_recovery_codes_continue_click:type_name -> prehog.v1alpha.UIRecoveryCodesContinueClickEvent + 17, // 58: prehog.v1alpha.SubmitEventRequest.ui_recovery_codes_copy_click:type_name -> prehog.v1alpha.UIRecoveryCodesCopyClickEvent + 18, // 59: prehog.v1alpha.SubmitEventRequest.ui_recovery_codes_print_click:type_name -> prehog.v1alpha.UIRecoveryCodesPrintClickEvent + 22, // 60: prehog.v1alpha.SubmitEventRequest.ui_discover_started_event:type_name -> prehog.v1alpha.UIDiscoverStartedEvent + 23, // 61: prehog.v1alpha.SubmitEventRequest.ui_discover_resource_selection_event:type_name -> prehog.v1alpha.UIDiscoverResourceSelectionEvent + 9, // 62: prehog.v1alpha.SubmitEventRequest.user_certificate_issued_event:type_name -> prehog.v1alpha.UserCertificateIssuedEvent + 8, // 63: prehog.v1alpha.SubmitEventRequest.session_start_v2:type_name -> prehog.v1alpha.SessionStartEvent + 26, // 64: prehog.v1alpha.SubmitEventRequest.ui_discover_deploy_service_event:type_name -> prehog.v1alpha.UIDiscoverDeployServiceEvent + 27, // 65: prehog.v1alpha.SubmitEventRequest.ui_discover_database_register_event:type_name -> prehog.v1alpha.UIDiscoverDatabaseRegisterEvent + 28, // 66: prehog.v1alpha.SubmitEventRequest.ui_discover_database_configure_mtls_event:type_name -> prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent + 29, // 67: prehog.v1alpha.SubmitEventRequest.ui_discover_desktop_active_directory_tools_install_event:type_name -> prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent + 30, // 68: prehog.v1alpha.SubmitEventRequest.ui_discover_desktop_active_directory_configure_event:type_name -> prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent + 31, // 69: prehog.v1alpha.SubmitEventRequest.ui_discover_auto_discovered_resources_event:type_name -> prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent + 32, // 70: prehog.v1alpha.SubmitEventRequest.ui_discover_database_configure_iam_policy_event:type_name -> prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent + 33, // 71: prehog.v1alpha.SubmitEventRequest.ui_discover_principals_configure_event:type_name -> prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent + 34, // 72: prehog.v1alpha.SubmitEventRequest.ui_discover_test_connection_event:type_name -> prehog.v1alpha.UIDiscoverTestConnectionEvent + 35, // 73: prehog.v1alpha.SubmitEventRequest.ui_discover_completed_event:type_name -> prehog.v1alpha.UIDiscoverCompletedEvent + 36, // 74: prehog.v1alpha.SubmitEventRequest.role_create:type_name -> prehog.v1alpha.RoleCreateEvent + 37, // 75: prehog.v1alpha.SubmitEventRequest.ui_create_new_role_click:type_name -> prehog.v1alpha.UICreateNewRoleClickEvent + 38, // 76: prehog.v1alpha.SubmitEventRequest.ui_create_new_role_save_click:type_name -> prehog.v1alpha.UICreateNewRoleSaveClickEvent + 39, // 77: prehog.v1alpha.SubmitEventRequest.ui_create_new_role_cancel_click:type_name -> prehog.v1alpha.UICreateNewRoleCancelClickEvent + 40, // 78: prehog.v1alpha.SubmitEventRequest.ui_create_new_role_view_documentation_click:type_name -> prehog.v1alpha.UICreateNewRoleViewDocumentationClickEvent + 42, // 79: prehog.v1alpha.SubmitEventRequest.kube_request:type_name -> prehog.v1alpha.KubeRequestEvent + 43, // 80: prehog.v1alpha.SubmitEventRequest.sftp:type_name -> prehog.v1alpha.SFTPEvent + 44, // 81: prehog.v1alpha.SubmitEventRequest.agent_metadata_event:type_name -> prehog.v1alpha.AgentMetadataEvent + 7, // 82: prehog.v1alpha.SubmitEventRequest.resource_heartbeat:type_name -> prehog.v1alpha.ResourceHeartbeatEvent + 24, // 83: prehog.v1alpha.SubmitEventRequest.ui_discover_integration_aws_oidc_connect_event:type_name -> prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent + 25, // 84: prehog.v1alpha.SubmitEventRequest.ui_discover_database_rds_enroll_event:type_name -> prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent + 41, // 85: prehog.v1alpha.SubmitEventRequest.ui_call_to_action_click_event:type_name -> prehog.v1alpha.UICallToActionClickEvent + 45, // 86: prehog.v1alpha.SubmitEventsRequest.events:type_name -> prehog.v1alpha.SubmitEventRequest + 45, // 87: prehog.v1alpha.TeleportReportingService.SubmitEvent:input_type -> prehog.v1alpha.SubmitEventRequest + 47, // 88: prehog.v1alpha.TeleportReportingService.SubmitEvents:input_type -> prehog.v1alpha.SubmitEventsRequest + 49, // 89: prehog.v1alpha.TeleportReportingService.HelloTeleport:input_type -> prehog.v1alpha.HelloTeleportRequest + 46, // 90: prehog.v1alpha.TeleportReportingService.SubmitEvent:output_type -> prehog.v1alpha.SubmitEventResponse + 48, // 91: prehog.v1alpha.TeleportReportingService.SubmitEvents:output_type -> prehog.v1alpha.SubmitEventsResponse + 50, // 92: prehog.v1alpha.TeleportReportingService.HelloTeleport:output_type -> prehog.v1alpha.HelloTeleportResponse + 90, // [90:93] is the sub-list for method output_type + 87, // [87:90] is the sub-list for method input_type + 87, // [87:87] is the sub-list for extension type_name + 87, // [87:87] is the sub-list for extension extendee + 0, // [0:87] is the sub-list for field type_name } func init() { file_prehog_v1alpha_teleport_proto_init() } @@ -5004,7 +5165,7 @@ func file_prehog_v1alpha_teleport_proto_init() { } } file_prehog_v1alpha_teleport_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KubeRequestEvent); i { + switch v := v.(*UICallToActionClickEvent); i { case 0: return &v.state case 1: @@ -5016,7 +5177,7 @@ func file_prehog_v1alpha_teleport_proto_init() { } } file_prehog_v1alpha_teleport_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SFTPEvent); i { + switch v := v.(*KubeRequestEvent); i { case 0: return &v.state case 1: @@ -5028,7 +5189,7 @@ func file_prehog_v1alpha_teleport_proto_init() { } } file_prehog_v1alpha_teleport_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentMetadataEvent); i { + switch v := v.(*SFTPEvent); i { case 0: return &v.state case 1: @@ -5040,7 +5201,7 @@ func file_prehog_v1alpha_teleport_proto_init() { } } file_prehog_v1alpha_teleport_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitEventRequest); i { + switch v := v.(*AgentMetadataEvent); i { case 0: return &v.state case 1: @@ -5052,7 +5213,7 @@ func file_prehog_v1alpha_teleport_proto_init() { } } file_prehog_v1alpha_teleport_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitEventResponse); i { + switch v := v.(*SubmitEventRequest); i { case 0: return &v.state case 1: @@ -5064,7 +5225,7 @@ func file_prehog_v1alpha_teleport_proto_init() { } } file_prehog_v1alpha_teleport_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitEventsRequest); i { + switch v := v.(*SubmitEventResponse); i { case 0: return &v.state case 1: @@ -5076,7 +5237,7 @@ func file_prehog_v1alpha_teleport_proto_init() { } } file_prehog_v1alpha_teleport_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitEventsResponse); i { + switch v := v.(*SubmitEventsRequest); i { case 0: return &v.state case 1: @@ -5088,7 +5249,7 @@ func file_prehog_v1alpha_teleport_proto_init() { } } file_prehog_v1alpha_teleport_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HelloTeleportRequest); i { + switch v := v.(*SubmitEventsResponse); i { case 0: return &v.state case 1: @@ -5100,6 +5261,18 @@ func file_prehog_v1alpha_teleport_proto_init() { } } file_prehog_v1alpha_teleport_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HelloTeleportRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_prehog_v1alpha_teleport_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HelloTeleportResponse); i { case 0: return &v.state @@ -5112,7 +5285,7 @@ func file_prehog_v1alpha_teleport_proto_init() { } } } - file_prehog_v1alpha_teleport_proto_msgTypes[40].OneofWrappers = []interface{}{ + file_prehog_v1alpha_teleport_proto_msgTypes[41].OneofWrappers = []interface{}{ (*SubmitEventRequest_UserLogin)(nil), (*SubmitEventRequest_SsoCreate)(nil), (*SubmitEventRequest_ResourceCreate)(nil), @@ -5151,14 +5324,15 @@ func file_prehog_v1alpha_teleport_proto_init() { (*SubmitEventRequest_ResourceHeartbeat)(nil), (*SubmitEventRequest_UiDiscoverIntegrationAwsOidcConnectEvent)(nil), (*SubmitEventRequest_UiDiscoverDatabaseRdsEnrollEvent)(nil), + (*SubmitEventRequest_UiCallToActionClickEvent)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_prehog_v1alpha_teleport_proto_rawDesc, - NumEnums: 3, - NumMessages: 46, + NumEnums: 4, + NumMessages: 47, NumExtensions: 0, NumServices: 1, }, diff --git a/gen/proto/js/prehog/v1alpha/teleport_pb.d.ts b/gen/proto/js/prehog/v1alpha/teleport_pb.d.ts index 0b093e32df04d..bd5e7734cf35d 100644 --- a/gen/proto/js/prehog/v1alpha/teleport_pb.d.ts +++ b/gen/proto/js/prehog/v1alpha/teleport_pb.d.ts @@ -1101,6 +1101,31 @@ export namespace UICreateNewRoleViewDocumentationClickEvent { } } +export class UICallToActionClickEvent extends jspb.Message { + getUserName(): string; + setUserName(value: string): UICallToActionClickEvent; + + getCta(): CTA; + setCta(value: CTA): UICallToActionClickEvent; + + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): UICallToActionClickEvent.AsObject; + static toObject(includeInstance: boolean, msg: UICallToActionClickEvent): UICallToActionClickEvent.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: UICallToActionClickEvent, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): UICallToActionClickEvent; + static deserializeBinaryFromReader(message: UICallToActionClickEvent, reader: jspb.BinaryReader): UICallToActionClickEvent; +} + +export namespace UICallToActionClickEvent { + export type AsObject = { + userName: string, + cta: CTA, + } +} + export class KubeRequestEvent extends jspb.Message { getUserName(): string; setUserName(value: string): KubeRequestEvent; @@ -1451,6 +1476,12 @@ export class SubmitEventRequest extends jspb.Message { setUiDiscoverDatabaseRdsEnrollEvent(value?: UIDiscoverDatabaseRDSEnrollEvent): SubmitEventRequest; + hasUiCallToActionClickEvent(): boolean; + clearUiCallToActionClickEvent(): void; + getUiCallToActionClickEvent(): UICallToActionClickEvent | undefined; + setUiCallToActionClickEvent(value?: UICallToActionClickEvent): SubmitEventRequest; + + getEventCase(): SubmitEventRequest.EventCase; serializeBinary(): Uint8Array; @@ -1505,6 +1536,7 @@ export namespace SubmitEventRequest { resourceHeartbeat?: ResourceHeartbeatEvent.AsObject, uiDiscoverIntegrationAwsOidcConnectEvent?: UIDiscoverIntegrationAWSOIDCConnectEvent.AsObject, uiDiscoverDatabaseRdsEnrollEvent?: UIDiscoverDatabaseRDSEnrollEvent.AsObject, + uiCallToActionClickEvent?: UICallToActionClickEvent.AsObject, } export enum EventCase { @@ -1586,6 +1618,8 @@ export namespace SubmitEventRequest { UI_DISCOVER_DATABASE_RDS_ENROLL_EVENT = 41, + UI_CALL_TO_ACTION_CLICK_EVENT = 42, + } } @@ -1738,3 +1772,13 @@ export enum DiscoverStatus { DISCOVER_STATUS_ERROR = 3, DISCOVER_STATUS_ABORTED = 4, } + +export enum CTA { + CTA_UNSPECIFIED = 0, + CTA_AUTH_CONNECTOR = 1, + CTA_ACTIVE_SESSIONS = 2, + CTA_ACCESS_REQUESTS = 3, + CTA_PREMIUM_SUPPORT = 4, + CTA_TRUSTED_DEVICES = 5, + CTA_UPGRADE_BANNER = 6, +} diff --git a/gen/proto/js/prehog/v1alpha/teleport_pb.js b/gen/proto/js/prehog/v1alpha/teleport_pb.js index 120137967ff60..8e5192afc264a 100644 --- a/gen/proto/js/prehog/v1alpha/teleport_pb.js +++ b/gen/proto/js/prehog/v1alpha/teleport_pb.js @@ -20,6 +20,7 @@ goog.object.extend(proto, google_protobuf_duration_pb); var google_protobuf_timestamp_pb = require('google-protobuf/google/protobuf/timestamp_pb.js'); goog.object.extend(proto, google_protobuf_timestamp_pb); goog.exportSymbol('proto.prehog.v1alpha.AgentMetadataEvent', null, global); +goog.exportSymbol('proto.prehog.v1alpha.CTA', null, global); goog.exportSymbol('proto.prehog.v1alpha.DiscoverMetadata', null, global); goog.exportSymbol('proto.prehog.v1alpha.DiscoverResource', null, global); goog.exportSymbol('proto.prehog.v1alpha.DiscoverResourceMetadata', null, global); @@ -41,6 +42,7 @@ goog.exportSymbol('proto.prehog.v1alpha.SubmitEventResponse', null, global); goog.exportSymbol('proto.prehog.v1alpha.SubmitEventsRequest', null, global); goog.exportSymbol('proto.prehog.v1alpha.SubmitEventsResponse', null, global); goog.exportSymbol('proto.prehog.v1alpha.UIBannerClickEvent', null, global); +goog.exportSymbol('proto.prehog.v1alpha.UICallToActionClickEvent', null, global); goog.exportSymbol('proto.prehog.v1alpha.UICreateNewRoleCancelClickEvent', null, global); goog.exportSymbol('proto.prehog.v1alpha.UICreateNewRoleClickEvent', null, global); goog.exportSymbol('proto.prehog.v1alpha.UICreateNewRoleSaveClickEvent', null, global); @@ -846,6 +848,27 @@ if (goog.DEBUG && !COMPILED) { */ proto.prehog.v1alpha.UICreateNewRoleViewDocumentationClickEvent.displayName = 'proto.prehog.v1alpha.UICreateNewRoleViewDocumentationClickEvent'; } +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.prehog.v1alpha.UICallToActionClickEvent = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.prehog.v1alpha.UICallToActionClickEvent, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.prehog.v1alpha.UICallToActionClickEvent.displayName = 'proto.prehog.v1alpha.UICallToActionClickEvent'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -8164,6 +8187,166 @@ proto.prehog.v1alpha.UICreateNewRoleViewDocumentationClickEvent.prototype.setUse +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.prehog.v1alpha.UICallToActionClickEvent.prototype.toObject = function(opt_includeInstance) { + return proto.prehog.v1alpha.UICallToActionClickEvent.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.prehog.v1alpha.UICallToActionClickEvent} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.prehog.v1alpha.UICallToActionClickEvent.toObject = function(includeInstance, msg) { + var f, obj = { + userName: jspb.Message.getFieldWithDefault(msg, 1, ""), + cta: jspb.Message.getFieldWithDefault(msg, 2, 0) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.prehog.v1alpha.UICallToActionClickEvent} + */ +proto.prehog.v1alpha.UICallToActionClickEvent.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.prehog.v1alpha.UICallToActionClickEvent; + return proto.prehog.v1alpha.UICallToActionClickEvent.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.prehog.v1alpha.UICallToActionClickEvent} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.prehog.v1alpha.UICallToActionClickEvent} + */ +proto.prehog.v1alpha.UICallToActionClickEvent.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setUserName(value); + break; + case 2: + var value = /** @type {!proto.prehog.v1alpha.CTA} */ (reader.readEnum()); + msg.setCta(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.prehog.v1alpha.UICallToActionClickEvent.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.prehog.v1alpha.UICallToActionClickEvent.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.prehog.v1alpha.UICallToActionClickEvent} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.prehog.v1alpha.UICallToActionClickEvent.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getUserName(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getCta(); + if (f !== 0.0) { + writer.writeEnum( + 2, + f + ); + } +}; + + +/** + * optional string user_name = 1; + * @return {string} + */ +proto.prehog.v1alpha.UICallToActionClickEvent.prototype.getUserName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.prehog.v1alpha.UICallToActionClickEvent} returns this + */ +proto.prehog.v1alpha.UICallToActionClickEvent.prototype.setUserName = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional CTA cta = 2; + * @return {!proto.prehog.v1alpha.CTA} + */ +proto.prehog.v1alpha.UICallToActionClickEvent.prototype.getCta = function() { + return /** @type {!proto.prehog.v1alpha.CTA} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** + * @param {!proto.prehog.v1alpha.CTA} value + * @return {!proto.prehog.v1alpha.UICallToActionClickEvent} returns this + */ +proto.prehog.v1alpha.UICallToActionClickEvent.prototype.setCta = function(value) { + return jspb.Message.setProto3EnumField(this, 2, value); +}; + + + + + if (jspb.Message.GENERATE_TO_OBJECT) { /** * Creates an object representation of this proto. @@ -8935,7 +9118,7 @@ proto.prehog.v1alpha.AgentMetadataEvent.prototype.setCloudEnvironment = function * @private {!Array>} * @const */ -proto.prehog.v1alpha.SubmitEventRequest.oneofGroups_ = [[3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41]]; +proto.prehog.v1alpha.SubmitEventRequest.oneofGroups_ = [[3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42]]; /** * @enum {number} @@ -8979,7 +9162,8 @@ proto.prehog.v1alpha.SubmitEventRequest.EventCase = { AGENT_METADATA_EVENT: 38, RESOURCE_HEARTBEAT: 39, UI_DISCOVER_INTEGRATION_AWS_OIDC_CONNECT_EVENT: 40, - UI_DISCOVER_DATABASE_RDS_ENROLL_EVENT: 41 + UI_DISCOVER_DATABASE_RDS_ENROLL_EVENT: 41, + UI_CALL_TO_ACTION_CLICK_EVENT: 42 }; /** @@ -9059,7 +9243,8 @@ proto.prehog.v1alpha.SubmitEventRequest.toObject = function(includeInstance, msg agentMetadataEvent: (f = msg.getAgentMetadataEvent()) && proto.prehog.v1alpha.AgentMetadataEvent.toObject(includeInstance, f), resourceHeartbeat: (f = msg.getResourceHeartbeat()) && proto.prehog.v1alpha.ResourceHeartbeatEvent.toObject(includeInstance, f), uiDiscoverIntegrationAwsOidcConnectEvent: (f = msg.getUiDiscoverIntegrationAwsOidcConnectEvent()) && proto.prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent.toObject(includeInstance, f), - uiDiscoverDatabaseRdsEnrollEvent: (f = msg.getUiDiscoverDatabaseRdsEnrollEvent()) && proto.prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent.toObject(includeInstance, f) + uiDiscoverDatabaseRdsEnrollEvent: (f = msg.getUiDiscoverDatabaseRdsEnrollEvent()) && proto.prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent.toObject(includeInstance, f), + uiCallToActionClickEvent: (f = msg.getUiCallToActionClickEvent()) && proto.prehog.v1alpha.UICallToActionClickEvent.toObject(includeInstance, f) }; if (includeInstance) { @@ -9295,6 +9480,11 @@ proto.prehog.v1alpha.SubmitEventRequest.deserializeBinaryFromReader = function(m reader.readMessage(value,proto.prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent.deserializeBinaryFromReader); msg.setUiDiscoverDatabaseRdsEnrollEvent(value); break; + case 42: + var value = new proto.prehog.v1alpha.UICallToActionClickEvent; + reader.readMessage(value,proto.prehog.v1alpha.UICallToActionClickEvent.deserializeBinaryFromReader); + msg.setUiCallToActionClickEvent(value); + break; default: reader.skipField(); break; @@ -9643,6 +9833,14 @@ proto.prehog.v1alpha.SubmitEventRequest.serializeBinaryToWriter = function(messa proto.prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent.serializeBinaryToWriter ); } + f = message.getUiCallToActionClickEvent(); + if (f != null) { + writer.writeMessage( + 42, + f, + proto.prehog.v1alpha.UICallToActionClickEvent.serializeBinaryToWriter + ); + } }; @@ -11107,6 +11305,43 @@ proto.prehog.v1alpha.SubmitEventRequest.prototype.hasUiDiscoverDatabaseRdsEnroll }; +/** + * optional UICallToActionClickEvent ui_call_to_action_click_event = 42; + * @return {?proto.prehog.v1alpha.UICallToActionClickEvent} + */ +proto.prehog.v1alpha.SubmitEventRequest.prototype.getUiCallToActionClickEvent = function() { + return /** @type{?proto.prehog.v1alpha.UICallToActionClickEvent} */ ( + jspb.Message.getWrapperField(this, proto.prehog.v1alpha.UICallToActionClickEvent, 42)); +}; + + +/** + * @param {?proto.prehog.v1alpha.UICallToActionClickEvent|undefined} value + * @return {!proto.prehog.v1alpha.SubmitEventRequest} returns this +*/ +proto.prehog.v1alpha.SubmitEventRequest.prototype.setUiCallToActionClickEvent = function(value) { + return jspb.Message.setOneofWrapperField(this, 42, proto.prehog.v1alpha.SubmitEventRequest.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.prehog.v1alpha.SubmitEventRequest} returns this + */ +proto.prehog.v1alpha.SubmitEventRequest.prototype.clearUiCallToActionClickEvent = function() { + return this.setUiCallToActionClickEvent(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.prehog.v1alpha.SubmitEventRequest.prototype.hasUiCallToActionClickEvent = function() { + return jspb.Message.getField(this, 42) != null; +}; + + @@ -11738,4 +11973,17 @@ proto.prehog.v1alpha.DiscoverStatus = { DISCOVER_STATUS_ABORTED: 4 }; +/** + * @enum {number} + */ +proto.prehog.v1alpha.CTA = { + CTA_UNSPECIFIED: 0, + CTA_AUTH_CONNECTOR: 1, + CTA_ACTIVE_SESSIONS: 2, + CTA_ACCESS_REQUESTS: 3, + CTA_PREMIUM_SUPPORT: 4, + CTA_TRUSTED_DEVICES: 5, + CTA_UPGRADE_BANNER: 6 +}; + goog.object.extend(exports, proto.prehog.v1alpha); diff --git a/lib/usagereporter/teleport/types.go b/lib/usagereporter/teleport/types.go index 91f7787b55ee0..cfc89f07082ea 100644 --- a/lib/usagereporter/teleport/types.go +++ b/lib/usagereporter/teleport/types.go @@ -292,6 +292,20 @@ func (u *UICreateNewRoleViewDocumentationClickEvent) Anonymize(a utils.Anonymize } } +// UICallToActionClickEvent is a UI event sent when a user prints recovery codes. +type UICallToActionClickEvent prehogv1a.UICallToActionClickEvent + +func (u *UICallToActionClickEvent) Anonymize(a utils.Anonymizer) prehogv1a.SubmitEventRequest { + return prehogv1a.SubmitEventRequest{ + Event: &prehogv1a.SubmitEventRequest_UiCallToActionClickEvent{ + UiCallToActionClickEvent: &prehogv1a.UICallToActionClickEvent{ + Cta: u.Cta, + UserName: a.AnonymizeString(u.UserName), + }, + }, + } +} + // UserCertificateIssuedEvent is an event emitted when a certificate has been // issued, used to track the duration and restriction. type UserCertificateIssuedEvent prehogv1a.UserCertificateIssuedEvent @@ -524,6 +538,12 @@ func ConvertUsageEvent(event *usageeventsv1.UsageEventOneOf, userMD UserMetadata } return ret, nil + case *usageeventsv1.UsageEventOneOf_UiCallToActionClickEvent: + return &UICallToActionClickEvent{ + UserName: userMD.Username, + Cta: prehogv1a.CTA(e.UiCallToActionClickEvent.Cta), + }, nil + case *usageeventsv1.UsageEventOneOf_UiDiscoverDeployServiceEvent: ret := &UIDiscoverDeployServiceEvent{ Metadata: discoverMetadataToPrehog(e.UiDiscoverDeployServiceEvent.Metadata, userMD), diff --git a/lib/usagereporter/web/userevent.go b/lib/usagereporter/web/userevent.go index 2730579e9da07..48c510db6ff18 100644 --- a/lib/usagereporter/web/userevent.go +++ b/lib/usagereporter/web/userevent.go @@ -56,6 +56,8 @@ const ( uiDiscoverPrincipalsConfigureEvent = "tp.ui.discover.principals.configure" uiDiscoverTestConnectionEvent = "tp.ui.discover.testConnection" uiDiscoverCompletedEvent = "tp.ui.discover.completed" + + uiCallToActionClickEvent = "tp.ui.callToAction.click" ) // Events that require extra metadata. @@ -259,6 +261,17 @@ func ConvertUserEventRequestToUsageEvent(req CreateUserEventRequest) (*usageeven }}, nil + case uiCallToActionClickEvent: + var cta int32 + if err := json.Unmarshal([]byte(*req.EventData), &cta); err != nil { + return nil, trace.BadParameter("eventData is invalid: %v", err) + } + + return &usageeventsv1.UsageEventOneOf{Event: &usageeventsv1.UsageEventOneOf_UiCallToActionClickEvent{ + UiCallToActionClickEvent: &usageeventsv1.UICallToActionClickEvent{ + Cta: usageeventsv1.CTA(cta), + }}}, + nil } return nil, trace.BadParameter("invalid event %s", req.Event) diff --git a/proto/prehog/v1alpha/teleport.proto b/proto/prehog/v1alpha/teleport.proto index 9cfe480fcbe3b..2c05b72eeb30b 100644 --- a/proto/prehog/v1alpha/teleport.proto +++ b/proto/prehog/v1alpha/teleport.proto @@ -361,6 +361,24 @@ message UICreateNewRoleViewDocumentationClickEvent { string user_name = 1; } +// UICallToActionClickEvent is a click in a Teleport Web UI's CTA +message UICallToActionClickEvent { + //anonymized + string user_name = 1; + CTA cta = 2; +} + +// CTA represents teleport web UI's call to action buttons +enum CTA { + CTA_UNSPECIFIED = 0; + CTA_AUTH_CONNECTOR = 1; + CTA_ACTIVE_SESSIONS = 2; + CTA_ACCESS_REQUESTS = 3; + CTA_PREMIUM_SUPPORT = 4; + CTA_TRUSTED_DEVICES = 5; + CTA_UPGRADE_BANNER = 6; +} + message KubeRequestEvent { // anonymized string user_name = 1; @@ -448,6 +466,8 @@ message SubmitEventRequest { UIDiscoverIntegrationAWSOIDCConnectEvent ui_discover_integration_aws_oidc_connect_event = 40; UIDiscoverDatabaseRDSEnrollEvent ui_discover_database_rds_enroll_event = 41; + + UICallToActionClickEvent ui_call_to_action_click_event = 42; } reserved 8; // UIOnboardGetStartedClickEvent diff --git a/web/packages/teleport/src/Sessions/SessionList/SessionJoinBtn.tsx b/web/packages/teleport/src/Sessions/SessionList/SessionJoinBtn.tsx index e5f1172a2352a..1094879d2e8dd 100644 --- a/web/packages/teleport/src/Sessions/SessionList/SessionJoinBtn.tsx +++ b/web/packages/teleport/src/Sessions/SessionList/SessionJoinBtn.tsx @@ -22,6 +22,7 @@ import { CarrotDown, Warning } from 'design/Icon'; import cfg from 'teleport/config'; import { ParticipantMode } from 'teleport/services/session'; import { ButtonLockedFeature } from 'teleport/components/ButtonLockedFeature'; +import { CtaEvent } from 'teleport/services/userEvent'; export const SessionJoinBtn = ({ sid, @@ -38,7 +39,11 @@ export const SessionJoinBtn = ({ {showCTA && ( - + Join Active Sessions with Teleport Enterprise diff --git a/web/packages/teleport/src/Sessions/Sessions.tsx b/web/packages/teleport/src/Sessions/Sessions.tsx index ad45b8d304f94..263ddaf245ed9 100644 --- a/web/packages/teleport/src/Sessions/Sessions.tsx +++ b/web/packages/teleport/src/Sessions/Sessions.tsx @@ -29,6 +29,8 @@ import useStickerClusterId from 'teleport/useStickyClusterId'; import { ButtonLockedFeature } from 'teleport/components/ButtonLockedFeature'; +import { CtaEvent } from 'teleport/services/userEvent'; + import SessionList from './SessionList'; import useSessions from './useSessions'; @@ -47,7 +49,10 @@ export function Sessions(props: ReturnType) { Active Sessions {showActiveSessionsCTA && ( - + Join Active Sessions With Teleport Enterprise diff --git a/web/packages/teleport/src/Support/Support.tsx b/web/packages/teleport/src/Support/Support.tsx index 57f62fbc1254b..48f8415c408fd 100644 --- a/web/packages/teleport/src/Support/Support.tsx +++ b/web/packages/teleport/src/Support/Support.tsx @@ -24,6 +24,7 @@ import { FeatureBox } from 'teleport/components/Layout'; import useTeleport from 'teleport/useTeleport'; import cfg from 'teleport/config'; import { ButtonLockedFeature } from 'teleport/components/ButtonLockedFeature'; +import { CtaEvent } from 'teleport/services/userEvent'; export default function Container({ children, @@ -82,7 +83,7 @@ export const Support = ({ url="mailto:support@goteleport.com" /> {isEnterprise && showPremiumSupportCTA && ( - + Unlock Premium Support w/Enterprise )} diff --git a/web/packages/teleport/src/components/ButtonLockedFeature/ButtonLockedFeature.tsx b/web/packages/teleport/src/components/ButtonLockedFeature/ButtonLockedFeature.tsx index b70e81875cf9e..ab37df786d4fc 100644 --- a/web/packages/teleport/src/components/ButtonLockedFeature/ButtonLockedFeature.tsx +++ b/web/packages/teleport/src/components/ButtonLockedFeature/ButtonLockedFeature.tsx @@ -20,17 +20,30 @@ import { ButtonPrimary } from 'design/Button'; import { Unlock } from 'design/Icon'; import Flex from 'design/Flex'; +import { CtaEvent, userEventService } from 'teleport/services/userEvent'; + export type Props = { children: React.ReactNode; noIcon?: boolean; + event?: CtaEvent; [index: string]: any; }; const salesUrl = 'https://goteleport.com/signup/enterprise/'; -export function ButtonLockedFeature({ children, noIcon = false, ...rest }) { +export function ButtonLockedFeature({ + children, + noIcon = false, + event, + ...rest +}: Props) { + function handleClick() { + userEventService.captureCtaEvent(event); + window.open(salesUrl, 'blank'); + } + return ( - window.open(salesUrl, 'blank')} {...rest}> + {!noIcon && } {children} diff --git a/web/packages/teleport/src/services/userEvent/types.ts b/web/packages/teleport/src/services/userEvent/types.ts index c29a22153aac5..9e34c7cb02db5 100644 --- a/web/packages/teleport/src/services/userEvent/types.ts +++ b/web/packages/teleport/src/services/userEvent/types.ts @@ -25,6 +25,7 @@ export enum CaptureEvent { CreateNewRoleSaveClickEvent = 'tp.ui.createNewRoleSave.click', CreateNewRoleCancelClickEvent = 'tp.ui.createNewRoleCancel.click', CreateNewRoleViewDocumentationClickEvent = 'tp.ui.createNewRoleViewDocumentation.click', + UiCallToActionClickEvent = 'tp.ui.callToAction.click', // PreUserEvent types // these events are unauthenticated, @@ -148,3 +149,14 @@ export type DiscoverEventStepStatus = { stepStatus: DiscoverEventStatus; stepStatusError?: string; }; + +// TODO(mcbattirola): import this from protofile instead of copying it here +export enum CtaEvent { + CTA_UNSPECIFIED = 0, + CTA_AUTH_CONNECTOR = 1, + CTA_ACTIVE_SESSIONS = 2, + CTA_ACCESS_REQUESTS = 3, + CTA_PREMIUM_SUPPORT = 4, + CTA_TRUSTED_DEVICES = 5, + CTA_UPGRADE_BANNER = 6, +} diff --git a/web/packages/teleport/src/services/userEvent/userEvent.ts b/web/packages/teleport/src/services/userEvent/userEvent.ts index 009ccf0e543d6..ce3dd29a1f7c4 100644 --- a/web/packages/teleport/src/services/userEvent/userEvent.ts +++ b/web/packages/teleport/src/services/userEvent/userEvent.ts @@ -17,7 +17,13 @@ import api from 'teleport/services/api'; import cfg from 'teleport/config'; -import { UserEvent, PreUserEvent, DiscoverEventRequest } from './types'; +import { + UserEvent, + PreUserEvent, + DiscoverEventRequest, + CtaEvent, + CaptureEvent, +} from './types'; export const userEventService = { captureUserEvent(userEvent: UserEvent) { @@ -46,4 +52,16 @@ export const userEventService = { body: JSON.stringify(event), }); }, + + captureCtaEvent(event: CtaEvent) { + // using api.fetch instead of api.fetchJSON + // because we are not expecting a JSON response + void api.fetch(cfg.api.captureUserEventPath, { + method: 'POST', + body: JSON.stringify({ + event: CaptureEvent.UiCallToActionClickEvent, + eventData: event, + }), + }); + }, };