diff --git a/CHANGELOG.md b/CHANGELOG.md index c36cf121af5c9..10f87ba178bd6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## 14.2.3 (12/14/23) + +* Prevent Cloud tenants from being a leaf cluster. [#35687](https://github.com/gravitational/teleport/pull/35687) +* Added "Show All Labels" button in the unified resources list view. [#35666](https://github.com/gravitational/teleport/pull/35666) +* Added auto approval flow to servicenow plugin. [#35658](https://github.com/gravitational/teleport/pull/35658) +* Added guided SAML entity descriptor creation when entity descriptor XML is not yet available. [#35657](https://github.com/gravitational/teleport/pull/35657) +* Added a connection test when enrolling a new Connect My Computer resource in Web UI. [#35649](https://github.com/gravitational/teleport/pull/35649) +* Fixed regression of Kubernetes Server Address when Teleport runs in multiplex mode. [#35633](https://github.com/gravitational/teleport/pull/35633) +* When using the Slack plugin, users will now be notified directly of access requests and their approvals or denials. [#35577](https://github.com/gravitational/teleport/pull/35577) +* Fixed bug where configuration errors with an individual SSO connector impacted other connectors. [#35576](https://github.com/gravitational/teleport/pull/35576) +* Fixed client IP propagation from the Proxy to the Auth during IdP initiated SSO. [#35545](https://github.com/gravitational/teleport/pull/35545) + ## 14.2.2 (12/07/23) **Note**: `tsh` v14.2.2 has a known issue where `tsh kube login` uses an diff --git a/Makefile b/Makefile index a1b9ea6042c31..dafd9908c6c05 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ # Stable releases: "1.0.0" # Pre-releases: "1.0.0-alpha.1", "1.0.0-beta.2", "1.0.0-rc.3" # Master/dev branch: "1.0.0-dev" -VERSION=14.2.2 +VERSION=14.2.3 DOCKER_IMAGE ?= teleport diff --git a/api/client/proto/certs.pb.go b/api/client/proto/certs.pb.go index 1f17e92026fbb..b3a9c9a549d10 100644 --- a/api/client/proto/certs.pb.go +++ b/api/client/proto/certs.pb.go @@ -25,9 +25,9 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // Set of certificates corresponding to a single public key. type Certs struct { - // SSH X509 cert (PEM-encoded). + // SSH certificate marshaled in the authorized key format. SSH []byte `protobuf:"bytes,1,opt,name=SSH,proto3" json:"ssh,omitempty"` - // TLS X509 cert (PEM-encoded). + // TLS X.509 certificate (PEM-encoded). TLS []byte `protobuf:"bytes,2,opt,name=TLS,proto3" json:"tls,omitempty"` // TLSCACerts is a list of TLS certificate authorities. TLSCACerts [][]byte `protobuf:"bytes,3,rep,name=TLSCACerts,proto3" json:"tls_ca_certs,omitempty"` diff --git a/api/gen/proto/go/usageevents/v1/usageevents.pb.go b/api/gen/proto/go/usageevents/v1/usageevents.pb.go index b2bb6bdecc74e..8d6f3f101ba70 100644 --- a/api/gen/proto/go/usageevents/v1/usageevents.pb.go +++ b/api/gen/proto/go/usageevents/v1/usageevents.pb.go @@ -3895,6 +3895,67 @@ func (m *SecurityReportGetResultEvent) GetDays() int32 { return 0 } +// DiscoveryFetchEvent is emitted when a DiscoveryService polls for new resources of a given type +type DiscoveryFetchEvent struct { + // cloud_provider is the cloud provider used to fetch resources + // Eg, AWS, Azure, GCP, Kubernetes + CloudProvider string `protobuf:"bytes,1,opt,name=cloud_provider,json=cloudProvider,proto3" json:"cloud_provider,omitempty"` + // resource_type is the type of resource that this fetch is polling. + // It depends on the Cloud Provider (defined above). + // Eg, rds, ec2, vm, aks, gce, app + ResourceType string `protobuf:"bytes,2,opt,name=resource_type,json=resourceType,proto3" json:"resource_type,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DiscoveryFetchEvent) Reset() { *m = DiscoveryFetchEvent{} } +func (m *DiscoveryFetchEvent) String() string { return proto.CompactTextString(m) } +func (*DiscoveryFetchEvent) ProtoMessage() {} +func (*DiscoveryFetchEvent) Descriptor() ([]byte, []int) { + return fileDescriptor_94cf2ca1c69fd564, []int{58} +} +func (m *DiscoveryFetchEvent) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DiscoveryFetchEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DiscoveryFetchEvent.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 *DiscoveryFetchEvent) XXX_Merge(src proto.Message) { + xxx_messageInfo_DiscoveryFetchEvent.Merge(m, src) +} +func (m *DiscoveryFetchEvent) XXX_Size() int { + return m.Size() +} +func (m *DiscoveryFetchEvent) XXX_DiscardUnknown() { + xxx_messageInfo_DiscoveryFetchEvent.DiscardUnknown(m) +} + +var xxx_messageInfo_DiscoveryFetchEvent proto.InternalMessageInfo + +func (m *DiscoveryFetchEvent) GetCloudProvider() string { + if m != nil { + return m.CloudProvider + } + return "" +} + +func (m *DiscoveryFetchEvent) GetResourceType() string { + if m != nil { + return m.ResourceType + } + return "" +} + // UsageEventOneOf is a message that can accept a oneof of any supported // external usage event. type UsageEventOneOf struct { @@ -3952,6 +4013,7 @@ type UsageEventOneOf struct { // *UsageEventOneOf_SecurityReportGetResult // *UsageEventOneOf_AccessListReviewCreate // *UsageEventOneOf_AccessListReviewDelete + // *UsageEventOneOf_DiscoveryFetchEvent Event isUsageEventOneOf_Event `protobuf_oneof:"event"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -3962,7 +4024,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{58} + return fileDescriptor_94cf2ca1c69fd564, []int{59} } func (m *UsageEventOneOf) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4153,6 +4215,9 @@ type UsageEventOneOf_AccessListReviewCreate struct { type UsageEventOneOf_AccessListReviewDelete struct { AccessListReviewDelete *AccessListReviewDelete `protobuf:"bytes,53,opt,name=access_list_review_delete,json=accessListReviewDelete,proto3,oneof" json:"access_list_review_delete,omitempty"` } +type UsageEventOneOf_DiscoveryFetchEvent struct { + DiscoveryFetchEvent *DiscoveryFetchEvent `protobuf:"bytes,54,opt,name=discovery_fetch_event,json=discoveryFetchEvent,proto3,oneof" json:"discovery_fetch_event,omitempty"` +} func (*UsageEventOneOf_UiBannerClick) isUsageEventOneOf_Event() {} func (*UsageEventOneOf_UiOnboardCompleteGoToDashboardClick) isUsageEventOneOf_Event() {} @@ -4206,6 +4271,7 @@ func (*UsageEventOneOf_TagExecuteQuery) isUsageEventOneOf_Event() func (*UsageEventOneOf_SecurityReportGetResult) isUsageEventOneOf_Event() {} func (*UsageEventOneOf_AccessListReviewCreate) isUsageEventOneOf_Event() {} func (*UsageEventOneOf_AccessListReviewDelete) isUsageEventOneOf_Event() {} +func (*UsageEventOneOf_DiscoveryFetchEvent) isUsageEventOneOf_Event() {} func (m *UsageEventOneOf) GetEvent() isUsageEventOneOf_Event { if m != nil { @@ -4578,6 +4644,13 @@ func (m *UsageEventOneOf) GetAccessListReviewDelete() *AccessListReviewDelete { return nil } +func (m *UsageEventOneOf) GetDiscoveryFetchEvent() *DiscoveryFetchEvent { + if x, ok := m.GetEvent().(*UsageEventOneOf_DiscoveryFetchEvent); ok { + return x.DiscoveryFetchEvent + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*UsageEventOneOf) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -4633,6 +4706,7 @@ func (*UsageEventOneOf) XXX_OneofWrappers() []interface{} { (*UsageEventOneOf_SecurityReportGetResult)(nil), (*UsageEventOneOf_AccessListReviewCreate)(nil), (*UsageEventOneOf_AccessListReviewDelete)(nil), + (*UsageEventOneOf_DiscoveryFetchEvent)(nil), } } @@ -4703,6 +4777,7 @@ func init() { proto.RegisterType((*FeatureRecommendationEvent)(nil), "teleport.usageevents.v1.FeatureRecommendationEvent") proto.RegisterType((*TAGExecuteQueryEvent)(nil), "teleport.usageevents.v1.TAGExecuteQueryEvent") proto.RegisterType((*SecurityReportGetResultEvent)(nil), "teleport.usageevents.v1.SecurityReportGetResultEvent") + proto.RegisterType((*DiscoveryFetchEvent)(nil), "teleport.usageevents.v1.DiscoveryFetchEvent") proto.RegisterType((*UsageEventOneOf)(nil), "teleport.usageevents.v1.UsageEventOneOf") } @@ -4711,290 +4786,293 @@ func init() { } var fileDescriptor_94cf2ca1c69fd564 = []byte{ - // 4525 bytes of a gzipped FileDescriptorProto + // 4576 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7c, 0xdf, 0x6f, 0xdb, 0xc8, - 0x76, 0xbf, 0x68, 0xc7, 0x89, 0x73, 0x92, 0x38, 0xcc, 0x24, 0xb1, 0x65, 0x3b, 0x8e, 0x1d, 0xe5, - 0xb7, 0xb3, 0x6b, 0x6f, 0x9c, 0xdd, 0xbb, 0xb9, 0x77, 0xf7, 0xfb, 0xdd, 0xd2, 0x14, 0x6d, 0x71, - 0x2d, 0x89, 0xda, 0x21, 0x95, 0x5c, 0xef, 0xc5, 0xc5, 0x80, 0x16, 0xc7, 0x0e, 0x11, 0x49, 0xd4, + 0x76, 0xbf, 0x28, 0xc7, 0x89, 0x73, 0x92, 0x38, 0xcc, 0x24, 0xb1, 0x65, 0x3b, 0x8e, 0x1d, 0xe5, + 0xb7, 0xb3, 0xd7, 0xde, 0x78, 0xb3, 0xbb, 0xb9, 0x77, 0xf7, 0xfb, 0xdd, 0xd2, 0x14, 0x6d, 0x71, + 0x2d, 0x89, 0xda, 0x21, 0x95, 0x5c, 0xef, 0xc5, 0xc5, 0x80, 0x16, 0xc7, 0x0e, 0x11, 0x49, 0xf4, 0x92, 0x94, 0xbd, 0x6e, 0x51, 0xdc, 0xfe, 0x46, 0xd1, 0xbd, 0x2d, 0x5a, 0xa0, 0xe8, 0x0f, 0x5c, - 0xa0, 0x68, 0xd1, 0x16, 0xe8, 0x43, 0x81, 0x3e, 0x15, 0x17, 0x7d, 0xec, 0x5b, 0x1f, 0x0b, 0xf4, - 0xb1, 0x40, 0x51, 0xec, 0x3f, 0xd0, 0xa7, 0xf6, 0xa1, 0x68, 0xd1, 0x82, 0x33, 0xa4, 0x44, 0x49, - 0x94, 0xc8, 0xdd, 0x66, 0x71, 0x01, 0xef, 0x9b, 0x34, 0x73, 0x7e, 0x7c, 0xce, 0x99, 0x99, 0x33, - 0x3f, 0xce, 0x91, 0xe0, 0xb1, 0x4f, 0x9b, 0xb4, 0xe3, 0xb8, 0xfe, 0x66, 0xd7, 0x33, 0x8f, 0x28, - 0x3d, 0xa6, 0x6d, 0xdf, 0xdb, 0x3c, 0x7e, 0x1a, 0xff, 0xba, 0xd1, 0x71, 0x1d, 0xdf, 0x41, 0x0b, - 0x11, 0xe9, 0x46, 0xbc, 0xef, 0xf8, 0x69, 0x61, 0x1d, 0x50, 0x5d, 0xdd, 0x36, 0xdb, 0x6d, 0xea, - 0xca, 0x4d, 0xbb, 0xf1, 0x5a, 0x09, 0x7a, 0xd0, 0x0d, 0x98, 0x31, 0x9b, 0xd4, 0xf5, 0xf3, 0xc2, - 0x9a, 0xf0, 0xe8, 0x22, 0xe6, 0x5f, 0x0a, 0x3b, 0xf0, 0xa8, 0xae, 0x6a, 0xed, 0x03, 0xc7, 0x74, - 0x2d, 0xd9, 0x69, 0x75, 0x9a, 0xd4, 0xa7, 0xbb, 0x8e, 0xe1, 0x14, 0x4d, 0xef, 0x15, 0x6f, 0xec, - 0x4b, 0x58, 0x82, 0xd9, 0xae, 0x47, 0xdd, 0xb6, 0xd9, 0xa2, 0xa1, 0x90, 0xde, 0xf7, 0xc2, 0x7d, - 0xb8, 0xdb, 0x93, 0x23, 0x59, 0xd6, 0x8e, 0xed, 0x7a, 0x3e, 0xa6, 0x9e, 0xd3, 0x75, 0x1b, 0xb4, - 0x2f, 0xa2, 0xb0, 0x1e, 0x53, 0x37, 0x4c, 0x56, 0x36, 0xfd, 0x38, 0xe0, 0xc2, 0x47, 0x70, 0xa7, - 0x47, 0xab, 0x53, 0x5f, 0x76, 0xa9, 0x45, 0xdb, 0xbe, 0x6d, 0x36, 0xf5, 0xee, 0x41, 0xcb, 0xf6, - 0xd3, 0x31, 0xc5, 0x05, 0x7c, 0xd2, 0xa5, 0x9e, 0x6f, 0x3b, 0xed, 0xb6, 0x69, 0xbb, 0x34, 0xab, - 0x80, 0x5f, 0x84, 0xfb, 0x3d, 0x01, 0x98, 0x1e, 0xd9, 0x5e, 0x00, 0xf0, 0x95, 0xd9, 0x6c, 0xd2, - 0xf6, 0x51, 0x56, 0x21, 0x68, 0x11, 0x66, 0x5b, 0x87, 0x26, 0xf1, 0x4f, 0x3b, 0x34, 0x3f, 0xc5, - 0xfa, 0x2e, 0xb4, 0x0e, 0x4d, 0xe3, 0xb4, 0x43, 0xd1, 0x0a, 0x40, 0xd3, 0x39, 0xb2, 0xdb, 0xe4, - 0xb0, 0xe9, 0x9c, 0xe4, 0xa7, 0x59, 0xe7, 0x45, 0xd6, 0xb2, 0xd3, 0x74, 0x4e, 0x38, 0x7e, 0x4c, - 0x1b, 0xce, 0x31, 0x75, 0x4f, 0x65, 0xc7, 0xa2, 0x9e, 0xec, 0xb4, 0x7d, 0xbb, 0xdd, 0xa5, 0x19, - 0x07, 0xe5, 0x03, 0x58, 0x19, 0x11, 0xd0, 0x39, 0xcd, 0xc8, 0xfc, 0x21, 0xdc, 0x1e, 0x62, 0xae, - 0xb9, 0x76, 0xdb, 0xcf, 0xc8, 0x5d, 0x00, 0xb1, 0x68, 0x7b, 0x8c, 0xb9, 0x42, 0x7d, 0xd3, 0x32, - 0x7d, 0x13, 0xcd, 0xc1, 0x94, 0x6d, 0x85, 0x94, 0x53, 0xb6, 0x55, 0x30, 0x21, 0x1f, 0xd1, 0x44, - 0x73, 0xa0, 0x47, 0xab, 0xc0, 0xac, 0x1b, 0xb6, 0x31, 0x8e, 0xb9, 0xad, 0xc7, 0x1b, 0x63, 0xe6, - 0xfb, 0xc6, 0xb0, 0x10, 0xdc, 0x63, 0x2d, 0xbc, 0x06, 0x14, 0xf5, 0xea, 0x3e, 0xed, 0xe8, 0xbe, - 0xe9, 0x77, 0x3d, 0xf4, 0x11, 0x9c, 0xf7, 0xd8, 0xa7, 0x50, 0xf4, 0xc3, 0x54, 0xd1, 0x9c, 0x11, - 0x87, 0x6c, 0xc1, 0x5a, 0xa2, 0xae, 0xeb, 0xb8, 0xe1, 0x80, 0xf2, 0x2f, 0x85, 0xbf, 0x10, 0x60, - 0xbe, 0xae, 0xc6, 0x58, 0x5c, 0x9f, 0x5a, 0xdc, 0x55, 0x0a, 0xcc, 0xb6, 0x42, 0xd3, 0x98, 0xce, - 0x4b, 0x19, 0xcc, 0x89, 0x7c, 0x81, 0x7b, 0xac, 0x48, 0xee, 0x01, 0x9f, 0x62, 0x42, 0x9e, 0x64, - 0x00, 0x1e, 0x59, 0x1d, 0x81, 0x2f, 0xfc, 0xb7, 0x00, 0x6b, 0x7d, 0x98, 0x91, 0xd3, 0x74, 0xda, - 0xa4, 0x8d, 0x60, 0x85, 0xbc, 0x51, 0xc0, 0x95, 0xd8, 0x30, 0x72, 0xc8, 0x4f, 0x33, 0x0f, 0x63, - 0x5f, 0x5c, 0x24, 0x22, 0x66, 0xff, 0xf4, 0xd7, 0xb7, 0xff, 0xd7, 0xa7, 0x82, 0x20, 0x14, 0x11, - 0xa8, 0x6d, 0x9f, 0x1e, 0xb9, 0x66, 0x60, 0xb9, 0xf4, 0x52, 0xd7, 0xd4, 0xa2, 0x2c, 0x3b, 0xed, - 0x36, 0x6d, 0xf8, 0x67, 0xde, 0x0f, 0x3f, 0x9d, 0x8a, 0xcf, 0x83, 0xa2, 0xe9, 0x9b, 0x07, 0xa6, - 0x47, 0x71, 0x51, 0x57, 0xda, 0xae, 0xd3, 0x6c, 0x9e, 0x75, 0xfb, 0xd1, 0x73, 0xc8, 0x7b, 0x6c, - 0xd2, 0x53, 0x8b, 0x44, 0x92, 0x3d, 0xd2, 0x70, 0xba, 0x6d, 0x3f, 0x7f, 0x6e, 0x4d, 0x78, 0x34, - 0x8d, 0xe7, 0xa3, 0xfe, 0x08, 0x8a, 0x27, 0x07, 0xbd, 0x85, 0x8f, 0x21, 0x5f, 0x57, 0x65, 0xb3, - 0xd9, 0x34, 0x1c, 0x89, 0xad, 0x99, 0x58, 0x50, 0xdc, 0x80, 0xe9, 0x46, 0xe8, 0xab, 0xb9, 0xad, - 0x5b, 0x63, 0x71, 0xc9, 0x86, 0x84, 0x03, 0xc2, 0xc2, 0x6f, 0xcf, 0xc0, 0xad, 0xd8, 0x28, 0xd0, - 0x4e, 0xd3, 0x39, 0xd5, 0xa9, 0x7b, 0x6c, 0x37, 0xe8, 0x99, 0x1f, 0x81, 0x23, 0xb8, 0x62, 0x31, - 0x83, 0x49, 0x8b, 0xfa, 0xaf, 0x1c, 0x8b, 0xb9, 0x7d, 0x6e, 0x6b, 0x7b, 0xac, 0xac, 0x49, 0x8e, - 0xda, 0xe0, 0x4d, 0x15, 0x26, 0x09, 0x5f, 0xb6, 0x62, 0xdf, 0x90, 0x09, 0x97, 0x42, 0x45, 0x6c, - 0x1b, 0x9e, 0x61, 0x6a, 0x7e, 0xee, 0xff, 0xa2, 0x26, 0xd8, 0xbf, 0x31, 0x58, 0xbd, 0xcf, 0x05, - 0x02, 0x97, 0xe3, 0x00, 0xd0, 0x0a, 0x2c, 0x16, 0x95, 0x5a, 0x59, 0xdb, 0x27, 0x15, 0xc5, 0x28, - 0x69, 0x45, 0x52, 0xaf, 0xea, 0x35, 0x45, 0x56, 0x77, 0x54, 0xa5, 0x28, 0xe6, 0xd0, 0x3c, 0xa0, - 0xc1, 0x6e, 0xa9, 0x6e, 0x68, 0xa2, 0x80, 0xf2, 0x70, 0x63, 0xb0, 0xbd, 0x22, 0x55, 0xeb, 0x52, - 0x59, 0x9c, 0x2a, 0x50, 0x80, 0xbe, 0x6a, 0xb4, 0x0c, 0x0b, 0x21, 0x9d, 0xb1, 0x5f, 0x53, 0x86, - 0x84, 0xdf, 0x86, 0xa5, 0x78, 0xa7, 0x5a, 0xd5, 0x0d, 0xa9, 0x5c, 0x26, 0xba, 0x8c, 0xd5, 0x9a, - 0x21, 0x0a, 0x68, 0x09, 0xe6, 0xe3, 0xfd, 0x52, 0x45, 0xfa, 0x54, 0xab, 0x12, 0x45, 0xd6, 0xc5, - 0xa9, 0xc2, 0x7f, 0x09, 0xb0, 0x9a, 0x10, 0x15, 0xc2, 0xd3, 0xcf, 0x99, 0x0f, 0x8a, 0xbf, 0x3c, - 0x05, 0xf7, 0x46, 0xcd, 0x97, 0x9d, 0xf6, 0xa1, 0x7d, 0xd4, 0x75, 0x69, 0xc5, 0x28, 0xeb, 0x67, - 0xde, 0x07, 0xbf, 0x33, 0x05, 0x4f, 0xe3, 0x4b, 0xc0, 0x7b, 0xed, 0x3b, 0x9d, 0x20, 0xd0, 0x1d, - 0xd3, 0xa2, 0xed, 0xd2, 0x86, 0xef, 0xb8, 0xa7, 0x86, 0xe3, 0x34, 0x3d, 0xb5, 0xed, 0xf9, 0xe6, - 0xd9, 0xdf, 0x29, 0x0a, 0x5f, 0x4c, 0xc1, 0x46, 0x9a, 0x43, 0x7a, 0x53, 0xe4, 0xcc, 0x7b, 0xe3, - 0xaf, 0xa7, 0xe0, 0x41, 0xdf, 0x1b, 0x52, 0xd7, 0x77, 0xa2, 0xcf, 0xb1, 0x8d, 0xf2, 0xcc, 0xef, - 0x5d, 0x0f, 0xe1, 0x6a, 0xf2, 0xa1, 0x61, 0xce, 0x1d, 0x3c, 0x2c, 0xfc, 0xd2, 0x54, 0x70, 0x35, - 0x8e, 0x24, 0x29, 0xf2, 0x16, 0x5b, 0x35, 0xed, 0x6f, 0xd3, 0x89, 0xfb, 0x3f, 0x04, 0x58, 0x1c, - 0xde, 0x53, 0x15, 0x55, 0x56, 0xbe, 0x65, 0x86, 0xcb, 0x2e, 0x35, 0x7d, 0x5a, 0x75, 0xac, 0xb3, - 0x1f, 0x23, 0x7e, 0x63, 0x0a, 0x1e, 0x4f, 0xd8, 0x46, 0x55, 0xa9, 0x52, 0x73, 0x9a, 0x76, 0xe3, - 0xf4, 0xcc, 0x3b, 0xe2, 0x7f, 0x04, 0x28, 0xf4, 0x1d, 0x51, 0x73, 0xed, 0x76, 0xc3, 0xee, 0x98, - 0x4d, 0xef, 0xdb, 0xb3, 0x5d, 0xfc, 0xa7, 0x00, 0x2b, 0x7d, 0x0f, 0x18, 0xd4, 0xf3, 0xc3, 0x0b, + 0xa0, 0x68, 0xd1, 0x16, 0xe8, 0x43, 0x81, 0x3e, 0x15, 0x17, 0x7d, 0x6c, 0x9f, 0xfa, 0x58, 0xa0, + 0x8f, 0x7d, 0x29, 0xf6, 0x1f, 0xe8, 0x53, 0xfb, 0x50, 0xb4, 0x68, 0xc1, 0x19, 0x52, 0xa2, 0x24, + 0x4a, 0xe4, 0x6e, 0xb3, 0xb8, 0x80, 0xf7, 0x4d, 0x9a, 0x39, 0x3f, 0x3e, 0x73, 0xe6, 0xcc, 0x99, + 0x1f, 0xe7, 0x48, 0xf0, 0xd8, 0xa7, 0x2d, 0x7a, 0xe4, 0xb8, 0xfe, 0x46, 0xd7, 0x33, 0x0f, 0x29, + 0x3d, 0xa6, 0x1d, 0xdf, 0xdb, 0x38, 0x7e, 0x1a, 0xff, 0xba, 0x7e, 0xe4, 0x3a, 0xbe, 0x83, 0xe6, + 0x23, 0xd2, 0xf5, 0x78, 0xdf, 0xf1, 0xd3, 0xe2, 0x1a, 0xa0, 0x86, 0xba, 0x65, 0x76, 0x3a, 0xd4, + 0x95, 0x5b, 0x76, 0xf3, 0xb5, 0x12, 0xf4, 0xa0, 0x1b, 0x30, 0x6d, 0xb6, 0xa8, 0xeb, 0x17, 0x84, + 0x55, 0xe1, 0xd1, 0x45, 0xcc, 0xbf, 0x14, 0xb7, 0xe1, 0x51, 0x43, 0xd5, 0x3a, 0xfb, 0x8e, 0xe9, + 0x5a, 0xb2, 0xd3, 0x3e, 0x6a, 0x51, 0x9f, 0xee, 0x38, 0x86, 0x53, 0x32, 0xbd, 0x57, 0xbc, 0xb1, + 0x2f, 0x61, 0x11, 0x66, 0xba, 0x1e, 0x75, 0x3b, 0x66, 0x9b, 0x86, 0x42, 0x7a, 0xdf, 0x8b, 0xf7, + 0xe1, 0x6e, 0x4f, 0x8e, 0x64, 0x59, 0xdb, 0xb6, 0xeb, 0xf9, 0x98, 0x7a, 0x4e, 0xd7, 0x6d, 0xd2, + 0xbe, 0x88, 0xe2, 0x5a, 0x4c, 0xdd, 0x30, 0x59, 0xc5, 0xf4, 0xe3, 0x80, 0x8b, 0x1f, 0xc1, 0x9d, + 0x1e, 0xad, 0x4e, 0x7d, 0xd9, 0xa5, 0x16, 0xed, 0xf8, 0xb6, 0xd9, 0xd2, 0xbb, 0xfb, 0x6d, 0xdb, + 0x4f, 0xc7, 0x14, 0x17, 0xf0, 0x49, 0x97, 0x7a, 0xbe, 0xed, 0x74, 0x3a, 0xa6, 0xed, 0xd2, 0xac, + 0x02, 0x7e, 0x11, 0xee, 0xf7, 0x04, 0x60, 0x7a, 0x68, 0x7b, 0x01, 0xc0, 0x57, 0x66, 0xab, 0x45, + 0x3b, 0x87, 0x59, 0x85, 0xa0, 0x05, 0x98, 0x69, 0x1f, 0x98, 0xc4, 0x3f, 0x3d, 0xa2, 0x85, 0x3c, + 0xeb, 0xbb, 0xd0, 0x3e, 0x30, 0x8d, 0xd3, 0x23, 0x8a, 0x96, 0x01, 0x5a, 0xce, 0xa1, 0xdd, 0x21, + 0x07, 0x2d, 0xe7, 0xa4, 0x30, 0xc5, 0x3a, 0x2f, 0xb2, 0x96, 0xed, 0x96, 0x73, 0xc2, 0xf1, 0x63, + 0xda, 0x74, 0x8e, 0xa9, 0x7b, 0x2a, 0x3b, 0x16, 0xf5, 0x64, 0xa7, 0xe3, 0xdb, 0x9d, 0x2e, 0xcd, + 0x38, 0x29, 0x1f, 0xc0, 0xf2, 0x88, 0x80, 0xa3, 0xd3, 0x8c, 0xcc, 0x1f, 0xc2, 0xed, 0x21, 0xe6, + 0xba, 0x6b, 0x77, 0xfc, 0x8c, 0xdc, 0x45, 0x10, 0x4b, 0xb6, 0xc7, 0x98, 0xab, 0xd4, 0x37, 0x2d, + 0xd3, 0x37, 0xd1, 0x2c, 0xe4, 0x6d, 0x2b, 0xa4, 0xcc, 0xdb, 0x56, 0xd1, 0x84, 0x42, 0x44, 0x13, + 0xf9, 0x40, 0x8f, 0x56, 0x81, 0x19, 0x37, 0x6c, 0x63, 0x1c, 0xb3, 0x9b, 0x8f, 0xd7, 0xc7, 0xf8, + 0xfb, 0xfa, 0xb0, 0x10, 0xdc, 0x63, 0x2d, 0xbe, 0x06, 0x14, 0xf5, 0xea, 0x3e, 0x3d, 0xd2, 0x7d, + 0xd3, 0xef, 0x7a, 0xe8, 0x23, 0x38, 0xef, 0xb1, 0x4f, 0xa1, 0xe8, 0x87, 0xa9, 0xa2, 0x39, 0x23, + 0x0e, 0xd9, 0x82, 0xb5, 0x44, 0x5d, 0xd7, 0x71, 0xc3, 0x09, 0xe5, 0x5f, 0x8a, 0x7f, 0x21, 0xc0, + 0x5c, 0x43, 0x8d, 0xb1, 0xb8, 0x3e, 0xb5, 0xb8, 0xa9, 0x14, 0x98, 0x69, 0x87, 0x43, 0x63, 0x3a, + 0x2f, 0x65, 0x18, 0x4e, 0x64, 0x0b, 0xdc, 0x63, 0x45, 0x72, 0x0f, 0x78, 0x9e, 0x09, 0x79, 0x92, + 0x01, 0x78, 0x34, 0xea, 0x08, 0x7c, 0xf1, 0xbf, 0x05, 0x58, 0xed, 0xc3, 0x8c, 0x8c, 0xa6, 0xd3, + 0x16, 0x6d, 0x06, 0x2b, 0xe4, 0x8d, 0x02, 0xae, 0xc6, 0xa6, 0x91, 0x43, 0x7e, 0x9a, 0x79, 0x1a, + 0xfb, 0xe2, 0x22, 0x11, 0xb1, 0xf1, 0x4f, 0x7d, 0xfd, 0xf1, 0xff, 0x7a, 0x3e, 0x08, 0x42, 0x11, + 0x81, 0xda, 0xf1, 0xe9, 0xa1, 0x6b, 0x06, 0x23, 0x97, 0x5e, 0xea, 0x9a, 0x5a, 0x92, 0x65, 0xa7, + 0xd3, 0xa1, 0x4d, 0xff, 0xcc, 0xdb, 0xe1, 0xa7, 0xf9, 0xb8, 0x1f, 0x94, 0x4c, 0xdf, 0xdc, 0x37, + 0x3d, 0x8a, 0x4b, 0xba, 0xd2, 0x71, 0x9d, 0x56, 0xeb, 0xac, 0x8f, 0x1f, 0x3d, 0x87, 0x82, 0xc7, + 0x9c, 0x9e, 0x5a, 0x24, 0x92, 0xec, 0x91, 0xa6, 0xd3, 0xed, 0xf8, 0x85, 0x73, 0xab, 0xc2, 0xa3, + 0x29, 0x3c, 0x17, 0xf5, 0x47, 0x50, 0x3c, 0x39, 0xe8, 0x2d, 0x7e, 0x0c, 0x85, 0x86, 0x2a, 0x9b, + 0xad, 0x96, 0xe1, 0x48, 0x6c, 0xcd, 0xc4, 0x82, 0xe2, 0x3a, 0x4c, 0x35, 0x43, 0x5b, 0xcd, 0x6e, + 0xde, 0x1a, 0x8b, 0x4b, 0x36, 0x24, 0x1c, 0x10, 0x16, 0x7f, 0x7b, 0x1a, 0x6e, 0xc5, 0x66, 0x81, + 0x1e, 0xb5, 0x9c, 0x53, 0x9d, 0xba, 0xc7, 0x76, 0x93, 0x9e, 0xf9, 0x19, 0x38, 0x84, 0x2b, 0x16, + 0x1b, 0x30, 0x69, 0x53, 0xff, 0x95, 0x63, 0x31, 0xb3, 0xcf, 0x6e, 0x6e, 0x8d, 0x95, 0x35, 0xc9, + 0x50, 0xeb, 0xbc, 0xa9, 0xca, 0x24, 0xe1, 0xcb, 0x56, 0xec, 0x1b, 0x32, 0xe1, 0x52, 0xa8, 0x88, + 0x6d, 0xc3, 0xd3, 0x4c, 0xcd, 0xcf, 0xfd, 0x5f, 0xd4, 0x04, 0xfb, 0x37, 0x06, 0xab, 0xf7, 0xb9, + 0x48, 0xe0, 0x72, 0x1c, 0x00, 0x5a, 0x86, 0x85, 0x92, 0x52, 0xaf, 0x68, 0x7b, 0xa4, 0xaa, 0x18, + 0x65, 0xad, 0x44, 0x1a, 0x35, 0xbd, 0xae, 0xc8, 0xea, 0xb6, 0xaa, 0x94, 0xc4, 0x1c, 0x9a, 0x03, + 0x34, 0xd8, 0x2d, 0x35, 0x0c, 0x4d, 0x14, 0x50, 0x01, 0x6e, 0x0c, 0xb6, 0x57, 0xa5, 0x5a, 0x43, + 0xaa, 0x88, 0xf9, 0x22, 0x05, 0xe8, 0xab, 0x46, 0x4b, 0x30, 0x1f, 0xd2, 0x19, 0x7b, 0x75, 0x65, + 0x48, 0xf8, 0x6d, 0x58, 0x8c, 0x77, 0xaa, 0x35, 0xdd, 0x90, 0x2a, 0x15, 0xa2, 0xcb, 0x58, 0xad, + 0x1b, 0xa2, 0x80, 0x16, 0x61, 0x2e, 0xde, 0x2f, 0x55, 0xa5, 0x4f, 0xb5, 0x1a, 0x51, 0x64, 0x5d, + 0xcc, 0x17, 0xff, 0x4b, 0x80, 0x95, 0x84, 0xa8, 0x10, 0x9e, 0x7e, 0xce, 0x7c, 0x50, 0xfc, 0xe5, + 0x3c, 0xdc, 0x1b, 0x1d, 0xbe, 0xec, 0x74, 0x0e, 0xec, 0xc3, 0xae, 0x4b, 0xab, 0x46, 0x45, 0x3f, + 0xf3, 0x36, 0xf8, 0x9d, 0x3c, 0x3c, 0x8d, 0x2f, 0x01, 0xef, 0xb5, 0xef, 0x1c, 0x05, 0x81, 0xee, + 0x98, 0x96, 0x6c, 0x97, 0x36, 0x7d, 0xc7, 0x3d, 0x35, 0x1c, 0xa7, 0xe5, 0xa9, 0x1d, 0xcf, 0x37, + 0xcf, 0xfe, 0x4e, 0x51, 0xfc, 0x22, 0x0f, 0xeb, 0x69, 0x06, 0xe9, 0xb9, 0xc8, 0x99, 0xb7, 0xc6, + 0x5f, 0xe7, 0xe1, 0x41, 0xdf, 0x1a, 0x52, 0xd7, 0x77, 0xa2, 0xcf, 0xb1, 0x8d, 0xf2, 0xcc, 0xef, + 0x5d, 0x0f, 0xe1, 0x6a, 0xf2, 0xa1, 0x61, 0xd6, 0x1d, 0x3c, 0x2c, 0xfc, 0x52, 0x3e, 0xb8, 0x1a, + 0x47, 0x92, 0x14, 0x79, 0x93, 0xad, 0x9a, 0xce, 0xb7, 0xe9, 0xc4, 0xfd, 0x1f, 0x02, 0x2c, 0x0c, + 0xef, 0xa9, 0x8a, 0x2a, 0x2b, 0xdf, 0xb2, 0x81, 0xcb, 0x2e, 0x35, 0x7d, 0x5a, 0x73, 0xac, 0xb3, + 0x1f, 0x23, 0x7e, 0x23, 0x0f, 0x8f, 0x27, 0x6c, 0xa3, 0xaa, 0x54, 0xad, 0x3b, 0x2d, 0xbb, 0x79, + 0x7a, 0xe6, 0x0d, 0xf1, 0x3f, 0x02, 0x14, 0xfb, 0x86, 0xa8, 0xbb, 0x76, 0xa7, 0x69, 0x1f, 0x99, + 0x2d, 0xef, 0xdb, 0xb3, 0x5d, 0xfc, 0xa7, 0x00, 0xcb, 0x7d, 0x0b, 0x18, 0xd4, 0xf3, 0xc3, 0x0b, 0xf6, 0xb7, 0x21, 0xf2, 0xfd, 0xbb, 0x10, 0x5c, 0x15, 0x7b, 0x01, 0x20, 0x7c, 0x60, 0xb5, 0xce, - 0xbc, 0xdd, 0xcb, 0x41, 0xdc, 0x0b, 0xe3, 0x1d, 0x3d, 0xc1, 0x4e, 0x33, 0xfe, 0x08, 0xbc, 0x1a, - 0x4c, 0x88, 0x81, 0x4e, 0xdd, 0x3c, 0x8e, 0x13, 0xdc, 0x09, 0xae, 0x20, 0x83, 0xdc, 0xc1, 0x86, - 0xd9, 0x8c, 0x91, 0xbc, 0x05, 0xeb, 0x43, 0x24, 0x2f, 0x6c, 0x7a, 0x52, 0x74, 0x1a, 0xdd, 0x16, - 0x6d, 0xfb, 0xe6, 0xe0, 0xa5, 0xbc, 0xf0, 0xb7, 0x02, 0xdc, 0x94, 0x3c, 0xcf, 0x0e, 0xe6, 0x1e, - 0x1b, 0x82, 0xde, 0xdc, 0x7b, 0x08, 0x57, 0x1b, 0x4e, 0xfb, 0x98, 0xba, 0x1e, 0xe3, 0x21, 0xbd, - 0x07, 0xca, 0xb9, 0x78, 0xb3, 0x6a, 0xa1, 0x3b, 0x70, 0xd9, 0x77, 0x7c, 0xb3, 0x49, 0x7c, 0xe7, - 0x35, 0x6d, 0xf3, 0x07, 0xb8, 0x69, 0x7c, 0x89, 0xb5, 0x19, 0xac, 0x09, 0xdd, 0x85, 0x2b, 0x1d, - 0xd7, 0x69, 0x75, 0xfc, 0x88, 0x66, 0x9a, 0xd1, 0x5c, 0xe6, 0x8d, 0x21, 0xd1, 0x13, 0xb8, 0xd6, - 0xe8, 0x61, 0x88, 0x08, 0xf9, 0xc9, 0x41, 0xec, 0x77, 0x70, 0xe2, 0xc2, 0x3f, 0x09, 0x70, 0x83, - 0xe3, 0x56, 0x3e, 0xa7, 0x8d, 0xee, 0xd7, 0x80, 0xbd, 0x02, 0xd0, 0x76, 0x2c, 0x1a, 0x9e, 0x50, - 0x38, 0xe8, 0x8b, 0x41, 0x0b, 0x3b, 0x9c, 0x8c, 0x58, 0x35, 0x9d, 0xc1, 0xaa, 0x73, 0x59, 0xad, - 0x9a, 0x19, 0x63, 0xd5, 0x73, 0x58, 0xe2, 0x46, 0x55, 0xe9, 0x89, 0x1c, 0x83, 0xdb, 0x7b, 0x55, - 0x6e, 0x98, 0x3e, 0x3d, 0x72, 0xdc, 0xd3, 0xe8, 0x55, 0x39, 0xfa, 0x5e, 0xf8, 0x1b, 0x01, 0xae, - 0x73, 0x56, 0xa9, 0xd1, 0xa0, 0x9e, 0x87, 0xe9, 0x67, 0x5d, 0xea, 0xf9, 0x01, 0xc6, 0x68, 0xfe, - 0xf2, 0x1b, 0x3e, 0x67, 0xbc, 0x1c, 0x35, 0xb2, 0x2b, 0xf3, 0xcf, 0x64, 0x04, 0x7f, 0x22, 0xc0, - 0xe5, 0x08, 0x71, 0xd0, 0x8c, 0xe6, 0xe1, 0xbc, 0xc9, 0x3e, 0x85, 0x18, 0xc3, 0x6f, 0x3f, 0x1b, - 0x74, 0xf7, 0x00, 0x71, 0x47, 0x96, 0x6d, 0xcf, 0x1f, 0xfb, 0x4e, 0xff, 0x03, 0x10, 0xfb, 0x54, - 0x7c, 0xcd, 0xa1, 0xdd, 0x91, 0xd8, 0x35, 0x3e, 0x4e, 0x8c, 0xaa, 0xe8, 0x47, 0xaf, 0x41, 0xe1, - 0xf5, 0x8e, 0xf5, 0xcd, 0x09, 0x2f, 0xd2, 0x20, 0xf6, 0xbe, 0x39, 0xe1, 0x26, 0xcc, 0xc7, 0xfb, - 0x5b, 0x07, 0xd1, 0x09, 0xef, 0x1b, 0x55, 0xf1, 0xa6, 0x5d, 0x94, 0xa0, 0xe2, 0x4d, 0x3b, 0xea, - 0xe7, 0xe3, 0x2a, 0x76, 0x5d, 0xb3, 0xed, 0x7b, 0x86, 0x53, 0xf7, 0xa8, 0x8b, 0x36, 0xe0, 0x3a, - 0x0b, 0x4c, 0xc4, 0x75, 0x9a, 0xd4, 0x23, 0x47, 0x41, 0x1f, 0xe5, 0x53, 0x6f, 0x06, 0x5f, 0x63, - 0x5d, 0x41, 0x68, 0xf7, 0x76, 0x79, 0x07, 0x7a, 0x07, 0x6e, 0x70, 0x7a, 0xdf, 0x35, 0x6d, 0xbf, - 0xcf, 0x30, 0xc5, 0x18, 0x10, 0xeb, 0x33, 0x58, 0x57, 0xc8, 0x51, 0xf8, 0x83, 0xe9, 0xb8, 0x72, - 0x4c, 0x8f, 0x6d, 0x7a, 0xf2, 0x86, 0x47, 0x09, 0x3d, 0x87, 0x45, 0xcb, 0x3c, 0xf5, 0x48, 0xc7, - 0xf4, 0x7c, 0xd2, 0xa6, 0x9f, 0xfb, 0xc4, 0xec, 0x5a, 0xb6, 0x4f, 0x82, 0x81, 0x0a, 0xa1, 0xdd, - 0x0c, 0x08, 0x6a, 0x66, 0x10, 0xf2, 0x3e, 0xf7, 0xa5, 0xa0, 0xb7, 0x18, 0x40, 0xd8, 0x81, 0xd5, - 0x16, 0x73, 0xb9, 0xf7, 0xca, 0xee, 0x10, 0x97, 0x7e, 0xd6, 0xb5, 0x5d, 0x1a, 0x6c, 0x60, 0x1e, - 0x69, 0xbc, 0x32, 0xdb, 0x47, 0xd4, 0x62, 0x6b, 0x7c, 0x16, 0xaf, 0xf4, 0xc9, 0x70, 0x8c, 0x4a, - 0xe6, 0x44, 0xe8, 0x39, 0xe4, 0x5d, 0x66, 0x1a, 0x39, 0x0c, 0x84, 0xd0, 0x76, 0xe3, 0xb4, 0x27, - 0xe0, 0x1c, 0x13, 0x30, 0xcf, 0xfb, 0x77, 0xa2, 0xee, 0x88, 0xf3, 0x43, 0x58, 0x0e, 0x39, 0x2d, - 0xf3, 0x94, 0x38, 0x87, 0xa4, 0xe5, 0xb4, 0xfd, 0x57, 0x3d, 0xe6, 0x19, 0xc6, 0xbc, 0xc0, 0x49, - 0x8a, 0xe6, 0xa9, 0x76, 0x58, 0x09, 0xfa, 0x23, 0xee, 0xef, 0xc2, 0x62, 0xbb, 0x1b, 0x00, 0x0b, - 0x38, 0x5d, 0xda, 0x72, 0x8e, 0xa9, 0x45, 0x42, 0xa8, 0xf9, 0xf3, 0xcc, 0xf2, 0x79, 0x4e, 0xa0, - 0x1d, 0x62, 0xde, 0xcd, 0xa7, 0x98, 0x57, 0xf8, 0x7d, 0x61, 0x74, 0x60, 0xde, 0xf0, 0xc4, 0x43, - 0x4f, 0xe1, 0xa6, 0xc9, 0xfa, 0x49, 0xd3, 0xf6, 0x7c, 0x12, 0x1a, 0x6a, 0x5b, 0x61, 0xda, 0x0e, - 0x99, 0x43, 0xfa, 0x55, 0xab, 0xf0, 0x63, 0x01, 0x16, 0x63, 0x29, 0x21, 0x9e, 0x0a, 0x19, 0x17, - 0x19, 0xd1, 0x36, 0x9c, 0x7b, 0x6d, 0xb7, 0xb9, 0xbc, 0xb9, 0xad, 0x8d, 0xb1, 0x28, 0x47, 0x24, - 0xee, 0xd9, 0x6d, 0x0b, 0x33, 0x5e, 0xb4, 0x0c, 0x17, 0xbb, 0x1e, 0x75, 0x09, 0x4b, 0xa3, 0x4e, - 0xf7, 0xd3, 0xa8, 0x55, 0xb3, 0x45, 0x0b, 0x4e, 0x70, 0x54, 0x1a, 0xe1, 0x66, 0xa9, 0x45, 0xbe, - 0x5b, 0x56, 0x47, 0x7c, 0xb5, 0x95, 0x1d, 0x45, 0xc2, 0x5a, 0x75, 0x61, 0x2d, 0x41, 0x61, 0x74, - 0x70, 0xfd, 0x66, 0x74, 0xfe, 0xb3, 0x00, 0xd7, 0x7b, 0xb5, 0x02, 0x6c, 0x6d, 0x72, 0x3d, 0x99, - 0x76, 0xf5, 0xd8, 0x3b, 0x0c, 0x71, 0x5c, 0xfb, 0xc8, 0x6e, 0x87, 0xa3, 0xdb, 0x7b, 0x87, 0xd1, - 0x58, 0x2b, 0xba, 0x0f, 0x73, 0x8d, 0xa6, 0xd3, 0xb5, 0x48, 0xc7, 0x75, 0x8e, 0x6d, 0x8b, 0xba, - 0xa1, 0xb3, 0xaf, 0xb0, 0xd6, 0x5a, 0xd8, 0x88, 0x34, 0x98, 0xb5, 0xc2, 0xeb, 0x2a, 0x5b, 0x3a, - 0x97, 0xb6, 0x9e, 0xa5, 0x1e, 0x80, 0xa9, 0x15, 0xdd, 0x70, 0xfb, 0xd6, 0x45, 0x42, 0x0a, 0x2f, - 0x60, 0x69, 0x3c, 0x1d, 0x5a, 0x80, 0x0b, 0xd6, 0x41, 0xdc, 0xba, 0xf3, 0xd6, 0x01, 0xb3, 0x6b, - 0x15, 0x2e, 0x59, 0x07, 0x84, 0x55, 0x7a, 0x34, 0x9c, 0x66, 0x68, 0x13, 0x58, 0x07, 0xb5, 0xb0, - 0xa5, 0xf0, 0x6f, 0x02, 0x2c, 0xed, 0x50, 0xd3, 0xef, 0xba, 0x14, 0xd3, 0x86, 0xd3, 0x6a, 0xd1, - 0xb6, 0x15, 0x3b, 0x46, 0x0d, 0x4c, 0x2b, 0x61, 0x70, 0x5a, 0xa1, 0xef, 0xc1, 0x85, 0x43, 0xce, - 0x1a, 0x4e, 0xdd, 0xb5, 0xb1, 0x36, 0x46, 0x2a, 0x22, 0x06, 0xf4, 0x39, 0xac, 0x84, 0x1f, 0x89, - 0x3b, 0xa0, 0x97, 0xc4, 0xae, 0x0d, 0x73, 0x5b, 0xef, 0xa6, 0x4a, 0x1c, 0x60, 0x0e, 0xef, 0x0f, - 0xcb, 0x87, 0xe3, 0x3b, 0x0b, 0x27, 0x70, 0xc3, 0x90, 0x76, 0xf9, 0x49, 0x98, 0x7e, 0xd2, 0xa5, - 0x6e, 0xf8, 0x7c, 0xb0, 0x0a, 0xfc, 0x98, 0x44, 0x82, 0x73, 0x2d, 0xcf, 0xe9, 0x4f, 0x63, 0x60, - 0x4d, 0xd5, 0xa0, 0xa5, 0x4f, 0x40, 0xad, 0x23, 0x1a, 0x1d, 0xad, 0x38, 0x81, 0x12, 0xb4, 0x04, - 0xa7, 0x64, 0xdb, 0x23, 0x5e, 0x97, 0xc5, 0x83, 0x30, 0xe4, 0x5e, 0xb4, 0x3d, 0x9d, 0x37, 0x14, - 0x76, 0xe0, 0x96, 0x4e, 0x1b, 0x5d, 0xd7, 0xf6, 0x4f, 0x31, 0x33, 0x69, 0x97, 0xfa, 0x98, 0x7a, - 0xdd, 0x66, 0xb8, 0x08, 0x11, 0x9c, 0x8b, 0xb9, 0x99, 0x7d, 0x0e, 0xda, 0x82, 0x98, 0x1f, 0xc6, - 0x7f, 0xf6, 0xb9, 0xf0, 0x2f, 0xcf, 0xe0, 0x6a, 0x3d, 0x70, 0x06, 0x63, 0xd3, 0xda, 0x54, 0x3b, - 0x44, 0x75, 0xb8, 0xda, 0xb5, 0xc9, 0x01, 0xab, 0xd6, 0x21, 0x8d, 0xe0, 0xca, 0x92, 0x1a, 0xf3, - 0x46, 0x8b, 0x7b, 0x4a, 0x39, 0x7c, 0xa5, 0x6b, 0xc7, 0x5a, 0xd1, 0x4f, 0x04, 0x78, 0xdc, 0xb5, - 0x89, 0xc3, 0x8b, 0x57, 0x48, 0x78, 0xf2, 0xa3, 0xe4, 0xc8, 0x21, 0xbe, 0x43, 0xac, 0xa8, 0xba, - 0x27, 0xd4, 0xc8, 0x6f, 0x7a, 0xd2, 0x04, 0x8d, 0xd9, 0x4a, 0x84, 0x4a, 0x39, 0x7c, 0xb7, 0x6b, - 0xa7, 0xd2, 0xa2, 0x2f, 0x04, 0xb8, 0x1b, 0x43, 0x67, 0x5a, 0x16, 0x39, 0xb4, 0x5d, 0x16, 0xa2, - 0xc3, 0xa5, 0xcc, 0x71, 0xf1, 0x05, 0xf8, 0x61, 0x3a, 0xae, 0xf1, 0x25, 0x47, 0xa5, 0x1c, 0xbe, - 0xdd, 0x83, 0x94, 0x48, 0x36, 0xec, 0xab, 0x04, 0x34, 0x4d, 0xd3, 0xef, 0x8d, 0xce, 0x4c, 0x56, - 0x5f, 0xa5, 0xd4, 0x37, 0x0d, 0xf8, 0x6a, 0x3c, 0x2d, 0xfa, 0x35, 0x01, 0xd6, 0x62, 0xe8, 0x3c, - 0xea, 0x93, 0x46, 0xaf, 0x14, 0x8a, 0x78, 0xac, 0x0a, 0x89, 0xed, 0xb5, 0x97, 0xb6, 0xbe, 0x97, - 0x0e, 0x6a, 0x5c, 0x21, 0x55, 0x29, 0x87, 0x6f, 0xf5, 0xd0, 0x24, 0x10, 0xa1, 0xdf, 0x15, 0xe0, - 0x5e, 0x0c, 0x86, 0x1b, 0x26, 0x04, 0x83, 0x93, 0x02, 0xaf, 0x87, 0x8a, 0xa0, 0x5c, 0x60, 0x50, - 0xfe, 0x7f, 0x3a, 0x94, 0x49, 0x15, 0x55, 0xa5, 0x1c, 0x5e, 0xeb, 0xc1, 0x19, 0x43, 0x18, 0x79, - 0xc6, 0x0d, 0x6b, 0x94, 0x48, 0x23, 0x58, 0xec, 0xa4, 0x11, 0xd6, 0x48, 0x85, 0xc3, 0x35, 0x9b, - 0xea, 0x99, 0x94, 0x0a, 0x2b, 0xee, 0x99, 0xf1, 0x44, 0xe8, 0x73, 0xb8, 0x95, 0x84, 0xa2, 0x73, - 0x1a, 0x22, 0xb8, 0xc8, 0x10, 0x7c, 0x27, 0x3b, 0x82, 0x78, 0x89, 0x56, 0x29, 0x87, 0xf3, 0x23, - 0xda, 0x43, 0x02, 0xf4, 0x0b, 0xb0, 0x32, 0xaa, 0xb9, 0xe3, 0xda, 0x6d, 0x3f, 0x54, 0x0d, 0x4c, - 0xf5, 0xfb, 0x59, 0x55, 0x0f, 0x15, 0x78, 0x95, 0x72, 0x78, 0x71, 0x48, 0x77, 0x9f, 0x02, 0x35, - 0x61, 0xb1, 0x6b, 0x13, 0x2b, 0xdc, 0xda, 0x82, 0xe0, 0xef, 0xfa, 0xd4, 0x22, 0x4c, 0x78, 0xfe, - 0x12, 0x53, 0xbc, 0x99, 0x21, 0xc3, 0x1e, 0x2f, 0x93, 0x2a, 0xe5, 0xf0, 0x7c, 0xd7, 0x4e, 0x2c, - 0xa0, 0xfa, 0x82, 0x4f, 0xbf, 0x9e, 0xba, 0xde, 0xd2, 0xf4, 0xa2, 0x2c, 0x4a, 0xa8, 0xf9, 0x32, - 0xd3, 0xfc, 0xdd, 0x0c, 0x9a, 0x93, 0x2b, 0x9f, 0xf8, 0xcc, 0x4b, 0xa9, 0x8e, 0xfa, 0x11, 0x9b, - 0x78, 0x3d, 0x30, 0x61, 0x6d, 0x81, 0xc7, 0xcb, 0x04, 0x42, 0x20, 0x57, 0x18, 0x90, 0xf7, 0xbe, - 0x56, 0x91, 0x01, 0x9f, 0x73, 0x13, 0x8a, 0x42, 0x7e, 0x93, 0x07, 0xd0, 0x3e, 0x82, 0xf0, 0x5c, - 0xd1, 0x5f, 0x97, 0x1c, 0xc4, 0x1c, 0x03, 0xf1, 0x3c, 0x0b, 0x88, 0xa4, 0x4c, 0x7f, 0x29, 0x87, - 0x57, 0x63, 0x38, 0x12, 0x8b, 0x01, 0xfe, 0x88, 0x47, 0xcf, 0x51, 0x28, 0x8d, 0xe8, 0x89, 0x9b, - 0xb4, 0xfc, 0xa6, 0x17, 0x02, 0xba, 0xca, 0x00, 0xfd, 0xbf, 0xaf, 0x00, 0x68, 0x34, 0xf7, 0x5e, - 0xca, 0xe1, 0x7b, 0xa3, 0xa8, 0xfa, 0x74, 0x7e, 0x33, 0x4c, 0x3f, 0xfe, 0xbd, 0x00, 0xcf, 0x07, - 0xc7, 0x89, 0x65, 0x6e, 0x89, 0xc9, 0x52, 0xb7, 0xc4, 0x8a, 0x72, 0xb7, 0xc4, 0x77, 0x9c, 0xa6, - 0x47, 0x6c, 0x9e, 0xce, 0x0e, 0x91, 0x8a, 0x0c, 0xe9, 0xc7, 0x99, 0xc6, 0x2f, 0x53, 0x86, 0xbc, - 0x94, 0xc3, 0x4f, 0xe3, 0x83, 0x9a, 0x2d, 0xad, 0xfe, 0x53, 0x01, 0xde, 0xcd, 0x64, 0x43, 0xdf, - 0xdd, 0x1c, 0xff, 0x35, 0x86, 0x7f, 0xf7, 0x6b, 0xe3, 0x1f, 0xcc, 0x50, 0x94, 0x72, 0x78, 0x23, - 0x0d, 0xfc, 0x50, 0x4e, 0xe3, 0x4f, 0x04, 0x78, 0x12, 0x47, 0x6e, 0x76, 0x83, 0x93, 0x47, 0xef, - 0x28, 0x1c, 0xab, 0xb9, 0xe2, 0x80, 0x11, 0x03, 0xfc, 0x51, 0x06, 0xc0, 0x93, 0x72, 0xce, 0xa5, - 0x1c, 0x7e, 0xd0, 0x07, 0x3a, 0x31, 0x3b, 0xfd, 0x57, 0x02, 0x6c, 0xa6, 0xcc, 0x5c, 0xdb, 0x6c, - 0x91, 0x0e, 0xcb, 0x54, 0x85, 0x20, 0xaf, 0x33, 0x90, 0xdb, 0x5f, 0x67, 0xfe, 0x0e, 0x26, 0xbd, - 0x4a, 0x39, 0xfc, 0x78, 0xc2, 0x24, 0x56, 0xcd, 0x56, 0x3c, 0x43, 0xf6, 0x7b, 0x02, 0x3c, 0x88, - 0x43, 0xed, 0xf4, 0x12, 0x49, 0x23, 0xe3, 0x7e, 0x83, 0x21, 0xfc, 0x20, 0x03, 0xc2, 0x71, 0xd9, - 0xa8, 0x52, 0x0e, 0x17, 0xfa, 0xd0, 0xc6, 0xe6, 0xac, 0x7e, 0x45, 0x80, 0x3b, 0x71, 0x4c, 0x3e, - 0xf5, 0xfc, 0x00, 0x4d, 0x7b, 0x20, 0x1e, 0xdf, 0x4c, 0xdd, 0xfd, 0x26, 0xa4, 0x86, 0x4a, 0x39, - 0xbc, 0xd2, 0x47, 0x92, 0x94, 0x3b, 0x72, 0x61, 0x39, 0x8e, 0x21, 0x3a, 0xe7, 0x46, 0xfb, 0xd0, - 0x7c, 0x4a, 0x3e, 0x64, 0x5c, 0x6e, 0x86, 0x6f, 0xbb, 0x63, 0xf2, 0x36, 0x4d, 0xc8, 0x77, 0xed, - 0xe0, 0x10, 0x66, 0xfa, 0x94, 0xb4, 0xe9, 0x09, 0x7b, 0xbd, 0x0a, 0x77, 0xdc, 0x85, 0x94, 0xfb, - 0xf0, 0xd8, 0xac, 0x48, 0x29, 0x87, 0x6f, 0x74, 0xed, 0xd1, 0x4e, 0x74, 0xca, 0x36, 0xf9, 0x61, - 0x6d, 0x9e, 0x79, 0x1c, 0xa9, 0xcc, 0xa7, 0x7a, 0x78, 0x42, 0xae, 0x85, 0x1b, 0x9a, 0x4c, 0x80, - 0x7e, 0x04, 0xab, 0x49, 0x86, 0xb2, 0x5c, 0x4c, 0xa8, 0x7c, 0x31, 0x75, 0x83, 0x99, 0x98, 0xc7, - 0x29, 0xe5, 0xf0, 0xd2, 0xb0, 0xd5, 0x7d, 0x12, 0xf4, 0x67, 0x3c, 0x84, 0x0c, 0x23, 0xe0, 0xef, - 0x55, 0xf1, 0x5c, 0x4f, 0x88, 0x66, 0x89, 0xa1, 0x91, 0xb3, 0xa2, 0x99, 0x90, 0x32, 0x2a, 0xe5, - 0xf0, 0xfd, 0x21, 0x60, 0xc9, 0xd4, 0xe8, 0x2f, 0x05, 0xd8, 0x88, 0x4f, 0x41, 0xbb, 0xff, 0xe2, - 0x41, 0xcc, 0x13, 0x8f, 0x38, 0xb6, 0xd5, 0x88, 0x96, 0x45, 0x38, 0x2b, 0x97, 0x53, 0xaf, 0x10, - 0xd9, 0xaa, 0x93, 0x4b, 0x39, 0xfc, 0xa8, 0x3f, 0x4b, 0xe3, 0xb4, 0x27, 0x9e, 0x66, 0x5b, 0x8d, - 0x81, 0x4a, 0xe6, 0x1f, 0x0b, 0x70, 0x3f, 0xf9, 0xc8, 0x60, 0x79, 0x84, 0xb2, 0xb7, 0x99, 0x10, - 0xde, 0xad, 0xcc, 0x47, 0xa8, 0xe4, 0xa2, 0xe1, 0xc1, 0x23, 0x54, 0x8f, 0xc6, 0xf2, 0xe2, 0x85, - 0xc5, 0x3e, 0x9f, 0xd6, 0xc1, 0x7e, 0xeb, 0x3b, 0x84, 0x27, 0x41, 0xf8, 0x28, 0x86, 0x28, 0x56, - 0x52, 0x97, 0x6e, 0x72, 0x05, 0x6e, 0x38, 0xa3, 0x93, 0xab, 0x73, 0x7f, 0x08, 0xd7, 0x4c, 0x96, - 0x8d, 0x21, 0xfd, 0x5c, 0x48, 0xfe, 0x36, 0xd3, 0x34, 0xfe, 0xf5, 0x2e, 0x31, 0x73, 0x58, 0xca, - 0x61, 0xd1, 0x1c, 0xea, 0x88, 0x42, 0x62, 0x7c, 0x0a, 0x84, 0x9e, 0x65, 0xc7, 0xe3, 0xd0, 0xb2, - 0xd5, 0xd4, 0x05, 0x3b, 0xe1, 0xc5, 0x8f, 0x87, 0xc4, 0x49, 0x4f, 0x82, 0xe1, 0x51, 0x39, 0x01, - 0x44, 0xef, 0x15, 0x80, 0xe3, 0x58, 0x4b, 0x1d, 0xe7, 0xc9, 0x0f, 0x81, 0x7c, 0x9c, 0x53, 0x1e, - 0x0b, 0x7f, 0x55, 0x60, 0x41, 0x24, 0xba, 0x37, 0x7e, 0x16, 0xff, 0x1d, 0x4e, 0x74, 0x65, 0xbc, - 0x93, 0xf5, 0xf6, 0x3a, 0xee, 0x57, 0x3c, 0x03, 0xb7, 0xd7, 0x04, 0x22, 0xf4, 0x29, 0x84, 0x83, - 0x45, 0x68, 0x94, 0x48, 0xcd, 0x17, 0x98, 0xd6, 0xb7, 0x53, 0x86, 0x7d, 0x30, 0xf1, 0x5a, 0xca, - 0xe1, 0xab, 0xe6, 0x60, 0x3b, 0x6a, 0xc1, 0x42, 0x28, 0x3b, 0x08, 0x50, 0xf1, 0xfc, 0x6b, 0xfe, - 0x6e, 0xca, 0x03, 0xe2, 0xf8, 0x34, 0x68, 0x29, 0x87, 0x6f, 0x9a, 0x49, 0xbd, 0xe8, 0x00, 0x6e, - 0xf6, 0x5f, 0x49, 0x78, 0x60, 0xe4, 0xc3, 0x79, 0x8f, 0x29, 0x7b, 0x6b, 0xac, 0xb2, 0x84, 0x27, - 0xd6, 0x52, 0x0e, 0x5f, 0x77, 0x13, 0x5e, 0x5e, 0x4f, 0xe0, 0xd6, 0x98, 0x37, 0x3e, 0xae, 0xea, - 0x7e, 0x8a, 0x5d, 0xe3, 0xdf, 0x25, 0x83, 0x80, 0x7f, 0x38, 0xfe, 0xd5, 0xf2, 0x00, 0x42, 0xab, - 0x49, 0xf8, 0x70, 0xef, 0xf2, 0x0c, 0x6f, 0xfe, 0x41, 0x8a, 0x71, 0x09, 0x59, 0xe1, 0xc0, 0x38, - 0x33, 0x21, 0x59, 0x5c, 0x86, 0x2b, 0x3d, 0x1d, 0x6c, 0x94, 0x1e, 0x32, 0xd9, 0xf7, 0x53, 0x65, - 0x07, 0xc4, 0xa5, 0x1c, 0xbe, 0x6c, 0xc6, 0xf3, 0xb9, 0xfb, 0x80, 0xe2, 0x39, 0x06, 0x3e, 0x22, - 0xf9, 0x47, 0x29, 0xe5, 0x1c, 0xc3, 0xf9, 0x54, 0x16, 0x4d, 0x86, 0x73, 0xac, 0x43, 0xa2, 0xbb, - 0x2c, 0xf3, 0x97, 0x7f, 0x9c, 0x59, 0x34, 0x4f, 0x15, 0x0e, 0x8a, 0x0e, 0xd3, 0x87, 0x43, 0xa2, - 0x2d, 0x96, 0x78, 0xc9, 0xaf, 0x67, 0x16, 0xcd, 0x33, 0x35, 0x83, 0xa2, 0xc3, 0xec, 0x4d, 0x13, - 0x16, 0xe3, 0xa2, 0x79, 0x36, 0x28, 0xf2, 0xcb, 0x93, 0x94, 0x77, 0x81, 0xe4, 0x84, 0x6a, 0x29, - 0x87, 0xe7, 0xcd, 0xe4, 0x54, 0x6b, 0xb2, 0xb6, 0xd0, 0x55, 0x6f, 0x7d, 0x45, 0x6d, 0x3d, 0x87, - 0x8d, 0x68, 0x0b, 0xdd, 0x96, 0xac, 0x2d, 0xf4, 0xde, 0xdb, 0x5f, 0x51, 0x5b, 0xcf, 0x87, 0x23, - 0xda, 0x42, 0x4f, 0xb6, 0x60, 0x29, 0xae, 0x8d, 0x25, 0x3b, 0xbd, 0x60, 0xb7, 0xec, 0x7a, 0xd4, - 0xcd, 0x6f, 0x64, 0x56, 0x17, 0x4f, 0xb9, 0x0e, 0xaa, 0x1b, 0x48, 0xc6, 0xfe, 0x96, 0x00, 0x85, - 0xf8, 0x01, 0x81, 0x36, 0xb6, 0xf8, 0x95, 0xb8, 0x1d, 0x7f, 0x66, 0xc9, 0x6f, 0xa6, 0xbe, 0xc9, - 0xa6, 0xd6, 0xba, 0xf2, 0x37, 0xd9, 0x1e, 0x59, 0x63, 0x94, 0x0c, 0xbd, 0x86, 0x85, 0x84, 0x17, - 0x16, 0x6a, 0x37, 0x68, 0xfe, 0x9d, 0xd4, 0x23, 0xf6, 0x98, 0x4a, 0x53, 0x7e, 0xc4, 0x1e, 0xea, - 0xb4, 0x1b, 0x74, 0x58, 0x59, 0x74, 0xdc, 0x74, 0x2c, 0x9a, 0x7f, 0x9a, 0x59, 0xd9, 0x50, 0x75, - 0xe7, 0xa0, 0xb2, 0x7e, 0x27, 0xfa, 0x01, 0x5c, 0xf3, 0xcd, 0xa3, 0x70, 0x1f, 0xa2, 0xc1, 0x86, - 0xe8, 0x9e, 0xe6, 0xb7, 0x52, 0xf6, 0xa2, 0xa4, 0xbc, 0x47, 0xb0, 0x17, 0xf9, 0xe6, 0x51, 0xbc, - 0x1d, 0xf9, 0xb0, 0xe4, 0x85, 0x99, 0x0a, 0xe2, 0x32, 0x49, 0xe4, 0x88, 0xb2, 0x87, 0xec, 0x6e, - 0xd3, 0xcf, 0x3f, 0x4b, 0x79, 0x92, 0x9a, 0x94, 0xe4, 0x28, 0xe5, 0xf0, 0x82, 0x97, 0xdc, 0x3f, - 0xbc, 0x2c, 0xc2, 0x3c, 0x6b, 0xb8, 0xe4, 0xdf, 0xcd, 0x3c, 0x4f, 0xe3, 0xd9, 0xf9, 0xc1, 0x79, - 0x3a, 0x90, 0xb7, 0x4f, 0xd6, 0x16, 0x2e, 0xc2, 0xf7, 0xbe, 0xa2, 0xb6, 0xa4, 0x45, 0x18, 0xef, - 0xd9, 0xbe, 0x00, 0x33, 0x8c, 0xfb, 0xe3, 0x73, 0xb3, 0x53, 0xe2, 0x74, 0x70, 0xcc, 0xe8, 0x9d, - 0x65, 0x02, 0xcf, 0x46, 0xcf, 0x9e, 0xec, 0xe4, 0xba, 0xfe, 0x77, 0x73, 0xfd, 0x9f, 0xbd, 0x46, - 0xdb, 0x2d, 0xba, 0x03, 0x2b, 0x45, 0x55, 0x97, 0xb5, 0x17, 0x0a, 0x26, 0x58, 0xd1, 0xb5, 0x3a, - 0x96, 0x87, 0x7f, 0xb0, 0x73, 0x0b, 0xf2, 0xa3, 0x24, 0xba, 0x82, 0x5f, 0x28, 0x58, 0x14, 0xd0, - 0x1a, 0xdc, 0x1a, 0xed, 0xdd, 0xab, 0x6f, 0x2b, 0xb8, 0xaa, 0x18, 0x8a, 0x2e, 0x4e, 0xa1, 0x67, - 0xb0, 0x39, 0x4a, 0x51, 0x94, 0x0c, 0x69, 0x5b, 0xd2, 0x15, 0x52, 0xd3, 0x74, 0x63, 0x17, 0x2b, - 0x3a, 0xd1, 0x95, 0xf2, 0x0e, 0x29, 0x69, 0xba, 0xa1, 0x14, 0xc5, 0x69, 0xf4, 0x0e, 0xbc, 0x35, - 0x81, 0xa9, 0xb2, 0xaf, 0x7f, 0x52, 0x1e, 0xe0, 0x38, 0x87, 0xb6, 0x60, 0x63, 0x12, 0x87, 0x56, - 0xdd, 0xd5, 0x8a, 0xdb, 0x03, 0x3c, 0x33, 0xe8, 0x09, 0x3c, 0xcc, 0x02, 0x0d, 0x17, 0x75, 0xf1, - 0x3c, 0x7a, 0x04, 0xf7, 0x52, 0x21, 0x05, 0x94, 0x17, 0xd0, 0x03, 0x28, 0x8c, 0x52, 0x4a, 0xb5, - 0x5a, 0x59, 0x95, 0x25, 0x43, 0xd5, 0xaa, 0xa4, 0x64, 0x18, 0x35, 0x71, 0x16, 0xdd, 0x87, 0x3b, - 0x93, 0xe9, 0x0c, 0xb9, 0x26, 0x5e, 0x4c, 0x26, 0x7b, 0xa9, 0x56, 0x8b, 0xda, 0x4b, 0x9d, 0x14, - 0x15, 0x7d, 0xcf, 0xd0, 0x6a, 0x22, 0xa0, 0xb7, 0xe0, 0xd1, 0x04, 0x7c, 0xfa, 0x27, 0x65, 0x3e, - 0x66, 0x0c, 0xe3, 0xa5, 0x14, 0x07, 0xf7, 0x4d, 0x57, 0x8a, 0x7a, 0x49, 0xdd, 0x31, 0xc4, 0xcb, - 0xe8, 0x5d, 0x78, 0x27, 0x93, 0xfc, 0xb8, 0x8b, 0xaf, 0xa4, 0xe8, 0xc1, 0x4a, 0x51, 0x1d, 0x1c, - 0xfa, 0xb9, 0xac, 0x83, 0xb2, 0x2b, 0xd7, 0xc4, 0xab, 0x99, 0x06, 0x25, 0xa0, 0x14, 0x33, 0xbb, - 0x27, 0xa0, 0xbe, 0x86, 0x3e, 0x80, 0xf7, 0xbf, 0x8a, 0x7b, 0xc2, 0xf5, 0x50, 0x56, 0x74, 0x5d, - 0x44, 0xe8, 0x6d, 0x78, 0x9c, 0x85, 0x59, 0xfa, 0xb4, 0x8e, 0x15, 0xf1, 0x3a, 0x7a, 0x08, 0x77, - 0x27, 0x90, 0x17, 0xf7, 0xab, 0x52, 0x45, 0x2b, 0x6e, 0x8b, 0x37, 0x52, 0xa6, 0xb8, 0x2c, 0xe9, - 0xba, 0x54, 0x2d, 0x62, 0x89, 0xec, 0x29, 0xfb, 0x7a, 0x4d, 0x92, 0x15, 0x5d, 0xbc, 0x99, 0x32, - 0x6a, 0x7d, 0x9e, 0xf8, 0x18, 0xcc, 0xa3, 0xe7, 0xf0, 0xee, 0x04, 0x2e, 0xa5, 0x2c, 0xe9, 0x86, - 0x2a, 0xeb, 0x8a, 0x84, 0xe5, 0xd2, 0x00, 0xe7, 0x42, 0xa6, 0xf1, 0x0e, 0xf9, 0x25, 0xb9, 0xa4, - 0x88, 0xf9, 0x14, 0x6f, 0x71, 0x8e, 0x8a, 0x52, 0xd1, 0xf0, 0x7e, 0x71, 0x5b, 0x5c, 0xcc, 0xa4, - 0x80, 0x79, 0x96, 0x70, 0x05, 0x4b, 0x29, 0xc6, 0x70, 0x0e, 0xb9, 0x5c, 0xd7, 0x8d, 0xa1, 0xc9, - 0xbb, 0x8c, 0xd6, 0xe1, 0x41, 0xea, 0xec, 0xe2, 0xa3, 0x78, 0x0b, 0x6d, 0xc0, 0x7a, 0xa6, 0xf9, - 0xc5, 0xe9, 0x57, 0x52, 0x06, 0xb3, 0x4f, 0x5f, 0x51, 0x65, 0xac, 0xe9, 0xda, 0x8e, 0x21, 0xde, - 0x46, 0xdf, 0x81, 0xad, 0x49, 0x83, 0xa9, 0xc9, 0x7b, 0x58, 0x93, 0xe4, 0xd2, 0x50, 0x9c, 0x5b, - 0x4d, 0x99, 0xfb, 0x51, 0x6c, 0x94, 0x8c, 0xb2, 0xa4, 0x8b, 0x6b, 0x29, 0x6b, 0x4a, 0xaf, 0x6a, - 0x2f, 0x77, 0xca, 0xd2, 0x9e, 0x22, 0xde, 0x19, 0x23, 0x57, 0x93, 0x63, 0xde, 0x2d, 0xea, 0xa4, - 0x86, 0xb5, 0xef, 0xef, 0x8b, 0x85, 0x31, 0x53, 0x31, 0x4e, 0x5d, 0x52, 0x77, 0x4b, 0x44, 0x7a, - 0x21, 0xa9, 0x65, 0x69, 0x5b, 0x2d, 0xab, 0xc6, 0xbe, 0x78, 0x17, 0xbd, 0x0f, 0xcf, 0x52, 0xb8, - 0xd8, 0x0a, 0x51, 0x65, 0x82, 0x95, 0x5d, 0x55, 0x37, 0x30, 0x0b, 0x9d, 0xe2, 0xbd, 0xe4, 0x28, - 0xac, 0x4b, 0x95, 0x72, 0x3c, 0xc4, 0x8a, 0xf7, 0x51, 0x01, 0x6e, 0x8f, 0xd2, 0x29, 0xf2, 0x16, - 0xff, 0x69, 0x6a, 0x55, 0x56, 0xc4, 0x07, 0xeb, 0x7f, 0x2e, 0xc0, 0xdc, 0xe0, 0xdf, 0x2d, 0xa0, - 0x55, 0x58, 0xee, 0xb1, 0xe9, 0x86, 0x64, 0xd4, 0xf5, 0xa1, 0x7d, 0x73, 0x19, 0x16, 0x86, 0x09, - 0xf4, 0xba, 0x2c, 0x07, 0x21, 0x42, 0x48, 0xec, 0xdc, 0x53, 0x6b, 0x35, 0xa5, 0x28, 0x4e, 0xa1, - 0x45, 0xb8, 0x39, 0xdc, 0xa9, 0x60, 0xac, 0x61, 0x71, 0x3a, 0x89, 0x4f, 0xda, 0xd6, 0x30, 0xdb, - 0x02, 0xd7, 0xff, 0x70, 0x0a, 0xa6, 0x65, 0x43, 0x42, 0xd7, 0xe1, 0xaa, 0x6c, 0x48, 0xa3, 0x3f, - 0xea, 0x0d, 0x1a, 0xa5, 0xba, 0x51, 0x22, 0xb2, 0x56, 0xad, 0x2a, 0xb2, 0xa1, 0x05, 0x1b, 0xf8, - 0x02, 0x5c, 0x67, 0xed, 0xb2, 0xa1, 0xbe, 0x08, 0xf6, 0x75, 0x5d, 0x57, 0xb5, 0x6a, 0xb0, 0x6f, - 0xf7, 0x3a, 0x02, 0xc8, 0x04, 0x2b, 0x9f, 0xd4, 0x15, 0xdd, 0xd0, 0xc5, 0xe9, 0xa8, 0xa3, 0x86, - 0x95, 0x8a, 0x5a, 0xaf, 0x10, 0xbd, 0x5e, 0xab, 0x69, 0xd8, 0x10, 0xcf, 0x45, 0x1d, 0x06, 0x0e, - 0xd6, 0x52, 0x91, 0x14, 0x95, 0x17, 0x6a, 0x10, 0x84, 0x66, 0x22, 0xdd, 0xf5, 0xda, 0x2e, 0x96, - 0x8a, 0x0a, 0xd9, 0x96, 0xaa, 0x55, 0x05, 0x8b, 0xe7, 0x23, 0x86, 0x6d, 0xb5, 0x5c, 0x56, 0xab, - 0xbb, 0x44, 0xaf, 0x57, 0x2a, 0x12, 0xde, 0x17, 0x2f, 0x44, 0x16, 0x84, 0xba, 0xcb, 0xaa, 0x6e, - 0x88, 0xb3, 0x81, 0x5b, 0x62, 0x8d, 0x15, 0xad, 0xaa, 0x1a, 0x1a, 0x56, 0xab, 0xbb, 0xe2, 0x45, - 0x74, 0x1b, 0x96, 0x82, 0x2e, 0xe5, 0xfb, 0x86, 0x82, 0xab, 0x52, 0x99, 0x48, 0xf5, 0xa2, 0x6a, - 0x10, 0xdd, 0xd0, 0xb0, 0xb4, 0xab, 0x88, 0xb0, 0xfe, 0xc7, 0xe7, 0xe1, 0x66, 0x62, 0x9d, 0x5b, - 0x10, 0x7c, 0xd5, 0xaa, 0xa1, 0xec, 0xf2, 0x69, 0x43, 0x94, 0x2a, 0xd6, 0xca, 0x65, 0xb2, 0xa7, - 0x56, 0x87, 0x7f, 0x14, 0x7d, 0x07, 0x56, 0xc6, 0x11, 0xea, 0x65, 0x49, 0xde, 0x13, 0x05, 0x74, - 0x0f, 0xd6, 0xc6, 0x91, 0x48, 0x2f, 0x75, 0xa2, 0xa9, 0x45, 0x59, 0x9c, 0x0a, 0xb6, 0xf3, 0x71, - 0x54, 0x35, 0x69, 0x57, 0xc1, 0xc5, 0xba, 0xb1, 0x2f, 0x4e, 0x4f, 0xd2, 0xa7, 0x54, 0x24, 0xb5, - 0x2c, 0x9e, 0x0b, 0xce, 0x5e, 0xe3, 0x48, 0x3e, 0x56, 0xb1, 0x24, 0xce, 0xa0, 0xbb, 0xb0, 0x3a, - 0x8e, 0x82, 0x4d, 0x23, 0x5c, 0x14, 0xcf, 0x07, 0x0b, 0x65, 0x1c, 0x51, 0x45, 0x32, 0x0c, 0x05, - 0x57, 0x34, 0xdd, 0x10, 0x2f, 0x4c, 0x32, 0xaf, 0xa2, 0x13, 0x43, 0x91, 0x2a, 0xba, 0x38, 0x3b, - 0x89, 0x4a, 0xab, 0xe9, 0xbb, 0x4a, 0x55, 0x55, 0xc4, 0x8b, 0x93, 0xa0, 0x6b, 0x7b, 0x86, 0x24, - 0xc2, 0x44, 0xe3, 0xa4, 0xca, 0x8e, 0x78, 0x69, 0x32, 0x6e, 0xb9, 0xa4, 0x56, 0x15, 0xa2, 0x16, - 0xc5, 0xcb, 0xe8, 0x3d, 0x78, 0x9a, 0x4e, 0x47, 0x76, 0x55, 0xa3, 0x54, 0xdf, 0x66, 0xeb, 0x20, - 0x98, 0xff, 0x57, 0xd0, 0x26, 0x3c, 0xc9, 0xc0, 0x26, 0xab, 0x58, 0x2e, 0x2b, 0xb2, 0x2a, 0xce, - 0x05, 0x1b, 0x59, 0x36, 0x3d, 0x65, 0x69, 0x5b, 0xbc, 0x1a, 0x6c, 0x18, 0x19, 0xc8, 0x3f, 0x56, - 0xaa, 0x7b, 0x6a, 0x55, 0x17, 0xc5, 0x8c, 0xf4, 0x52, 0x55, 0x57, 0xb7, 0xcb, 0x8a, 0x78, 0x6d, - 0x92, 0x7b, 0x82, 0xad, 0x45, 0x95, 0x95, 0xaa, 0xf6, 0x52, 0x44, 0xeb, 0x1f, 0xc1, 0x85, 0xf0, - 0x49, 0x2c, 0x58, 0x8f, 0x3b, 0x8a, 0x64, 0x04, 0x9b, 0xe7, 0x48, 0x2c, 0x8b, 0x3a, 0x86, 0x57, - 0xb7, 0xb0, 0xfe, 0xa7, 0x02, 0x2c, 0x4f, 0xa8, 0x9b, 0x0b, 0xfc, 0x12, 0x31, 0x63, 0x45, 0xd6, - 0x2a, 0x15, 0xa5, 0x5a, 0xe4, 0x98, 0x12, 0xe3, 0xe6, 0x3a, 0x3c, 0x98, 0x4c, 0x5e, 0xd5, 0x0c, - 0x4e, 0x2b, 0x04, 0x36, 0x4e, 0xa6, 0x2d, 0x6a, 0x55, 0x45, 0x9c, 0xda, 0xfe, 0xe1, 0x3f, 0x7c, - 0x79, 0x5b, 0xf8, 0xc7, 0x2f, 0x6f, 0x0b, 0xff, 0xfa, 0xe5, 0x6d, 0xe1, 0x53, 0xed, 0xc8, 0xf6, - 0x5f, 0x75, 0x0f, 0x36, 0x1a, 0x4e, 0x6b, 0xf3, 0xc8, 0x35, 0x8f, 0x6d, 0x9e, 0x32, 0x31, 0x9b, - 0x9b, 0xbd, 0x3f, 0xb8, 0x32, 0x3b, 0xf6, 0xe6, 0x11, 0x6d, 0x6f, 0xb2, 0x1a, 0xc7, 0xcd, 0x23, - 0x67, 0xe8, 0x1f, 0xaf, 0x3e, 0x88, 0x7d, 0x3d, 0x7e, 0x7a, 0x70, 0x9e, 0x91, 0x3d, 0xfb, 0xdf, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xed, 0x62, 0xab, 0x7d, 0x21, 0x4b, 0x00, 0x00, + 0xfc, 0xb8, 0x97, 0x82, 0xb8, 0x17, 0xc6, 0x3b, 0x7a, 0x82, 0x9d, 0x56, 0xfc, 0x11, 0x78, 0x25, + 0x70, 0x88, 0x81, 0x4e, 0xdd, 0x3c, 0x8e, 0x13, 0xdc, 0x09, 0xae, 0x20, 0x83, 0xdc, 0xc1, 0x86, + 0xd9, 0x8a, 0x91, 0xbc, 0x05, 0x6b, 0x43, 0x24, 0x2f, 0x6c, 0x7a, 0x52, 0x72, 0x9a, 0xdd, 0x36, + 0xed, 0xf8, 0xe6, 0xe0, 0xa5, 0xbc, 0xf8, 0xb7, 0x02, 0xdc, 0x94, 0x3c, 0xcf, 0x0e, 0x7c, 0x8f, + 0x4d, 0x41, 0xcf, 0xf7, 0x1e, 0xc2, 0xd5, 0xa6, 0xd3, 0x39, 0xa6, 0xae, 0xc7, 0x78, 0x48, 0xef, + 0x81, 0x72, 0x36, 0xde, 0xac, 0x5a, 0xe8, 0x0e, 0x5c, 0xf6, 0x1d, 0xdf, 0x6c, 0x11, 0xdf, 0x79, + 0x4d, 0x3b, 0xfc, 0x01, 0x6e, 0x0a, 0x5f, 0x62, 0x6d, 0x06, 0x6b, 0x42, 0x77, 0xe1, 0xca, 0x91, + 0xeb, 0xb4, 0x8f, 0xfc, 0x88, 0x66, 0x8a, 0xd1, 0x5c, 0xe6, 0x8d, 0x21, 0xd1, 0x13, 0xb8, 0xd6, + 0xec, 0x61, 0x88, 0x08, 0xf9, 0xc9, 0x41, 0xec, 0x77, 0x70, 0xe2, 0xe2, 0x3f, 0x0b, 0x70, 0x83, + 0xe3, 0x56, 0x3e, 0xa7, 0xcd, 0xee, 0xd7, 0x80, 0xbd, 0x0c, 0xd0, 0x71, 0x2c, 0x1a, 0x9e, 0x50, + 0x38, 0xe8, 0x8b, 0x41, 0x0b, 0x3b, 0x9c, 0x8c, 0x8c, 0x6a, 0x2a, 0xc3, 0xa8, 0xce, 0x65, 0x1d, + 0xd5, 0xf4, 0x98, 0x51, 0x3d, 0x87, 0x45, 0x3e, 0xa8, 0x1a, 0x3d, 0x91, 0x63, 0x70, 0x7b, 0xaf, + 0xca, 0x4d, 0xd3, 0xa7, 0x87, 0x8e, 0x7b, 0x1a, 0xbd, 0x2a, 0x47, 0xdf, 0x8b, 0x7f, 0x23, 0xc0, + 0x75, 0xce, 0x2a, 0x35, 0x9b, 0xd4, 0xf3, 0x30, 0xfd, 0xac, 0x4b, 0x3d, 0x3f, 0xc0, 0x18, 0xf9, + 0x2f, 0xbf, 0xe1, 0x73, 0xc6, 0xcb, 0x51, 0x23, 0xbb, 0x32, 0xff, 0x4c, 0x66, 0xf0, 0x27, 0x02, + 0x5c, 0x8e, 0x10, 0x07, 0xcd, 0x68, 0x0e, 0xce, 0x9b, 0xec, 0x53, 0x88, 0x31, 0xfc, 0xf6, 0xb3, + 0x41, 0x77, 0x0f, 0x10, 0x37, 0x64, 0xc5, 0xf6, 0xfc, 0xb1, 0xef, 0xf4, 0x3f, 0x00, 0xb1, 0x4f, + 0xc5, 0xd7, 0x1c, 0xda, 0x19, 0x89, 0x5d, 0xe3, 0xe3, 0xc4, 0xa8, 0x8a, 0x7e, 0xf4, 0x1a, 0x14, + 0xde, 0x38, 0xb2, 0xbe, 0x39, 0xe1, 0x25, 0x1a, 0xc4, 0xde, 0x37, 0x27, 0xdc, 0x84, 0xb9, 0x78, + 0x7f, 0x7b, 0x3f, 0x3a, 0xe1, 0x7d, 0xa3, 0x2a, 0xde, 0xb4, 0x89, 0x12, 0x54, 0xbc, 0x69, 0x43, + 0xfd, 0x7c, 0x5c, 0xc5, 0x8e, 0x6b, 0x76, 0x7c, 0xcf, 0x70, 0x1a, 0x1e, 0x75, 0xd1, 0x3a, 0x5c, + 0x67, 0x81, 0x89, 0xb8, 0x4e, 0x8b, 0x7a, 0xe4, 0x30, 0xe8, 0xa3, 0xdc, 0xf5, 0xa6, 0xf1, 0x35, + 0xd6, 0x15, 0x84, 0x76, 0x6f, 0x87, 0x77, 0xa0, 0xb7, 0xe1, 0x06, 0xa7, 0xf7, 0x5d, 0xd3, 0xf6, + 0xfb, 0x0c, 0x79, 0xc6, 0x80, 0x58, 0x9f, 0xc1, 0xba, 0x42, 0x8e, 0xe2, 0x1f, 0x4c, 0xc5, 0x95, + 0x63, 0x7a, 0x6c, 0xd3, 0x93, 0x37, 0x3c, 0x4b, 0xe8, 0x39, 0x2c, 0x58, 0xe6, 0xa9, 0x47, 0x8e, + 0x4c, 0xcf, 0x27, 0x1d, 0xfa, 0xb9, 0x4f, 0xcc, 0xae, 0x65, 0xfb, 0x24, 0x98, 0xa8, 0x10, 0xda, + 0xcd, 0x80, 0xa0, 0x6e, 0x06, 0x21, 0xef, 0x73, 0x5f, 0x0a, 0x7a, 0x4b, 0x01, 0x84, 0x6d, 0x58, + 0x69, 0x33, 0x93, 0x7b, 0xaf, 0xec, 0x23, 0xe2, 0xd2, 0xcf, 0xba, 0xb6, 0x4b, 0x83, 0x0d, 0xcc, + 0x23, 0xcd, 0x57, 0x66, 0xe7, 0x90, 0x5a, 0x6c, 0x8d, 0xcf, 0xe0, 0xe5, 0x3e, 0x19, 0x8e, 0x51, + 0xc9, 0x9c, 0x08, 0x3d, 0x87, 0x82, 0xcb, 0x86, 0x46, 0x0e, 0x02, 0x21, 0xb4, 0xd3, 0x3c, 0xed, + 0x09, 0x38, 0xc7, 0x04, 0xcc, 0xf1, 0xfe, 0xed, 0xa8, 0x3b, 0xe2, 0xfc, 0x10, 0x96, 0x42, 0x4e, + 0xcb, 0x3c, 0x25, 0xce, 0x01, 0x69, 0x3b, 0x1d, 0xff, 0x55, 0x8f, 0x79, 0x9a, 0x31, 0xcf, 0x73, + 0x92, 0x92, 0x79, 0xaa, 0x1d, 0x54, 0x83, 0xfe, 0x88, 0xfb, 0xbb, 0xb0, 0xd0, 0xe9, 0x06, 0xc0, + 0x02, 0x4e, 0x97, 0xb6, 0x9d, 0x63, 0x6a, 0x91, 0x10, 0x6a, 0xe1, 0x3c, 0x1b, 0xf9, 0x1c, 0x27, + 0xd0, 0x0e, 0x30, 0xef, 0xe6, 0x2e, 0xe6, 0x15, 0x7f, 0x5f, 0x18, 0x9d, 0x98, 0x37, 0xec, 0x78, + 0xe8, 0x29, 0xdc, 0x34, 0x59, 0x3f, 0x69, 0xd9, 0x9e, 0x4f, 0xc2, 0x81, 0xda, 0x56, 0x98, 0xb6, + 0x43, 0xe6, 0x90, 0x7e, 0xd5, 0x2a, 0xfe, 0x58, 0x80, 0x85, 0x58, 0x4a, 0x88, 0xa7, 0x42, 0xc6, + 0x45, 0x46, 0xb4, 0x05, 0xe7, 0x5e, 0xdb, 0x1d, 0x2e, 0x6f, 0x76, 0x73, 0x7d, 0x2c, 0xca, 0x11, + 0x89, 0xbb, 0x76, 0xc7, 0xc2, 0x8c, 0x17, 0x2d, 0xc1, 0xc5, 0xae, 0x47, 0x5d, 0xc2, 0xd2, 0xa8, + 0x53, 0xfd, 0x34, 0x6a, 0xcd, 0x6c, 0xd3, 0xa2, 0x13, 0x1c, 0x95, 0x46, 0xb8, 0x59, 0x6a, 0x91, + 0xef, 0x96, 0xb5, 0x11, 0x5b, 0x6d, 0x66, 0x47, 0x91, 0xb0, 0x56, 0x5d, 0x58, 0x4d, 0x50, 0x18, + 0x1d, 0x5c, 0xbf, 0x19, 0x9d, 0xff, 0x22, 0xc0, 0xf5, 0x5e, 0xad, 0x00, 0x5b, 0x9b, 0x5c, 0x4f, + 0xa6, 0x5d, 0x3d, 0xf6, 0x0e, 0x43, 0x1c, 0xd7, 0x3e, 0xb4, 0x3b, 0xe1, 0xec, 0xf6, 0xde, 0x61, + 0x34, 0xd6, 0x8a, 0xee, 0xc3, 0x6c, 0xb3, 0xe5, 0x74, 0x2d, 0x72, 0xe4, 0x3a, 0xc7, 0xb6, 0x45, + 0xdd, 0xd0, 0xd8, 0x57, 0x58, 0x6b, 0x3d, 0x6c, 0x44, 0x1a, 0xcc, 0x58, 0xe1, 0x75, 0x95, 0x2d, + 0x9d, 0x4b, 0x9b, 0xef, 0xa4, 0x1e, 0x80, 0xa9, 0x15, 0xdd, 0x70, 0xfb, 0xa3, 0x8b, 0x84, 0x14, + 0x5f, 0xc0, 0xe2, 0x78, 0x3a, 0x34, 0x0f, 0x17, 0xac, 0xfd, 0xf8, 0xe8, 0xce, 0x5b, 0xfb, 0x6c, + 0x5c, 0x2b, 0x70, 0xc9, 0xda, 0x27, 0xac, 0xd2, 0xa3, 0xe9, 0xb4, 0xc2, 0x31, 0x81, 0xb5, 0x5f, + 0x0f, 0x5b, 0x8a, 0xff, 0x26, 0xc0, 0xe2, 0x36, 0x35, 0xfd, 0xae, 0x4b, 0x31, 0x6d, 0x3a, 0xed, + 0x36, 0xed, 0x58, 0xb1, 0x63, 0xd4, 0x80, 0x5b, 0x09, 0x83, 0x6e, 0x85, 0xbe, 0x07, 0x17, 0x0e, + 0x38, 0x6b, 0xe8, 0xba, 0xab, 0x63, 0xc7, 0x18, 0xa9, 0x88, 0x18, 0xd0, 0xe7, 0xb0, 0x1c, 0x7e, + 0x24, 0xee, 0x80, 0x5e, 0x12, 0xbb, 0x36, 0xcc, 0x6e, 0x3e, 0x4b, 0x95, 0x38, 0xc0, 0x1c, 0xde, + 0x1f, 0x96, 0x0e, 0xc6, 0x77, 0x16, 0x4f, 0xe0, 0x86, 0x21, 0xed, 0xf0, 0x93, 0x30, 0xfd, 0xa4, + 0x4b, 0xdd, 0xf0, 0xf9, 0x60, 0x05, 0xf8, 0x31, 0x89, 0x04, 0xe7, 0x5a, 0x9e, 0xd3, 0x9f, 0xc2, + 0xc0, 0x9a, 0x6a, 0x41, 0x4b, 0x9f, 0x80, 0x5a, 0x87, 0x34, 0x3a, 0x5a, 0x71, 0x02, 0x25, 0x68, + 0x09, 0x4e, 0xc9, 0xb6, 0x47, 0xbc, 0x2e, 0x8b, 0x07, 0x61, 0xc8, 0xbd, 0x68, 0x7b, 0x3a, 0x6f, + 0x28, 0x6e, 0xc3, 0x2d, 0x9d, 0x36, 0xbb, 0xae, 0xed, 0x9f, 0x62, 0x36, 0xa4, 0x1d, 0xea, 0x63, + 0xea, 0x75, 0x5b, 0xe1, 0x22, 0x44, 0x70, 0x2e, 0x66, 0x66, 0xf6, 0x39, 0x68, 0x0b, 0x62, 0x7e, + 0x18, 0xff, 0xd9, 0xe7, 0xa2, 0x09, 0xd7, 0x23, 0x57, 0x38, 0xdd, 0xa6, 0x7e, 0xf3, 0x15, 0x67, + 0x1f, 0xf5, 0x4c, 0x21, 0xc9, 0x33, 0x47, 0x96, 0x43, 0x7e, 0x74, 0x39, 0x14, 0xff, 0xe1, 0x19, + 0x5c, 0x6d, 0x04, 0xf6, 0x66, 0xa2, 0xb5, 0x0e, 0xd5, 0x0e, 0x50, 0x03, 0xae, 0x76, 0x6d, 0xb2, + 0xcf, 0x0a, 0x82, 0x48, 0x33, 0xb8, 0x15, 0xa5, 0x86, 0xd5, 0xd1, 0xfa, 0xa1, 0x72, 0x0e, 0x5f, + 0xe9, 0xda, 0xb1, 0x56, 0xf4, 0x13, 0x01, 0x1e, 0x77, 0x6d, 0xe2, 0xf0, 0xfa, 0x18, 0x12, 0x1e, + 0x2e, 0x29, 0x39, 0x74, 0x88, 0xef, 0x10, 0x2b, 0x2a, 0x20, 0x0a, 0x35, 0xf2, 0xcb, 0xa4, 0x34, + 0x41, 0x63, 0xb6, 0x2a, 0xa4, 0x72, 0x0e, 0xdf, 0xed, 0xda, 0xa9, 0xb4, 0xe8, 0x0b, 0x01, 0xee, + 0xc6, 0xd0, 0x99, 0x96, 0x45, 0x0e, 0x6c, 0x97, 0xed, 0x02, 0xa1, 0x0d, 0x39, 0x2e, 0xbe, 0xc6, + 0x3f, 0x4c, 0xc7, 0x35, 0xbe, 0xaa, 0xa9, 0x9c, 0xc3, 0xb7, 0x7b, 0x90, 0x12, 0xc9, 0x86, 0x6d, + 0x95, 0x80, 0xa6, 0x65, 0xfa, 0xbd, 0xd9, 0x99, 0xce, 0x6a, 0xab, 0x94, 0x12, 0xaa, 0x01, 0x5b, + 0x8d, 0xa7, 0x45, 0xbf, 0x26, 0xc0, 0x6a, 0x0c, 0x9d, 0x47, 0x7d, 0xd2, 0xec, 0x55, 0x5b, 0x11, + 0x8f, 0x15, 0x3a, 0xb1, 0xed, 0xfc, 0xd2, 0xe6, 0xf7, 0xd2, 0x41, 0x8d, 0xab, 0xd5, 0x2a, 0xe7, + 0xf0, 0xad, 0x1e, 0x9a, 0x04, 0x22, 0xf4, 0xbb, 0x02, 0xdc, 0x8b, 0xc1, 0x70, 0xc3, 0x9c, 0x63, + 0x70, 0x18, 0xe1, 0x25, 0x57, 0x11, 0x94, 0x0b, 0x0c, 0xca, 0xff, 0x4f, 0x87, 0x32, 0xa9, 0x68, + 0xab, 0x9c, 0xc3, 0xab, 0x3d, 0x38, 0x63, 0x08, 0x23, 0xcb, 0xb8, 0x61, 0x19, 0x14, 0x69, 0x06, + 0xf1, 0x84, 0x34, 0xc3, 0x32, 0xac, 0x70, 0xba, 0x66, 0x52, 0x2d, 0x93, 0x52, 0xc4, 0xc5, 0x2d, + 0x33, 0x9e, 0x08, 0x7d, 0x0e, 0xb7, 0x92, 0x50, 0x1c, 0x9d, 0x86, 0x08, 0x2e, 0x32, 0x04, 0xef, + 0x65, 0x47, 0x10, 0xaf, 0x02, 0x2b, 0xe7, 0x70, 0x61, 0x44, 0x7b, 0x48, 0x80, 0x7e, 0x01, 0x96, + 0x47, 0x35, 0x1f, 0xb9, 0x76, 0xc7, 0x0f, 0x55, 0x03, 0x53, 0xfd, 0x7e, 0x56, 0xd5, 0x43, 0x35, + 0x64, 0xe5, 0x1c, 0x5e, 0x18, 0xd2, 0xdd, 0xa7, 0x40, 0x2d, 0x58, 0xe8, 0xda, 0xc4, 0x0a, 0x43, + 0x66, 0xb0, 0xbf, 0xb8, 0x3e, 0xb5, 0x08, 0x13, 0x5e, 0xb8, 0xc4, 0x14, 0x6f, 0x64, 0x48, 0xe2, + 0xc7, 0x2b, 0xb1, 0xca, 0x39, 0x3c, 0xd7, 0xb5, 0x13, 0x6b, 0xb4, 0xbe, 0xe0, 0xee, 0xd7, 0x53, + 0xd7, 0x5b, 0x9a, 0x5e, 0x94, 0xa8, 0x09, 0x35, 0x5f, 0x66, 0x9a, 0xbf, 0x9b, 0x41, 0x73, 0x72, + 0x71, 0x15, 0xf7, 0xbc, 0x94, 0x02, 0xac, 0x1f, 0x31, 0xc7, 0xeb, 0x81, 0x09, 0xcb, 0x17, 0x3c, + 0x5e, 0x89, 0x10, 0x02, 0xb9, 0xc2, 0x80, 0xbc, 0xfb, 0xb5, 0xea, 0x18, 0xb8, 0xcf, 0x4d, 0xa8, + 0x3b, 0xf9, 0x4d, 0x1e, 0x40, 0xfb, 0x08, 0xc2, 0xa3, 0x4b, 0x7f, 0x5d, 0x72, 0x10, 0xb3, 0x0c, + 0xc4, 0xf3, 0x2c, 0x20, 0x92, 0x8a, 0x09, 0xca, 0x39, 0xbc, 0x12, 0xc3, 0x91, 0x58, 0x6f, 0xf0, + 0x47, 0x3c, 0x7a, 0x8e, 0x42, 0x69, 0x46, 0xaf, 0xe8, 0xa4, 0xed, 0xb7, 0xbc, 0x10, 0xd0, 0x55, + 0x06, 0xe8, 0xff, 0x7d, 0x05, 0x40, 0xa3, 0xe9, 0xfd, 0x72, 0x0e, 0xdf, 0x1b, 0x45, 0xd5, 0xa7, + 0xf3, 0x5b, 0x61, 0x86, 0xf3, 0xef, 0x05, 0x78, 0x3e, 0x38, 0x4f, 0x2c, 0x39, 0x4c, 0x4c, 0x96, + 0x1d, 0x26, 0x56, 0x94, 0x1e, 0x26, 0xbe, 0xe3, 0xb4, 0x3c, 0x62, 0xf3, 0x8c, 0x79, 0x88, 0x54, + 0x64, 0x48, 0x3f, 0xce, 0x34, 0x7f, 0x99, 0x92, 0xf0, 0xe5, 0x1c, 0x7e, 0x1a, 0x9f, 0xd4, 0x6c, + 0x99, 0xfb, 0x9f, 0x0a, 0xf0, 0x2c, 0xd3, 0x18, 0xfa, 0xe6, 0xe6, 0xf8, 0xaf, 0x31, 0xfc, 0x3b, + 0x5f, 0x1b, 0xff, 0x60, 0x12, 0xa4, 0x9c, 0xc3, 0xeb, 0x69, 0xe0, 0x87, 0xd2, 0x26, 0x7f, 0x22, + 0xc0, 0x93, 0x38, 0x72, 0xb3, 0x1b, 0x9c, 0x3c, 0x7a, 0xa7, 0xed, 0x58, 0x59, 0x17, 0x07, 0x8c, + 0x18, 0xe0, 0x8f, 0x32, 0x00, 0x9e, 0x94, 0xd6, 0x2e, 0xe7, 0xf0, 0x83, 0x3e, 0xd0, 0x89, 0x09, + 0xf0, 0xbf, 0x12, 0x60, 0x23, 0xc5, 0x73, 0x6d, 0xb3, 0x4d, 0x8e, 0x58, 0x32, 0x2c, 0x04, 0x79, + 0x9d, 0x81, 0xdc, 0xfa, 0x3a, 0xfe, 0x3b, 0x98, 0x57, 0x2b, 0xe7, 0xf0, 0xe3, 0x09, 0x4e, 0xac, + 0x9a, 0xed, 0x78, 0x12, 0xee, 0xf7, 0x04, 0x78, 0x10, 0x87, 0x7a, 0xd4, 0xcb, 0x55, 0x8d, 0xcc, + 0xfb, 0x0d, 0x86, 0xf0, 0x83, 0x0c, 0x08, 0xc7, 0x25, 0xbc, 0xca, 0x39, 0x5c, 0xec, 0x43, 0x1b, + 0x9b, 0x16, 0xfb, 0x15, 0x01, 0xee, 0xc4, 0x31, 0xf9, 0xd4, 0xf3, 0x03, 0x34, 0x9d, 0x81, 0x78, + 0x7c, 0x33, 0x75, 0xf7, 0x9b, 0x90, 0x7d, 0x2a, 0xe7, 0xf0, 0x72, 0x1f, 0x49, 0x52, 0x7a, 0xca, + 0x85, 0xa5, 0x38, 0x86, 0xe8, 0x9c, 0x1b, 0xed, 0x43, 0x73, 0x29, 0x29, 0x97, 0x71, 0xe9, 0x1f, + 0xbe, 0xed, 0x8e, 0x49, 0x0d, 0xb5, 0xa0, 0xd0, 0xb5, 0x83, 0x43, 0x98, 0xe9, 0x53, 0xd2, 0xa1, + 0x27, 0xec, 0x81, 0x2c, 0xdc, 0x71, 0xe7, 0x53, 0xae, 0xdc, 0x63, 0x13, 0x2f, 0xe5, 0x1c, 0xbe, + 0xd1, 0xb5, 0x47, 0x3b, 0xd1, 0x29, 0xdb, 0xe4, 0x87, 0xb5, 0x79, 0xe6, 0x71, 0xa4, 0xb2, 0x90, + 0x6a, 0xe1, 0x09, 0xe9, 0x1c, 0x3e, 0xd0, 0x64, 0x02, 0xf4, 0x23, 0x58, 0x49, 0x1a, 0x28, 0x4b, + 0xf7, 0x84, 0xca, 0x17, 0x52, 0x37, 0x98, 0x89, 0xa9, 0xa2, 0x72, 0x0e, 0x2f, 0x0e, 0x8f, 0xba, + 0x4f, 0x82, 0xfe, 0x8c, 0x87, 0x90, 0x61, 0x04, 0xfc, 0x49, 0x2c, 0x9e, 0x4e, 0x0a, 0xd1, 0x2c, + 0x32, 0x34, 0x72, 0x56, 0x34, 0x13, 0xb2, 0x52, 0xe5, 0x1c, 0xbe, 0x3f, 0x04, 0x2c, 0x99, 0x1a, + 0xfd, 0xa5, 0x00, 0xeb, 0x71, 0x17, 0xb4, 0xfb, 0x8f, 0x2a, 0xc4, 0x3c, 0xf1, 0x88, 0x63, 0x5b, + 0xcd, 0x68, 0x59, 0x84, 0x5e, 0xb9, 0x94, 0x7a, 0x85, 0xc8, 0x56, 0x00, 0x5d, 0xce, 0xe1, 0x47, + 0x7d, 0x2f, 0x8d, 0xd3, 0x9e, 0x78, 0x9a, 0x6d, 0x35, 0x07, 0x8a, 0xa5, 0x7f, 0x2c, 0xc0, 0xfd, + 0xe4, 0x23, 0x83, 0xe5, 0x11, 0xca, 0x9e, 0x7f, 0x42, 0x78, 0xb7, 0x32, 0x1f, 0xa1, 0x92, 0xeb, + 0x92, 0x07, 0x8f, 0x50, 0x3d, 0x1a, 0xcb, 0x8b, 0xd7, 0x2e, 0xfb, 0xdc, 0xad, 0x83, 0xfd, 0xd6, + 0x77, 0x08, 0xcf, 0xb3, 0xf0, 0x59, 0x0c, 0x51, 0x2c, 0xa7, 0x2e, 0xdd, 0xe4, 0x22, 0xdf, 0xd0, + 0xa3, 0x93, 0x0b, 0x80, 0x7f, 0x08, 0xd7, 0x4c, 0x96, 0xf0, 0x21, 0xfd, 0x74, 0x4b, 0xe1, 0x36, + 0xd3, 0x34, 0xfe, 0x81, 0x30, 0x31, 0x39, 0x59, 0xce, 0x61, 0xd1, 0x1c, 0xea, 0x88, 0x42, 0x62, + 0xdc, 0x05, 0x42, 0xcb, 0xb2, 0xe3, 0x71, 0x38, 0xb2, 0x95, 0xd4, 0x05, 0x3b, 0xe1, 0x51, 0x91, + 0x87, 0xc4, 0x49, 0xaf, 0x8e, 0xe1, 0x51, 0x39, 0x01, 0x44, 0xef, 0x15, 0x80, 0xe3, 0x58, 0x4d, + 0x9d, 0xe7, 0xc9, 0x6f, 0x8d, 0x7c, 0x9e, 0x53, 0xde, 0x23, 0x7f, 0x55, 0x60, 0x41, 0x24, 0xba, + 0x37, 0x7e, 0x16, 0xff, 0xa9, 0x4f, 0x74, 0x65, 0xbc, 0x93, 0xf5, 0xf6, 0x3a, 0xee, 0x87, 0x42, + 0x03, 0xb7, 0xd7, 0x04, 0x22, 0xf4, 0x29, 0x84, 0x93, 0x45, 0x68, 0x94, 0xab, 0x2d, 0x14, 0x99, + 0xd6, 0xef, 0xa4, 0x4c, 0xfb, 0x60, 0x6e, 0xb7, 0x9c, 0xc3, 0x57, 0xcd, 0xc1, 0x76, 0xd4, 0x86, + 0xf9, 0x50, 0x76, 0x10, 0xa0, 0xe2, 0x29, 0xde, 0xc2, 0xdd, 0x94, 0x37, 0xca, 0xf1, 0x99, 0xd6, + 0x72, 0x0e, 0xdf, 0x34, 0x93, 0x7a, 0xd1, 0x3e, 0xdc, 0xec, 0xbf, 0x92, 0xf0, 0xc0, 0xc8, 0xa7, + 0xf3, 0x1e, 0x53, 0xf6, 0xd6, 0x58, 0x65, 0x09, 0xaf, 0xb8, 0xe5, 0x1c, 0xbe, 0xee, 0x26, 0x3c, + 0xee, 0x9e, 0xc0, 0xad, 0x31, 0xcf, 0x88, 0x5c, 0xd5, 0xfd, 0x94, 0x71, 0x8d, 0x7f, 0xfa, 0x0c, + 0x02, 0xfe, 0xc1, 0xf8, 0x87, 0xd1, 0x7d, 0x08, 0x47, 0x4d, 0xc2, 0xdc, 0x80, 0xcb, 0x93, 0xc8, + 0x85, 0x07, 0x29, 0x83, 0x4b, 0x48, 0x3c, 0x07, 0x83, 0x33, 0x13, 0xf2, 0xd1, 0x15, 0xb8, 0xd2, + 0xd3, 0xc1, 0x66, 0xe9, 0x21, 0x93, 0x7d, 0x3f, 0x55, 0x76, 0x40, 0x5c, 0xce, 0xe1, 0xcb, 0x66, + 0x3c, 0x65, 0xbc, 0x07, 0x28, 0x9e, 0xc6, 0xe0, 0x33, 0x52, 0x78, 0x94, 0x52, 0x31, 0x32, 0x9c, + 0xb2, 0x65, 0xd1, 0x64, 0x38, 0x8d, 0x3b, 0x24, 0xba, 0xcb, 0x92, 0x8b, 0x85, 0xc7, 0x99, 0x45, + 0xf3, 0x6c, 0xe4, 0xa0, 0xe8, 0x30, 0x43, 0x39, 0x24, 0xda, 0x62, 0xb9, 0x9d, 0xc2, 0x5a, 0x66, + 0xd1, 0x3c, 0x19, 0x34, 0x28, 0x3a, 0x4c, 0x10, 0xb5, 0x60, 0x21, 0x2e, 0x9a, 0x27, 0x9c, 0x22, + 0xbb, 0x3c, 0x49, 0x79, 0x17, 0x48, 0xce, 0xd9, 0x96, 0x73, 0x78, 0xce, 0x4c, 0xce, 0xe6, 0x26, + 0x6b, 0x0b, 0x4d, 0xf5, 0xd6, 0x57, 0xd4, 0xd6, 0x33, 0xd8, 0x88, 0xb6, 0xd0, 0x6c, 0xc9, 0xda, + 0x42, 0xeb, 0x7d, 0xe7, 0x2b, 0x6a, 0xeb, 0xd9, 0x70, 0x44, 0x5b, 0x68, 0xc9, 0x36, 0x2c, 0xc6, + 0xb5, 0xb1, 0x7c, 0xaa, 0x17, 0xec, 0x96, 0x5d, 0x8f, 0xba, 0x85, 0xf5, 0xcc, 0xea, 0xe2, 0x59, + 0xdd, 0x41, 0x75, 0x03, 0xf9, 0xde, 0xdf, 0x12, 0xa0, 0x18, 0x3f, 0x20, 0xd0, 0xe6, 0x26, 0xbf, + 0x12, 0x77, 0xe2, 0xcf, 0x2c, 0x85, 0x8d, 0xd4, 0x37, 0xd9, 0xd4, 0x72, 0x5a, 0xfe, 0x26, 0xdb, + 0x23, 0x6b, 0x8e, 0x92, 0xa1, 0xd7, 0x30, 0x9f, 0xf0, 0xc2, 0x42, 0xed, 0x26, 0x2d, 0xbc, 0x9d, + 0x7a, 0xc4, 0x1e, 0x53, 0xcc, 0xca, 0x8f, 0xd8, 0x43, 0x9d, 0x76, 0x93, 0x0e, 0x2b, 0x8b, 0x8e, + 0x9b, 0x8e, 0x45, 0x0b, 0x4f, 0x33, 0x2b, 0x1b, 0x2a, 0x20, 0x1d, 0x54, 0xd6, 0xef, 0x44, 0x3f, + 0x80, 0x6b, 0xbe, 0x79, 0x18, 0xee, 0x43, 0x34, 0xd8, 0x10, 0xdd, 0xd3, 0xc2, 0x66, 0xca, 0x5e, + 0x94, 0x94, 0x5a, 0x09, 0xf6, 0x22, 0xdf, 0x3c, 0x8c, 0xb7, 0x23, 0x1f, 0x16, 0xbd, 0x30, 0x19, + 0x42, 0x5c, 0x26, 0x89, 0x1c, 0x52, 0xf6, 0x90, 0xdd, 0x6d, 0xf9, 0x85, 0x77, 0x52, 0x9e, 0xa4, + 0x26, 0xe5, 0x51, 0xca, 0x39, 0x3c, 0xef, 0x25, 0xf7, 0x0f, 0x2f, 0x8b, 0x30, 0x95, 0x1b, 0x2e, + 0xf9, 0x67, 0x99, 0xfd, 0x34, 0x5e, 0x00, 0x30, 0xe8, 0xa7, 0x03, 0xa5, 0x01, 0xc9, 0xda, 0xc2, + 0x45, 0xf8, 0xee, 0x57, 0xd4, 0x96, 0xb4, 0x08, 0x07, 0xf2, 0xdd, 0xfb, 0x70, 0x33, 0x72, 0x8c, + 0x53, 0x72, 0x40, 0xfd, 0xe6, 0xab, 0x70, 0x0f, 0x7c, 0x2f, 0x65, 0x47, 0x4a, 0x48, 0x26, 0x05, + 0x3b, 0x92, 0x35, 0xda, 0xbc, 0x75, 0x01, 0xa6, 0x19, 0xdf, 0xc7, 0xe7, 0x66, 0xf2, 0xe2, 0x54, + 0x70, 0x94, 0xe9, 0x9d, 0x97, 0x82, 0xd9, 0x8b, 0x9e, 0x56, 0xd9, 0xe9, 0x78, 0xed, 0xef, 0x66, + 0xfb, 0xbf, 0xde, 0x8d, 0xb6, 0x74, 0x74, 0x07, 0x96, 0x4b, 0xaa, 0x2e, 0x6b, 0x2f, 0x14, 0x4c, + 0xb0, 0xa2, 0x6b, 0x0d, 0x2c, 0x0f, 0xff, 0xee, 0xe8, 0x16, 0x14, 0x46, 0x49, 0x74, 0x05, 0xbf, + 0x50, 0xb0, 0x28, 0xa0, 0x55, 0xb8, 0x35, 0xda, 0xbb, 0xdb, 0xd8, 0x52, 0x70, 0x4d, 0x31, 0x14, + 0x5d, 0xcc, 0xa3, 0x77, 0x60, 0x63, 0x94, 0xa2, 0x24, 0x19, 0xd2, 0x96, 0xa4, 0x2b, 0xa4, 0xae, + 0xe9, 0xc6, 0x0e, 0x56, 0x74, 0xa2, 0x2b, 0x95, 0x6d, 0x52, 0xd6, 0x74, 0x43, 0x29, 0x89, 0x53, + 0xe8, 0x6d, 0x78, 0x6b, 0x02, 0x53, 0x75, 0x4f, 0xff, 0xa4, 0x32, 0xc0, 0x71, 0x0e, 0x6d, 0xc2, + 0xfa, 0x24, 0x0e, 0xad, 0xb6, 0xa3, 0x95, 0xb6, 0x06, 0x78, 0xa6, 0xd1, 0x13, 0x78, 0x98, 0x05, + 0x1a, 0x2e, 0xe9, 0xe2, 0x79, 0xf4, 0x08, 0xee, 0xa5, 0x42, 0x0a, 0x28, 0x2f, 0xa0, 0x07, 0x50, + 0x1c, 0xa5, 0x94, 0xea, 0xf5, 0x8a, 0x2a, 0x4b, 0x86, 0xaa, 0xd5, 0x48, 0xd9, 0x30, 0xea, 0xe2, + 0x0c, 0xba, 0x0f, 0x77, 0x26, 0xd3, 0x19, 0x72, 0x5d, 0xbc, 0x98, 0x4c, 0xf6, 0x52, 0xad, 0x95, + 0xb4, 0x97, 0x3a, 0x29, 0x29, 0xfa, 0xae, 0xa1, 0xd5, 0x45, 0x40, 0x6f, 0xc1, 0xa3, 0x09, 0xf8, + 0xf4, 0x4f, 0x2a, 0x7c, 0xce, 0x18, 0xc6, 0x4b, 0x29, 0x06, 0xee, 0x0f, 0x5d, 0x29, 0xe9, 0x65, + 0x75, 0xdb, 0x10, 0x2f, 0xa3, 0x67, 0xf0, 0x76, 0x26, 0xf9, 0x71, 0x13, 0x5f, 0x49, 0xd1, 0x83, + 0x95, 0x92, 0x3a, 0x38, 0xf5, 0xb3, 0x59, 0x27, 0x65, 0x47, 0xae, 0x8b, 0x57, 0x33, 0x4d, 0x4a, + 0x40, 0x29, 0x66, 0x36, 0x4f, 0x40, 0x7d, 0x0d, 0x7d, 0x00, 0xef, 0x7f, 0x15, 0xf3, 0x84, 0xeb, + 0xa1, 0xa2, 0xe8, 0xba, 0x88, 0xd0, 0x77, 0xe0, 0x71, 0x16, 0x66, 0xe9, 0xd3, 0x06, 0x56, 0xc4, + 0xeb, 0xe8, 0x21, 0xdc, 0x9d, 0x40, 0x5e, 0xda, 0xab, 0x49, 0x55, 0xad, 0xb4, 0x25, 0xde, 0x48, + 0x71, 0x71, 0x59, 0xd2, 0x75, 0xa9, 0x56, 0xc2, 0x12, 0xd9, 0x55, 0xf6, 0xf4, 0xba, 0x24, 0x2b, + 0xba, 0x78, 0x33, 0x65, 0xd6, 0xfa, 0x3c, 0xf1, 0x39, 0x98, 0x43, 0xcf, 0xe1, 0xd9, 0x04, 0x2e, + 0xa5, 0x22, 0xe9, 0x86, 0x2a, 0xeb, 0x8a, 0x84, 0xe5, 0xf2, 0x00, 0xe7, 0x7c, 0xa6, 0xf9, 0x0e, + 0xf9, 0x25, 0xb9, 0xac, 0x88, 0x85, 0x14, 0x6b, 0x71, 0x8e, 0xaa, 0x52, 0xd5, 0xf0, 0x5e, 0x69, + 0x4b, 0x5c, 0xc8, 0xa4, 0x80, 0x59, 0x96, 0x70, 0x05, 0x8b, 0x29, 0x83, 0xe1, 0x1c, 0x72, 0xa5, + 0xa1, 0x1b, 0x43, 0xce, 0xbb, 0x84, 0xd6, 0xe0, 0x41, 0xaa, 0x77, 0xf1, 0x59, 0xbc, 0x85, 0xd6, + 0x61, 0x2d, 0x93, 0x7f, 0x71, 0xfa, 0xe5, 0x94, 0xc9, 0xec, 0xd3, 0x57, 0x55, 0x19, 0x6b, 0xba, + 0xb6, 0x6d, 0x88, 0xb7, 0xd1, 0x7b, 0xb0, 0x39, 0x69, 0x32, 0x35, 0x79, 0x17, 0x6b, 0x92, 0x5c, + 0x1e, 0x8a, 0x73, 0x2b, 0x29, 0xbe, 0x1f, 0xc5, 0x46, 0xc9, 0xa8, 0x48, 0xba, 0xb8, 0x9a, 0xb2, + 0xa6, 0xf4, 0x9a, 0xf6, 0x72, 0xbb, 0x22, 0xed, 0x2a, 0xe2, 0x9d, 0x31, 0x72, 0x35, 0x39, 0x66, + 0xdd, 0x92, 0x4e, 0xea, 0x58, 0xfb, 0xfe, 0x9e, 0x58, 0x1c, 0xe3, 0x8a, 0x71, 0xea, 0xb2, 0xba, + 0x53, 0x26, 0xd2, 0x0b, 0x49, 0xad, 0x48, 0x5b, 0x6a, 0x45, 0x35, 0xf6, 0xc4, 0xbb, 0xe8, 0x7d, + 0x78, 0x27, 0x85, 0x8b, 0xad, 0x10, 0x55, 0x26, 0x58, 0xd9, 0x51, 0x75, 0x03, 0xb3, 0xd0, 0x29, + 0xde, 0x4b, 0x8e, 0xc2, 0xba, 0x54, 0xad, 0xc4, 0x43, 0xac, 0x78, 0x1f, 0x15, 0xe1, 0xf6, 0x28, + 0x9d, 0x22, 0x6f, 0xf2, 0x5f, 0xd8, 0xd6, 0x64, 0x45, 0x7c, 0xb0, 0xf6, 0xe7, 0x02, 0xcc, 0x0e, + 0xfe, 0x6b, 0x04, 0x5a, 0x81, 0xa5, 0x1e, 0x9b, 0x6e, 0x48, 0x46, 0x43, 0x1f, 0xda, 0x37, 0x97, + 0x60, 0x7e, 0x98, 0x40, 0x6f, 0xc8, 0x72, 0x10, 0x22, 0x84, 0xc4, 0xce, 0x5d, 0xb5, 0x5e, 0x57, + 0x4a, 0x62, 0x1e, 0x2d, 0xc0, 0xcd, 0xe1, 0x4e, 0x05, 0x63, 0x0d, 0x8b, 0x53, 0x49, 0x7c, 0xd2, + 0x96, 0x86, 0xd9, 0x16, 0xb8, 0xf6, 0x87, 0x79, 0x98, 0x92, 0x0d, 0x09, 0x5d, 0x87, 0xab, 0xb2, + 0x21, 0x8d, 0xfe, 0x36, 0x39, 0x68, 0x94, 0x1a, 0x46, 0x99, 0xc8, 0x5a, 0xad, 0xa6, 0xc8, 0x86, + 0x16, 0x6c, 0xe0, 0xf3, 0x70, 0x9d, 0xb5, 0xcb, 0x86, 0xfa, 0x22, 0xd8, 0xd7, 0x75, 0x5d, 0xd5, + 0x6a, 0xc1, 0xbe, 0xdd, 0xeb, 0x08, 0x20, 0x13, 0xac, 0x7c, 0xd2, 0x50, 0x74, 0x43, 0x17, 0xa7, + 0xa2, 0x8e, 0x3a, 0x56, 0xaa, 0x6a, 0xa3, 0x4a, 0xf4, 0x46, 0xbd, 0xae, 0x61, 0x43, 0x3c, 0x17, + 0x75, 0x18, 0x38, 0x58, 0x4b, 0x25, 0x52, 0x52, 0x5e, 0xa8, 0x41, 0x10, 0x9a, 0x8e, 0x74, 0x37, + 0xea, 0x3b, 0x58, 0x2a, 0x29, 0x64, 0x4b, 0xaa, 0xd5, 0x14, 0x2c, 0x9e, 0x8f, 0x18, 0xb6, 0xd4, + 0x4a, 0x45, 0xad, 0xed, 0x10, 0xbd, 0x51, 0xad, 0x4a, 0x78, 0x4f, 0xbc, 0x10, 0x8d, 0x20, 0xd4, + 0x5d, 0x51, 0x75, 0x43, 0x9c, 0x09, 0xcc, 0x12, 0x6b, 0xac, 0x6a, 0x35, 0xd5, 0xd0, 0xb0, 0x5a, + 0xdb, 0x11, 0x2f, 0xa2, 0xdb, 0xb0, 0x18, 0x74, 0x29, 0xdf, 0x37, 0x14, 0x5c, 0x93, 0x2a, 0x44, + 0x6a, 0x94, 0x54, 0x83, 0xe8, 0x86, 0x86, 0xa5, 0x1d, 0x45, 0x84, 0xb5, 0x3f, 0x3e, 0x0f, 0x37, + 0x13, 0xcb, 0xf5, 0x82, 0xe0, 0xab, 0xd6, 0x0c, 0x65, 0x87, 0xbb, 0x0d, 0x51, 0x6a, 0x58, 0xab, + 0x54, 0xc8, 0xae, 0x5a, 0x1b, 0xfe, 0x6d, 0xf7, 0x1d, 0x58, 0x1e, 0x47, 0xa8, 0x57, 0x24, 0x79, + 0x57, 0x14, 0xd0, 0x3d, 0x58, 0x1d, 0x47, 0x22, 0xbd, 0xd4, 0x89, 0xa6, 0x96, 0x64, 0x31, 0x1f, + 0x6c, 0xe7, 0xe3, 0xa8, 0xea, 0xd2, 0x8e, 0x82, 0x4b, 0x0d, 0x63, 0x4f, 0x9c, 0x9a, 0xa4, 0x4f, + 0xa9, 0x4a, 0x6a, 0x45, 0x3c, 0x17, 0x9c, 0xbd, 0xc6, 0x91, 0x7c, 0xac, 0x62, 0x49, 0x9c, 0x46, + 0x77, 0x61, 0x65, 0x1c, 0x05, 0x73, 0x23, 0x5c, 0x12, 0xcf, 0x07, 0x0b, 0x65, 0x1c, 0x51, 0x55, + 0x32, 0x0c, 0x05, 0x57, 0x35, 0xdd, 0x10, 0x2f, 0x4c, 0x1a, 0x5e, 0x55, 0x27, 0x86, 0x22, 0x55, + 0x75, 0x71, 0x66, 0x12, 0x95, 0x56, 0xd7, 0x77, 0x94, 0x9a, 0xaa, 0x88, 0x17, 0x27, 0x41, 0xd7, + 0x76, 0x0d, 0x49, 0x84, 0x89, 0x83, 0x93, 0xaa, 0xdb, 0xe2, 0xa5, 0xc9, 0xb8, 0xe5, 0xb2, 0x5a, + 0x53, 0x88, 0x5a, 0x12, 0x2f, 0xa3, 0x77, 0xe1, 0x69, 0x3a, 0x1d, 0xd9, 0x51, 0x8d, 0x72, 0x63, + 0x8b, 0xad, 0x83, 0xc0, 0xff, 0xaf, 0xa0, 0x0d, 0x78, 0x92, 0x81, 0x4d, 0x56, 0xb1, 0x5c, 0x51, + 0x64, 0x55, 0x9c, 0x0d, 0x36, 0xb2, 0x6c, 0x7a, 0x2a, 0xd2, 0x96, 0x78, 0x35, 0xd8, 0x30, 0x32, + 0x90, 0x7f, 0xac, 0xd4, 0x76, 0xd5, 0x9a, 0x2e, 0x8a, 0x19, 0xe9, 0xa5, 0x9a, 0xae, 0x6e, 0x55, + 0x14, 0xf1, 0xda, 0x24, 0xf3, 0x04, 0x5b, 0x8b, 0x2a, 0x2b, 0x35, 0xed, 0xa5, 0x88, 0xd6, 0x3e, + 0x82, 0x0b, 0xe1, 0xb3, 0x5b, 0xb0, 0x1e, 0xb7, 0x15, 0xc9, 0x08, 0x36, 0xcf, 0x91, 0x58, 0x16, + 0x75, 0x0c, 0xaf, 0x6e, 0x61, 0xed, 0x4f, 0x05, 0x58, 0x9a, 0x50, 0xfe, 0x17, 0xd8, 0x25, 0x62, + 0xc6, 0x8a, 0xac, 0x55, 0xab, 0x4a, 0xad, 0xc4, 0x31, 0x25, 0xc6, 0xcd, 0x35, 0x78, 0x30, 0x99, + 0xbc, 0xa6, 0x19, 0x9c, 0x56, 0x08, 0xc6, 0x38, 0x99, 0xb6, 0xa4, 0xd5, 0x14, 0x31, 0xbf, 0xf5, + 0xc3, 0x7f, 0xfc, 0xf2, 0xb6, 0xf0, 0x4f, 0x5f, 0xde, 0x16, 0xfe, 0xf5, 0xcb, 0xdb, 0xc2, 0xa7, + 0xda, 0xa1, 0xed, 0xbf, 0xea, 0xee, 0xaf, 0x37, 0x9d, 0xf6, 0xc6, 0xa1, 0x6b, 0x1e, 0xdb, 0x3c, + 0x2d, 0x63, 0xb6, 0x36, 0x7a, 0xff, 0xd3, 0x65, 0x1e, 0xd9, 0x1b, 0x87, 0xb4, 0xb3, 0xc1, 0x4a, + 0x35, 0x37, 0x0e, 0x9d, 0xa1, 0x3f, 0xee, 0xfa, 0x20, 0xf6, 0xf5, 0xf8, 0xe9, 0xfe, 0x79, 0x46, + 0xf6, 0xce, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x6a, 0x95, 0x35, 0xde, 0xe8, 0x4b, 0x00, 0x00, } func (m *UIBannerClickEvent) Marshal() (dAtA []byte, err error) { @@ -7681,6 +7759,47 @@ func (m *SecurityReportGetResultEvent) MarshalToSizedBuffer(dAtA []byte) (int, e return len(dAtA) - i, nil } +func (m *DiscoveryFetchEvent) 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 *DiscoveryFetchEvent) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DiscoveryFetchEvent) 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 len(m.ResourceType) > 0 { + i -= len(m.ResourceType) + copy(dAtA[i:], m.ResourceType) + i = encodeVarintUsageevents(dAtA, i, uint64(len(m.ResourceType))) + i-- + dAtA[i] = 0x12 + } + if len(m.CloudProvider) > 0 { + i -= len(m.CloudProvider) + copy(dAtA[i:], m.CloudProvider) + i = encodeVarintUsageevents(dAtA, i, uint64(len(m.CloudProvider))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *UsageEventOneOf) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -8885,6 +9004,29 @@ func (m *UsageEventOneOf_AccessListReviewDelete) MarshalToSizedBuffer(dAtA []byt } return len(dAtA) - i, nil } +func (m *UsageEventOneOf_DiscoveryFetchEvent) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UsageEventOneOf_DiscoveryFetchEvent) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.DiscoveryFetchEvent != nil { + { + size, err := m.DiscoveryFetchEvent.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintUsageevents(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3 + i-- + dAtA[i] = 0xb2 + } + return len(dAtA) - i, nil +} func encodeVarintUsageevents(dAtA []byte, offset int, v uint64) int { offset -= sovUsageevents(v) base := offset @@ -10050,6 +10192,26 @@ func (m *SecurityReportGetResultEvent) Size() (n int) { return n } +func (m *DiscoveryFetchEvent) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.CloudProvider) + if l > 0 { + n += 1 + l + sovUsageevents(uint64(l)) + } + l = len(m.ResourceType) + if l > 0 { + n += 1 + l + sovUsageevents(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *UsageEventOneOf) Size() (n int) { if m == nil { return 0 @@ -10689,6 +10851,18 @@ func (m *UsageEventOneOf_AccessListReviewDelete) Size() (n int) { } return n } +func (m *UsageEventOneOf_DiscoveryFetchEvent) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.DiscoveryFetchEvent != nil { + l = m.DiscoveryFetchEvent.Size() + n += 2 + l + sovUsageevents(uint64(l)) + } + return n +} func sovUsageevents(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 @@ -17396,6 +17570,121 @@ func (m *SecurityReportGetResultEvent) Unmarshal(dAtA []byte) error { } return nil } +func (m *DiscoveryFetchEvent) 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: DiscoveryFetchEvent: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DiscoveryFetchEvent: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CloudProvider", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUsageevents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthUsageevents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthUsageevents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CloudProvider = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUsageevents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthUsageevents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthUsageevents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResourceType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + 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 *UsageEventOneOf) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -19245,6 +19534,41 @@ func (m *UsageEventOneOf) Unmarshal(dAtA []byte) error { } m.Event = &UsageEventOneOf_AccessListReviewDelete{v} iNdEx = postIndex + case 54: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DiscoveryFetchEvent", 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 := &DiscoveryFetchEvent{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &UsageEventOneOf_DiscoveryFetchEvent{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipUsageevents(dAtA[iNdEx:]) diff --git a/api/proto/teleport/legacy/client/proto/certs.proto b/api/proto/teleport/legacy/client/proto/certs.proto index 31f99fda7c2c6..abe46945a9331 100644 --- a/api/proto/teleport/legacy/client/proto/certs.proto +++ b/api/proto/teleport/legacy/client/proto/certs.proto @@ -25,9 +25,9 @@ option (gogoproto.unmarshaler_all) = true; // Set of certificates corresponding to a single public key. message Certs { - // SSH X509 cert (PEM-encoded). + // SSH certificate marshaled in the authorized key format. bytes SSH = 1 [(gogoproto.jsontag) = "ssh,omitempty"]; - // TLS X509 cert (PEM-encoded). + // TLS X.509 certificate (PEM-encoded). bytes TLS = 2 [(gogoproto.jsontag) = "tls,omitempty"]; // TLSCACerts is a list of TLS certificate authorities. repeated bytes TLSCACerts = 3 [(gogoproto.jsontag) = "tls_ca_certs,omitempty"]; diff --git a/api/proto/teleport/legacy/types/types.proto b/api/proto/teleport/legacy/types/types.proto index 00933dbfbe117..36d459a40c6cf 100644 --- a/api/proto/teleport/legacy/types/types.proto +++ b/api/proto/teleport/legacy/types/types.proto @@ -3599,11 +3599,12 @@ message WebSessionV2 { message WebSessionSpecV2 { // User is the identity of the user to which the web session belongs. string User = 1 [(gogoproto.jsontag) = "user"]; - // Pub is the SSH certificate for the user. + // Pub is the SSH certificate for the user, marshaled in the authorized key + // format. bytes Pub = 2 [(gogoproto.jsontag) = "pub"]; // Priv is the SSH private key for the user. bytes Priv = 3 [(gogoproto.jsontag) = "priv,omitempty"]; - // TLSCert is the TLS certificate for the user. + // TLSCert is the X.509 certificate for the user (PEM-encoded). bytes TLSCert = 4 [(gogoproto.jsontag) = "tls_cert,omitempty"]; // BearerToken is a token that is paired with the session cookie for // authentication. It is periodically rotated so a stolen cookie itself diff --git a/api/proto/teleport/usageevents/v1/usageevents.proto b/api/proto/teleport/usageevents/v1/usageevents.proto index e9c8f8df56b57..b59cfc8a08f30 100644 --- a/api/proto/teleport/usageevents/v1/usageevents.proto +++ b/api/proto/teleport/usageevents/v1/usageevents.proto @@ -628,6 +628,18 @@ message SecurityReportGetResultEvent { int32 days = 2; } +// DiscoveryFetchEvent is emitted when a DiscoveryService polls for new resources of a given type +message DiscoveryFetchEvent { + // cloud_provider is the cloud provider used to fetch resources + // Eg, AWS, Azure, GCP, Kubernetes + string cloud_provider = 1; + + // resource_type is the type of resource that this fetch is polling. + // It depends on the Cloud Provider (defined above). + // Eg, rds, ec2, vm, aks, gce, app + string resource_type = 2; +} + // UsageEventOneOf is a message that can accept a oneof of any supported // external usage event. message UsageEventOneOf { @@ -684,6 +696,7 @@ message UsageEventOneOf { SecurityReportGetResultEvent security_report_get_result = 51; AccessListReviewCreate access_list_review_create = 52; AccessListReviewDelete access_list_review_delete = 53; + DiscoveryFetchEvent discovery_fetch_event = 54; } reserved 2; //UIOnboardGetStartedClickEvent reserved "ui_onboard_get_started_click"; diff --git a/api/types/types.pb.go b/api/types/types.pb.go index fe33f05192b05..088166a129ca3 100644 --- a/api/types/types.pb.go +++ b/api/types/types.pb.go @@ -9122,11 +9122,12 @@ var xxx_messageInfo_WebSessionV2 proto.InternalMessageInfo type WebSessionSpecV2 struct { // User is the identity of the user to which the web session belongs. User string `protobuf:"bytes,1,opt,name=User,proto3" json:"user"` - // Pub is the SSH certificate for the user. + // Pub is the SSH certificate for the user, marshaled in the authorized key + // format. Pub []byte `protobuf:"bytes,2,opt,name=Pub,proto3" json:"pub"` // Priv is the SSH private key for the user. Priv []byte `protobuf:"bytes,3,opt,name=Priv,proto3" json:"priv,omitempty"` - // TLSCert is the TLS certificate for the user. + // TLSCert is the X.509 certificate for the user (PEM-encoded). TLSCert []byte `protobuf:"bytes,4,opt,name=TLSCert,proto3" json:"tls_cert,omitempty"` // BearerToken is a token that is paired with the session cookie for // authentication. It is periodically rotated so a stolen cookie itself diff --git a/api/version.go b/api/version.go index 65dc6c1009c0b..18aae35040cab 100644 --- a/api/version.go +++ b/api/version.go @@ -1,7 +1,7 @@ // Code generated by "make version". DO NOT EDIT. package api -const Version = "14.2.2" +const Version = "14.2.3" // Gitref is set to the output of "git describe" during the build process. var Gitref string diff --git a/build.assets/macos/tsh/tsh.app/Contents/Info.plist b/build.assets/macos/tsh/tsh.app/Contents/Info.plist index d5922868d174e..82a9dfa7e2221 100644 --- a/build.assets/macos/tsh/tsh.app/Contents/Info.plist +++ b/build.assets/macos/tsh/tsh.app/Contents/Info.plist @@ -19,13 +19,13 @@ CFBundlePackageType APPL CFBundleShortVersionString - 14.2.2 + 14.2.3 CFBundleSupportedPlatforms MacOSX CFBundleVersion - 14.2.2 + 14.2.3 DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild diff --git a/build.assets/macos/tshdev/tsh.app/Contents/Info.plist b/build.assets/macos/tshdev/tsh.app/Contents/Info.plist index be512278fd025..3418526aceab6 100644 --- a/build.assets/macos/tshdev/tsh.app/Contents/Info.plist +++ b/build.assets/macos/tshdev/tsh.app/Contents/Info.plist @@ -17,13 +17,13 @@ CFBundlePackageType APPL CFBundleShortVersionString - 14.2.2 + 14.2.3 CFBundleSupportedPlatforms MacOSX CFBundleVersion - 14.2.2 + 14.2.3 DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild diff --git a/docs/config.json b/docs/config.json index dab4576e4bf7e..7baa3de37f2bf 100644 --- a/docs/config.json +++ b/docs/config.json @@ -1526,6 +1526,10 @@ { "title": "Snowflake", "slug": "/database-access/guides/snowflake/" + }, + { + "title": "Vitess (MySQL protocol)", + "slug": "/database-access/guides/vitess/" } ] }, @@ -2049,7 +2053,7 @@ "aws_secret_access_key": "zyxw9876-this-is-an-example" }, "cloud": { - "version": "14.2.1", + "version": "14.2.2", "major_version": "14", "sla": { "monthly_percentage": "99.9%", @@ -2093,18 +2097,18 @@ }, "teleport": { "major_version": "14", - "version": "14.2.2", + "version": "14.2.3", "git": "api/14.0.0-gd1e081e", "url": "teleport.example.com", "golang": "1.21", "plugin": { - "version": "14.2.2" + "version": "14.2.3" }, "helm_repo_url": "https://charts.releases.teleport.dev", - "latest_oss_docker_image": "public.ecr.aws/gravitational/teleport-distroless:14.2.2", - "latest_oss_debug_docker_image": "public.ecr.aws/gravitational/teleport-distroless-debug:14.2.2", - "latest_ent_docker_image": "public.ecr.aws/gravitational/teleport-ent-distroless:14.2.2", - "latest_ent_debug_docker_image": "public.ecr.aws/gravitational/teleport-ent-distroless-debug:14.2.2" + "latest_oss_docker_image": "public.ecr.aws/gravitational/teleport-distroless:14.2.3", + "latest_oss_debug_docker_image": "public.ecr.aws/gravitational/teleport-distroless-debug:14.2.3", + "latest_ent_docker_image": "public.ecr.aws/gravitational/teleport-ent-distroless:14.2.3", + "latest_ent_debug_docker_image": "public.ecr.aws/gravitational/teleport-ent-distroless-debug:14.2.3" }, "terraform": { "version": "1.0.0" diff --git a/docs/cspell.json b/docs/cspell.json index 76fcc48912041..d27cdbf9c25bf 100644 --- a/docs/cspell.json +++ b/docs/cspell.json @@ -882,6 +882,9 @@ "znmqk", "zxvf", "zztop", + "Vitess", + "vtgate", + "clientcert", "supervillain" ], "flagWords": [ diff --git a/docs/img/database-access/guides/vitess_cloud.png b/docs/img/database-access/guides/vitess_cloud.png new file mode 100644 index 0000000000000..b87459cf849b4 Binary files /dev/null and b/docs/img/database-access/guides/vitess_cloud.png differ diff --git a/docs/img/database-access/guides/vitess_selfhosted.png b/docs/img/database-access/guides/vitess_selfhosted.png new file mode 100644 index 0000000000000..e48622606ed9c Binary files /dev/null and b/docs/img/database-access/guides/vitess_selfhosted.png differ diff --git a/docs/pages/application-access/cloud-apis/google-cloud.mdx b/docs/pages/application-access/cloud-apis/google-cloud.mdx index 7e0ad4b54be9d..384161589f96c 100644 --- a/docs/pages/application-access/cloud-apis/google-cloud.mdx +++ b/docs/pages/application-access/cloud-apis/google-cloud.mdx @@ -191,7 +191,7 @@ $ gcloud compute instances create teleport-app-service \ --service-account=teleport-google-cloud-cli@.iam.gserviceaccount.com \ --scopes=cloud-platform \ --zone= \ - --image=https://www.googleapis.com/compute/v1/projects/ubuntu-os-cloud/global/images/ubuntu-2210-kinetic-arm64-v20230113 + --image=https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-11-bullseye-v20231212 ``` You must use the `service-account` and `scopes` flags as we list them here, diff --git a/docs/pages/database-access/guides/vitess.mdx b/docs/pages/database-access/guides/vitess.mdx new file mode 100644 index 0000000000000..85c890b2cc422 --- /dev/null +++ b/docs/pages/database-access/guides/vitess.mdx @@ -0,0 +1,228 @@ +--- +title: Database Access with Vitess (MySQL protocol) +description: How to configure Teleport database access for Vitess (MySQL protocol) +--- + +(!docs/pages/includes/database-access/db-introduction.mdx dbType="Vitess (MySQL)" dbConfigure="Vitess database (MySQL protocol) with mutual TLS authentication" dbName="Vitess" !) + + + +![Teleport Database Access Vitess Self-Hosted](../../../img/database-access/guides/vitess_selfhosted.png) + + +![Teleport Database Access Vitess Cloud](../../../img/database-access/guides/vitess_cloud.png) + + + + + + Accessing Vitess using the gRPC protocol is not currently supported by + Teleport. + + +## Prerequisites + +(!docs/pages/includes/edition-prereqs-tabs.mdx!) + +- A self-hosted Vitess instance. +- A host, e.g., an Amazon EC2 instance, where you will run the Teleport Database + Service. +- (!docs/pages/includes/tctl.mdx!) + +## Step 1/4. Create the Teleport Database Token + +(!docs/pages/includes/database-access/token.mdx!) + +## Step 2/4. Create a certificate/key pair + +(!docs/pages/includes/database-access/tctl-auth-sign.mdx!) + +From your local workstation, create the secrets: + +```code +# Export Teleport's certificate authority and generate certificate/key pair +# for host db.example.com with a 3-month validity period. +$ tctl auth sign --format=db --host=db.example.com --out=server --ttl=2190h +``` + +In this example, `db.example.com` is the hostname where the Teleport Database +Service can reach the Vitess server. + +(!docs/pages/includes/database-access/ttl-note.mdx!) + +The command will create 3 files: `server.cas`, `server.crt` and `server.key` +which you'll need to enable mutual TLS. + +## Step 3/4. Configure Vitess + + + +If you are running your Vitess cluster using a [Vitess Operator for Kubernetes](https://vitess.io/docs/18.0/get-started/operator/), +as a first step copy the contents of files `server.cas`, `server.crt` and `server.key` into a secret containing the cluster configuration. + +```yaml +--- +apiVersion: v1 +kind: Secret +metadata: + name: example-cluster-config +type: Opaque +stringData: + server.cas: | + -----BEGIN CERTIFICATE----- + MIIDlDCCAnygAwIBAgIQcCge3zdTWnA7isWitaG5yzANBgkqhkiG9w0BAQsFADBk + ... + jtOP8B0/0xc= + -----END CERTIFICATE----- + server.crt: | + -----BEGIN CERTIFICATE----- + MIIDqjCCApKgAwIBAgIRAKq0OQqYIx3pbkSVpIgMooowDQYJKoZIhvcNAQELBQAw + ... + aRWuAdb7KYfHgZgC+k5jiFS9MYPbOc3qMK6KwGAU + -----END CERTIFICATE----- + server.key: | + -----BEGIN RSA PRIVATE KEY----- + MIIEpQIBAAKCAQEAsiejNWoNPPgcjjNZvG0pA+eADXxPyiGf6Or7oiy2ZmkblC4I + ... + hr6KW+m+bBx0ABXrJVZ4dfv7ppP173vhavmSG3dvo2D5savAay6L/bE= + -----END RSA PRIVATE KEY----- +``` + +Next, update the gateway configuration: + +- Add a new `extraFlags` section with a new entry `mysql_auth_server_impl: clientcert`. +- Add a new `secureTransport` section referencing the added files. + +```yaml +cells: + - name: zone1 + gateway: + extraFlags: + mysql_auth_server_impl: clientcert + secureTransport: + required: true + tls: + clientCACertSecret: + name: teleport-cluster-config + key: server.cas + certSecret: + name: teleport-cluster-config + key: server.crt + keySecret: + name: teleport-cluster-config + key: server.key +``` + + + +If you are running your Vitess cluster using a custom deployment, you will need to update the flags for the `vtgate` service. The following flags needs to be added: + +``` +vtgate ... \ + --mysql_server_ssl_ca=/path/to/server.cas \ + --mysql_server_ssl_cert=/path/to/server.crt \ + --mysql_server_ssl_key=/path/to/server.key \ + --mysql_auth_server_impl=clientcert +``` + +The files `server.cas`, `server.crt` and `server.key` mut be in a location +accessible by the `vtgate` service. + +For more details about `vtgate` and Vitess configuration, please see the +[documentation](https://vitess.io/docs/18.0/user-guides/configuration-basic/vtgate/). + + + + +### Create a Teleport user + +(!docs/pages/includes/database-access/create-user.mdx!) + +### Configure and Start the Database Service + +Install and configure Teleport where you will run the Teleport Database Service: + + + + +(!docs/pages/includes/install-linux.mdx!) + +(!docs/pages/includes/database-access/db-configure-start.mdx +dbName="example-vitess" dbProtocol="mysql" +databaseAddress="db.example.com:3306" !) + + + + Teleport provides Helm charts for installing the Teleport Database Service in Kubernetes Clusters. + +(!docs/pages/kubernetes-access/helm/includes/helm-repo-add.mdx!) + +(!docs/pages/includes/database-access/db-helm-install.mdx dbName="example-vitess" +dbProtocol="mysql" databaseAddress="db.example.com:3306" !) + + + + +(!docs/pages/includes/database-access/multiple-instances-tip.mdx !) + +## Step 4/4. Connect + +Once the Database Service has joined the cluster, log in to see the available +databases: + + + + +```code +$ tsh login --proxy=teleport.example.com --user=alice +$ tsh db ls +# Name Description Labels +# -------------- -------------- -------- +# example-vitess Example Vitess env=dev +``` + + + + +```code +$ tsh login --proxy=mytenant.teleport.sh --user=alice +$ tsh db ls +# Name Description Labels +# -------------- -------------- -------- +# example-vitess Example Vitess env=dev +``` + + + + + +Note that you will only be able to see databases your role has access to. See +the [RBAC](../rbac.mdx) guide for more details. + +To retrieve credentials for a database and connect to it: + +```code +$ tsh db connect example-vitess +``` + +You can optionally specify the database name and the user to use by default when +connecting to the database instance: + +```code +$ tsh db connect --db-user=root --db-name=mysql example-vitess +``` + + + The `mysql` or `mariadb` command-line client should be available in `PATH` in + order to be able to connect. `mariadb` is a default command-line client for + MySQL and MariaDB. + + +To log out of the database and remove credentials: + +```code +# Remove credentials for a particular database instance. +$ tsh db logout example-vitess +# Remove credentials for all database instances. +$ tsh db logout +``` diff --git a/docs/pages/includes/database-access/guides.mdx b/docs/pages/includes/database-access/guides.mdx index 50b6e5ad59c24..84ee06d4c093a 100644 --- a/docs/pages/includes/database-access/guides.mdx +++ b/docs/pages/includes/database-access/guides.mdx @@ -29,6 +29,7 @@ - [Self-Hosted Cassandra & ScyllaDB](../../database-access/guides/cassandra-self-hosted.mdx): Connect self-hosted Cassandra or ScyllaDB. - [Self-Hosted Oracle](../../database-access/guides/oracle-self-hosted.mdx): Connect self-hosted Oracle database. - [Snowflake](../../database-access/guides/snowflake.mdx): Connect Snowflake. +- [Vitess](../../database-access/guides/vitess.mdx): Connect Vitess. ## Other guides diff --git a/docs/pages/server-access/guides/host-user-creation.mdx b/docs/pages/server-access/guides/host-user-creation.mdx index b188d2ea63e2e..40c4fb677d0ee 100644 --- a/docs/pages/server-access/guides/host-user-creation.mdx +++ b/docs/pages/server-access/guides/host-user-creation.mdx @@ -28,11 +28,21 @@ since it must execute these commands in order to create transient users: ## Step 1/3. Configure a role -First, create a role with `create_host_user_mode` set to `drop` or `keep`. +First, create a role with `create_host_user_mode` set to `drop`, `insecure-drop`, or `keep`. -Setting the option to `drop` will create transient users that are deleted once the -session ends. Setting it to `keep` will create permanent users on the host at -login time. + - `insecure-drop` will create transient users that are deleted once the session ends. + - `drop` is the same as `insecure-drop` except it also creates a home directory for the user. + It exists only for backwards compatibility; newly configured services should use + `insecure-drop` instead. + - `keep` will create permanent users on the host at login time. + +Note that with the `drop` and `insecure-drop` modes, it is possible for a created +user to get the same UID as a previously deleted user, which would give the new user +access to all of the old user's files if they are not deleted. + + + `drop` mode will be removed in Teleport 15. + The following role specification will allow users to log in as `nginxrestarter` on any matching Node. The host user will be created and added to the groups listed in @@ -79,7 +89,7 @@ of the Linux distribution being used. See [User/Group Name Syntax](https://syste When a Teleport user accesses an SSH Service instance, Teleport checks each of the user's roles that match the instance. If at least one role matches the instance -but does not specify `create_host_user_mode` to be either `keep` or `drop`, +but does not specify `create_host_user_mode` to be either `keep`, `drop`, or `insecure-drop`, automatic user creation will be disabled. Roles that do not match the server will not be checked. @@ -197,8 +207,9 @@ returns an error if it cannot find the `useradd` binary. The `useradd` command creates a new home directory with the name of the new host user and adds the user to the groups specified in the Teleport user's roles. -Aside from specifying a home directory and groups, the SSH Service executes -`useradd` with the system defaults. For example, it associates the user with the +The SSH Service executes +`useradd --no-create-home --home-dir --groups --uid --gid ` +when adding a user, with all other options using system defaults. For example, it associates the user with the default login shell for the host, which you can specify by setting the `SHELL` field in `/etc/default/useradd`. See the `useradd` manual for your system for a full description of the default behavior. @@ -208,7 +219,8 @@ contents of the `host_sudoers` file written with one entry per line, each prefixed with the username of the user that has logged in. The session can then proceed as usual, however once the SSH session ends, the user -will be automatically removed and their home directory will be deleted, as the +will be automatically removed and their home directory will be deleted with +`userdel --remove `, as the matching role specified they should be dropped. Files owned by the deleted user, created outside the home directory, will remain in place. Groups that were created will remain on the system after the session ends. diff --git a/e b/e index 83e7865acecf9..b4450089718c5 160000 --- a/e +++ b/e @@ -1 +1 @@ -Subproject commit 83e7865acecf97787c60d11b8548a09fd2a6bbc2 +Subproject commit b4450089718c5f8434cc5b9253172e0d3dfc5925 diff --git a/examples/chart/teleport-cluster/Chart.yaml b/examples/chart/teleport-cluster/Chart.yaml index a4cafd36546d6..4040a7399c523 100644 --- a/examples/chart/teleport-cluster/Chart.yaml +++ b/examples/chart/teleport-cluster/Chart.yaml @@ -1,4 +1,4 @@ -.version: &version "14.2.2" +.version: &version "14.2.3" name: teleport-cluster apiVersion: v2 diff --git a/examples/chart/teleport-cluster/charts/teleport-operator/Chart.yaml b/examples/chart/teleport-cluster/charts/teleport-operator/Chart.yaml index 17a83a4135531..306200ee2bfd3 100644 --- a/examples/chart/teleport-cluster/charts/teleport-operator/Chart.yaml +++ b/examples/chart/teleport-cluster/charts/teleport-operator/Chart.yaml @@ -1,4 +1,4 @@ -.version: &version "14.2.2" +.version: &version "14.2.3" name: teleport-operator apiVersion: v2 diff --git a/examples/chart/teleport-cluster/tests/__snapshot__/auth_deployment_test.yaml.snap b/examples/chart/teleport-cluster/tests/__snapshot__/auth_deployment_test.yaml.snap index 1cdbaee3f062b..b8522bc8adceb 100644 --- a/examples/chart/teleport-cluster/tests/__snapshot__/auth_deployment_test.yaml.snap +++ b/examples/chart/teleport-cluster/tests/__snapshot__/auth_deployment_test.yaml.snap @@ -1,6 +1,6 @@ should add an operator side-car when operator is enabled: 1: | - image: public.ecr.aws/gravitational/teleport-operator:14.2.2 + image: public.ecr.aws/gravitational/teleport-operator:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: httpGet: @@ -41,7 +41,7 @@ should add an operator side-car when operator is enabled: - args: - --diag-addr=0.0.0.0:3000 - --apply-on-startup=/etc/teleport/apply-on-startup.yaml - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -174,7 +174,7 @@ should set nodeSelector when set in values: - args: - --diag-addr=0.0.0.0:3000 - --apply-on-startup=/etc/teleport/apply-on-startup.yaml - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -271,7 +271,7 @@ should set resources when set in values: - args: - --diag-addr=0.0.0.0:3000 - --apply-on-startup=/etc/teleport/apply-on-startup.yaml - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -357,7 +357,7 @@ should set securityContext when set in values: - args: - --diag-addr=0.0.0.0:3000 - --apply-on-startup=/etc/teleport/apply-on-startup.yaml - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent lifecycle: preStop: diff --git a/examples/chart/teleport-cluster/tests/__snapshot__/proxy_deployment_test.yaml.snap b/examples/chart/teleport-cluster/tests/__snapshot__/proxy_deployment_test.yaml.snap index 40e8f90094b2d..99e7aabbcddef 100644 --- a/examples/chart/teleport-cluster/tests/__snapshot__/proxy_deployment_test.yaml.snap +++ b/examples/chart/teleport-cluster/tests/__snapshot__/proxy_deployment_test.yaml.snap @@ -5,7 +5,7 @@ should provision initContainer correctly when set in values: - wait - no-resolve - RELEASE-NAME-auth-v13.NAMESPACE.svc.cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 name: wait-auth-update - args: - echo test @@ -62,7 +62,7 @@ should set nodeSelector when set in values: containers: - args: - --diag-addr=0.0.0.0:3000 - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -123,7 +123,7 @@ should set nodeSelector when set in values: - wait - no-resolve - RELEASE-NAME-auth-v13.NAMESPACE.svc.cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 name: wait-auth-update nodeSelector: environment: security @@ -174,7 +174,7 @@ should set resources when set in values: containers: - args: - --diag-addr=0.0.0.0:3000 - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -242,7 +242,7 @@ should set resources when set in values: - wait - no-resolve - RELEASE-NAME-auth-v13.NAMESPACE.svc.cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 name: wait-auth-update serviceAccountName: RELEASE-NAME-proxy terminationGracePeriodSeconds: 60 @@ -275,7 +275,7 @@ should set securityContext for initContainers when set in values: containers: - args: - --diag-addr=0.0.0.0:3000 - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -343,7 +343,7 @@ should set securityContext for initContainers when set in values: - wait - no-resolve - RELEASE-NAME-auth-v13.NAMESPACE.svc.cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 name: wait-auth-update securityContext: allowPrivilegeEscalation: false @@ -383,7 +383,7 @@ should set securityContext when set in values: containers: - args: - --diag-addr=0.0.0.0:3000 - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -451,7 +451,7 @@ should set securityContext when set in values: - wait - no-resolve - RELEASE-NAME-auth-v13.NAMESPACE.svc.cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 name: wait-auth-update securityContext: allowPrivilegeEscalation: false diff --git a/examples/chart/teleport-kube-agent/Chart.yaml b/examples/chart/teleport-kube-agent/Chart.yaml index ed78f39ab6f1b..c50a5a37fd3ec 100644 --- a/examples/chart/teleport-kube-agent/Chart.yaml +++ b/examples/chart/teleport-kube-agent/Chart.yaml @@ -1,4 +1,4 @@ -.version: &version "14.2.2" +.version: &version "14.2.3" name: teleport-kube-agent apiVersion: v2 diff --git a/examples/chart/teleport-kube-agent/tests/__snapshot__/deployment_test.yaml.snap b/examples/chart/teleport-kube-agent/tests/__snapshot__/deployment_test.yaml.snap index ab6568d0c2c6a..2788d54040255 100644 --- a/examples/chart/teleport-kube-agent/tests/__snapshot__/deployment_test.yaml.snap +++ b/examples/chart/teleport-kube-agent/tests/__snapshot__/deployment_test.yaml.snap @@ -30,7 +30,7 @@ sets Deployment annotations when specified if action is Upgrade: env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -103,7 +103,7 @@ sets Deployment labels when specified if action is Upgrade: env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -163,7 +163,7 @@ sets Pod annotations when specified if action is Upgrade: env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -223,7 +223,7 @@ sets Pod labels when specified if action is Upgrade: env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -300,7 +300,7 @@ should add emptyDir for data when existingDataVolume is not set if action is Upg env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -361,7 +361,7 @@ should add insecureSkipProxyTLSVerify to args when set in values if action is Up env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -421,7 +421,7 @@ should correctly configure existingDataVolume when set if action is Upgrade: env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -479,7 +479,7 @@ should expose diag port if action is Upgrade: env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -551,7 +551,7 @@ should have multiple replicas when replicaCount is set (using .replicaCount, dep env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -623,7 +623,7 @@ should have multiple replicas when replicaCount is set (using highAvailability.r env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -683,7 +683,7 @@ should have one replica when replicaCount is not set if action is Upgrade: env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -743,7 +743,7 @@ should mount extraVolumes and extraVolumeMounts if action is Upgrade: env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -810,7 +810,7 @@ should mount tls.existingCASecretName and set environment when set in values if value: "true" - name: SSL_CERT_FILE value: /etc/teleport-tls-ca/ca.pem - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -880,7 +880,7 @@ should mount tls.existingCASecretName and set extra environment when set in valu value: http://username:password@my.proxy.host:3128 - name: SSL_CERT_FILE value: /etc/teleport-tls-ca/ca.pem - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -946,7 +946,7 @@ should provision initContainer correctly when set in values if action is Upgrade env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1042,7 +1042,7 @@ should set SecurityContext if action is Upgrade: env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1122,7 +1122,7 @@ should set affinity when set in values if action is Upgrade: env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1182,7 +1182,7 @@ should set default serviceAccountName when not set in values if action is Upgrad env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1255,7 +1255,7 @@ should set environment when extraEnv set in values if action is Upgrade: value: "true" - name: HTTPS_PROXY value: http://username:password@my.proxy.host:3128 - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1375,7 +1375,7 @@ should set imagePullPolicy when set in values if action is Upgrade: env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: Always livenessProbe: failureThreshold: 6 @@ -1435,7 +1435,7 @@ should set nodeSelector if set in values if action is Upgrade: env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1497,7 +1497,7 @@ should set not set priorityClassName when not set in values if action is Upgrade env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1569,7 +1569,7 @@ should set preferred affinity when more than one replica is used if action is Up env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1629,7 +1629,7 @@ should set priorityClassName when set in values if action is Upgrade: env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1690,7 +1690,7 @@ should set probeTimeoutSeconds when set in values if action is Upgrade: env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1760,7 +1760,7 @@ should set required affinity when highAvailability.requireAntiAffinity is set if env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1820,7 +1820,7 @@ should set resources when set in values if action is Upgrade: env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1887,7 +1887,7 @@ should set serviceAccountName when set in values if action is Upgrade: env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1947,7 +1947,7 @@ should set tolerations when set in values if action is Upgrade: env: - name: TELEPORT_INSTALL_METHOD_HELM_KUBE_AGENT value: "true" - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 diff --git a/examples/chart/teleport-kube-agent/tests/__snapshot__/job_test.yaml.snap b/examples/chart/teleport-kube-agent/tests/__snapshot__/job_test.yaml.snap index 12e74f7b81aa0..695f44d01afc2 100644 --- a/examples/chart/teleport-kube-agent/tests/__snapshot__/job_test.yaml.snap +++ b/examples/chart/teleport-kube-agent/tests/__snapshot__/job_test.yaml.snap @@ -25,7 +25,7 @@ should create ServiceAccount for post-delete hook by default: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent name: post-delete-job securityContext: @@ -104,7 +104,7 @@ should not create ServiceAccount for post-delete hook if serviceAccount.create i fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent name: post-delete-job securityContext: @@ -132,7 +132,7 @@ should not create ServiceAccount, Role or RoleBinding for post-delete hook if se fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent name: post-delete-job securityContext: @@ -160,7 +160,7 @@ should set nodeSelector in post-delete hook: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent name: post-delete-job securityContext: @@ -190,7 +190,7 @@ should set securityContext in post-delete hook: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent name: post-delete-job securityContext: diff --git a/examples/chart/teleport-kube-agent/tests/__snapshot__/statefulset_test.yaml.snap b/examples/chart/teleport-kube-agent/tests/__snapshot__/statefulset_test.yaml.snap index ca5ed8743f499..d0b199d1a6278 100644 --- a/examples/chart/teleport-kube-agent/tests/__snapshot__/statefulset_test.yaml.snap +++ b/examples/chart/teleport-kube-agent/tests/__snapshot__/statefulset_test.yaml.snap @@ -16,7 +16,7 @@ sets Pod annotations when specified: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -84,7 +84,7 @@ sets Pod labels when specified: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -176,7 +176,7 @@ sets StatefulSet labels when specified: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -272,7 +272,7 @@ should add insecureSkipProxyTLSVerify to args when set in values: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -340,7 +340,7 @@ should add volumeClaimTemplate for data volume when using StatefulSet and action fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -428,7 +428,7 @@ should add volumeClaimTemplate for data volume when using StatefulSet and is Fre fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -506,7 +506,7 @@ should add volumeMount for data volume when using StatefulSet: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -574,7 +574,7 @@ should expose diag port: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -642,7 +642,7 @@ should generate Statefulset when storage is disabled and mode is a Upgrade: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -724,7 +724,7 @@ should have multiple replicas when replicaCount is set (using .replicaCount, dep fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -804,7 +804,7 @@ should have multiple replicas when replicaCount is set (using highAvailability.r fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -872,7 +872,7 @@ should have one replica when replicaCount is not set: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -940,7 +940,7 @@ should install Statefulset when storage is disabled and mode is a Fresh Install: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1010,7 +1010,7 @@ should mount extraVolumes and extraVolumeMounts: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1085,7 +1085,7 @@ should mount tls.existingCASecretName and set environment when set in values: value: RELEASE-NAME - name: SSL_CERT_FILE value: /etc/teleport-tls-ca/ca.pem - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1165,7 +1165,7 @@ should mount tls.existingCASecretName and set extra environment when set in valu value: /etc/teleport-tls-ca/ca.pem - name: HTTPS_PROXY value: http://username:password@my.proxy.host:3128 - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1241,7 +1241,7 @@ should not add emptyDir for data when using StatefulSet: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1309,7 +1309,7 @@ should provision initContainer correctly when set in values: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1413,7 +1413,7 @@ should set SecurityContext: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1501,7 +1501,7 @@ should set affinity when set in values: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1569,7 +1569,7 @@ should set default serviceAccountName when not set in values: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1650,7 +1650,7 @@ should set environment when extraEnv set in values: value: RELEASE-NAME - name: HTTPS_PROXY value: http://username:password@my.proxy.host:3128 - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1786,7 +1786,7 @@ should set imagePullPolicy when set in values: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: Always livenessProbe: failureThreshold: 6 @@ -1854,7 +1854,7 @@ should set nodeSelector if set in values: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1936,7 +1936,7 @@ should set preferred affinity when more than one replica is used: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -2004,7 +2004,7 @@ should set probeTimeoutSeconds when set in values: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -2082,7 +2082,7 @@ should set required affinity when highAvailability.requireAntiAffinity is set: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -2150,7 +2150,7 @@ should set resources when set in values: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -2225,7 +2225,7 @@ should set serviceAccountName when set in values: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -2293,7 +2293,7 @@ should set storage.requests when set in values and action is an Upgrade: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -2361,7 +2361,7 @@ should set storage.storageClassName when set in values and action is an Upgrade: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -2429,7 +2429,7 @@ should set tolerations when set in values: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:14.2.2 + image: public.ecr.aws/gravitational/teleport-distroless:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 diff --git a/examples/chart/teleport-kube-agent/tests/__snapshot__/updater_deployment_test.yaml.snap b/examples/chart/teleport-kube-agent/tests/__snapshot__/updater_deployment_test.yaml.snap index 21c8abc838d13..fb1d118fa15c5 100644 --- a/examples/chart/teleport-kube-agent/tests/__snapshot__/updater_deployment_test.yaml.snap +++ b/examples/chart/teleport-kube-agent/tests/__snapshot__/updater_deployment_test.yaml.snap @@ -27,7 +27,7 @@ sets the affinity: - --base-image=public.ecr.aws/gravitational/teleport-distroless - --version-server=https://my-custom-version-server/v1 - --version-channel=custom/preview - image: public.ecr.aws/gravitational/teleport-kube-agent-updater:14.2.2 + image: public.ecr.aws/gravitational/teleport-kube-agent-updater:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -71,7 +71,7 @@ sets the tolerations: - --base-image=public.ecr.aws/gravitational/teleport-distroless - --version-server=https://my-custom-version-server/v1 - --version-channel=custom/preview - image: public.ecr.aws/gravitational/teleport-kube-agent-updater:14.2.2 + image: public.ecr.aws/gravitational/teleport-kube-agent-updater:14.2.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 diff --git a/gen/proto/go/prehog/v1alpha/teleport.pb.go b/gen/proto/go/prehog/v1alpha/teleport.pb.go index f1c263741c662..fa9c1d4716889 100644 --- a/gen/proto/go/prehog/v1alpha/teleport.pb.go +++ b/gen/proto/go/prehog/v1alpha/teleport.pb.go @@ -6117,6 +6117,71 @@ func (x *AuditQueryRunEvent) GetIsSuccess() bool { return false } +// DiscoveryFetchEvent is emitted when a DiscoveryService polls for new resources of a given type +type DiscoveryFetchEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // cloud_provider is the cloud provider used to fetch resources + // Eg, AWS, Azure, GCP, Kubernetes + // + // PostHog property: tp.cloud + CloudProvider string `protobuf:"bytes,1,opt,name=cloud_provider,json=cloudProvider,proto3" json:"cloud_provider,omitempty"` + // resource_type is the type of resource that this fetch is polling. + // It depends on the Cloud Provider (defined above). + // Eg, rds, ec2, vm, aks, gce, app + // + // PostHog property: tp.resource_type + ResourceType string `protobuf:"bytes,2,opt,name=resource_type,json=resourceType,proto3" json:"resource_type,omitempty"` +} + +func (x *DiscoveryFetchEvent) Reset() { + *x = DiscoveryFetchEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[80] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DiscoveryFetchEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DiscoveryFetchEvent) ProtoMessage() {} + +func (x *DiscoveryFetchEvent) ProtoReflect() protoreflect.Message { + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[80] + 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 DiscoveryFetchEvent.ProtoReflect.Descriptor instead. +func (*DiscoveryFetchEvent) Descriptor() ([]byte, []int) { + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{80} +} + +func (x *DiscoveryFetchEvent) GetCloudProvider() string { + if x != nil { + return x.CloudProvider + } + return "" +} + +func (x *DiscoveryFetchEvent) GetResourceType() string { + if x != nil { + return x.ResourceType + } + return "" +} + type SubmitEventRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -6204,6 +6269,7 @@ type SubmitEventRequest struct { // *SubmitEventRequest_ExternalAuditStorageAuthenticate // *SubmitEventRequest_SecurityReportGetResult // *SubmitEventRequest_AuditQueryRun + // *SubmitEventRequest_DiscoveryFetchEvent // *SubmitEventRequest_AccessListReviewCreate // *SubmitEventRequest_AccessListReviewDelete // *SubmitEventRequest_AccessListReviewCompliance @@ -6213,7 +6279,7 @@ type SubmitEventRequest struct { func (x *SubmitEventRequest) Reset() { *x = SubmitEventRequest{} if protoimpl.UnsafeEnabled { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[80] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6226,7 +6292,7 @@ func (x *SubmitEventRequest) String() string { func (*SubmitEventRequest) ProtoMessage() {} func (x *SubmitEventRequest) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[80] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6239,7 +6305,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{80} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{81} } func (x *SubmitEventRequest) GetClusterName() string { @@ -6753,6 +6819,13 @@ func (x *SubmitEventRequest) GetAuditQueryRun() *AuditQueryRunEvent { return nil } +func (x *SubmitEventRequest) GetDiscoveryFetchEvent() *DiscoveryFetchEvent { + if x, ok := x.GetEvent().(*SubmitEventRequest_DiscoveryFetchEvent); ok { + return x.DiscoveryFetchEvent + } + return nil +} + func (x *SubmitEventRequest) GetAccessListReviewCreate() *AccessListReviewCreateEvent { if x, ok := x.GetEvent().(*SubmitEventRequest_AccessListReviewCreate); ok { return x.AccessListReviewCreate @@ -7063,6 +7136,10 @@ type SubmitEventRequest_AuditQueryRun struct { AuditQueryRun *AuditQueryRunEvent `protobuf:"bytes,73,opt,name=audit_query_run,json=auditQueryRun,proto3,oneof"` } +type SubmitEventRequest_DiscoveryFetchEvent struct { + DiscoveryFetchEvent *DiscoveryFetchEvent `protobuf:"bytes,74,opt,name=discovery_fetch_event,json=discoveryFetchEvent,proto3,oneof"` +} + type SubmitEventRequest_AccessListReviewCreate struct { AccessListReviewCreate *AccessListReviewCreateEvent `protobuf:"bytes,75,opt,name=access_list_review_create,json=accessListReviewCreate,proto3,oneof"` } @@ -7217,6 +7294,8 @@ func (*SubmitEventRequest_SecurityReportGetResult) isSubmitEventRequest_Event() func (*SubmitEventRequest_AuditQueryRun) isSubmitEventRequest_Event() {} +func (*SubmitEventRequest_DiscoveryFetchEvent) isSubmitEventRequest_Event() {} + func (*SubmitEventRequest_AccessListReviewCreate) isSubmitEventRequest_Event() {} func (*SubmitEventRequest_AccessListReviewDelete) isSubmitEventRequest_Event() {} @@ -7232,7 +7311,7 @@ type SubmitEventResponse struct { func (x *SubmitEventResponse) Reset() { *x = SubmitEventResponse{} if protoimpl.UnsafeEnabled { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[81] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7245,7 +7324,7 @@ func (x *SubmitEventResponse) String() string { func (*SubmitEventResponse) ProtoMessage() {} func (x *SubmitEventResponse) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[81] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7258,7 +7337,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{81} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{82} } type SubmitEventsRequest struct { @@ -7273,7 +7352,7 @@ type SubmitEventsRequest struct { func (x *SubmitEventsRequest) Reset() { *x = SubmitEventsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[82] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7286,7 +7365,7 @@ func (x *SubmitEventsRequest) String() string { func (*SubmitEventsRequest) ProtoMessage() {} func (x *SubmitEventsRequest) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[82] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7299,7 +7378,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{82} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{83} } func (x *SubmitEventsRequest) GetEvents() []*SubmitEventRequest { @@ -7318,7 +7397,7 @@ type SubmitEventsResponse struct { func (x *SubmitEventsResponse) Reset() { *x = SubmitEventsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[83] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7331,7 +7410,7 @@ func (x *SubmitEventsResponse) String() string { func (*SubmitEventsResponse) ProtoMessage() {} func (x *SubmitEventsResponse) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[83] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7344,7 +7423,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{83} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{84} } type HelloTeleportRequest struct { @@ -7356,7 +7435,7 @@ type HelloTeleportRequest struct { func (x *HelloTeleportRequest) Reset() { *x = HelloTeleportRequest{} if protoimpl.UnsafeEnabled { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[84] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7369,7 +7448,7 @@ func (x *HelloTeleportRequest) String() string { func (*HelloTeleportRequest) ProtoMessage() {} func (x *HelloTeleportRequest) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[84] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7382,7 +7461,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{84} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{85} } type HelloTeleportResponse struct { @@ -7394,7 +7473,7 @@ type HelloTeleportResponse struct { func (x *HelloTeleportResponse) Reset() { *x = HelloTeleportResponse{} if protoimpl.UnsafeEnabled { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[85] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7407,7 +7486,7 @@ func (x *HelloTeleportResponse) String() string { func (*HelloTeleportResponse) ProtoMessage() {} func (x *HelloTeleportResponse) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[85] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7420,7 +7499,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{85} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{86} } var File_prehog_v1alpha_teleport_proto protoreflect.FileDescriptor @@ -8212,809 +8291,821 @@ var file_prehog_v1alpha_teleport_proto_rawDesc = []byte{ 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x79, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x61, 0x79, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x09, 0x69, 0x73, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x85, 0x3f, 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, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x12, 0x3f, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, - 0x6e, 0x12, 0x3f, 0x0a, 0x0a, 0x73, 0x73, 0x6f, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x53, 0x4f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x73, 0x73, 0x6f, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x12, 0x4e, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, - 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x12, 0x48, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x65, 0x68, - 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, - 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x4c, 0x0a, 0x0f, - 0x75, 0x69, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x43, - 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x75, 0x69, 0x42, - 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x92, 0x01, 0x0a, 0x29, 0x75, - 0x69, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x74, 0x65, 0x5f, 0x67, 0x6f, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, - 0x72, 0x64, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, + 0x08, 0x52, 0x09, 0x69, 0x73, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x61, 0x0a, 0x13, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x46, 0x65, 0x74, 0x63, 0x68, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, + 0xe0, 0x3f, 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, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x12, 0x3f, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x69, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, + 0x69, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x4c, + 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x3f, 0x0a, 0x0a, 0x73, 0x73, 0x6f, 0x5f, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, + 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x53, 0x4f, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x73, 0x73, 0x6f, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x4e, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, - 0x55, 0x49, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, - 0x65, 0x47, 0x6f, 0x54, 0x6f, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6c, - 0x69, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x23, 0x75, 0x69, 0x4f, 0x6e, - 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x6f, 0x54, - 0x6f, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, - 0x82, 0x01, 0x0a, 0x23, 0x75, 0x69, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x61, - 0x64, 0x64, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, - 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, - 0x49, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x64, 0x64, 0x46, 0x69, 0x72, 0x73, 0x74, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1e, 0x75, 0x69, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x41, - 0x64, 0x64, 0x46, 0x69, 0x72, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, - 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x92, 0x01, 0x0a, 0x29, 0x75, 0x69, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, - 0x61, 0x72, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x48, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, + 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, + 0x00, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, + 0x4c, 0x0a, 0x0f, 0x75, 0x69, 0x5f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x69, + 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, + 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x42, 0x61, 0x6e, 0x6e, + 0x65, 0x72, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, + 0x75, 0x69, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x92, 0x01, + 0x0a, 0x29, 0x75, 0x69, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x67, 0x6f, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x61, 0x73, 0x68, + 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x38, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x2e, 0x55, 0x49, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x74, 0x65, 0x47, 0x6f, 0x54, 0x6f, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x23, 0x75, + 0x69, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, + 0x47, 0x6f, 0x54, 0x6f, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6c, 0x69, + 0x63, 0x6b, 0x12, 0x82, 0x01, 0x0a, 0x23, 0x75, 0x69, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x33, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x2e, 0x55, 0x49, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x64, 0x64, 0x46, 0x69, + 0x72, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6c, 0x69, 0x63, 0x6b, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1e, 0x75, 0x69, 0x4f, 0x6e, 0x62, 0x6f, 0x61, + 0x72, 0x64, 0x41, 0x64, 0x64, 0x46, 0x69, 0x72, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x92, 0x01, 0x0a, 0x29, 0x75, 0x69, 0x5f, 0x6f, + 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, + 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x5f, + 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x70, 0x72, + 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x4f, + 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x64, 0x64, 0x46, 0x69, 0x72, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x69, 0x63, 0x6b, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x23, 0x75, 0x69, 0x4f, 0x6e, 0x62, 0x6f, 0x61, + 0x72, 0x64, 0x41, 0x64, 0x64, 0x46, 0x69, 0x72, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x4c, 0x61, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x7b, 0x0a, 0x20, + 0x75, 0x69, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x63, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x53, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x75, + 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1c, 0x75, 0x69, 0x4f, + 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x12, 0x87, 0x01, 0x0a, 0x24, 0x75, 0x69, + 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, + 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6d, + 0x69, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x4f, 0x6e, 0x62, 0x6f, - 0x61, 0x72, 0x64, 0x41, 0x64, 0x64, 0x46, 0x69, 0x72, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x4c, 0x61, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x23, 0x75, 0x69, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x41, - 0x64, 0x64, 0x46, 0x69, 0x72, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, - 0x61, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x7b, 0x0a, 0x20, 0x75, 0x69, 0x5f, - 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x65, - 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x75, 0x62, 0x6d, 0x69, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1c, 0x75, 0x69, 0x4f, 0x6e, 0x62, 0x6f, - 0x61, 0x72, 0x64, 0x53, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x12, 0x87, 0x01, 0x0a, 0x24, 0x75, 0x69, 0x5f, 0x6f, 0x6e, - 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, - 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, - 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x20, - 0x75, 0x69, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, - 0x72, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, - 0x12, 0x7b, 0x0a, 0x20, 0x75, 0x69, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, - 0x63, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x5f, 0x63, - 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x72, 0x65, - 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x52, 0x65, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x69, - 0x6e, 0x75, 0x65, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x1c, 0x75, 0x69, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x73, - 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x6f, 0x0a, - 0x1c, 0x75, 0x69, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x64, - 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, - 0x6f, 0x64, 0x65, 0x73, 0x43, 0x6f, 0x70, 0x79, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x18, 0x75, 0x69, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, - 0x43, 0x6f, 0x64, 0x65, 0x73, 0x43, 0x6f, 0x70, 0x79, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x72, - 0x0a, 0x1d, 0x75, 0x69, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x63, 0x6f, - 0x64, 0x65, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x79, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x69, 0x63, 0x6b, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x19, 0x75, 0x69, 0x52, 0x65, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x43, 0x6c, 0x69, - 0x63, 0x6b, 0x12, 0x63, 0x0a, 0x19, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, - 0x72, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, - 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x16, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x82, 0x01, 0x0a, 0x24, 0x75, 0x69, 0x5f, 0x64, - 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x20, 0x75, 0x69, 0x44, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x6f, 0x0a, 0x1d, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x13, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x1a, 0x75, 0x73, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, - 0x10, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x76, - 0x32, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x56, 0x32, 0x12, 0x76, 0x0a, 0x20, - 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1c, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x7f, 0x0a, 0x23, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, - 0x76, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1f, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x8f, 0x01, 0x0a, 0x29, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x5f, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x72, 0x65, 0x68, + 0x61, 0x72, 0x64, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6c, 0x6c, + 0x65, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, + 0x00, 0x52, 0x20, 0x75, 0x69, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x62, + 0x6d, 0x69, 0x74, 0x12, 0x7b, 0x0a, 0x20, 0x75, 0x69, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, + 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, + 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, + 0x49, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x43, 0x6f, + 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x48, 0x00, 0x52, 0x1c, 0x75, 0x69, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, + 0x64, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x43, 0x6c, 0x69, 0x63, 0x6b, + 0x12, 0x6f, 0x0a, 0x1c, 0x75, 0x69, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, + 0x63, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x43, 0x6f, 0x70, 0x79, 0x43, 0x6c, 0x69, 0x63, 0x6b, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x18, 0x75, 0x69, 0x52, 0x65, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x43, 0x6f, 0x70, 0x79, 0x43, 0x6c, 0x69, 0x63, + 0x6b, 0x12, 0x72, 0x0a, 0x1d, 0x75, 0x69, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, + 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x5f, 0x63, 0x6c, 0x69, + 0x63, 0x6b, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, + 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x52, 0x65, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x43, 0x6c, + 0x69, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x19, 0x75, 0x69, 0x52, 0x65, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x50, 0x72, 0x69, 0x6e, 0x74, + 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x63, 0x0a, 0x19, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, + 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x48, 0x00, 0x52, 0x16, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x82, 0x01, 0x0a, 0x24, 0x75, + 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x4d, 0x54, 0x4c, 0x53, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x24, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x4d, 0x74, - 0x6c, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0xb8, 0x01, 0x0a, 0x38, 0x75, 0x69, 0x5f, 0x64, - 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, - 0x5f, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x70, 0x72, 0x65, - 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x6f, 0x6f, 0x6c, - 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x31, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x44, 0x65, 0x73, 0x6b, 0x74, - 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x79, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0xae, 0x01, 0x0a, 0x34, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x5f, 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x3e, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x44, 0x65, 0x73, - 0x6b, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x48, 0x00, 0x52, 0x2e, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x44, - 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x12, 0x95, 0x01, 0x0a, 0x2b, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, - 0x76, 0x65, 0x72, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, - 0x72, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x5f, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x70, 0x72, 0x65, 0x68, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x20, 0x75, + 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x6f, 0x0a, 0x1d, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1a, 0x75, 0x73, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x4d, 0x0a, 0x10, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x76, 0x32, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x65, + 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, + 0x0e, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x56, 0x32, 0x12, + 0x76, 0x0a, 0x20, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x75, 0x74, 0x6f, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, - 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x48, 0x00, 0x52, 0x26, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x41, - 0x75, 0x74, 0x6f, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x9f, 0x01, 0x0a, 0x2f, - 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x5f, 0x69, - 0x61, 0x6d, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, - 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, - 0x72, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x65, 0x49, 0x41, 0x4d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x48, 0x00, 0x52, 0x29, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x44, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x49, - 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x88, 0x01, - 0x0a, 0x26, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72, - 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, - 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, - 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, - 0x70, 0x61, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x22, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x79, 0x0a, 0x21, 0x75, 0x69, 0x5f, 0x64, - 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x1d, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x54, - 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1d, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x54, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x12, 0x69, 0x0a, 0x1b, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1c, 0x75, 0x69, 0x44, 0x69, 0x73, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x7f, 0x0a, 0x23, 0x75, 0x69, 0x5f, 0x64, 0x69, + 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, + 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x16, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1f, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x8f, 0x01, 0x0a, 0x29, 0x75, 0x69, 0x5f, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x74, 0x6c, 0x73, + 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, + 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x4d, 0x54, 0x4c, 0x53, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x24, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x65, 0x4d, 0x74, 0x6c, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0xb8, 0x01, 0x0a, 0x38, 0x75, + 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x73, 0x6b, 0x74, + 0x6f, 0x70, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x79, 0x5f, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, + 0x6c, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, + 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, + 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x54, + 0x6f, 0x6f, 0x6c, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x48, 0x00, 0x52, 0x31, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x44, 0x65, + 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x79, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0xae, 0x01, 0x0a, 0x34, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x19, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x2e, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x95, 0x01, 0x0a, 0x2b, 0x75, 0x69, 0x5f, 0x64, 0x69, + 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x73, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x70, + 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x75, 0x74, 0x6f, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x26, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x41, 0x75, 0x74, 0x6f, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x65, 0x64, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x9f, + 0x01, 0x0a, 0x2f, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x65, 0x5f, 0x69, 0x61, 0x6d, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, - 0x6f, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x18, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x42, - 0x0a, 0x0b, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x1f, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x6f, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x12, 0x63, 0x0a, 0x18, 0x75, 0x69, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, - 0x6e, 0x65, 0x77, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x20, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, - 0x77, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x14, 0x75, 0x69, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x77, 0x52, 0x6f, - 0x6c, 0x65, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x70, 0x0a, 0x1d, 0x75, 0x69, 0x5f, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x73, 0x61, - 0x76, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, - 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, - 0x55, 0x49, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x77, 0x52, 0x6f, 0x6c, 0x65, 0x53, - 0x61, 0x76, 0x65, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x18, 0x75, 0x69, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x77, 0x52, 0x6f, 0x6c, 0x65, - 0x53, 0x61, 0x76, 0x65, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x76, 0x0a, 0x1f, 0x75, 0x69, 0x5f, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, - 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x22, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x77, 0x52, - 0x6f, 0x6c, 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1a, 0x75, 0x69, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, - 0x65, 0x77, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x43, 0x6c, 0x69, 0x63, - 0x6b, 0x12, 0x98, 0x01, 0x0a, 0x2b, 0x75, 0x69, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, - 0x6e, 0x65, 0x77, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x64, 0x6f, - 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x69, 0x63, - 0x6b, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, + 0x6f, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x65, 0x49, 0x41, 0x4d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x29, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x65, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x88, 0x01, 0x0a, 0x26, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x32, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x72, 0x69, + 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x22, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x79, 0x0a, 0x21, 0x75, + 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1d, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x69, 0x0a, 0x1b, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x72, + 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, + 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x18, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x42, 0x0a, 0x0b, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x6f, 0x6c, 0x65, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x63, 0x0a, 0x18, 0x75, 0x69, 0x5f, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x63, + 0x6b, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4e, 0x65, 0x77, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x69, 0x65, 0x77, 0x44, 0x6f, 0x63, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x25, 0x75, 0x69, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, - 0x65, 0x77, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x69, 0x65, 0x77, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x45, 0x0a, 0x0c, - 0x6b, 0x75, 0x62, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x24, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x6b, 0x75, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x73, 0x66, 0x74, 0x70, 0x18, 0x25, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x2e, 0x53, 0x46, 0x54, 0x50, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x04, - 0x73, 0x66, 0x74, 0x70, 0x12, 0x56, 0x0a, 0x14, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x26, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x12, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x12, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, - 0x61, 0x74, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, - 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x48, 0x00, 0x52, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x65, 0x61, 0x72, - 0x74, 0x62, 0x65, 0x61, 0x74, 0x12, 0x9c, 0x01, 0x0a, 0x2e, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x61, 0x77, 0x73, 0x5f, 0x6f, 0x69, 0x64, 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, - 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, - 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x57, 0x53, 0x4f, 0x49, 0x44, 0x43, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x28, 0x75, 0x69, 0x44, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x41, 0x77, 0x73, 0x4f, 0x69, 0x64, 0x63, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x83, 0x01, 0x0a, 0x25, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, - 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x72, 0x64, - 0x73, 0x5f, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x29, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 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, 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, 0x12, 0x54, 0x0a, 0x11, 0x61, 0x73, 0x73, 0x69, 0x73, - 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x2b, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x61, 0x73, 0x73, - 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x79, 0x0a, - 0x21, 0x75, 0x69, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, - 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1d, 0x75, 0x69, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x82, 0x01, 0x0a, 0x24, 0x75, 0x69, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x72, 0x6f, - 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x20, 0x75, 0x69, 0x49, + 0x65, 0x4e, 0x65, 0x77, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x14, 0x75, 0x69, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, + 0x77, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x70, 0x0a, 0x1d, 0x75, 0x69, + 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x72, 0x6f, 0x6c, 0x65, + 0x5f, 0x73, 0x61, 0x76, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x21, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x2e, 0x55, 0x49, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x77, 0x52, 0x6f, + 0x6c, 0x65, 0x53, 0x61, 0x76, 0x65, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x48, 0x00, 0x52, 0x18, 0x75, 0x69, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x77, 0x52, + 0x6f, 0x6c, 0x65, 0x53, 0x61, 0x76, 0x65, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x76, 0x0a, 0x1f, + 0x75, 0x69, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x72, 0x6f, + 0x6c, 0x65, 0x5f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x18, + 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, + 0x65, 0x77, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x43, 0x6c, 0x69, 0x63, + 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1a, 0x75, 0x69, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4e, 0x65, 0x77, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x43, + 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x98, 0x01, 0x0a, 0x2b, 0x75, 0x69, 0x5f, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x76, 0x69, 0x65, 0x77, + 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, + 0x6c, 0x69, 0x63, 0x6b, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x70, 0x72, 0x65, + 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x77, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x69, 0x65, 0x77, 0x44, + 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, + 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x25, 0x75, 0x69, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4e, 0x65, 0x77, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x69, 0x65, 0x77, 0x44, 0x6f, 0x63, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, + 0x45, 0x0a, 0x0c, 0x6b, 0x75, 0x62, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, + 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x6b, 0x75, 0x62, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x73, 0x66, 0x74, 0x70, 0x18, 0x25, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x46, 0x54, 0x50, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, + 0x00, 0x52, 0x04, 0x73, 0x66, 0x74, 0x70, 0x12, 0x56, 0x0a, 0x14, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, + 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x12, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x57, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x72, + 0x74, 0x62, 0x65, 0x61, 0x74, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72, + 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, + 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x12, 0x9c, 0x01, 0x0a, 0x2e, 0x75, 0x69, 0x5f, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x77, 0x73, 0x5f, 0x6f, 0x69, 0x64, 0x63, 0x5f, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x28, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x38, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x57, 0x53, 0x4f, 0x49, 0x44, 0x43, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x28, 0x75, + 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x77, 0x73, 0x4f, 0x69, 0x64, 0x63, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x83, 0x01, 0x0a, 0x25, 0x75, 0x69, 0x5f, 0x64, + 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x5f, 0x72, 0x64, 0x73, 0x5f, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x5f, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 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, 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, 0x12, 0x54, 0x0a, 0x11, 0x61, 0x73, + 0x73, 0x69, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, + 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x79, 0x0a, 0x21, 0x75, 0x69, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, + 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, - 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x53, 0x0a, - 0x13, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x65, - 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x64, 0x69, 0x74, - 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x11, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x0a, 0x62, 0x6f, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x18, 0x2f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x42, 0x6f, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x74, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x12, 0x7a, 0x0a, 0x1f, 0x75, 0x69, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, - 0x64, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x6e, 0x61, 0x69, 0x72, 0x65, 0x5f, - 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1d, 0x75, 0x69, + 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x72, 0x6f, 0x6c, + 0x6c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x82, 0x01, 0x0a, 0x24, + 0x75, 0x69, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, + 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x65, + 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x49, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x43, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x20, + 0x75, 0x69, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x72, + 0x6f, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x53, 0x0a, 0x13, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, + 0x64, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x48, 0x00, 0x52, 0x11, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x0a, 0x62, 0x6f, 0x74, 0x5f, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x65, 0x68, + 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x42, 0x6f, 0x74, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x74, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x7a, 0x0a, 0x1f, 0x75, 0x69, 0x5f, 0x6f, 0x6e, 0x62, + 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x6e, 0x61, 0x69, + 0x72, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x31, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x2e, 0x55, 0x49, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x6e, 0x61, 0x69, 0x72, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1c, 0x75, 0x69, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x51, + 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x6e, 0x61, 0x69, 0x72, 0x65, 0x53, 0x75, 0x62, 0x6d, + 0x69, 0x74, 0x12, 0x39, 0x0a, 0x08, 0x62, 0x6f, 0x74, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x31, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x42, 0x6f, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x51, 0x0a, + 0x10, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, + 0x0f, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x64, 0x0a, 0x17, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x63, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x33, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, + 0x15, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x65, 0x0a, 0x19, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x65, 0x68, + 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x17, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, + 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x6e, 0x0a, + 0x1c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x35, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, + 0x00, 0x52, 0x1a, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x5e, 0x0a, + 0x15, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, + 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x73, + 0x73, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x13, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, + 0x0d, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x37, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x73, 0x73, 0x69, 0x73, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x53, 0x0a, 0x13, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x38, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x72, 0x6f, + 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x11, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x13, + 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x18, 0x39, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x65, 0x68, + 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, + 0x73, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x11, + 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x55, 0x0a, 0x12, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, + 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x55, 0x0a, 0x12, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x3b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, + 0x55, 0x0a, 0x12, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, + 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x68, 0x0a, 0x19, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x65, 0x68, + 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x16, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x12, 0x68, 0x0a, 0x19, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x3e, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x48, 0x00, 0x52, 0x16, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x68, 0x0a, 0x19, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x16, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x12, 0x69, 0x0a, 0x1a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x5f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x73, + 0x65, 0x72, 0x18, 0x40, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, + 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x16, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, + 0x69, 0x73, 0x74, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x12, + 0x81, 0x01, 0x0a, 0x22, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, + 0x65, 0x63, 0x32, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x41, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, - 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x6e, - 0x61, 0x69, 0x72, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x1c, 0x75, 0x69, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x51, 0x75, 0x65, 0x73, - 0x74, 0x69, 0x6f, 0x6e, 0x6e, 0x61, 0x69, 0x72, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x12, - 0x39, 0x0a, 0x08, 0x62, 0x6f, 0x74, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x31, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x2e, 0x42, 0x6f, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x51, 0x0a, 0x10, 0x61, 0x73, - 0x73, 0x69, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x32, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x61, 0x73, - 0x73, 0x69, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x64, 0x0a, - 0x17, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x45, 0x43, 0x32, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x48, 0x00, 0x52, 0x1e, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x45, + 0x63, 0x32, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x62, 0x0a, 0x17, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x65, 0x69, 0x63, 0x65, 0x18, 0x42, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x45, 0x49, 0x43, 0x45, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, + 0x00, 0x52, 0x14, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x45, 0x69, 0x63, 0x65, 0x12, 0x62, 0x0a, 0x17, 0x75, 0x69, 0x5f, 0x64, 0x69, + 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x6f, + 0x64, 0x65, 0x18, 0x43, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, + 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x14, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x64, 0x0a, 0x17, 0x64, + 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, + 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x44, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, + 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x44, 0x65, + 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x15, 0x64, 0x65, 0x73, 0x6b, + 0x74, 0x6f, 0x70, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x68, 0x61, 0x72, + 0x65, 0x12, 0x65, 0x0a, 0x1a, 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x5f, 0x63, 0x6c, 0x69, + 0x70, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, + 0x45, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x43, 0x6c, + 0x69, 0x70, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x18, + 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x43, 0x6c, 0x69, 0x70, 0x62, 0x6f, 0x61, 0x72, 0x64, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x11, 0x74, 0x61, 0x67, 0x5f, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x46, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x54, 0x41, 0x47, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x74, 0x61, 0x67, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x86, 0x01, 0x0a, + 0x23, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x70, 0x72, 0x65, + 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x41, 0x75, 0x64, 0x69, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x48, 0x00, 0x52, 0x20, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x41, 0x75, 0x64, + 0x69, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x6b, 0x0a, 0x1a, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x18, 0x48, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x72, 0x65, 0x68, + 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x17, 0x73, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x4c, 0x0a, 0x0f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, + 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x75, 0x64, + 0x69, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, + 0x00, 0x52, 0x0d, 0x61, 0x75, 0x64, 0x69, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x75, 0x6e, + 0x12, 0x59, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x65, + 0x74, 0x63, 0x68, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x46, 0x65, 0x74, 0x63, 0x68, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x13, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x79, 0x46, 0x65, 0x74, 0x63, 0x68, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x68, 0x0a, 0x19, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x65, + 0x77, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, - 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x15, 0x61, 0x73, - 0x73, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x65, 0x0a, 0x19, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x75, - 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, - 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x17, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x6e, 0x0a, 0x1c, 0x66, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, - 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1a, - 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x5e, 0x0a, 0x15, 0x61, 0x73, - 0x73, 0x69, 0x73, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x72, 0x65, 0x68, - 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x73, - 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x13, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x0d, 0x61, 0x73, - 0x73, 0x69, 0x73, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x37, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x53, 0x0a, 0x13, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x65, - 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x38, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x11, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, - 0x72, 0x6f, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x13, 0x6c, 0x69, 0x63, - 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x18, 0x39, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x11, 0x6c, 0x69, 0x63, - 0x65, 0x6e, 0x73, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x55, - 0x0a, 0x12, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x65, - 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x48, 0x00, 0x52, 0x10, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x55, 0x0a, 0x12, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, - 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x3b, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x61, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x55, 0x0a, 0x12, - 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x16, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x68, 0x0a, 0x19, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, + 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x10, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x12, 0x68, 0x0a, 0x19, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, - 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x16, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, + 0x74, 0x0a, 0x1d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x72, + 0x65, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x18, 0x4d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, - 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x16, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, - 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x68, 0x0a, - 0x19, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x16, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x68, 0x0a, 0x19, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x65, - 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x16, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x12, 0x69, 0x0a, 0x1a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, - 0x5f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, - 0x40, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, - 0x74, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x16, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, - 0x47, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x12, 0x81, 0x01, 0x0a, - 0x22, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x65, 0x63, 0x32, - 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x41, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x72, 0x65, 0x68, - 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x45, 0x43, 0x32, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, - 0x52, 0x1e, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x45, 0x63, 0x32, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x62, 0x0a, 0x17, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, - 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x65, 0x69, 0x63, 0x65, 0x18, 0x42, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x45, 0x49, 0x43, 0x45, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x14, - 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x45, 0x69, 0x63, 0x65, 0x12, 0x62, 0x0a, 0x17, 0x75, 0x69, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, - 0x76, 0x65, 0x72, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, - 0x43, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x49, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, - 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x48, 0x00, 0x52, 0x14, 0x75, 0x69, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x64, 0x0a, 0x17, 0x64, 0x65, 0x73, 0x6b, - 0x74, 0x6f, 0x70, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x68, - 0x61, 0x72, 0x65, 0x18, 0x44, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x65, 0x68, - 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x44, 0x65, 0x73, 0x6b, 0x74, - 0x6f, 0x70, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x15, 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x65, - 0x0a, 0x1a, 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x62, 0x6f, - 0x61, 0x72, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x45, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x2e, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x43, 0x6c, 0x69, 0x70, 0x62, - 0x6f, 0x61, 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x18, 0x64, 0x65, 0x73, - 0x6b, 0x74, 0x6f, 0x70, 0x43, 0x6c, 0x69, 0x70, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x11, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x2e, 0x54, 0x41, 0x47, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x74, 0x61, 0x67, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x86, 0x01, 0x0a, 0x23, 0x65, 0x78, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x41, 0x75, 0x64, 0x69, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x75, 0x74, - 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, - 0x52, 0x20, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x41, 0x75, 0x64, 0x69, 0x74, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x12, 0x6b, 0x0a, 0x1a, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x72, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x18, 0x48, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x17, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x4c, 0x0a, 0x0f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x72, - 0x75, 0x6e, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, - 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, - 0x61, 0x75, 0x64, 0x69, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x12, 0x68, 0x0a, - 0x19, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x76, - 0x69, 0x65, 0x77, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, - 0x65, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x16, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x65, - 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x68, 0x0a, 0x19, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x65, - 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x16, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x12, 0x74, 0x0a, 0x1d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, - 0x5f, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, - 0x63, 0x65, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, - 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, - 0x61, 0x6e, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1a, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6d, - 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 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, 0x87, 0x02, 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, 0x12, 0x23, 0x0a, 0x1f, - 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, 0x5f, 0x45, 0x49, 0x43, 0x45, 0x10, - 0x07, 0x2a, 0xb9, 0x0e, 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, + 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1a, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6d, 0x70, 0x6c, + 0x69, 0x61, 0x6e, 0x63, 0x65, 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, 0x87, 0x02, 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, 0x12, 0x23, 0x0a, 0x1f, 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, 0x5f, 0x45, 0x49, 0x43, 0x45, 0x10, 0x07, 0x2a, + 0xb9, 0x0e, 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, 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, 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, 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, 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, + 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, - 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x52, 0x44, 0x53, 0x10, 0x07, 0x12, 0x26, 0x0a, 0x22, 0x44, + 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, 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, + 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, 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, + 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, 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, 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, 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, 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, + 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, 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, + 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, 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, + 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, 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, 0x12, 0x26, 0x0a, 0x22, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, - 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x53, 0x41, 0x4d, 0x4c, 0x5f, 0x41, 0x50, 0x50, 0x4c, - 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x25, 0x12, 0x22, 0x0a, 0x1e, 0x44, 0x49, 0x53, - 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x45, - 0x43, 0x32, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x26, 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, 0x97, 0x02, 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, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x54, 0x41, 0x5f, 0x42, 0x49, 0x4c, 0x4c, - 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x55, 0x4d, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x07, 0x12, 0x13, 0x0a, - 0x0f, 0x43, 0x54, 0x41, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, - 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x54, 0x41, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, - 0x5f, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x09, 0x12, 0x1e, 0x0a, - 0x1a, 0x43, 0x54, 0x41, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x41, 0x55, - 0x44, 0x49, 0x54, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x10, 0x0a, 0x2a, 0xdc, 0x07, - 0x0a, 0x15, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x72, - 0x6f, 0x6c, 0x6c, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x27, 0x0a, 0x23, 0x49, 0x4e, 0x54, 0x45, 0x47, - 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, - 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x4c, 0x41, 0x43, - 0x4b, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, - 0x57, 0x53, 0x5f, 0x4f, 0x49, 0x44, 0x43, 0x10, 0x02, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x4e, 0x54, - 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, - 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x41, 0x47, 0x45, 0x52, 0x44, 0x55, 0x54, 0x59, 0x10, 0x03, - 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x45, 0x4d, 0x41, 0x49, - 0x4c, 0x10, 0x04, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4a, - 0x49, 0x52, 0x41, 0x10, 0x05, 0x12, 0x23, 0x0a, 0x1f, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 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, 0x12, + 0x26, 0x0a, 0x22, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, + 0x55, 0x52, 0x43, 0x45, 0x5f, 0x53, 0x41, 0x4d, 0x4c, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x25, 0x12, 0x22, 0x0a, 0x1e, 0x44, 0x49, 0x53, 0x43, 0x4f, + 0x56, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x45, 0x43, 0x32, + 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x26, 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, 0x97, 0x02, 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, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x54, 0x41, 0x5f, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, + 0x47, 0x5f, 0x53, 0x55, 0x4d, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x43, + 0x54, 0x41, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x08, + 0x12, 0x19, 0x0a, 0x15, 0x43, 0x54, 0x41, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x4d, + 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x09, 0x12, 0x1e, 0x0a, 0x1a, 0x43, + 0x54, 0x41, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x41, 0x55, 0x44, 0x49, + 0x54, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x10, 0x0a, 0x2a, 0xdc, 0x07, 0x0a, 0x15, + 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x72, 0x6f, 0x6c, + 0x6c, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x27, 0x0a, 0x23, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, - 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x52, 0x44, 0x10, 0x06, 0x12, 0x26, 0x0a, 0x22, 0x49, 0x4e, - 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, - 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x54, 0x54, 0x45, 0x52, 0x4d, 0x4f, 0x53, 0x54, - 0x10, 0x07, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x53, - 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x53, 0x10, 0x08, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x4e, 0x54, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, + 0x0a, 0x1d, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, + 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x4c, 0x41, 0x43, 0x4b, 0x10, + 0x01, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x57, 0x53, + 0x5f, 0x4f, 0x49, 0x44, 0x43, 0x10, 0x02, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x4e, 0x54, 0x45, 0x47, + 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, + 0x4e, 0x44, 0x5f, 0x50, 0x41, 0x47, 0x45, 0x52, 0x44, 0x55, 0x54, 0x59, 0x10, 0x03, 0x12, 0x21, + 0x0a, 0x1d, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, + 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x10, + 0x04, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4a, 0x49, 0x52, + 0x41, 0x10, 0x05, 0x12, 0x23, 0x0a, 0x1f, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x44, + 0x49, 0x53, 0x43, 0x4f, 0x52, 0x44, 0x10, 0x06, 0x12, 0x26, 0x0a, 0x22, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, - 0x49, 0x4e, 0x44, 0x5f, 0x4f, 0x50, 0x53, 0x47, 0x45, 0x4e, 0x49, 0x45, 0x10, 0x09, 0x12, 0x20, + 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x54, 0x54, 0x45, 0x52, 0x4d, 0x4f, 0x53, 0x54, 0x10, 0x07, + 0x12, 0x24, 0x0a, 0x20, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x53, 0x5f, 0x54, + 0x45, 0x41, 0x4d, 0x53, 0x10, 0x08, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, + 0x44, 0x5f, 0x4f, 0x50, 0x53, 0x47, 0x45, 0x4e, 0x49, 0x45, 0x10, 0x09, 0x12, 0x20, 0x0a, 0x1c, + 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, + 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4f, 0x4b, 0x54, 0x41, 0x10, 0x0a, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, - 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4f, 0x4b, 0x54, 0x41, 0x10, 0x0a, - 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4a, 0x41, 0x4d, 0x46, - 0x10, 0x0b, 0x12, 0x26, 0x0a, 0x22, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, - 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x0c, 0x12, 0x35, 0x0a, 0x31, 0x49, 0x4e, - 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, - 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, - 0x5f, 0x47, 0x49, 0x54, 0x48, 0x55, 0x42, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, - 0x0d, 0x12, 0x2f, 0x0a, 0x2b, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, - 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x43, 0x49, 0x52, 0x43, 0x4c, 0x45, 0x43, 0x49, - 0x10, 0x0e, 0x12, 0x2d, 0x0a, 0x29, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, - 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x47, 0x49, 0x54, 0x4c, 0x41, 0x42, 0x10, - 0x0f, 0x12, 0x2e, 0x0a, 0x2a, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, - 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x4a, 0x45, 0x4e, 0x4b, 0x49, 0x4e, 0x53, 0x10, - 0x10, 0x12, 0x2e, 0x0a, 0x2a, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, - 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x41, 0x4e, 0x53, 0x49, 0x42, 0x4c, 0x45, 0x10, - 0x11, 0x12, 0x2a, 0x0a, 0x26, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, - 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x41, 0x57, 0x53, 0x10, 0x12, 0x12, 0x2a, 0x0a, - 0x26, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, - 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, - 0x5f, 0x49, 0x44, 0x5f, 0x47, 0x43, 0x50, 0x10, 0x13, 0x12, 0x2c, 0x0a, 0x28, 0x49, 0x4e, 0x54, - 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, - 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, - 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, 0x14, 0x12, 0x30, 0x0a, 0x2c, 0x49, 0x4e, 0x54, 0x45, 0x47, + 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4a, 0x41, 0x4d, 0x46, 0x10, 0x0b, + 0x12, 0x26, 0x0a, 0x22, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, + 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x0c, 0x12, 0x35, 0x0a, 0x31, 0x49, 0x4e, 0x54, 0x45, + 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, + 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x47, + 0x49, 0x54, 0x48, 0x55, 0x42, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x0d, 0x12, + 0x2f, 0x0a, 0x2b, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, + 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, + 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x43, 0x49, 0x52, 0x43, 0x4c, 0x45, 0x43, 0x49, 0x10, 0x0e, + 0x12, 0x2d, 0x0a, 0x29, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, + 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x47, 0x49, 0x54, 0x4c, 0x41, 0x42, 0x10, 0x0f, 0x12, + 0x2e, 0x0a, 0x2a, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, + 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, + 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x4a, 0x45, 0x4e, 0x4b, 0x49, 0x4e, 0x53, 0x10, 0x10, 0x12, + 0x2e, 0x0a, 0x2a, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, + 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, + 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x41, 0x4e, 0x53, 0x49, 0x42, 0x4c, 0x45, 0x10, 0x11, 0x12, + 0x2a, 0x0a, 0x26, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, + 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, + 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x41, 0x57, 0x53, 0x10, 0x12, 0x12, 0x2a, 0x0a, 0x26, 0x49, + 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, + 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, + 0x44, 0x5f, 0x47, 0x43, 0x50, 0x10, 0x13, 0x12, 0x2c, 0x0a, 0x28, 0x49, 0x4e, 0x54, 0x45, 0x47, + 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, + 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x41, 0x5a, + 0x55, 0x52, 0x45, 0x10, 0x14, 0x12, 0x30, 0x0a, 0x2c, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, + 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x53, 0x50, 0x41, 0x43, + 0x45, 0x4c, 0x49, 0x46, 0x54, 0x10, 0x15, 0x12, 0x31, 0x0a, 0x2d, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, - 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x53, 0x50, - 0x41, 0x43, 0x45, 0x4c, 0x49, 0x46, 0x54, 0x10, 0x15, 0x12, 0x31, 0x0a, 0x2d, 0x49, 0x4e, 0x54, - 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, - 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, - 0x4b, 0x55, 0x42, 0x45, 0x52, 0x4e, 0x45, 0x54, 0x45, 0x53, 0x10, 0x16, 0x2a, 0x88, 0x01, 0x0a, - 0x12, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x20, 0x45, 0x44, 0x49, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x48, - 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, 0x45, 0x44, 0x49, - 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x45, 0x44, 0x10, 0x01, - 0x12, 0x25, 0x0a, 0x21, 0x45, 0x44, 0x49, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, - 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x52, 0x45, - 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x3f, 0x0a, 0x07, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x46, - 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x52, 0x55, 0x53, 0x54, 0x45, 0x44, 0x5f, 0x44, - 0x45, 0x56, 0x49, 0x43, 0x45, 0x53, 0x10, 0x01, 0x2a, 0xa0, 0x01, 0x0a, 0x1b, 0x46, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2d, 0x0a, 0x29, 0x46, 0x45, 0x41, 0x54, - 0x55, 0x52, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2a, 0x0a, 0x26, 0x46, 0x45, 0x41, 0x54, 0x55, - 0x52, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x52, - 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x2a, 0x82, 0x01, 0x0a, 0x0c, - 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x19, - 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x4c, - 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x44, 0x45, 0x56, - 0x49, 0x43, 0x45, 0x5f, 0x54, 0x52, 0x55, 0x53, 0x54, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x5f, 0x4a, - 0x41, 0x4d, 0x46, 0x10, 0x01, 0x12, 0x29, 0x0a, 0x25, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, - 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x52, - 0x55, 0x53, 0x54, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x5f, 0x55, 0x53, 0x41, 0x47, 0x45, 0x10, 0x02, - 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, + 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x4b, 0x55, + 0x42, 0x45, 0x52, 0x4e, 0x45, 0x54, 0x45, 0x53, 0x10, 0x16, 0x2a, 0x88, 0x01, 0x0a, 0x12, 0x45, + 0x64, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x24, 0x0a, 0x20, 0x45, 0x44, 0x49, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, + 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, 0x45, 0x44, 0x49, 0x54, 0x4f, + 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, + 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x25, + 0x0a, 0x21, 0x45, 0x44, 0x49, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, + 0x56, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x3f, 0x0a, 0x07, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x12, 0x17, 0x0a, 0x13, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x45, 0x41, + 0x54, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x52, 0x55, 0x53, 0x54, 0x45, 0x44, 0x5f, 0x44, 0x45, 0x56, + 0x49, 0x43, 0x45, 0x53, 0x10, 0x01, 0x2a, 0xa0, 0x01, 0x0a, 0x1b, 0x46, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2d, 0x0a, 0x29, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, + 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2a, 0x0a, 0x26, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, + 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x01, 0x12, 0x26, 0x0a, 0x22, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x52, 0x45, 0x43, + 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x44, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x2a, 0x82, 0x01, 0x0a, 0x0c, 0x4c, 0x69, + 0x63, 0x65, 0x6e, 0x73, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x19, 0x4c, 0x49, + 0x43, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x4c, 0x49, 0x43, + 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, + 0x45, 0x5f, 0x54, 0x52, 0x55, 0x53, 0x54, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x5f, 0x4a, 0x41, 0x4d, + 0x46, 0x10, 0x01, 0x12, 0x29, 0x0a, 0x25, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x4c, + 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x52, 0x55, 0x53, + 0x54, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x5f, 0x55, 0x53, 0x41, 0x47, 0x45, 0x10, 0x02, 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, + 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, - 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, + 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 ( @@ -9030,7 +9121,7 @@ func file_prehog_v1alpha_teleport_proto_rawDescGZIP() []byte { } var file_prehog_v1alpha_teleport_proto_enumTypes = make([]protoimpl.EnumInfo, 11) -var file_prehog_v1alpha_teleport_proto_msgTypes = make([]protoimpl.MessageInfo, 86) +var file_prehog_v1alpha_teleport_proto_msgTypes = make([]protoimpl.MessageInfo, 87) var file_prehog_v1alpha_teleport_proto_goTypes = []interface{}{ (ResourceKind)(0), // 0: prehog.v1alpha.ResourceKind (DiscoverResource)(0), // 1: prehog.v1alpha.DiscoverResource @@ -9123,21 +9214,22 @@ var file_prehog_v1alpha_teleport_proto_goTypes = []interface{}{ (*ExternalAuditStorageAuthenticateEvent)(nil), // 88: prehog.v1alpha.ExternalAuditStorageAuthenticateEvent (*SecurityReportGetResultEvent)(nil), // 89: prehog.v1alpha.SecurityReportGetResultEvent (*AuditQueryRunEvent)(nil), // 90: prehog.v1alpha.AuditQueryRunEvent - (*SubmitEventRequest)(nil), // 91: prehog.v1alpha.SubmitEventRequest - (*SubmitEventResponse)(nil), // 92: prehog.v1alpha.SubmitEventResponse - (*SubmitEventsRequest)(nil), // 93: prehog.v1alpha.SubmitEventsRequest - (*SubmitEventsResponse)(nil), // 94: prehog.v1alpha.SubmitEventsResponse - (*HelloTeleportRequest)(nil), // 95: prehog.v1alpha.HelloTeleportRequest - (*HelloTeleportResponse)(nil), // 96: prehog.v1alpha.HelloTeleportResponse - (*durationpb.Duration)(nil), // 97: google.protobuf.Duration - (*timestamppb.Timestamp)(nil), // 98: google.protobuf.Timestamp + (*DiscoveryFetchEvent)(nil), // 91: prehog.v1alpha.DiscoveryFetchEvent + (*SubmitEventRequest)(nil), // 92: prehog.v1alpha.SubmitEventRequest + (*SubmitEventResponse)(nil), // 93: prehog.v1alpha.SubmitEventResponse + (*SubmitEventsRequest)(nil), // 94: prehog.v1alpha.SubmitEventsRequest + (*SubmitEventsResponse)(nil), // 95: prehog.v1alpha.SubmitEventsResponse + (*HelloTeleportRequest)(nil), // 96: prehog.v1alpha.HelloTeleportRequest + (*HelloTeleportResponse)(nil), // 97: prehog.v1alpha.HelloTeleportResponse + (*durationpb.Duration)(nil), // 98: google.protobuf.Duration + (*timestamppb.Timestamp)(nil), // 99: google.protobuf.Timestamp } var file_prehog_v1alpha_teleport_proto_depIdxs = []int32{ 14, // 0: prehog.v1alpha.ResourceCreateEvent.database:type_name -> prehog.v1alpha.DiscoveredDatabaseMetadata 0, // 1: prehog.v1alpha.ResourceHeartbeatEvent.resource_kind:type_name -> prehog.v1alpha.ResourceKind 17, // 2: prehog.v1alpha.SessionStartEvent.database:type_name -> prehog.v1alpha.SessionStartDatabaseMetadata 18, // 3: prehog.v1alpha.SessionStartEvent.desktop:type_name -> prehog.v1alpha.SessionStartDesktopMetadata - 97, // 4: prehog.v1alpha.UserCertificateIssuedEvent.ttl:type_name -> google.protobuf.Duration + 98, // 4: prehog.v1alpha.UserCertificateIssuedEvent.ttl:type_name -> google.protobuf.Duration 1, // 5: prehog.v1alpha.DiscoverResourceMetadata.resource:type_name -> prehog.v1alpha.DiscoverResource 2, // 6: prehog.v1alpha.DiscoverStepStatus.status:type_name -> prehog.v1alpha.DiscoverStatus 30, // 7: prehog.v1alpha.UIDiscoverStartedEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata @@ -9208,7 +9300,7 @@ var file_prehog_v1alpha_teleport_proto_depIdxs = []int32{ 6, // 72: prehog.v1alpha.FeatureRecommendationEvent.feature:type_name -> prehog.v1alpha.Feature 7, // 73: prehog.v1alpha.FeatureRecommendationEvent.feature_recommendation_status:type_name -> prehog.v1alpha.FeatureRecommendationStatus 8, // 74: prehog.v1alpha.LicenseLimitEvent.license_limit:type_name -> prehog.v1alpha.LicenseLimit - 98, // 75: prehog.v1alpha.SubmitEventRequest.timestamp:type_name -> google.protobuf.Timestamp + 99, // 75: prehog.v1alpha.SubmitEventRequest.timestamp:type_name -> google.protobuf.Timestamp 11, // 76: prehog.v1alpha.SubmitEventRequest.user_login:type_name -> prehog.v1alpha.UserLoginEvent 12, // 77: prehog.v1alpha.SubmitEventRequest.sso_create:type_name -> prehog.v1alpha.SSOCreateEvent 13, // 78: prehog.v1alpha.SubmitEventRequest.resource_create:type_name -> prehog.v1alpha.ResourceCreateEvent @@ -9279,21 +9371,22 @@ var file_prehog_v1alpha_teleport_proto_depIdxs = []int32{ 88, // 143: prehog.v1alpha.SubmitEventRequest.external_audit_storage_authenticate:type_name -> prehog.v1alpha.ExternalAuditStorageAuthenticateEvent 89, // 144: prehog.v1alpha.SubmitEventRequest.security_report_get_result:type_name -> prehog.v1alpha.SecurityReportGetResultEvent 90, // 145: prehog.v1alpha.SubmitEventRequest.audit_query_run:type_name -> prehog.v1alpha.AuditQueryRunEvent - 74, // 146: prehog.v1alpha.SubmitEventRequest.access_list_review_create:type_name -> prehog.v1alpha.AccessListReviewCreateEvent - 75, // 147: prehog.v1alpha.SubmitEventRequest.access_list_review_delete:type_name -> prehog.v1alpha.AccessListReviewDeleteEvent - 76, // 148: prehog.v1alpha.SubmitEventRequest.access_list_review_compliance:type_name -> prehog.v1alpha.AccessListReviewComplianceEvent - 91, // 149: prehog.v1alpha.SubmitEventsRequest.events:type_name -> prehog.v1alpha.SubmitEventRequest - 91, // 150: prehog.v1alpha.TeleportReportingService.SubmitEvent:input_type -> prehog.v1alpha.SubmitEventRequest - 93, // 151: prehog.v1alpha.TeleportReportingService.SubmitEvents:input_type -> prehog.v1alpha.SubmitEventsRequest - 95, // 152: prehog.v1alpha.TeleportReportingService.HelloTeleport:input_type -> prehog.v1alpha.HelloTeleportRequest - 92, // 153: prehog.v1alpha.TeleportReportingService.SubmitEvent:output_type -> prehog.v1alpha.SubmitEventResponse - 94, // 154: prehog.v1alpha.TeleportReportingService.SubmitEvents:output_type -> prehog.v1alpha.SubmitEventsResponse - 96, // 155: prehog.v1alpha.TeleportReportingService.HelloTeleport:output_type -> prehog.v1alpha.HelloTeleportResponse - 153, // [153:156] is the sub-list for method output_type - 150, // [150:153] is the sub-list for method input_type - 150, // [150:150] is the sub-list for extension type_name - 150, // [150:150] is the sub-list for extension extendee - 0, // [0:150] is the sub-list for field type_name + 91, // 146: prehog.v1alpha.SubmitEventRequest.discovery_fetch_event:type_name -> prehog.v1alpha.DiscoveryFetchEvent + 74, // 147: prehog.v1alpha.SubmitEventRequest.access_list_review_create:type_name -> prehog.v1alpha.AccessListReviewCreateEvent + 75, // 148: prehog.v1alpha.SubmitEventRequest.access_list_review_delete:type_name -> prehog.v1alpha.AccessListReviewDeleteEvent + 76, // 149: prehog.v1alpha.SubmitEventRequest.access_list_review_compliance:type_name -> prehog.v1alpha.AccessListReviewComplianceEvent + 92, // 150: prehog.v1alpha.SubmitEventsRequest.events:type_name -> prehog.v1alpha.SubmitEventRequest + 92, // 151: prehog.v1alpha.TeleportReportingService.SubmitEvent:input_type -> prehog.v1alpha.SubmitEventRequest + 94, // 152: prehog.v1alpha.TeleportReportingService.SubmitEvents:input_type -> prehog.v1alpha.SubmitEventsRequest + 96, // 153: prehog.v1alpha.TeleportReportingService.HelloTeleport:input_type -> prehog.v1alpha.HelloTeleportRequest + 93, // 154: prehog.v1alpha.TeleportReportingService.SubmitEvent:output_type -> prehog.v1alpha.SubmitEventResponse + 95, // 155: prehog.v1alpha.TeleportReportingService.SubmitEvents:output_type -> prehog.v1alpha.SubmitEventsResponse + 97, // 156: prehog.v1alpha.TeleportReportingService.HelloTeleport:output_type -> prehog.v1alpha.HelloTeleportResponse + 154, // [154:157] is the sub-list for method output_type + 151, // [151:154] is the sub-list for method input_type + 151, // [151:151] is the sub-list for extension type_name + 151, // [151:151] is the sub-list for extension extendee + 0, // [0:151] is the sub-list for field type_name } func init() { file_prehog_v1alpha_teleport_proto_init() } @@ -10263,7 +10356,7 @@ func file_prehog_v1alpha_teleport_proto_init() { } } file_prehog_v1alpha_teleport_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitEventRequest); i { + switch v := v.(*DiscoveryFetchEvent); i { case 0: return &v.state case 1: @@ -10275,7 +10368,7 @@ func file_prehog_v1alpha_teleport_proto_init() { } } file_prehog_v1alpha_teleport_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitEventResponse); i { + switch v := v.(*SubmitEventRequest); i { case 0: return &v.state case 1: @@ -10287,7 +10380,7 @@ func file_prehog_v1alpha_teleport_proto_init() { } } file_prehog_v1alpha_teleport_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitEventsRequest); i { + switch v := v.(*SubmitEventResponse); i { case 0: return &v.state case 1: @@ -10299,7 +10392,7 @@ func file_prehog_v1alpha_teleport_proto_init() { } } file_prehog_v1alpha_teleport_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitEventsResponse); i { + switch v := v.(*SubmitEventsRequest); i { case 0: return &v.state case 1: @@ -10311,7 +10404,7 @@ func file_prehog_v1alpha_teleport_proto_init() { } } file_prehog_v1alpha_teleport_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HelloTeleportRequest); i { + switch v := v.(*SubmitEventsResponse); i { case 0: return &v.state case 1: @@ -10323,6 +10416,18 @@ func file_prehog_v1alpha_teleport_proto_init() { } } file_prehog_v1alpha_teleport_proto_msgTypes[85].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[86].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HelloTeleportResponse); i { case 0: return &v.state @@ -10335,7 +10440,7 @@ func file_prehog_v1alpha_teleport_proto_init() { } } } - file_prehog_v1alpha_teleport_proto_msgTypes[80].OneofWrappers = []interface{}{ + file_prehog_v1alpha_teleport_proto_msgTypes[81].OneofWrappers = []interface{}{ (*SubmitEventRequest_UserLogin)(nil), (*SubmitEventRequest_SsoCreate)(nil), (*SubmitEventRequest_ResourceCreate)(nil), @@ -10406,6 +10511,7 @@ func file_prehog_v1alpha_teleport_proto_init() { (*SubmitEventRequest_ExternalAuditStorageAuthenticate)(nil), (*SubmitEventRequest_SecurityReportGetResult)(nil), (*SubmitEventRequest_AuditQueryRun)(nil), + (*SubmitEventRequest_DiscoveryFetchEvent)(nil), (*SubmitEventRequest_AccessListReviewCreate)(nil), (*SubmitEventRequest_AccessListReviewDelete)(nil), (*SubmitEventRequest_AccessListReviewCompliance)(nil), @@ -10416,7 +10522,7 @@ func file_prehog_v1alpha_teleport_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_prehog_v1alpha_teleport_proto_rawDesc, NumEnums: 11, - NumMessages: 86, + NumMessages: 87, 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 3b643d75faa77..6ed09b32db860 100644 --- a/gen/proto/js/prehog/v1alpha/teleport_pb.d.ts +++ b/gen/proto/js/prehog/v1alpha/teleport_pb.d.ts @@ -2467,6 +2467,31 @@ export namespace AuditQueryRunEvent { } } +export class DiscoveryFetchEvent extends jspb.Message { + getCloudProvider(): string; + setCloudProvider(value: string): DiscoveryFetchEvent; + + getResourceType(): string; + setResourceType(value: string): DiscoveryFetchEvent; + + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): DiscoveryFetchEvent.AsObject; + static toObject(includeInstance: boolean, msg: DiscoveryFetchEvent): DiscoveryFetchEvent.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: DiscoveryFetchEvent, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): DiscoveryFetchEvent; + static deserializeBinaryFromReader(message: DiscoveryFetchEvent, reader: jspb.BinaryReader): DiscoveryFetchEvent; +} + +export namespace DiscoveryFetchEvent { + export type AsObject = { + cloudProvider: string, + resourceType: string, + } +} + export class SubmitEventRequest extends jspb.Message { getClusterName(): string; setClusterName(value: string): SubmitEventRequest; @@ -2898,6 +2923,12 @@ export class SubmitEventRequest extends jspb.Message { setAuditQueryRun(value?: AuditQueryRunEvent): SubmitEventRequest; + hasDiscoveryFetchEvent(): boolean; + clearDiscoveryFetchEvent(): void; + getDiscoveryFetchEvent(): DiscoveryFetchEvent | undefined; + setDiscoveryFetchEvent(value?: DiscoveryFetchEvent): SubmitEventRequest; + + hasAccessListReviewCreate(): boolean; clearAccessListReviewCreate(): void; getAccessListReviewCreate(): AccessListReviewCreateEvent | undefined; @@ -3002,6 +3033,7 @@ export namespace SubmitEventRequest { externalAuditStorageAuthenticate?: ExternalAuditStorageAuthenticateEvent.AsObject, securityReportGetResult?: SecurityReportGetResultEvent.AsObject, auditQueryRun?: AuditQueryRunEvent.AsObject, + discoveryFetchEvent?: DiscoveryFetchEvent.AsObject, accessListReviewCreate?: AccessListReviewCreateEvent.AsObject, accessListReviewDelete?: AccessListReviewDeleteEvent.AsObject, accessListReviewCompliance?: AccessListReviewComplianceEvent.AsObject, @@ -3150,6 +3182,8 @@ export namespace SubmitEventRequest { AUDIT_QUERY_RUN = 73, + DISCOVERY_FETCH_EVENT = 74, + ACCESS_LIST_REVIEW_CREATE = 75, ACCESS_LIST_REVIEW_DELETE = 76, diff --git a/gen/proto/js/prehog/v1alpha/teleport_pb.js b/gen/proto/js/prehog/v1alpha/teleport_pb.js index c922eb0741a4d..c28c3a7d29646 100644 --- a/gen/proto/js/prehog/v1alpha/teleport_pb.js +++ b/gen/proto/js/prehog/v1alpha/teleport_pb.js @@ -50,6 +50,7 @@ goog.exportSymbol('proto.prehog.v1alpha.DiscoverResourceMetadata', null, global) goog.exportSymbol('proto.prehog.v1alpha.DiscoverStatus', null, global); goog.exportSymbol('proto.prehog.v1alpha.DiscoverStepStatus', null, global); goog.exportSymbol('proto.prehog.v1alpha.DiscoveredDatabaseMetadata', null, global); +goog.exportSymbol('proto.prehog.v1alpha.DiscoveryFetchEvent', null, global); goog.exportSymbol('proto.prehog.v1alpha.EditorChangeEvent', null, global); goog.exportSymbol('proto.prehog.v1alpha.EditorChangeStatus', null, global); goog.exportSymbol('proto.prehog.v1alpha.ExternalAuditStorageAuthenticateEvent', null, global); @@ -1797,6 +1798,27 @@ if (goog.DEBUG && !COMPILED) { */ proto.prehog.v1alpha.AuditQueryRunEvent.displayName = 'proto.prehog.v1alpha.AuditQueryRunEvent'; } +/** + * 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.DiscoveryFetchEvent = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.prehog.v1alpha.DiscoveryFetchEvent, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.prehog.v1alpha.DiscoveryFetchEvent.displayName = 'proto.prehog.v1alpha.DiscoveryFetchEvent'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -18016,6 +18038,166 @@ proto.prehog.v1alpha.AuditQueryRunEvent.prototype.setIsSuccess = function(value) + + +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.DiscoveryFetchEvent.prototype.toObject = function(opt_includeInstance) { + return proto.prehog.v1alpha.DiscoveryFetchEvent.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.DiscoveryFetchEvent} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.prehog.v1alpha.DiscoveryFetchEvent.toObject = function(includeInstance, msg) { + var f, obj = { + cloudProvider: jspb.Message.getFieldWithDefault(msg, 1, ""), + resourceType: jspb.Message.getFieldWithDefault(msg, 2, "") + }; + + 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.DiscoveryFetchEvent} + */ +proto.prehog.v1alpha.DiscoveryFetchEvent.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.prehog.v1alpha.DiscoveryFetchEvent; + return proto.prehog.v1alpha.DiscoveryFetchEvent.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.prehog.v1alpha.DiscoveryFetchEvent} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.prehog.v1alpha.DiscoveryFetchEvent} + */ +proto.prehog.v1alpha.DiscoveryFetchEvent.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.setCloudProvider(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setResourceType(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.prehog.v1alpha.DiscoveryFetchEvent.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.prehog.v1alpha.DiscoveryFetchEvent.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.DiscoveryFetchEvent} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.prehog.v1alpha.DiscoveryFetchEvent.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getCloudProvider(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getResourceType(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } +}; + + +/** + * optional string cloud_provider = 1; + * @return {string} + */ +proto.prehog.v1alpha.DiscoveryFetchEvent.prototype.getCloudProvider = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.prehog.v1alpha.DiscoveryFetchEvent} returns this + */ +proto.prehog.v1alpha.DiscoveryFetchEvent.prototype.setCloudProvider = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string resource_type = 2; + * @return {string} + */ +proto.prehog.v1alpha.DiscoveryFetchEvent.prototype.getResourceType = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.prehog.v1alpha.DiscoveryFetchEvent} returns this + */ +proto.prehog.v1alpha.DiscoveryFetchEvent.prototype.setResourceType = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + + /** * Oneof group definitions for this message. Each group defines the field * numbers belonging to that group. When of these fields' value is set, all @@ -18024,7 +18206,7 @@ proto.prehog.v1alpha.AuditQueryRunEvent.prototype.setIsSuccess = function(value) * @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,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,75,76,77]]; +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,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77]]; /** * @enum {number} @@ -18101,6 +18283,7 @@ proto.prehog.v1alpha.SubmitEventRequest.EventCase = { EXTERNAL_AUDIT_STORAGE_AUTHENTICATE: 71, SECURITY_REPORT_GET_RESULT: 72, AUDIT_QUERY_RUN: 73, + DISCOVERY_FETCH_EVENT: 74, ACCESS_LIST_REVIEW_CREATE: 75, ACCESS_LIST_REVIEW_DELETE: 76, ACCESS_LIST_REVIEW_COMPLIANCE: 77 @@ -18216,6 +18399,7 @@ proto.prehog.v1alpha.SubmitEventRequest.toObject = function(includeInstance, msg externalAuditStorageAuthenticate: (f = msg.getExternalAuditStorageAuthenticate()) && proto.prehog.v1alpha.ExternalAuditStorageAuthenticateEvent.toObject(includeInstance, f), securityReportGetResult: (f = msg.getSecurityReportGetResult()) && proto.prehog.v1alpha.SecurityReportGetResultEvent.toObject(includeInstance, f), auditQueryRun: (f = msg.getAuditQueryRun()) && proto.prehog.v1alpha.AuditQueryRunEvent.toObject(includeInstance, f), + discoveryFetchEvent: (f = msg.getDiscoveryFetchEvent()) && proto.prehog.v1alpha.DiscoveryFetchEvent.toObject(includeInstance, f), accessListReviewCreate: (f = msg.getAccessListReviewCreate()) && proto.prehog.v1alpha.AccessListReviewCreateEvent.toObject(includeInstance, f), accessListReviewDelete: (f = msg.getAccessListReviewDelete()) && proto.prehog.v1alpha.AccessListReviewDeleteEvent.toObject(includeInstance, f), accessListReviewCompliance: (f = msg.getAccessListReviewCompliance()) && proto.prehog.v1alpha.AccessListReviewComplianceEvent.toObject(includeInstance, f) @@ -18614,6 +18798,11 @@ proto.prehog.v1alpha.SubmitEventRequest.deserializeBinaryFromReader = function(m reader.readMessage(value,proto.prehog.v1alpha.AuditQueryRunEvent.deserializeBinaryFromReader); msg.setAuditQueryRun(value); break; + case 74: + var value = new proto.prehog.v1alpha.DiscoveryFetchEvent; + reader.readMessage(value,proto.prehog.v1alpha.DiscoveryFetchEvent.deserializeBinaryFromReader); + msg.setDiscoveryFetchEvent(value); + break; case 75: var value = new proto.prehog.v1alpha.AccessListReviewCreateEvent; reader.readMessage(value,proto.prehog.v1alpha.AccessListReviewCreateEvent.deserializeBinaryFromReader); @@ -19233,6 +19422,14 @@ proto.prehog.v1alpha.SubmitEventRequest.serializeBinaryToWriter = function(messa proto.prehog.v1alpha.AuditQueryRunEvent.serializeBinaryToWriter ); } + f = message.getDiscoveryFetchEvent(); + if (f != null) { + writer.writeMessage( + 74, + f, + proto.prehog.v1alpha.DiscoveryFetchEvent.serializeBinaryToWriter + ); + } f = message.getAccessListReviewCreate(); if (f != null) { writer.writeMessage( @@ -21905,6 +22102,43 @@ proto.prehog.v1alpha.SubmitEventRequest.prototype.hasAuditQueryRun = function() }; +/** + * optional DiscoveryFetchEvent discovery_fetch_event = 74; + * @return {?proto.prehog.v1alpha.DiscoveryFetchEvent} + */ +proto.prehog.v1alpha.SubmitEventRequest.prototype.getDiscoveryFetchEvent = function() { + return /** @type{?proto.prehog.v1alpha.DiscoveryFetchEvent} */ ( + jspb.Message.getWrapperField(this, proto.prehog.v1alpha.DiscoveryFetchEvent, 74)); +}; + + +/** + * @param {?proto.prehog.v1alpha.DiscoveryFetchEvent|undefined} value + * @return {!proto.prehog.v1alpha.SubmitEventRequest} returns this +*/ +proto.prehog.v1alpha.SubmitEventRequest.prototype.setDiscoveryFetchEvent = function(value) { + return jspb.Message.setOneofWrapperField(this, 74, 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.clearDiscoveryFetchEvent = function() { + return this.setDiscoveryFetchEvent(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.prehog.v1alpha.SubmitEventRequest.prototype.hasDiscoveryFetchEvent = function() { + return jspb.Message.getField(this, 74) != null; +}; + + /** * optional AccessListReviewCreateEvent access_list_review_create = 75; * @return {?proto.prehog.v1alpha.AccessListReviewCreateEvent} diff --git a/integrations/kube-agent-updater/version.go b/integrations/kube-agent-updater/version.go index 795a8e96d8a2d..e2150ef7119cf 100644 --- a/integrations/kube-agent-updater/version.go +++ b/integrations/kube-agent-updater/version.go @@ -1,7 +1,7 @@ // Code generated by "make version". DO NOT EDIT. package kubeversionupdater -const Version = "14.2.2" +const Version = "14.2.3" // Gitref is set to the output of "git describe" during the build process. var Gitref string diff --git a/lib/config/configuration.go b/lib/config/configuration.go index f695c813847d6..b4c4f2e3b99b5 100644 --- a/lib/config/configuration.go +++ b/lib/config/configuration.go @@ -1940,11 +1940,13 @@ func applyWindowsDesktopConfig(fc *FileConfig, cfg *servicecfg.Config) error { return trace.Wrap(err) } cfg.WindowsDesktop.ShowDesktopWallpaper = fc.WindowsDesktop.ShowDesktopWallpaper - cfg.WindowsDesktop.Hosts, err = utils.AddrsFromStrings(fc.WindowsDesktop.Hosts, defaults.RDPListenPort) - if err != nil { - return trace.Wrap(err) + if len(fc.WindowsDesktop.ADHosts) > 0 { + log.Warnln("hosts field is deprecated, prefer static_hosts instead") } - cfg.WindowsDesktop.NonADHosts, err = utils.AddrsFromStrings(fc.WindowsDesktop.NonADHosts, defaults.RDPListenPort) + if len(fc.WindowsDesktop.NonADHosts) > 0 { + log.Warnln("non_ad_hosts field is deprecated, prefer static_hosts instead") + } + cfg.WindowsDesktop.StaticHosts, err = staticHostsWithAddress(fc.WindowsDesktop) if err != nil { return trace.Wrap(err) } @@ -2018,6 +2020,37 @@ func applyWindowsDesktopConfig(fc *FileConfig, cfg *servicecfg.Config) error { return nil } +func staticHostsWithAddress(ws WindowsDesktopService) ([]servicecfg.WindowsHost, error) { + var hostsWithAddress []servicecfg.WindowsHost + var cfgHosts []WindowsHost + cfgHosts = append(cfgHosts, ws.StaticHosts...) + for _, host := range ws.NonADHosts { + cfgHosts = append(cfgHosts, WindowsHost{ + Address: host, + AD: false, + }) + } + for _, host := range ws.ADHosts { + cfgHosts = append(cfgHosts, WindowsHost{ + Address: host, + AD: true, + }) + } + for _, host := range cfgHosts { + addr, err := utils.ParseHostPortAddr(host.Address, defaults.RDPListenPort) + if err != nil { + return nil, trace.BadParameter("invalid addr %q", host.Address) + } + hostsWithAddress = append(hostsWithAddress, servicecfg.WindowsHost{ + Name: host.Name, + Address: *addr, + Labels: host.Labels, + AD: host.AD, + }) + } + return hostsWithAddress, nil +} + // applyTracingConfig applies file configuration for the "tracing_service" section. func applyTracingConfig(fc *FileConfig, cfg *servicecfg.Config) error { // Tracing is enabled. diff --git a/lib/config/configuration_test.go b/lib/config/configuration_test.go index ad4b73901e38e..d2417708a75c1 100644 --- a/lib/config/configuration_test.go +++ b/lib/config/configuration_test.go @@ -541,7 +541,7 @@ func TestConfigReading(t *testing.T) { ListenAddress: "tcp://windows_desktop", }, PublicAddr: apiutils.Strings([]string{"winsrv.example.com:3028", "no-port.winsrv.example.com"}), - Hosts: apiutils.Strings([]string{"win.example.com:3389", "no-port.win.example.com"}), + ADHosts: apiutils.Strings([]string{"win.example.com:3389", "no-port.win.example.com"}), }, Tracing: TracingService{ EnabledFlag: "yes", @@ -1647,7 +1647,7 @@ func makeConfigFixture() string { ListenAddress: "tcp://windows_desktop", }, PublicAddr: apiutils.Strings([]string{"winsrv.example.com:3028", "no-port.winsrv.example.com"}), - Hosts: apiutils.Strings([]string{"win.example.com:3389", "no-port.win.example.com"}), + ADHosts: apiutils.Strings([]string{"win.example.com:3389", "no-port.win.example.com"}), } // Tracing service. @@ -2128,7 +2128,7 @@ func TestWindowsDesktopService(t *testing.T) { desc: "NOK - invalid static host addr", expectError: require.Error, mutate: func(fc *FileConfig) { - fc.WindowsDesktop.Hosts = []string{"badscheme://foo:1:2"} + fc.WindowsDesktop.ADHosts = []string{"badscheme://foo:1:2"} }, }, { @@ -2160,7 +2160,7 @@ func TestWindowsDesktopService(t *testing.T) { desc: "NOK - hosts specified but ldap not specified", expectError: require.Error, mutate: func(fc *FileConfig) { - fc.WindowsDesktop.Hosts = []string{"127.0.0.1:3389"} + fc.WindowsDesktop.ADHosts = []string{"127.0.0.1:3389"} fc.WindowsDesktop.LDAP = LDAPConfig{ Addr: "", } @@ -2170,7 +2170,7 @@ func TestWindowsDesktopService(t *testing.T) { desc: "OK - hosts specified and ldap specified", expectError: require.NoError, mutate: func(fc *FileConfig) { - fc.WindowsDesktop.Hosts = []string{"127.0.0.1:3389"} + fc.WindowsDesktop.ADHosts = []string{"127.0.0.1:3389"} fc.WindowsDesktop.LDAP = LDAPConfig{ Addr: "something", } @@ -2180,7 +2180,7 @@ func TestWindowsDesktopService(t *testing.T) { desc: "OK - no hosts specified and ldap not specified", expectError: require.NoError, mutate: func(fc *FileConfig) { - fc.WindowsDesktop.Hosts = []string{} + fc.WindowsDesktop.ADHosts = []string{} fc.WindowsDesktop.LDAP = LDAPConfig{ Addr: "", } @@ -2190,7 +2190,7 @@ func TestWindowsDesktopService(t *testing.T) { desc: "OK - no hosts specified and ldap specified", expectError: require.NoError, mutate: func(fc *FileConfig) { - fc.WindowsDesktop.Hosts = []string{} + fc.WindowsDesktop.ADHosts = []string{} fc.WindowsDesktop.LDAP = LDAPConfig{ Addr: "something", } @@ -2250,7 +2250,7 @@ func TestWindowsDesktopService(t *testing.T) { mutate: func(fc *FileConfig) { fc.WindowsDesktop.EnabledFlag = "yes" fc.WindowsDesktop.ListenAddress = "0.0.0.0:3028" - fc.WindowsDesktop.Hosts = []string{"127.0.0.1:3389"} + fc.WindowsDesktop.ADHosts = []string{"127.0.0.1:3389"} fc.WindowsDesktop.LDAP = LDAPConfig{ Addr: "something", } diff --git a/lib/config/fileconf.go b/lib/config/fileconf.go index 16ec2e1465ff0..8bbb628cf2f6b 100644 --- a/lib/config/fileconf.go +++ b/lib/config/fileconf.go @@ -2202,13 +2202,20 @@ type WindowsDesktopService struct { PKIDomain string `yaml:"pki_domain"` // Discovery configures desktop discovery via LDAP. Discovery LDAPDiscoveryConfig `yaml:"discovery,omitempty"` - // Hosts is a list of static, AD-connected Windows hosts. This gives users + // ADHosts is a list of static, AD-connected Windows hosts. This gives users // a way to specify AD-connected hosts that won't be found by the filters // specified in `discovery` (or if `discovery` is omitted). - Hosts []string `yaml:"hosts,omitempty"` + // + // Deprecated: prefer StaticHosts instead. + ADHosts []string `yaml:"hosts,omitempty"` // NonADHosts is a list of standalone Windows hosts that are not // jointed to an Active Directory domain. + // + // Deprecated: prefer StaticHosts instead. NonADHosts []string `yaml:"non_ad_hosts,omitempty"` + // StaticHosts is a list of Windows hosts (both AD-connected and standalone). + // User can specify name for each host and labels specific to it. + StaticHosts []WindowsHost `yaml:"static_hosts,omitempty"` // HostLabels optionally applies labels to Windows hosts for RBAC. // A host can match multiple rules and will get a union of all // the matched labels. @@ -2217,9 +2224,13 @@ type WindowsDesktopService struct { // Check checks whether the WindowsDesktopService is valid or not func (wds *WindowsDesktopService) Check() error { - if len(wds.Hosts) > 0 && wds.LDAP.Addr == "" { - return trace.BadParameter("if hosts are specified in the windows_desktop_service, " + - "the ldap configuration for their corresponding Active Directory domain controller must also be specified") + hasAD := len(wds.ADHosts) > 0 || slices.ContainsFunc(wds.StaticHosts, func(host WindowsHost) bool { + return host.AD + }) + + if hasAD && wds.LDAP.Addr == "" { + return trace.BadParameter("if Active Directory hosts are specified in the windows_desktop_service, " + + "the ldap configuration must also be specified") } if wds.Discovery.BaseDN != "" && wds.LDAP.Addr == "" { @@ -2230,7 +2241,7 @@ func (wds *WindowsDesktopService) Check() error { return nil } -// WindowsHostLabelRule describes how a set of labels should be a applied to +// WindowsHostLabelRule describes how a set of labels should be applied to // a Windows host. type WindowsHostLabelRule struct { // Match is a regexp that is checked against the Windows host's DNS name. @@ -2240,6 +2251,19 @@ type WindowsHostLabelRule struct { Labels map[string]string `yaml:"labels"` } +// WindowsHost describes single host in configuration +type WindowsHost struct { + // Name of the host + Name string `yaml:"name"` + // Address of the host, with an optional port. + // 10.1.103.4 or 10.1.103.4:3389, for example. + Address string `yaml:"addr"` + // Labels is the set of labels to apply to this host + Labels map[string]string `yaml:"labels"` + // AD tells if host is part of Active Directory domain + AD bool `yaml:"ad"` +} + // LDAPConfig is the LDAP connection parameters. type LDAPConfig struct { // Addr is the host:port of the LDAP server (typically port 389). diff --git a/lib/service/desktop.go b/lib/service/desktop.go index eddf621997053..97fd0df33714c 100644 --- a/lib/service/desktop.go +++ b/lib/service/desktop.go @@ -222,8 +222,7 @@ func (process *TeleportProcess) initWindowsDesktopServiceRegistered(log *logrus. Heartbeat: desktop.HeartbeatConfig{ HostUUID: cfg.HostUUID, PublicAddr: publicAddr, - StaticHosts: cfg.WindowsDesktop.Hosts, - NonADHosts: cfg.WindowsDesktop.NonADHosts, + StaticHosts: cfg.WindowsDesktop.StaticHosts, OnHeartbeat: process.OnHeartbeat(teleport.ComponentWindowsDesktop), }, ShowDesktopWallpaper: cfg.WindowsDesktop.ShowDesktopWallpaper, diff --git a/lib/service/servicecfg/windows.go b/lib/service/servicecfg/windows.go index 8c01349422c4f..ba27a7e56159e 100644 --- a/lib/service/servicecfg/windows.go +++ b/lib/service/servicecfg/windows.go @@ -45,16 +45,9 @@ type WindowsDesktopConfig struct { // Discovery configures automatic desktop discovery via LDAP. Discovery LDAPDiscoveryConfig - // Hosts is an optional list of static Windows hosts to expose through this + // StaticHosts is an optional list of static Windows hosts to expose through this // service. - // Hosts is an optional list of static, AD-connected Windows hosts. This gives users - // a way to specify AD-connected hosts that won't be found by the filters - // specified in Discovery (or if Discovery is omitted). - Hosts []utils.NetAddr - - // NonADHosts is an optional list of static Windows hosts to expose through this - // service. These hosts are not part of Active Directory. - NonADHosts []utils.NetAddr + StaticHosts []WindowsHost // ConnLimiter limits the connection and request rates. ConnLimiter limiter.Config @@ -63,6 +56,18 @@ type WindowsDesktopConfig struct { Labels map[string]string } +// WindowsHost is configuration for single Windows desktop host +type WindowsHost struct { + // Name that will be used in the Teleport UI + Name string + // Address of the remote Windows host + Address utils.NetAddr + // AD is true if the host is part of the Active Directory domain + AD bool + // Labels to be applied to the host + Labels map[string]string +} + // LDAPDiscoveryConfig is LDAP discovery configuration for windows desktop discovery service. type LDAPDiscoveryConfig struct { // BaseDN is the base DN to search for desktops. diff --git a/lib/srv/desktop/windows_server.go b/lib/srv/desktop/windows_server.go index 30cb97c54d25f..eea0838ae4c3c 100644 --- a/lib/srv/desktop/windows_server.go +++ b/lib/srv/desktop/windows_server.go @@ -46,6 +46,7 @@ import ( "github.com/gravitational/teleport/lib/limiter" "github.com/gravitational/teleport/lib/modules" "github.com/gravitational/teleport/lib/reversetunnel" + "github.com/gravitational/teleport/lib/service/servicecfg" "github.com/gravitational/teleport/lib/services" "github.com/gravitational/teleport/lib/session" "github.com/gravitational/teleport/lib/srv" @@ -205,10 +206,8 @@ type HeartbeatConfig struct { PublicAddr string // OnHeartbeat is called after each heartbeat attempt. OnHeartbeat func(error) - // StaticHosts is an optional list of AD-connected static Windows hosts to register. - StaticHosts []utils.NetAddr - // NonADHosts is an optional list of static Windows hosts to register, that are not part of Active Directory. - NonADHosts []utils.NetAddr + // StaticHosts is an optional list of static Windows hosts to register + StaticHosts []servicecfg.WindowsHost } func (cfg *WindowsServiceConfig) checkAndSetDiscoveryDefaults() error { @@ -398,7 +397,7 @@ func NewWindowsService(cfg WindowsServiceConfig) (*WindowsService, error) { if err := s.startDesktopDiscovery(); err != nil { return nil, trace.Wrap(err) } - } else if len(s.cfg.Heartbeat.StaticHosts) == 0 && len(s.cfg.Heartbeat.NonADHosts) == 0 { + } else if len(s.cfg.Heartbeat.StaticHosts) == 0 { s.cfg.Log.Warnln("desktop discovery via LDAP is disabled, and no hosts are defined in the configuration; there will be no Windows desktops available to connect") } else { s.cfg.Log.Infoln("desktop discovery via LDAP is disabled, set 'base_dn' to enable") @@ -598,25 +597,21 @@ func (s *WindowsService) startServiceHeartbeat() error { // service itself is running. func (s *WindowsService) startStaticHostHeartbeats() error { for _, host := range s.cfg.Heartbeat.StaticHosts { - if err := s.startStaticHostHeartbeat(host, false); err != nil { + if err := s.startStaticHostHeartbeat(host); err != nil { return err } } - for _, host := range s.cfg.Heartbeat.NonADHosts { - if err := s.startStaticHostHeartbeat(host, true); err != nil { - return trace.Wrap(err) - } - } return nil } -func (s *WindowsService) startStaticHostHeartbeat(host utils.NetAddr, nonAD bool) error { +// startStaticHostHeartbeats spawns heartbeat goroutine for single host +func (s *WindowsService) startStaticHostHeartbeat(host servicecfg.WindowsHost) error { heartbeat, err := srv.NewHeartbeat(srv.HeartbeatConfig{ Context: s.closeCtx, Component: teleport.ComponentWindowsDesktop, Mode: srv.HeartbeatModeWindowsDesktop, Announcer: s.cfg.AccessPoint, - GetServerInfo: s.staticHostHeartbeatInfo(host, s.cfg.HostLabelsFn, nonAD), + GetServerInfo: s.staticHostHeartbeatInfo(host, s.cfg.HostLabelsFn), KeepAlivePeriod: apidefaults.ServerKeepAliveTTL(), AnnouncePeriod: apidefaults.ServerAnnounceTTL/2 + utils.RandomDuration(apidefaults.ServerAnnounceTTL/10), CheckPeriod: 5 * time.Minute, @@ -1102,20 +1097,25 @@ func (s *WindowsService) getServiceHeartbeatInfo() (types.Resource, error) { // staticHostHeartbeatInfo generates the Windows Desktop resource // for heartbeating statically defined hosts -func (s *WindowsService) staticHostHeartbeatInfo(netAddr utils.NetAddr, - getHostLabels func(string) map[string]string, nonAD bool, +func (s *WindowsService) staticHostHeartbeatInfo(host servicecfg.WindowsHost, + getHostLabels func(string) map[string]string, ) func() (types.Resource, error) { return func() (types.Resource, error) { - addr := netAddr.String() - name, err := s.nameForStaticHost(addr) - if err != nil { - return nil, trace.Wrap(err) - } - // for static hosts, we match against the host's addr, - // as the name is a randomly generated UUID + addr := host.Address.String() labels := getHostLabels(addr) + for k, v := range host.Labels { + labels[k] = v + } + name := host.Name + if name == "" { + var err error + name, err = s.nameForStaticHost(addr) + if err != nil { + return nil, trace.Wrap(err) + } + } labels[types.OriginLabel] = types.OriginConfigFile - labels[types.ADLabel] = strconv.FormatBool(!nonAD) + labels[types.ADLabel] = strconv.FormatBool(host.AD) desktop, err := types.NewWindowsDesktopV3( name, labels, @@ -1123,7 +1123,7 @@ func (s *WindowsService) staticHostHeartbeatInfo(netAddr utils.NetAddr, Addr: addr, Domain: s.cfg.Domain, HostID: s.cfg.Heartbeat.HostUUID, - NonAD: nonAD, + NonAD: !host.AD, }) if err != nil { return nil, trace.Wrap(err) diff --git a/lib/srv/transport/transportv1/transport.go b/lib/srv/transport/transportv1/transport.go index d0640264a2a5f..67551a28f0930 100644 --- a/lib/srv/transport/transportv1/transport.go +++ b/lib/srv/transport/transportv1/transport.go @@ -16,6 +16,7 @@ package transportv1 import ( "context" + "errors" "io" "net" "net/netip" @@ -311,7 +312,11 @@ func (s *Service) ProxySSH(stream transportv1pb.TransportService_ProxySSHServer) } // copy data to/from the host/user - return trace.Wrap(utils.ProxyConn(monitorCtx, hostConn, userConn)) + err = utils.ProxyConn(monitorCtx, hostConn, userConn) + if errors.Is(err, io.EOF) { + err = nil + } + return trace.Wrap(err) } // getDestinationAddress is used to get client destination for connection coming from gRPC. We don't have a way to get diff --git a/lib/usagereporter/teleport/types.go b/lib/usagereporter/teleport/types.go index d4b4f78f5f92a..4c304693ccddc 100644 --- a/lib/usagereporter/teleport/types.go +++ b/lib/usagereporter/teleport/types.go @@ -992,6 +992,21 @@ func (e *AuditQueryRunEvent) Anonymize(a utils.Anonymizer) prehogv1a.SubmitEvent } } +// DiscoveryFetchEvent is emitted when a DiscoveryService fetchs resources. +type DiscoveryFetchEvent prehogv1a.DiscoveryFetchEvent + +// Anonymize anonymizes the event. +func (e *DiscoveryFetchEvent) Anonymize(a utils.Anonymizer) prehogv1a.SubmitEventRequest { + return prehogv1a.SubmitEventRequest{ + Event: &prehogv1a.SubmitEventRequest_DiscoveryFetchEvent{ + DiscoveryFetchEvent: &prehogv1a.DiscoveryFetchEvent{ + CloudProvider: e.CloudProvider, + ResourceType: e.ResourceType, + }, + }, + } +} + // ConvertUsageEvent converts a usage event from an API object into an // anonymizable event. All events that can be submitted externally via the Auth // API need to be defined here. @@ -1429,6 +1444,12 @@ func ConvertUsageEvent(event *usageeventsv1.UsageEventOneOf, userMD UserMetadata }, } return ret, nil + case *usageeventsv1.UsageEventOneOf_DiscoveryFetchEvent: + ret := &DiscoveryFetchEvent{ + CloudProvider: e.DiscoveryFetchEvent.CloudProvider, + ResourceType: e.DiscoveryFetchEvent.ResourceType, + } + return ret, nil default: return nil, trace.BadParameter("invalid usage event type %T", event.GetEvent()) diff --git a/lib/usagereporter/teleport/usagereporter_test.go b/lib/usagereporter/teleport/usagereporter_test.go index 77a3a23951c56..5327879cc4305 100644 --- a/lib/usagereporter/teleport/usagereporter_test.go +++ b/lib/usagereporter/teleport/usagereporter_test.go @@ -513,6 +513,24 @@ func TestConvertUsageEvent(t *testing.T) { Id: expectedAnonymizedAccessListIDString, }, }, + }, + }, + }, + { + name: "discovery fetch event", + event: &usageeventsv1.UsageEventOneOf{Event: &usageeventsv1.UsageEventOneOf_DiscoveryFetchEvent{ + DiscoveryFetchEvent: &usageeventsv1.DiscoveryFetchEvent{ + CloudProvider: "AWS", + ResourceType: "rds", + }, + }}, + identityUsername: "myuser", + errCheck: require.NoError, + expected: &prehogv1a.SubmitEventRequest{Event: &prehogv1a.SubmitEventRequest_DiscoveryFetchEvent{ + DiscoveryFetchEvent: &prehogv1a.DiscoveryFetchEvent{ + CloudProvider: "AWS", + ResourceType: "rds", + }, }}, }, } { diff --git a/proto/prehog/v1alpha/teleport.proto b/proto/prehog/v1alpha/teleport.proto index c9ad25980aff4..1cfd52df2f499 100644 --- a/proto/prehog/v1alpha/teleport.proto +++ b/proto/prehog/v1alpha/teleport.proto @@ -1106,6 +1106,22 @@ message AuditQueryRunEvent { bool is_success = 3; } +// DiscoveryFetchEvent is emitted when a DiscoveryService polls for new resources of a given type +message DiscoveryFetchEvent { + // cloud_provider is the cloud provider used to fetch resources + // Eg, AWS, Azure, GCP, Kubernetes + // + // PostHog property: tp.cloud + string cloud_provider = 1; + + // resource_type is the type of resource that this fetch is polling. + // It depends on the Cloud Provider (defined above). + // Eg, rds, ec2, vm, aks, gce, app + // + // PostHog property: tp.resource_type + string resource_type = 2; +} + message SubmitEventRequest { // anonymized, 32 bytes (HMAC-SHA-256) encoded in base64 // @@ -1223,6 +1239,8 @@ message SubmitEventRequest { SecurityReportGetResultEvent security_report_get_result = 72; AuditQueryRunEvent audit_query_run = 73; + DiscoveryFetchEvent discovery_fetch_event = 74; + AccessListReviewCreateEvent access_list_review_create = 75; AccessListReviewDeleteEvent access_list_review_delete = 76; AccessListReviewComplianceEvent access_list_review_compliance = 77; diff --git a/tool/tsh/common/proxy.go b/tool/tsh/common/proxy.go index c7fd0f77e0da1..5d5aabbc0af98 100644 --- a/tool/tsh/common/proxy.go +++ b/tool/tsh/common/proxy.go @@ -17,7 +17,6 @@ limitations under the License. package common import ( - "context" "crypto/tls" "crypto/x509/pkix" "fmt" @@ -33,15 +32,9 @@ import ( "unicode" "github.com/gravitational/trace" - "golang.org/x/crypto/ssh" - "golang.org/x/crypto/ssh/agent" "github.com/gravitational/teleport" - "github.com/gravitational/teleport/api/client" - "github.com/gravitational/teleport/api/client/webclient" "github.com/gravitational/teleport/api/constants" - apidefaults "github.com/gravitational/teleport/api/defaults" - tracessh "github.com/gravitational/teleport/api/observability/tracing/ssh" "github.com/gravitational/teleport/api/types" libclient "github.com/gravitational/teleport/lib/client" "github.com/gravitational/teleport/lib/client/db/dbcmd" @@ -52,89 +45,38 @@ import ( "github.com/gravitational/teleport/lib/utils" ) -// onProxyCommandSSH creates a local ssh proxy. -// In cases of TLS Routing the connection is established to the WebProxy with teleport-proxy-ssh ALPN protocol. -// and all ssh traffic is forwarded through the local ssh proxy. -// -// If proxy doesn't support TLS Routing the onProxyCommandSSH is used as ProxyCommand to remove proxy/site prefixes -// from destination node address to support multiple platform where 'cut -d' command is not provided. -// For more details please look at: Generate Windows-compatible OpenSSH config https://github.com/gravitational/teleport/pull/7848 +// onProxyCommandSSH creates a local ssh proxy, dialing a node and transferring +// data through stdin and stdout, to be used as an OpenSSH and PuTTY proxy +// command. func onProxyCommandSSH(cf *CLIConf) error { tc, err := makeClient(cf) if err != nil { return trace.Wrap(err) } - err = libclient.RetryWithRelogin(cf.Context, tc, func() error { - proxyParams, err := getSSHProxyParams(cf, tc) + return trace.Wrap(libclient.RetryWithRelogin(cf.Context, tc, func() error { + clt, err := tc.ConnectToCluster(cf.Context) if err != nil { return trace.Wrap(err) } - if len(tc.JumpHosts) > 0 { - err := setupJumpHost(cf, tc, proxyParams.clusterName) - if err != nil { - return trace.Wrap(err) - } + targetHost, targetPort, err := net.SplitHostPort(tc.Host) + if err != nil { + targetHost = tc.Host + targetPort = strconv.Itoa(tc.HostPort) } - return trace.Wrap(sshProxy(cf.Context, tc, *proxyParams)) - }) - return trace.Wrap(err) -} - -// sshProxyParams combines parameters for establishing an SSH proxy used -// as a ProxyCommand for SSH clients. -type sshProxyParams struct { - // proxyHost is the Teleport proxy host name. - proxyHost string - // proxyPort is the Teleport proxy port. - proxyPort string - // clusterName is the cluster where the SSH node resides. - clusterName string - // tlsRouting is true if the Teleport proxy has TLS routing enabled. - tlsRouting bool -} + targetHost = cleanTargetHost(targetHost, tc.WebProxyHost(), clt.ClusterName()) + target := net.JoinHostPort(targetHost, targetPort) -// getSSHProxyParams prepares parameters for establishing an SSH proxy connection. -func getSSHProxyParams(cf *CLIConf, tc *libclient.TeleportClient) (*sshProxyParams, error) { - // Without jump hosts, we will be connecting to the current Teleport client - // proxy the user is logged into. - if len(tc.JumpHosts) == 0 { - proxyHost, proxyPort := tc.SSHProxyHostPort() - if tc.TLSRoutingEnabled { - proxyHost, proxyPort = tc.WebProxyHostPort() + conn, _, err := clt.ProxyClient.DialHost(cf.Context, target, clt.ClusterName(), tc.LocalAgent().ExtendedAgent) + if err != nil { + return trace.Wrap(err) } - return &sshProxyParams{ - proxyHost: proxyHost, - proxyPort: strconv.Itoa(proxyPort), - clusterName: tc.SiteName, - tlsRouting: tc.TLSRoutingEnabled, - }, nil - } - - // When jump host is specified, we will be connecting to the jump host's - // proxy directly. Call its ping endpoint to figure out the cluster details - // such as cluster name, SSH proxy address, etc. - ping, err := webclient.Find(&webclient.Config{ - Context: cf.Context, - ProxyAddr: tc.JumpHosts[0].Addr.Addr, - Insecure: tc.InsecureSkipVerify, - }) - if err != nil { - return nil, trace.Wrap(err) - } - - sshProxyHost, sshProxyPort, err := ping.Proxy.SSHProxyHostPort() - if err != nil { - return nil, trace.Wrap(err) - } + defer conn.Close() - return &sshProxyParams{ - proxyHost: sshProxyHost, - proxyPort: sshProxyPort, - clusterName: ping.ClusterName, - tlsRouting: ping.Proxy.TLSRoutingEnabled, - }, nil + stdio := utils.CombineReadWriteCloser(io.NopCloser(os.Stdin), utils.NopWriteCloser(os.Stdout)) + return trace.Wrap(utils.ProxyConn(cf.Context, stdio, conn)) + })) } // cleanTargetHost cleans the targetHost and remote site and proxy suffixes. @@ -147,188 +89,6 @@ func cleanTargetHost(targetHost, proxyHost, siteName string) string { return targetHost } -// setupJumpHost configures the client for connecting to the jump host's proxy. -func setupJumpHost(cf *CLIConf, tc *libclient.TeleportClient, clusterName string) error { - return tc.WithoutJumpHosts(func(tc *libclient.TeleportClient) error { - // Fetch certificate for the leaf cluster. This allows users to log - // in once into the root cluster and let the proxy handle fetching - // certificates for leaf clusters automatically. - err := tc.LoadKeyForClusterWithReissue(cf.Context, clusterName) - if err != nil { - return trace.Wrap(err) - } - - // We'll be connecting directly to the leaf cluster so make sure agent - // loads correct host CA. - tc.LocalAgent().UpdateCluster(clusterName) - return nil - }) -} - -// sshProxy opens up a new SSH session connected to the Teleport Proxy's SSH proxy subsystem, -// This is the equivalent of `ssh -o 'ForwardAgent yes' -p port %r@host -s proxy:%h:%p`. -// If tls routing is enabled, the connection to RemoteProxyAddr is wrapped with TLS protocol. -func sshProxy(ctx context.Context, tc *libclient.TeleportClient, sp sshProxyParams) error { - upstreamConn, err := dialSSHProxy(ctx, tc, sp) - if err != nil { - return trace.Wrap(err) - } - defer upstreamConn.Close() - - signers, err := tc.LocalAgent().Signers() - if err != nil { - return trace.Wrap(err) - } - if len(signers) == 0 { - return trace.BadParameter("no SSH auth methods loaded, are you logged in?") - } - - remoteProxyAddr := net.JoinHostPort(sp.proxyHost, sp.proxyPort) - client, err := makeSSHClient(ctx, upstreamConn, remoteProxyAddr, &ssh.ClientConfig{ - User: tc.HostLogin, - Auth: []ssh.AuthMethod{ssh.PublicKeys(signers...)}, - HostKeyCallback: tc.HostKeyCallback, - }) - if err != nil { - if utils.IsHandshakeFailedError(err) { - // TODO(codingllama): Improve error message below for device trust. - // An alternative we have here is querying the cluster to check if device - // trust is required, a check similar to `IsMFARequired`. - log.Infof("Access denied to %v connecting to %v: %v", tc.HostLogin, remoteProxyAddr, err) - return trace.AccessDenied(`access denied to %v connecting to %v`, tc.HostLogin, remoteProxyAddr) - } - return trace.Wrap(err) - } - defer client.Close() - - sess, err := client.NewSession(ctx) - if err != nil { - return trace.Wrap(err) - } - defer sess.Close() - - err = agent.ForwardToAgent(client.Client, tc.LocalAgent()) - if err != nil { - return trace.Wrap(err) - } - err = agent.RequestAgentForwarding(sess.Session) - if err != nil { - return trace.Wrap(err) - } - - targetHost, targetPort, err := net.SplitHostPort(tc.Host) - if err != nil { - targetHost = tc.Host - targetPort = strconv.Itoa(tc.HostPort) - } - - targetHost = cleanTargetHost(targetHost, tc.WebProxyHost(), tc.SiteName) - - sshUserHost := fmt.Sprintf("%s:%s", targetHost, targetPort) - if err = sess.RequestSubsystem(ctx, proxySubsystemName(sshUserHost, sp.clusterName)); err != nil { - return trace.Wrap(err) - } - if err := proxySession(ctx, sess); err != nil { - return trace.Wrap(err) - } - return nil -} - -// dialSSHProxy opens a net.Conn to the proxy on either the ALPN or SSH -// port, this connection can then be used to initiate a SSH client. -// If the HTTPS_PROXY is configured, then this is used to open the connection -// to the proxy. -func dialSSHProxy(ctx context.Context, tc *libclient.TeleportClient, sp sshProxyParams) (net.Conn, error) { - // if sp.tlsRouting is true, remoteProxyAddr is the ALPN listener port. - // if it is false, then remoteProxyAddr is the SSH proxy port. - remoteProxyAddr := net.JoinHostPort(sp.proxyHost, sp.proxyPort) - - var dialer client.ContextDialer - switch { - case sp.tlsRouting: - pool, err := tc.LocalAgent().ClientCertPool(sp.clusterName) - if err != nil { - return nil, trace.Wrap(err) - } - - dialer = client.NewALPNDialer(client.ALPNDialerConfig{ - TLSConfig: &tls.Config{ - RootCAs: pool, - NextProtos: []string{string(alpncommon.ProtocolProxySSH)}, - InsecureSkipVerify: tc.InsecureSkipVerify, - ServerName: sp.proxyHost, - }, - ALPNConnUpgradeRequired: tc.IsALPNConnUpgradeRequiredForWebProxy(ctx, remoteProxyAddr), - }) - - default: - dialer = client.NewDialer(ctx, apidefaults.DefaultIdleTimeout, apidefaults.DefaultIOTimeout, client.WithInsecureSkipVerify(tc.InsecureSkipVerify)) - } - - conn, err := dialer.DialContext(ctx, "tcp", remoteProxyAddr) - return conn, trace.Wrap(err) -} - -func proxySubsystemName(userHost, cluster string) string { - subsystem := fmt.Sprintf("proxy:%s", userHost) - if cluster != "" { - return fmt.Sprintf("%s@%s", subsystem, cluster) - } - return fmt.Sprintf("proxy:%s", userHost) -} - -func makeSSHClient(ctx context.Context, conn net.Conn, addr string, cfg *ssh.ClientConfig) (*tracessh.Client, error) { - cc, chs, reqs, err := tracessh.NewClientConn(ctx, conn, addr, cfg) - if err != nil { - return nil, trace.Wrap(err) - } - return tracessh.NewClient(cc, chs, reqs), nil -} - -func proxySession(ctx context.Context, sess *tracessh.Session) error { - stdout, err := sess.StdoutPipe() - if err != nil { - return trace.Wrap(err) - } - stdin, err := sess.StdinPipe() - if err != nil { - return trace.Wrap(err) - } - stderr, err := sess.StderrPipe() - if err != nil { - return trace.Wrap(err) - } - - errC := make(chan error, 3) - go func() { - defer sess.Close() - _, err := io.Copy(os.Stdout, stdout) - errC <- err - }() - go func() { - defer sess.Close() - _, err := io.Copy(stdin, os.Stdin) - errC <- err - }() - go func() { - defer sess.Close() - _, err := io.Copy(os.Stderr, stderr) - errC <- err - }() - var errs []error - for i := 0; i < 3; i++ { - select { - case <-ctx.Done(): - return nil - case err := <-errC: - if err != nil && !utils.IsOKNetworkError(err) { - errs = append(errs, err) - } - } - } - return trace.NewAggregate(errs...) -} - // formatCommand formats command making it suitable for the end user to copy the command and paste it into terminal. func formatCommand(cmd *exec.Cmd) string { // environment variables @@ -438,7 +198,7 @@ func onProxyCommandDB(cf *CLIConf) error { if err != nil { return trace.Wrap(err) } - var opts = []dbcmd.ConnectCommandFunc{ + opts := []dbcmd.ConnectCommandFunc{ dbcmd.WithLocalProxy("localhost", addr.Port(0), ""), dbcmd.WithNoTLS(), dbcmd.WithLogger(log), @@ -863,7 +623,6 @@ func generateDBLocalProxyCert(key *libclient.Key, profile *libclient.ProfileStat path := profile.DatabaseLocalCAPath() if utils.FileExists(path) { return nil - } certPem, err := tlsca.GenerateSelfSignedCAWithConfig(tlsca.GenerateCAConfig{ Entity: pkix.Name{ @@ -939,7 +698,7 @@ var dbProxyAuthMultiTpl = template.Must(template.New("").Parse( ` + dbProxyConnectAd + ` Use one of the following commands to connect to the database or to the address above using other database GUI/CLI clients: {{range $item := .commands}} - * {{$item.Description}}: + * {{$item.Description}}: $ {{$item.Command}} {{end}} diff --git a/tool/tsh/common/proxy_test.go b/tool/tsh/common/proxy_test.go index eb0699f2da574..8e5943b500e57 100644 --- a/tool/tsh/common/proxy_test.go +++ b/tool/tsh/common/proxy_test.go @@ -540,11 +540,15 @@ func TestProxySSH(t *testing.T) { s.root.Config.SSH.Addr.Port(defaults.SSHServerListenPort)) runProxySSH := func(proxyRequest string, opts ...CliOption) error { - return Run(ctx, []string{ + var args []string + if testing.Verbose() { + args = append(args, "--debug") + } + return Run(ctx, append(args, "--insecure", "--proxy", s.root.Config.Proxy.WebAddr.Addr, "proxy", "ssh", proxyRequest, - }, opts...) + ), opts...) } // login to Teleport @@ -576,10 +580,10 @@ func TestProxySSH(t *testing.T) { t.Run("invalid node login", func(t *testing.T) { t.Parallel() + // it's legal to specify any username before the request invalidLoginRequest := fmt.Sprintf("%s@%s", "invalidUser", proxyRequest) err := runProxySSH(invalidLoginRequest, setHomePath(homePath), setKubeConfigPath(kubeConfigPath), setMockSSOLogin(t, s)) - require.Error(t, err) - require.True(t, trace.IsAccessDenied(err), "expected access denied, got %v", err) + require.NoError(t, err) }) }) } @@ -1203,11 +1207,11 @@ Learn more at https://goteleport.com/docs/connect-your-client/teleport-connect/# Use one of the following commands to connect to the database or to the address above using other database GUI/CLI clients: - * default: + * default: $ echo "hello world" - * alternative: + * alternative: $ echo "goodbye world" @@ -1262,11 +1266,11 @@ Learn more at https://goteleport.com/docs/connect-your-client/teleport-connect/# Use one of the following commands to connect to the database or to the address above using other database GUI/CLI clients: - * default: + * default: $ echo "hello world" - * alternative: + * alternative: $ echo "goodbye world" diff --git a/version.go b/version.go index f342fb48ba2a9..c7c258c9bf3cf 100644 --- a/version.go +++ b/version.go @@ -1,7 +1,7 @@ // Code generated by "make version". DO NOT EDIT. package teleport -const Version = "14.2.2" +const Version = "14.2.3" // Gitref is set to the output of "git describe" during the build process. var Gitref string diff --git a/web/packages/shared/components/UnifiedResources/CardsView/LoadingCard.tsx b/web/packages/shared/components/UnifiedResources/CardsView/LoadingCard.tsx index 1c74a94596206..20c9b38c005e5 100644 --- a/web/packages/shared/components/UnifiedResources/CardsView/LoadingCard.tsx +++ b/web/packages/shared/components/UnifiedResources/CardsView/LoadingCard.tsx @@ -14,11 +14,17 @@ * limitations under the License. */ -import React from 'react'; +import React, { useState } from 'react'; import { Flex, Box } from 'design'; import { ShimmerBox } from 'design/ShimmerBox'; export function LoadingCard() { + const [randomizedSize] = useState(() => ({ + name: randomNum(100, 30), + description: randomNum(90, 40), + labels: new Array(randomNum(4, 0)), + })); + return ( {/* Checkbox */} @@ -31,17 +37,21 @@ export function LoadingCard() { {/* Action button */} {/* Description */} - + {/* Labels */} - {new Array(randomNum(4, 0)).fill(null).map((_, i) => ( + {randomizedSize.labels.fill(null).map((_, i) => ( ))} diff --git a/web/packages/shared/components/UnifiedResources/ListView/LoadingListItem.tsx b/web/packages/shared/components/UnifiedResources/ListView/LoadingListItem.tsx index e7f375d184b43..6e22249103f5f 100644 --- a/web/packages/shared/components/UnifiedResources/ListView/LoadingListItem.tsx +++ b/web/packages/shared/components/UnifiedResources/ListView/LoadingListItem.tsx @@ -14,13 +14,20 @@ * limitations under the License. */ -import React from 'react'; +import React, { useState } from 'react'; import styled from 'styled-components'; import { Box, Flex } from 'design'; import { ShimmerBox } from 'design/ShimmerBox'; export function LoadingListItem() { + const [randomizedSize] = useState(() => ({ + name: randomNum(95, 40), + description: randomNum(65, 25), + type: randomNum(80, 60), + address: randomNum(90, 50), + })); + return ( {/* Image */} @@ -39,15 +46,15 @@ export function LoadingListItem() { grid-area: name; `} > - - + + {labelText} diff --git a/web/packages/teleport/src/services/resources/resource.ts b/web/packages/teleport/src/services/resources/resource.ts index a2da8ec394bd4..d21726f983ff8 100644 --- a/web/packages/teleport/src/services/resources/resource.ts +++ b/web/packages/teleport/src/services/resources/resource.ts @@ -54,7 +54,11 @@ class ResourceService { // TODO (avatus) : a temporary check to catch unimplemented errors for unified resources // This is a quick hacky way to catch the error until we migrate completely to unified resources // DELETE IN 15.0 - if (res.response?.status === 404 || res.response?.status === 501) { + if ( + (res.response?.status === 404 && + res.message?.includes('unknown method ListUnifiedResources')) || + res.response?.status === 501 + ) { localStorage.setItem( KeysEnum.UNIFIED_RESOURCES_NOT_SUPPORTED, 'true'