// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.24.0 // protoc v3.6.0 // source: public.proto package public import ( context "context" proto "github.com/golang/protobuf/proto" duration "github.com/golang/protobuf/ptypes/duration" healthcheck "github.com/linkerd/linkerd2/controller/gen/common/healthcheck" config "github.com/linkerd/linkerd2/controller/gen/config" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) // This is a compile-time assertion that a sufficiently up-to-date version // of the legacy proto package is being used. const _ = proto.ProtoPackageIsVersion4 type HttpMethod_Registered int32 const ( HttpMethod_GET HttpMethod_Registered = 0 HttpMethod_POST HttpMethod_Registered = 1 HttpMethod_PUT HttpMethod_Registered = 2 HttpMethod_DELETE HttpMethod_Registered = 3 HttpMethod_PATCH HttpMethod_Registered = 4 HttpMethod_OPTIONS HttpMethod_Registered = 5 HttpMethod_CONNECT HttpMethod_Registered = 6 HttpMethod_HEAD HttpMethod_Registered = 7 HttpMethod_TRACE HttpMethod_Registered = 8 ) // Enum value maps for HttpMethod_Registered. var ( HttpMethod_Registered_name = map[int32]string{ 0: "GET", 1: "POST", 2: "PUT", 3: "DELETE", 4: "PATCH", 5: "OPTIONS", 6: "CONNECT", 7: "HEAD", 8: "TRACE", } HttpMethod_Registered_value = map[string]int32{ "GET": 0, "POST": 1, "PUT": 2, "DELETE": 3, "PATCH": 4, "OPTIONS": 5, "CONNECT": 6, "HEAD": 7, "TRACE": 8, } ) func (x HttpMethod_Registered) Enum() *HttpMethod_Registered { p := new(HttpMethod_Registered) *p = x return p } func (x HttpMethod_Registered) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (HttpMethod_Registered) Descriptor() protoreflect.EnumDescriptor { return file_public_proto_enumTypes[0].Descriptor() } func (HttpMethod_Registered) Type() protoreflect.EnumType { return &file_public_proto_enumTypes[0] } func (x HttpMethod_Registered) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use HttpMethod_Registered.Descriptor instead. func (HttpMethod_Registered) EnumDescriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{10, 0} } type Scheme_Registered int32 const ( Scheme_HTTP Scheme_Registered = 0 Scheme_HTTPS Scheme_Registered = 1 ) // Enum value maps for Scheme_Registered. var ( Scheme_Registered_name = map[int32]string{ 0: "HTTP", 1: "HTTPS", } Scheme_Registered_value = map[string]int32{ "HTTP": 0, "HTTPS": 1, } ) func (x Scheme_Registered) Enum() *Scheme_Registered { p := new(Scheme_Registered) *p = x return p } func (x Scheme_Registered) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Scheme_Registered) Descriptor() protoreflect.EnumDescriptor { return file_public_proto_enumTypes[1].Descriptor() } func (Scheme_Registered) Type() protoreflect.EnumType { return &file_public_proto_enumTypes[1] } func (x Scheme_Registered) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Scheme_Registered.Descriptor instead. func (Scheme_Registered) EnumDescriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{11, 0} } type TapEvent_ProxyDirection int32 const ( TapEvent_UNKNOWN TapEvent_ProxyDirection = 0 TapEvent_INBOUND TapEvent_ProxyDirection = 1 TapEvent_OUTBOUND TapEvent_ProxyDirection = 2 ) // Enum value maps for TapEvent_ProxyDirection. var ( TapEvent_ProxyDirection_name = map[int32]string{ 0: "UNKNOWN", 1: "INBOUND", 2: "OUTBOUND", } TapEvent_ProxyDirection_value = map[string]int32{ "UNKNOWN": 0, "INBOUND": 1, "OUTBOUND": 2, } ) func (x TapEvent_ProxyDirection) Enum() *TapEvent_ProxyDirection { p := new(TapEvent_ProxyDirection) *p = x return p } func (x TapEvent_ProxyDirection) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (TapEvent_ProxyDirection) Descriptor() protoreflect.EnumDescriptor { return file_public_proto_enumTypes[2].Descriptor() } func (TapEvent_ProxyDirection) Type() protoreflect.EnumType { return &file_public_proto_enumTypes[2] } func (x TapEvent_ProxyDirection) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use TapEvent_ProxyDirection.Descriptor instead. func (TapEvent_ProxyDirection) EnumDescriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{17, 0} } type Empty struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *Empty) Reset() { *x = Empty{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Empty) String() string { return protoimpl.X.MessageStringOf(x) } func (*Empty) ProtoMessage() {} func (x *Empty) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[0] 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 Empty.ProtoReflect.Descriptor instead. func (*Empty) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{0} } type VersionInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GoVersion string `protobuf:"bytes,1,opt,name=goVersion,proto3" json:"goVersion,omitempty"` BuildDate string `protobuf:"bytes,2,opt,name=buildDate,proto3" json:"buildDate,omitempty"` ReleaseVersion string `protobuf:"bytes,3,opt,name=releaseVersion,proto3" json:"releaseVersion,omitempty"` } func (x *VersionInfo) Reset() { *x = VersionInfo{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *VersionInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*VersionInfo) ProtoMessage() {} func (x *VersionInfo) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[1] 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 VersionInfo.ProtoReflect.Descriptor instead. func (*VersionInfo) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{1} } func (x *VersionInfo) GetGoVersion() string { if x != nil { return x.GoVersion } return "" } func (x *VersionInfo) GetBuildDate() string { if x != nil { return x.BuildDate } return "" } func (x *VersionInfo) GetReleaseVersion() string { if x != nil { return x.ReleaseVersion } return "" } type ListServicesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` } func (x *ListServicesRequest) Reset() { *x = ListServicesRequest{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListServicesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListServicesRequest) ProtoMessage() {} func (x *ListServicesRequest) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[2] 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 ListServicesRequest.ProtoReflect.Descriptor instead. func (*ListServicesRequest) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{2} } func (x *ListServicesRequest) GetNamespace() string { if x != nil { return x.Namespace } return "" } type ListServicesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Services []*Service `protobuf:"bytes,1,rep,name=services,proto3" json:"services,omitempty"` } func (x *ListServicesResponse) Reset() { *x = ListServicesResponse{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListServicesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListServicesResponse) ProtoMessage() {} func (x *ListServicesResponse) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[3] 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 ListServicesResponse.ProtoReflect.Descriptor instead. func (*ListServicesResponse) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{3} } func (x *ListServicesResponse) GetServices() []*Service { if x != nil { return x.Services } return nil } type Service struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` } func (x *Service) Reset() { *x = Service{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Service) String() string { return protoimpl.X.MessageStringOf(x) } func (*Service) ProtoMessage() {} func (x *Service) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[4] 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 Service.ProtoReflect.Descriptor instead. func (*Service) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{4} } func (x *Service) GetName() string { if x != nil { return x.Name } return "" } func (x *Service) GetNamespace() string { if x != nil { return x.Namespace } return "" } type ListPodsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Deprecated: Do not use. Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` Selector *ResourceSelection `protobuf:"bytes,2,opt,name=selector,proto3" json:"selector,omitempty"` } func (x *ListPodsRequest) Reset() { *x = ListPodsRequest{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListPodsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListPodsRequest) ProtoMessage() {} func (x *ListPodsRequest) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[5] 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 ListPodsRequest.ProtoReflect.Descriptor instead. func (*ListPodsRequest) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{5} } // Deprecated: Do not use. func (x *ListPodsRequest) GetNamespace() string { if x != nil { return x.Namespace } return "" } func (x *ListPodsRequest) GetSelector() *ResourceSelection { if x != nil { return x.Selector } return nil } type ListPodsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pods []*Pod `protobuf:"bytes,1,rep,name=pods,proto3" json:"pods,omitempty"` } func (x *ListPodsResponse) Reset() { *x = ListPodsResponse{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListPodsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListPodsResponse) ProtoMessage() {} func (x *ListPodsResponse) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[6] 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 ListPodsResponse.ProtoReflect.Descriptor instead. func (*ListPodsResponse) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{6} } func (x *ListPodsResponse) GetPods() []*Pod { if x != nil { return x.Pods } return nil } type Pod struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` PodIP string `protobuf:"bytes,2,opt,name=podIP,proto3" json:"podIP,omitempty"` // Types that are assignable to Owner: // *Pod_Deployment // *Pod_ReplicaSet // *Pod_ReplicationController // *Pod_StatefulSet // *Pod_DaemonSet // *Pod_Job Owner isPod_Owner `protobuf_oneof:"owner"` Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` Added bool `protobuf:"varint,5,opt,name=added,proto3" json:"added,omitempty"` // true if this pod has a proxy sidecar (data plane) SinceLastReport *duration.Duration `protobuf:"bytes,6,opt,name=sinceLastReport,proto3" json:"sinceLastReport,omitempty"` ControllerNamespace string `protobuf:"bytes,7,opt,name=controllerNamespace,proto3" json:"controllerNamespace,omitempty"` // namespace of controller this pod reports to ControlPlane bool `protobuf:"varint,8,opt,name=controlPlane,proto3" json:"controlPlane,omitempty"` // true if this pod is part of the control plane Uptime *duration.Duration `protobuf:"bytes,9,opt,name=uptime,proto3" json:"uptime,omitempty"` // uptime of this pod ProxyReady bool `protobuf:"varint,15,opt,name=proxyReady,proto3" json:"proxyReady,omitempty"` // true if this pod has proxy container and that one is in ready state ProxyVersion string `protobuf:"bytes,16,opt,name=proxyVersion,proto3" json:"proxyVersion,omitempty"` // version of the proxy if present ResourceVersion string `protobuf:"bytes,17,opt,name=resourceVersion,proto3" json:"resourceVersion,omitempty"` // resource version in the Kubernetes API } func (x *Pod) Reset() { *x = Pod{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Pod) String() string { return protoimpl.X.MessageStringOf(x) } func (*Pod) ProtoMessage() {} func (x *Pod) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[7] 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 Pod.ProtoReflect.Descriptor instead. func (*Pod) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{7} } func (x *Pod) GetName() string { if x != nil { return x.Name } return "" } func (x *Pod) GetPodIP() string { if x != nil { return x.PodIP } return "" } func (m *Pod) GetOwner() isPod_Owner { if m != nil { return m.Owner } return nil } func (x *Pod) GetDeployment() string { if x, ok := x.GetOwner().(*Pod_Deployment); ok { return x.Deployment } return "" } func (x *Pod) GetReplicaSet() string { if x, ok := x.GetOwner().(*Pod_ReplicaSet); ok { return x.ReplicaSet } return "" } func (x *Pod) GetReplicationController() string { if x, ok := x.GetOwner().(*Pod_ReplicationController); ok { return x.ReplicationController } return "" } func (x *Pod) GetStatefulSet() string { if x, ok := x.GetOwner().(*Pod_StatefulSet); ok { return x.StatefulSet } return "" } func (x *Pod) GetDaemonSet() string { if x, ok := x.GetOwner().(*Pod_DaemonSet); ok { return x.DaemonSet } return "" } func (x *Pod) GetJob() string { if x, ok := x.GetOwner().(*Pod_Job); ok { return x.Job } return "" } func (x *Pod) GetStatus() string { if x != nil { return x.Status } return "" } func (x *Pod) GetAdded() bool { if x != nil { return x.Added } return false } func (x *Pod) GetSinceLastReport() *duration.Duration { if x != nil { return x.SinceLastReport } return nil } func (x *Pod) GetControllerNamespace() string { if x != nil { return x.ControllerNamespace } return "" } func (x *Pod) GetControlPlane() bool { if x != nil { return x.ControlPlane } return false } func (x *Pod) GetUptime() *duration.Duration { if x != nil { return x.Uptime } return nil } func (x *Pod) GetProxyReady() bool { if x != nil { return x.ProxyReady } return false } func (x *Pod) GetProxyVersion() string { if x != nil { return x.ProxyVersion } return "" } func (x *Pod) GetResourceVersion() string { if x != nil { return x.ResourceVersion } return "" } type isPod_Owner interface { isPod_Owner() } type Pod_Deployment struct { Deployment string `protobuf:"bytes,3,opt,name=deployment,proto3,oneof"` } type Pod_ReplicaSet struct { ReplicaSet string `protobuf:"bytes,10,opt,name=replica_set,json=replicaSet,proto3,oneof"` } type Pod_ReplicationController struct { ReplicationController string `protobuf:"bytes,11,opt,name=replication_controller,json=replicationController,proto3,oneof"` } type Pod_StatefulSet struct { StatefulSet string `protobuf:"bytes,12,opt,name=stateful_set,json=statefulSet,proto3,oneof"` } type Pod_DaemonSet struct { DaemonSet string `protobuf:"bytes,13,opt,name=daemon_set,json=daemonSet,proto3,oneof"` } type Pod_Job struct { Job string `protobuf:"bytes,14,opt,name=job,proto3,oneof"` } func (*Pod_Deployment) isPod_Owner() {} func (*Pod_ReplicaSet) isPod_Owner() {} func (*Pod_ReplicationController) isPod_Owner() {} func (*Pod_StatefulSet) isPod_Owner() {} func (*Pod_DaemonSet) isPod_Owner() {} func (*Pod_Job) isPod_Owner() {} // Deprecated: Do not use. type TapRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Target: // *TapRequest_Pod // *TapRequest_Deployment Target isTapRequest_Target `protobuf_oneof:"target"` // validation of these fields happens on the server MaxRps float32 `protobuf:"fixed32,3,opt,name=maxRps,proto3" json:"maxRps,omitempty"` ToPort uint32 `protobuf:"varint,4,opt,name=toPort,proto3" json:"toPort,omitempty"` ToIP string `protobuf:"bytes,5,opt,name=toIP,proto3" json:"toIP,omitempty"` FromPort uint32 `protobuf:"varint,6,opt,name=fromPort,proto3" json:"fromPort,omitempty"` FromIP string `protobuf:"bytes,7,opt,name=fromIP,proto3" json:"fromIP,omitempty"` Scheme string `protobuf:"bytes,8,opt,name=scheme,proto3" json:"scheme,omitempty"` Method string `protobuf:"bytes,9,opt,name=method,proto3" json:"method,omitempty"` Authority string `protobuf:"bytes,10,opt,name=authority,proto3" json:"authority,omitempty"` Path string `protobuf:"bytes,11,opt,name=path,proto3" json:"path,omitempty"` } func (x *TapRequest) Reset() { *x = TapRequest{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TapRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*TapRequest) ProtoMessage() {} func (x *TapRequest) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[8] 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 TapRequest.ProtoReflect.Descriptor instead. func (*TapRequest) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{8} } func (m *TapRequest) GetTarget() isTapRequest_Target { if m != nil { return m.Target } return nil } func (x *TapRequest) GetPod() string { if x, ok := x.GetTarget().(*TapRequest_Pod); ok { return x.Pod } return "" } func (x *TapRequest) GetDeployment() string { if x, ok := x.GetTarget().(*TapRequest_Deployment); ok { return x.Deployment } return "" } func (x *TapRequest) GetMaxRps() float32 { if x != nil { return x.MaxRps } return 0 } func (x *TapRequest) GetToPort() uint32 { if x != nil { return x.ToPort } return 0 } func (x *TapRequest) GetToIP() string { if x != nil { return x.ToIP } return "" } func (x *TapRequest) GetFromPort() uint32 { if x != nil { return x.FromPort } return 0 } func (x *TapRequest) GetFromIP() string { if x != nil { return x.FromIP } return "" } func (x *TapRequest) GetScheme() string { if x != nil { return x.Scheme } return "" } func (x *TapRequest) GetMethod() string { if x != nil { return x.Method } return "" } func (x *TapRequest) GetAuthority() string { if x != nil { return x.Authority } return "" } func (x *TapRequest) GetPath() string { if x != nil { return x.Path } return "" } type isTapRequest_Target interface { isTapRequest_Target() } type TapRequest_Pod struct { Pod string `protobuf:"bytes,1,opt,name=pod,proto3,oneof"` } type TapRequest_Deployment struct { Deployment string `protobuf:"bytes,2,opt,name=deployment,proto3,oneof"` } func (*TapRequest_Pod) isTapRequest_Target() {} func (*TapRequest_Deployment) isTapRequest_Target() {} // A tap request over kubernetes resources. // // This is used only by the tap APIServer. type TapByResourceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Describes the kubernetes pods that should be tapped. Target *ResourceSelection `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"` // Selects over events to be reported. Match *TapByResourceRequest_Match `protobuf:"bytes,2,opt,name=match,proto3" json:"match,omitempty"` // Limits the number of events to be inspected. MaxRps float32 `protobuf:"fixed32,3,opt,name=maxRps,proto3" json:"maxRps,omitempty"` // Conditionally extracts components from requests and responses to include // in tap events Extract *TapByResourceRequest_Extract `protobuf:"bytes,4,opt,name=extract,proto3" json:"extract,omitempty"` } func (x *TapByResourceRequest) Reset() { *x = TapByResourceRequest{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TapByResourceRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*TapByResourceRequest) ProtoMessage() {} func (x *TapByResourceRequest) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[9] 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 TapByResourceRequest.ProtoReflect.Descriptor instead. func (*TapByResourceRequest) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{9} } func (x *TapByResourceRequest) GetTarget() *ResourceSelection { if x != nil { return x.Target } return nil } func (x *TapByResourceRequest) GetMatch() *TapByResourceRequest_Match { if x != nil { return x.Match } return nil } func (x *TapByResourceRequest) GetMaxRps() float32 { if x != nil { return x.MaxRps } return 0 } func (x *TapByResourceRequest) GetExtract() *TapByResourceRequest_Extract { if x != nil { return x.Extract } return nil } type HttpMethod struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Type: // *HttpMethod_Registered_ // *HttpMethod_Unregistered Type isHttpMethod_Type `protobuf_oneof:"type"` } func (x *HttpMethod) Reset() { *x = HttpMethod{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HttpMethod) String() string { return protoimpl.X.MessageStringOf(x) } func (*HttpMethod) ProtoMessage() {} func (x *HttpMethod) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[10] 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 HttpMethod.ProtoReflect.Descriptor instead. func (*HttpMethod) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{10} } func (m *HttpMethod) GetType() isHttpMethod_Type { if m != nil { return m.Type } return nil } func (x *HttpMethod) GetRegistered() HttpMethod_Registered { if x, ok := x.GetType().(*HttpMethod_Registered_); ok { return x.Registered } return HttpMethod_GET } func (x *HttpMethod) GetUnregistered() string { if x, ok := x.GetType().(*HttpMethod_Unregistered); ok { return x.Unregistered } return "" } type isHttpMethod_Type interface { isHttpMethod_Type() } type HttpMethod_Registered_ struct { Registered HttpMethod_Registered `protobuf:"varint,1,opt,name=registered,proto3,enum=linkerd2.public.HttpMethod_Registered,oneof"` } type HttpMethod_Unregistered struct { Unregistered string `protobuf:"bytes,2,opt,name=unregistered,proto3,oneof"` } func (*HttpMethod_Registered_) isHttpMethod_Type() {} func (*HttpMethod_Unregistered) isHttpMethod_Type() {} type Scheme struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Type: // *Scheme_Registered_ // *Scheme_Unregistered Type isScheme_Type `protobuf_oneof:"type"` } func (x *Scheme) Reset() { *x = Scheme{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Scheme) String() string { return protoimpl.X.MessageStringOf(x) } func (*Scheme) ProtoMessage() {} func (x *Scheme) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[11] 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 Scheme.ProtoReflect.Descriptor instead. func (*Scheme) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{11} } func (m *Scheme) GetType() isScheme_Type { if m != nil { return m.Type } return nil } func (x *Scheme) GetRegistered() Scheme_Registered { if x, ok := x.GetType().(*Scheme_Registered_); ok { return x.Registered } return Scheme_HTTP } func (x *Scheme) GetUnregistered() string { if x, ok := x.GetType().(*Scheme_Unregistered); ok { return x.Unregistered } return "" } type isScheme_Type interface { isScheme_Type() } type Scheme_Registered_ struct { Registered Scheme_Registered `protobuf:"varint,1,opt,name=registered,proto3,enum=linkerd2.public.Scheme_Registered,oneof"` } type Scheme_Unregistered struct { Unregistered string `protobuf:"bytes,2,opt,name=unregistered,proto3,oneof"` } func (*Scheme_Registered_) isScheme_Type() {} func (*Scheme_Unregistered) isScheme_Type() {} type Headers struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Headers []*Headers_Header `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty"` } func (x *Headers) Reset() { *x = Headers{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Headers) String() string { return protoimpl.X.MessageStringOf(x) } func (*Headers) ProtoMessage() {} func (x *Headers) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[12] 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 Headers.ProtoReflect.Descriptor instead. func (*Headers) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{12} } func (x *Headers) GetHeaders() []*Headers_Header { if x != nil { return x.Headers } return nil } type IPAddress struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Ip: // *IPAddress_Ipv4 // *IPAddress_Ipv6 Ip isIPAddress_Ip `protobuf_oneof:"ip"` } func (x *IPAddress) Reset() { *x = IPAddress{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IPAddress) String() string { return protoimpl.X.MessageStringOf(x) } func (*IPAddress) ProtoMessage() {} func (x *IPAddress) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[13] 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 IPAddress.ProtoReflect.Descriptor instead. func (*IPAddress) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{13} } func (m *IPAddress) GetIp() isIPAddress_Ip { if m != nil { return m.Ip } return nil } func (x *IPAddress) GetIpv4() uint32 { if x, ok := x.GetIp().(*IPAddress_Ipv4); ok { return x.Ipv4 } return 0 } func (x *IPAddress) GetIpv6() *IPv6 { if x, ok := x.GetIp().(*IPAddress_Ipv6); ok { return x.Ipv6 } return nil } type isIPAddress_Ip interface { isIPAddress_Ip() } type IPAddress_Ipv4 struct { Ipv4 uint32 `protobuf:"fixed32,1,opt,name=ipv4,proto3,oneof"` } type IPAddress_Ipv6 struct { Ipv6 *IPv6 `protobuf:"bytes,2,opt,name=ipv6,proto3,oneof"` } func (*IPAddress_Ipv4) isIPAddress_Ip() {} func (*IPAddress_Ipv6) isIPAddress_Ip() {} type IPv6 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields First uint64 `protobuf:"fixed64,1,opt,name=first,proto3" json:"first,omitempty"` // hextets 1-4 Last uint64 `protobuf:"fixed64,2,opt,name=last,proto3" json:"last,omitempty"` // hextets 5-8 } func (x *IPv6) Reset() { *x = IPv6{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IPv6) String() string { return protoimpl.X.MessageStringOf(x) } func (*IPv6) ProtoMessage() {} func (x *IPv6) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[14] 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 IPv6.ProtoReflect.Descriptor instead. func (*IPv6) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{14} } func (x *IPv6) GetFirst() uint64 { if x != nil { return x.First } return 0 } func (x *IPv6) GetLast() uint64 { if x != nil { return x.Last } return 0 } type TcpAddress struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ip *IPAddress `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` } func (x *TcpAddress) Reset() { *x = TcpAddress{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TcpAddress) String() string { return protoimpl.X.MessageStringOf(x) } func (*TcpAddress) ProtoMessage() {} func (x *TcpAddress) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[15] 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 TcpAddress.ProtoReflect.Descriptor instead. func (*TcpAddress) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{15} } func (x *TcpAddress) GetIp() *IPAddress { if x != nil { return x.Ip } return nil } func (x *TcpAddress) GetPort() uint32 { if x != nil { return x.Port } return 0 } type Eos struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to End: // *Eos_GrpcStatusCode // *Eos_ResetErrorCode End isEos_End `protobuf_oneof:"end"` } func (x *Eos) Reset() { *x = Eos{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Eos) String() string { return protoimpl.X.MessageStringOf(x) } func (*Eos) ProtoMessage() {} func (x *Eos) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[16] 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 Eos.ProtoReflect.Descriptor instead. func (*Eos) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{16} } func (m *Eos) GetEnd() isEos_End { if m != nil { return m.End } return nil } func (x *Eos) GetGrpcStatusCode() uint32 { if x, ok := x.GetEnd().(*Eos_GrpcStatusCode); ok { return x.GrpcStatusCode } return 0 } func (x *Eos) GetResetErrorCode() uint32 { if x, ok := x.GetEnd().(*Eos_ResetErrorCode); ok { return x.ResetErrorCode } return 0 } type isEos_End interface { isEos_End() } type Eos_GrpcStatusCode struct { GrpcStatusCode uint32 `protobuf:"varint,1,opt,name=grpc_status_code,json=grpcStatusCode,proto3,oneof"` } type Eos_ResetErrorCode struct { ResetErrorCode uint32 `protobuf:"varint,2,opt,name=reset_error_code,json=resetErrorCode,proto3,oneof"` } func (*Eos_GrpcStatusCode) isEos_End() {} func (*Eos_ResetErrorCode) isEos_End() {} // This is used only by the tap APIServer. type TapEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Source *TcpAddress `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` SourceMeta *TapEvent_EndpointMeta `protobuf:"bytes,5,opt,name=source_meta,json=sourceMeta,proto3" json:"source_meta,omitempty"` Destination *TcpAddress `protobuf:"bytes,2,opt,name=destination,proto3" json:"destination,omitempty"` DestinationMeta *TapEvent_EndpointMeta `protobuf:"bytes,4,opt,name=destination_meta,json=destinationMeta,proto3" json:"destination_meta,omitempty"` RouteMeta *TapEvent_RouteMeta `protobuf:"bytes,7,opt,name=route_meta,json=routeMeta,proto3" json:"route_meta,omitempty"` ProxyDirection TapEvent_ProxyDirection `protobuf:"varint,6,opt,name=proxy_direction,json=proxyDirection,proto3,enum=linkerd2.public.TapEvent_ProxyDirection" json:"proxy_direction,omitempty"` // Types that are assignable to Event: // *TapEvent_Http_ Event isTapEvent_Event `protobuf_oneof:"event"` } func (x *TapEvent) Reset() { *x = TapEvent{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TapEvent) String() string { return protoimpl.X.MessageStringOf(x) } func (*TapEvent) ProtoMessage() {} func (x *TapEvent) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[17] 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 TapEvent.ProtoReflect.Descriptor instead. func (*TapEvent) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{17} } func (x *TapEvent) GetSource() *TcpAddress { if x != nil { return x.Source } return nil } func (x *TapEvent) GetSourceMeta() *TapEvent_EndpointMeta { if x != nil { return x.SourceMeta } return nil } func (x *TapEvent) GetDestination() *TcpAddress { if x != nil { return x.Destination } return nil } func (x *TapEvent) GetDestinationMeta() *TapEvent_EndpointMeta { if x != nil { return x.DestinationMeta } return nil } func (x *TapEvent) GetRouteMeta() *TapEvent_RouteMeta { if x != nil { return x.RouteMeta } return nil } func (x *TapEvent) GetProxyDirection() TapEvent_ProxyDirection { if x != nil { return x.ProxyDirection } return TapEvent_UNKNOWN } func (m *TapEvent) GetEvent() isTapEvent_Event { if m != nil { return m.Event } return nil } func (x *TapEvent) GetHttp() *TapEvent_Http { if x, ok := x.GetEvent().(*TapEvent_Http_); ok { return x.Http } return nil } type isTapEvent_Event interface { isTapEvent_Event() } type TapEvent_Http_ struct { Http *TapEvent_Http `protobuf:"bytes,3,opt,name=http,proto3,oneof"` } func (*TapEvent_Http_) isTapEvent_Event() {} type ApiError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Error string `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` } func (x *ApiError) Reset() { *x = ApiError{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ApiError) String() string { return protoimpl.X.MessageStringOf(x) } func (*ApiError) ProtoMessage() {} func (x *ApiError) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[18] 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 ApiError.ProtoReflect.Descriptor instead. func (*ApiError) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{18} } func (x *ApiError) GetError() string { if x != nil { return x.Error } return "" } type PodErrors struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Errors []*PodErrors_PodError `protobuf:"bytes,1,rep,name=errors,proto3" json:"errors,omitempty"` } func (x *PodErrors) Reset() { *x = PodErrors{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PodErrors) String() string { return protoimpl.X.MessageStringOf(x) } func (*PodErrors) ProtoMessage() {} func (x *PodErrors) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[19] 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 PodErrors.ProtoReflect.Descriptor instead. func (*PodErrors) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{19} } func (x *PodErrors) GetErrors() []*PodErrors_PodError { if x != nil { return x.Errors } return nil } type Resource struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The namespace the resource is in. // // If empty, indicates all namespaces should be considered. Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` // The type of resource. // // This can be: // - "all" -- includes all Kubernetes resource types only // - "authority" -- a special resource type derived from request `:authority` values // - Otherwise, the resource type may be any Kubernetes resource (e.g. "namespace", "deployment"). Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` // An optional resource name. Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` } func (x *Resource) Reset() { *x = Resource{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Resource) String() string { return protoimpl.X.MessageStringOf(x) } func (*Resource) ProtoMessage() {} func (x *Resource) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[20] 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 Resource.ProtoReflect.Descriptor instead. func (*Resource) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{20} } func (x *Resource) GetNamespace() string { if x != nil { return x.Namespace } return "" } func (x *Resource) GetType() string { if x != nil { return x.Type } return "" } func (x *Resource) GetName() string { if x != nil { return x.Name } return "" } type ResourceSelection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Identifies a Kubernetes resource. Resource *Resource `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"` // A string-formatted Kubernetes label selector as passed to `kubectl get // --selector`. // // XXX in the future this may be superseded by a data structure that more // richly describes a parsed label selector. LabelSelector string `protobuf:"bytes,2,opt,name=label_selector,json=labelSelector,proto3" json:"label_selector,omitempty"` } func (x *ResourceSelection) Reset() { *x = ResourceSelection{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ResourceSelection) String() string { return protoimpl.X.MessageStringOf(x) } func (*ResourceSelection) ProtoMessage() {} func (x *ResourceSelection) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[21] 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 ResourceSelection.ProtoReflect.Descriptor instead. func (*ResourceSelection) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{21} } func (x *ResourceSelection) GetResource() *Resource { if x != nil { return x.Resource } return nil } func (x *ResourceSelection) GetLabelSelector() string { if x != nil { return x.LabelSelector } return "" } type ResourceError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Resource *Resource `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"` Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` } func (x *ResourceError) Reset() { *x = ResourceError{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ResourceError) String() string { return protoimpl.X.MessageStringOf(x) } func (*ResourceError) ProtoMessage() {} func (x *ResourceError) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[22] 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 ResourceError.ProtoReflect.Descriptor instead. func (*ResourceError) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{22} } func (x *ResourceError) GetResource() *Resource { if x != nil { return x.Resource } return nil } func (x *ResourceError) GetError() string { if x != nil { return x.Error } return "" } type StatSummaryRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Selector *ResourceSelection `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"` TimeWindow string `protobuf:"bytes,2,opt,name=time_window,json=timeWindow,proto3" json:"time_window,omitempty"` // Types that are assignable to Outbound: // *StatSummaryRequest_None // *StatSummaryRequest_ToResource // *StatSummaryRequest_FromResource Outbound isStatSummaryRequest_Outbound `protobuf_oneof:"outbound"` SkipStats bool `protobuf:"varint,6,opt,name=skip_stats,json=skipStats,proto3" json:"skip_stats,omitempty"` // true if we want to skip stats from Prometheus TcpStats bool `protobuf:"varint,7,opt,name=tcp_stats,json=tcpStats,proto3" json:"tcp_stats,omitempty"` } func (x *StatSummaryRequest) Reset() { *x = StatSummaryRequest{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StatSummaryRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*StatSummaryRequest) ProtoMessage() {} func (x *StatSummaryRequest) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[23] 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 StatSummaryRequest.ProtoReflect.Descriptor instead. func (*StatSummaryRequest) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{23} } func (x *StatSummaryRequest) GetSelector() *ResourceSelection { if x != nil { return x.Selector } return nil } func (x *StatSummaryRequest) GetTimeWindow() string { if x != nil { return x.TimeWindow } return "" } func (m *StatSummaryRequest) GetOutbound() isStatSummaryRequest_Outbound { if m != nil { return m.Outbound } return nil } func (x *StatSummaryRequest) GetNone() *Empty { if x, ok := x.GetOutbound().(*StatSummaryRequest_None); ok { return x.None } return nil } func (x *StatSummaryRequest) GetToResource() *Resource { if x, ok := x.GetOutbound().(*StatSummaryRequest_ToResource); ok { return x.ToResource } return nil } func (x *StatSummaryRequest) GetFromResource() *Resource { if x, ok := x.GetOutbound().(*StatSummaryRequest_FromResource); ok { return x.FromResource } return nil } func (x *StatSummaryRequest) GetSkipStats() bool { if x != nil { return x.SkipStats } return false } func (x *StatSummaryRequest) GetTcpStats() bool { if x != nil { return x.TcpStats } return false } type isStatSummaryRequest_Outbound interface { isStatSummaryRequest_Outbound() } type StatSummaryRequest_None struct { None *Empty `protobuf:"bytes,3,opt,name=none,proto3,oneof"` } type StatSummaryRequest_ToResource struct { ToResource *Resource `protobuf:"bytes,4,opt,name=to_resource,json=toResource,proto3,oneof"` } type StatSummaryRequest_FromResource struct { FromResource *Resource `protobuf:"bytes,5,opt,name=from_resource,json=fromResource,proto3,oneof"` } func (*StatSummaryRequest_None) isStatSummaryRequest_Outbound() {} func (*StatSummaryRequest_ToResource) isStatSummaryRequest_Outbound() {} func (*StatSummaryRequest_FromResource) isStatSummaryRequest_Outbound() {} type StatSummaryResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Response: // *StatSummaryResponse_Ok_ // *StatSummaryResponse_Error Response isStatSummaryResponse_Response `protobuf_oneof:"response"` } func (x *StatSummaryResponse) Reset() { *x = StatSummaryResponse{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StatSummaryResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*StatSummaryResponse) ProtoMessage() {} func (x *StatSummaryResponse) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[24] 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 StatSummaryResponse.ProtoReflect.Descriptor instead. func (*StatSummaryResponse) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{24} } func (m *StatSummaryResponse) GetResponse() isStatSummaryResponse_Response { if m != nil { return m.Response } return nil } func (x *StatSummaryResponse) GetOk() *StatSummaryResponse_Ok { if x, ok := x.GetResponse().(*StatSummaryResponse_Ok_); ok { return x.Ok } return nil } func (x *StatSummaryResponse) GetError() *ResourceError { if x, ok := x.GetResponse().(*StatSummaryResponse_Error); ok { return x.Error } return nil } type isStatSummaryResponse_Response interface { isStatSummaryResponse_Response() } type StatSummaryResponse_Ok_ struct { Ok *StatSummaryResponse_Ok `protobuf:"bytes,1,opt,name=ok,proto3,oneof"` } type StatSummaryResponse_Error struct { Error *ResourceError `protobuf:"bytes,2,opt,name=error,proto3,oneof"` } func (*StatSummaryResponse_Ok_) isStatSummaryResponse_Response() {} func (*StatSummaryResponse_Error) isStatSummaryResponse_Response() {} type BasicStats struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SuccessCount uint64 `protobuf:"varint,1,opt,name=success_count,json=successCount,proto3" json:"success_count,omitempty"` FailureCount uint64 `protobuf:"varint,2,opt,name=failure_count,json=failureCount,proto3" json:"failure_count,omitempty"` LatencyMsP50 uint64 `protobuf:"varint,3,opt,name=latency_ms_p50,json=latencyMsP50,proto3" json:"latency_ms_p50,omitempty"` LatencyMsP95 uint64 `protobuf:"varint,4,opt,name=latency_ms_p95,json=latencyMsP95,proto3" json:"latency_ms_p95,omitempty"` LatencyMsP99 uint64 `protobuf:"varint,5,opt,name=latency_ms_p99,json=latencyMsP99,proto3" json:"latency_ms_p99,omitempty"` ActualSuccessCount uint64 `protobuf:"varint,6,opt,name=actual_success_count,json=actualSuccessCount,proto3" json:"actual_success_count,omitempty"` ActualFailureCount uint64 `protobuf:"varint,7,opt,name=actual_failure_count,json=actualFailureCount,proto3" json:"actual_failure_count,omitempty"` } func (x *BasicStats) Reset() { *x = BasicStats{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BasicStats) String() string { return protoimpl.X.MessageStringOf(x) } func (*BasicStats) ProtoMessage() {} func (x *BasicStats) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[25] 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 BasicStats.ProtoReflect.Descriptor instead. func (*BasicStats) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{25} } func (x *BasicStats) GetSuccessCount() uint64 { if x != nil { return x.SuccessCount } return 0 } func (x *BasicStats) GetFailureCount() uint64 { if x != nil { return x.FailureCount } return 0 } func (x *BasicStats) GetLatencyMsP50() uint64 { if x != nil { return x.LatencyMsP50 } return 0 } func (x *BasicStats) GetLatencyMsP95() uint64 { if x != nil { return x.LatencyMsP95 } return 0 } func (x *BasicStats) GetLatencyMsP99() uint64 { if x != nil { return x.LatencyMsP99 } return 0 } func (x *BasicStats) GetActualSuccessCount() uint64 { if x != nil { return x.ActualSuccessCount } return 0 } func (x *BasicStats) GetActualFailureCount() uint64 { if x != nil { return x.ActualFailureCount } return 0 } type TcpStats struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // number of currently open connections OpenConnections uint64 `protobuf:"varint,1,opt,name=open_connections,json=openConnections,proto3" json:"open_connections,omitempty"` // total count of bytes read from peers ReadBytesTotal uint64 `protobuf:"varint,2,opt,name=read_bytes_total,json=readBytesTotal,proto3" json:"read_bytes_total,omitempty"` // total count of bytes written to peers WriteBytesTotal uint64 `protobuf:"varint,3,opt,name=write_bytes_total,json=writeBytesTotal,proto3" json:"write_bytes_total,omitempty"` } func (x *TcpStats) Reset() { *x = TcpStats{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TcpStats) String() string { return protoimpl.X.MessageStringOf(x) } func (*TcpStats) ProtoMessage() {} func (x *TcpStats) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[26] 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 TcpStats.ProtoReflect.Descriptor instead. func (*TcpStats) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{26} } func (x *TcpStats) GetOpenConnections() uint64 { if x != nil { return x.OpenConnections } return 0 } func (x *TcpStats) GetReadBytesTotal() uint64 { if x != nil { return x.ReadBytesTotal } return 0 } func (x *TcpStats) GetWriteBytesTotal() uint64 { if x != nil { return x.WriteBytesTotal } return 0 } type TrafficSplitStats struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Apex string `protobuf:"bytes,2,opt,name=apex,proto3" json:"apex,omitempty"` Leaf string `protobuf:"bytes,3,opt,name=leaf,proto3" json:"leaf,omitempty"` Weight string `protobuf:"bytes,4,opt,name=weight,proto3" json:"weight,omitempty"` } func (x *TrafficSplitStats) Reset() { *x = TrafficSplitStats{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TrafficSplitStats) String() string { return protoimpl.X.MessageStringOf(x) } func (*TrafficSplitStats) ProtoMessage() {} func (x *TrafficSplitStats) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[27] 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 TrafficSplitStats.ProtoReflect.Descriptor instead. func (*TrafficSplitStats) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{27} } func (x *TrafficSplitStats) GetApex() string { if x != nil { return x.Apex } return "" } func (x *TrafficSplitStats) GetLeaf() string { if x != nil { return x.Leaf } return "" } func (x *TrafficSplitStats) GetWeight() string { if x != nil { return x.Weight } return "" } type StatTable struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Table: // *StatTable_PodGroup_ Table isStatTable_Table `protobuf_oneof:"table"` } func (x *StatTable) Reset() { *x = StatTable{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StatTable) String() string { return protoimpl.X.MessageStringOf(x) } func (*StatTable) ProtoMessage() {} func (x *StatTable) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[28] 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 StatTable.ProtoReflect.Descriptor instead. func (*StatTable) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{28} } func (m *StatTable) GetTable() isStatTable_Table { if m != nil { return m.Table } return nil } func (x *StatTable) GetPodGroup() *StatTable_PodGroup { if x, ok := x.GetTable().(*StatTable_PodGroup_); ok { return x.PodGroup } return nil } type isStatTable_Table interface { isStatTable_Table() } type StatTable_PodGroup_ struct { PodGroup *StatTable_PodGroup `protobuf:"bytes,1,opt,name=pod_group,json=podGroup,proto3,oneof"` } func (*StatTable_PodGroup_) isStatTable_Table() {} type EdgesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Selector *ResourceSelection `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"` } func (x *EdgesRequest) Reset() { *x = EdgesRequest{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EdgesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*EdgesRequest) ProtoMessage() {} func (x *EdgesRequest) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[29] 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 EdgesRequest.ProtoReflect.Descriptor instead. func (*EdgesRequest) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{29} } func (x *EdgesRequest) GetSelector() *ResourceSelection { if x != nil { return x.Selector } return nil } type EdgesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Response: // *EdgesResponse_Ok_ // *EdgesResponse_Error Response isEdgesResponse_Response `protobuf_oneof:"response"` } func (x *EdgesResponse) Reset() { *x = EdgesResponse{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EdgesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*EdgesResponse) ProtoMessage() {} func (x *EdgesResponse) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[30] 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 EdgesResponse.ProtoReflect.Descriptor instead. func (*EdgesResponse) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{30} } func (m *EdgesResponse) GetResponse() isEdgesResponse_Response { if m != nil { return m.Response } return nil } func (x *EdgesResponse) GetOk() *EdgesResponse_Ok { if x, ok := x.GetResponse().(*EdgesResponse_Ok_); ok { return x.Ok } return nil } func (x *EdgesResponse) GetError() *ResourceError { if x, ok := x.GetResponse().(*EdgesResponse_Error); ok { return x.Error } return nil } type isEdgesResponse_Response interface { isEdgesResponse_Response() } type EdgesResponse_Ok_ struct { Ok *EdgesResponse_Ok `protobuf:"bytes,1,opt,name=ok,proto3,oneof"` } type EdgesResponse_Error struct { Error *ResourceError `protobuf:"bytes,2,opt,name=error,proto3,oneof"` } func (*EdgesResponse_Ok_) isEdgesResponse_Response() {} func (*EdgesResponse_Error) isEdgesResponse_Response() {} type Edge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Src *Resource `protobuf:"bytes,1,opt,name=src,proto3" json:"src,omitempty"` Dst *Resource `protobuf:"bytes,2,opt,name=dst,proto3" json:"dst,omitempty"` ClientId string `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` ServerId string `protobuf:"bytes,4,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"` NoIdentityMsg string `protobuf:"bytes,5,opt,name=no_identity_msg,json=noIdentityMsg,proto3" json:"no_identity_msg,omitempty"` } func (x *Edge) Reset() { *x = Edge{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Edge) String() string { return protoimpl.X.MessageStringOf(x) } func (*Edge) ProtoMessage() {} func (x *Edge) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[31] 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 Edge.ProtoReflect.Descriptor instead. func (*Edge) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{31} } func (x *Edge) GetSrc() *Resource { if x != nil { return x.Src } return nil } func (x *Edge) GetDst() *Resource { if x != nil { return x.Dst } return nil } func (x *Edge) GetClientId() string { if x != nil { return x.ClientId } return "" } func (x *Edge) GetServerId() string { if x != nil { return x.ServerId } return "" } func (x *Edge) GetNoIdentityMsg() string { if x != nil { return x.NoIdentityMsg } return "" } type TopRoutesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Selector *ResourceSelection `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"` TimeWindow string `protobuf:"bytes,2,opt,name=time_window,json=timeWindow,proto3" json:"time_window,omitempty"` // Types that are assignable to Outbound: // *TopRoutesRequest_None // *TopRoutesRequest_ToResource Outbound isTopRoutesRequest_Outbound `protobuf_oneof:"outbound"` } func (x *TopRoutesRequest) Reset() { *x = TopRoutesRequest{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TopRoutesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*TopRoutesRequest) ProtoMessage() {} func (x *TopRoutesRequest) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[32] 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 TopRoutesRequest.ProtoReflect.Descriptor instead. func (*TopRoutesRequest) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{32} } func (x *TopRoutesRequest) GetSelector() *ResourceSelection { if x != nil { return x.Selector } return nil } func (x *TopRoutesRequest) GetTimeWindow() string { if x != nil { return x.TimeWindow } return "" } func (m *TopRoutesRequest) GetOutbound() isTopRoutesRequest_Outbound { if m != nil { return m.Outbound } return nil } func (x *TopRoutesRequest) GetNone() *Empty { if x, ok := x.GetOutbound().(*TopRoutesRequest_None); ok { return x.None } return nil } func (x *TopRoutesRequest) GetToResource() *Resource { if x, ok := x.GetOutbound().(*TopRoutesRequest_ToResource); ok { return x.ToResource } return nil } type isTopRoutesRequest_Outbound interface { isTopRoutesRequest_Outbound() } type TopRoutesRequest_None struct { None *Empty `protobuf:"bytes,3,opt,name=none,proto3,oneof"` } type TopRoutesRequest_ToResource struct { ToResource *Resource `protobuf:"bytes,7,opt,name=to_resource,json=toResource,proto3,oneof"` } func (*TopRoutesRequest_None) isTopRoutesRequest_Outbound() {} func (*TopRoutesRequest_ToResource) isTopRoutesRequest_Outbound() {} type TopRoutesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Response: // *TopRoutesResponse_Error // *TopRoutesResponse_Ok_ Response isTopRoutesResponse_Response `protobuf_oneof:"response"` } func (x *TopRoutesResponse) Reset() { *x = TopRoutesResponse{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TopRoutesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*TopRoutesResponse) ProtoMessage() {} func (x *TopRoutesResponse) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[33] 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 TopRoutesResponse.ProtoReflect.Descriptor instead. func (*TopRoutesResponse) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{33} } func (m *TopRoutesResponse) GetResponse() isTopRoutesResponse_Response { if m != nil { return m.Response } return nil } func (x *TopRoutesResponse) GetError() *ResourceError { if x, ok := x.GetResponse().(*TopRoutesResponse_Error); ok { return x.Error } return nil } func (x *TopRoutesResponse) GetOk() *TopRoutesResponse_Ok { if x, ok := x.GetResponse().(*TopRoutesResponse_Ok_); ok { return x.Ok } return nil } type isTopRoutesResponse_Response interface { isTopRoutesResponse_Response() } type TopRoutesResponse_Error struct { Error *ResourceError `protobuf:"bytes,2,opt,name=error,proto3,oneof"` } type TopRoutesResponse_Ok_ struct { Ok *TopRoutesResponse_Ok `protobuf:"bytes,3,opt,name=ok,proto3,oneof"` } func (*TopRoutesResponse_Error) isTopRoutesResponse_Response() {} func (*TopRoutesResponse_Ok_) isTopRoutesResponse_Response() {} type RouteTable struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Rows []*RouteTable_Row `protobuf:"bytes,1,rep,name=rows,proto3" json:"rows,omitempty"` Resource string `protobuf:"bytes,2,opt,name=resource,proto3" json:"resource,omitempty"` } func (x *RouteTable) Reset() { *x = RouteTable{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RouteTable) String() string { return protoimpl.X.MessageStringOf(x) } func (*RouteTable) ProtoMessage() {} func (x *RouteTable) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[34] 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 RouteTable.ProtoReflect.Descriptor instead. func (*RouteTable) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{34} } func (x *RouteTable) GetRows() []*RouteTable_Row { if x != nil { return x.Rows } return nil } func (x *RouteTable) GetResource() string { if x != nil { return x.Resource } return "" } type GatewaysTable struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Rows []*GatewaysTable_Row `protobuf:"bytes,1,rep,name=rows,proto3" json:"rows,omitempty"` } func (x *GatewaysTable) Reset() { *x = GatewaysTable{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GatewaysTable) String() string { return protoimpl.X.MessageStringOf(x) } func (*GatewaysTable) ProtoMessage() {} func (x *GatewaysTable) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[35] 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 GatewaysTable.ProtoReflect.Descriptor instead. func (*GatewaysTable) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{35} } func (x *GatewaysTable) GetRows() []*GatewaysTable_Row { if x != nil { return x.Rows } return nil } type GatewaysRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RemoteClusterName string `protobuf:"bytes,1,opt,name=remote_cluster_name,json=remoteClusterName,proto3" json:"remote_cluster_name,omitempty"` GatewayNamespace string `protobuf:"bytes,2,opt,name=gateway_namespace,json=gatewayNamespace,proto3" json:"gateway_namespace,omitempty"` TimeWindow string `protobuf:"bytes,3,opt,name=time_window,json=timeWindow,proto3" json:"time_window,omitempty"` } func (x *GatewaysRequest) Reset() { *x = GatewaysRequest{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GatewaysRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GatewaysRequest) ProtoMessage() {} func (x *GatewaysRequest) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[36] 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 GatewaysRequest.ProtoReflect.Descriptor instead. func (*GatewaysRequest) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{36} } func (x *GatewaysRequest) GetRemoteClusterName() string { if x != nil { return x.RemoteClusterName } return "" } func (x *GatewaysRequest) GetGatewayNamespace() string { if x != nil { return x.GatewayNamespace } return "" } func (x *GatewaysRequest) GetTimeWindow() string { if x != nil { return x.TimeWindow } return "" } type GatewaysResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Response: // *GatewaysResponse_Ok_ // *GatewaysResponse_Error Response isGatewaysResponse_Response `protobuf_oneof:"response"` } func (x *GatewaysResponse) Reset() { *x = GatewaysResponse{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GatewaysResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GatewaysResponse) ProtoMessage() {} func (x *GatewaysResponse) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GatewaysResponse.ProtoReflect.Descriptor instead. func (*GatewaysResponse) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{37} } func (m *GatewaysResponse) GetResponse() isGatewaysResponse_Response { if m != nil { return m.Response } return nil } func (x *GatewaysResponse) GetOk() *GatewaysResponse_Ok { if x, ok := x.GetResponse().(*GatewaysResponse_Ok_); ok { return x.Ok } return nil } func (x *GatewaysResponse) GetError() *ResourceError { if x, ok := x.GetResponse().(*GatewaysResponse_Error); ok { return x.Error } return nil } type isGatewaysResponse_Response interface { isGatewaysResponse_Response() } type GatewaysResponse_Ok_ struct { Ok *GatewaysResponse_Ok `protobuf:"bytes,1,opt,name=ok,proto3,oneof"` } type GatewaysResponse_Error struct { Error *ResourceError `protobuf:"bytes,2,opt,name=error,proto3,oneof"` } func (*GatewaysResponse_Ok_) isGatewaysResponse_Response() {} func (*GatewaysResponse_Error) isGatewaysResponse_Response() {} type TapByResourceRequest_Match struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Match: // *TapByResourceRequest_Match_All // *TapByResourceRequest_Match_Any // *TapByResourceRequest_Match_Not // *TapByResourceRequest_Match_Destinations // *TapByResourceRequest_Match_Http_ Match isTapByResourceRequest_Match_Match `protobuf_oneof:"match"` } func (x *TapByResourceRequest_Match) Reset() { *x = TapByResourceRequest_Match{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TapByResourceRequest_Match) String() string { return protoimpl.X.MessageStringOf(x) } func (*TapByResourceRequest_Match) ProtoMessage() {} func (x *TapByResourceRequest_Match) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[38] 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 TapByResourceRequest_Match.ProtoReflect.Descriptor instead. func (*TapByResourceRequest_Match) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{9, 0} } func (m *TapByResourceRequest_Match) GetMatch() isTapByResourceRequest_Match_Match { if m != nil { return m.Match } return nil } func (x *TapByResourceRequest_Match) GetAll() *TapByResourceRequest_Match_Seq { if x, ok := x.GetMatch().(*TapByResourceRequest_Match_All); ok { return x.All } return nil } func (x *TapByResourceRequest_Match) GetAny() *TapByResourceRequest_Match_Seq { if x, ok := x.GetMatch().(*TapByResourceRequest_Match_Any); ok { return x.Any } return nil } func (x *TapByResourceRequest_Match) GetNot() *TapByResourceRequest_Match { if x, ok := x.GetMatch().(*TapByResourceRequest_Match_Not); ok { return x.Not } return nil } func (x *TapByResourceRequest_Match) GetDestinations() *ResourceSelection { if x, ok := x.GetMatch().(*TapByResourceRequest_Match_Destinations); ok { return x.Destinations } return nil } func (x *TapByResourceRequest_Match) GetHttp() *TapByResourceRequest_Match_Http { if x, ok := x.GetMatch().(*TapByResourceRequest_Match_Http_); ok { return x.Http } return nil } type isTapByResourceRequest_Match_Match interface { isTapByResourceRequest_Match_Match() } type TapByResourceRequest_Match_All struct { // If empty, matches all messages. All *TapByResourceRequest_Match_Seq `protobuf:"bytes,1,opt,name=all,proto3,oneof"` } type TapByResourceRequest_Match_Any struct { // If empty, matches no messages. Any *TapByResourceRequest_Match_Seq `protobuf:"bytes,2,opt,name=any,proto3,oneof"` } type TapByResourceRequest_Match_Not struct { // Inverts the inner match. Not *TapByResourceRequest_Match `protobuf:"bytes,3,opt,name=not,proto3,oneof"` } type TapByResourceRequest_Match_Destinations struct { // Matches events being sent to any of the selected destinations. Destinations *ResourceSelection `protobuf:"bytes,4,opt,name=destinations,proto3,oneof"` } type TapByResourceRequest_Match_Http_ struct { // Matches HTTP requests by their metadata. Http *TapByResourceRequest_Match_Http `protobuf:"bytes,5,opt,name=http,proto3,oneof"` } func (*TapByResourceRequest_Match_All) isTapByResourceRequest_Match_Match() {} func (*TapByResourceRequest_Match_Any) isTapByResourceRequest_Match_Match() {} func (*TapByResourceRequest_Match_Not) isTapByResourceRequest_Match_Match() {} func (*TapByResourceRequest_Match_Destinations) isTapByResourceRequest_Match_Match() {} func (*TapByResourceRequest_Match_Http_) isTapByResourceRequest_Match_Match() {} type TapByResourceRequest_Extract struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Extract: // *TapByResourceRequest_Extract_Http_ Extract isTapByResourceRequest_Extract_Extract `protobuf_oneof:"extract"` } func (x *TapByResourceRequest_Extract) Reset() { *x = TapByResourceRequest_Extract{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TapByResourceRequest_Extract) String() string { return protoimpl.X.MessageStringOf(x) } func (*TapByResourceRequest_Extract) ProtoMessage() {} func (x *TapByResourceRequest_Extract) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[39] 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 TapByResourceRequest_Extract.ProtoReflect.Descriptor instead. func (*TapByResourceRequest_Extract) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{9, 1} } func (m *TapByResourceRequest_Extract) GetExtract() isTapByResourceRequest_Extract_Extract { if m != nil { return m.Extract } return nil } func (x *TapByResourceRequest_Extract) GetHttp() *TapByResourceRequest_Extract_Http { if x, ok := x.GetExtract().(*TapByResourceRequest_Extract_Http_); ok { return x.Http } return nil } type isTapByResourceRequest_Extract_Extract interface { isTapByResourceRequest_Extract_Extract() } type TapByResourceRequest_Extract_Http_ struct { Http *TapByResourceRequest_Extract_Http `protobuf:"bytes,1,opt,name=http,proto3,oneof"` } func (*TapByResourceRequest_Extract_Http_) isTapByResourceRequest_Extract_Extract() {} type TapByResourceRequest_Match_Seq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Matches []*TapByResourceRequest_Match `protobuf:"bytes,1,rep,name=matches,proto3" json:"matches,omitempty"` } func (x *TapByResourceRequest_Match_Seq) Reset() { *x = TapByResourceRequest_Match_Seq{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TapByResourceRequest_Match_Seq) String() string { return protoimpl.X.MessageStringOf(x) } func (*TapByResourceRequest_Match_Seq) ProtoMessage() {} func (x *TapByResourceRequest_Match_Seq) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[40] 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 TapByResourceRequest_Match_Seq.ProtoReflect.Descriptor instead. func (*TapByResourceRequest_Match_Seq) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{9, 0, 0} } func (x *TapByResourceRequest_Match_Seq) GetMatches() []*TapByResourceRequest_Match { if x != nil { return x.Matches } return nil } type TapByResourceRequest_Match_Http struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Match: // *TapByResourceRequest_Match_Http_Scheme // *TapByResourceRequest_Match_Http_Method // *TapByResourceRequest_Match_Http_Authority // *TapByResourceRequest_Match_Http_Path Match isTapByResourceRequest_Match_Http_Match `protobuf_oneof:"match"` } func (x *TapByResourceRequest_Match_Http) Reset() { *x = TapByResourceRequest_Match_Http{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TapByResourceRequest_Match_Http) String() string { return protoimpl.X.MessageStringOf(x) } func (*TapByResourceRequest_Match_Http) ProtoMessage() {} func (x *TapByResourceRequest_Match_Http) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[41] 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 TapByResourceRequest_Match_Http.ProtoReflect.Descriptor instead. func (*TapByResourceRequest_Match_Http) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{9, 0, 1} } func (m *TapByResourceRequest_Match_Http) GetMatch() isTapByResourceRequest_Match_Http_Match { if m != nil { return m.Match } return nil } func (x *TapByResourceRequest_Match_Http) GetScheme() string { if x, ok := x.GetMatch().(*TapByResourceRequest_Match_Http_Scheme); ok { return x.Scheme } return "" } func (x *TapByResourceRequest_Match_Http) GetMethod() string { if x, ok := x.GetMatch().(*TapByResourceRequest_Match_Http_Method); ok { return x.Method } return "" } func (x *TapByResourceRequest_Match_Http) GetAuthority() string { if x, ok := x.GetMatch().(*TapByResourceRequest_Match_Http_Authority); ok { return x.Authority } return "" } func (x *TapByResourceRequest_Match_Http) GetPath() string { if x, ok := x.GetMatch().(*TapByResourceRequest_Match_Http_Path); ok { return x.Path } return "" } type isTapByResourceRequest_Match_Http_Match interface { isTapByResourceRequest_Match_Http_Match() } type TapByResourceRequest_Match_Http_Scheme struct { Scheme string `protobuf:"bytes,1,opt,name=scheme,proto3,oneof"` } type TapByResourceRequest_Match_Http_Method struct { Method string `protobuf:"bytes,2,opt,name=method,proto3,oneof"` } type TapByResourceRequest_Match_Http_Authority struct { Authority string `protobuf:"bytes,3,opt,name=authority,proto3,oneof"` } type TapByResourceRequest_Match_Http_Path struct { Path string `protobuf:"bytes,4,opt,name=path,proto3,oneof"` } func (*TapByResourceRequest_Match_Http_Scheme) isTapByResourceRequest_Match_Http_Match() {} func (*TapByResourceRequest_Match_Http_Method) isTapByResourceRequest_Match_Http_Match() {} func (*TapByResourceRequest_Match_Http_Authority) isTapByResourceRequest_Match_Http_Match() {} func (*TapByResourceRequest_Match_Http_Path) isTapByResourceRequest_Match_Http_Match() {} type TapByResourceRequest_Extract_Http struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Extract: // *TapByResourceRequest_Extract_Http_Headers_ Extract isTapByResourceRequest_Extract_Http_Extract `protobuf_oneof:"extract"` } func (x *TapByResourceRequest_Extract_Http) Reset() { *x = TapByResourceRequest_Extract_Http{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TapByResourceRequest_Extract_Http) String() string { return protoimpl.X.MessageStringOf(x) } func (*TapByResourceRequest_Extract_Http) ProtoMessage() {} func (x *TapByResourceRequest_Extract_Http) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[42] 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 TapByResourceRequest_Extract_Http.ProtoReflect.Descriptor instead. func (*TapByResourceRequest_Extract_Http) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{9, 1, 0} } func (m *TapByResourceRequest_Extract_Http) GetExtract() isTapByResourceRequest_Extract_Http_Extract { if m != nil { return m.Extract } return nil } func (x *TapByResourceRequest_Extract_Http) GetHeaders() *TapByResourceRequest_Extract_Http_Headers { if x, ok := x.GetExtract().(*TapByResourceRequest_Extract_Http_Headers_); ok { return x.Headers } return nil } type isTapByResourceRequest_Extract_Http_Extract interface { isTapByResourceRequest_Extract_Http_Extract() } type TapByResourceRequest_Extract_Http_Headers_ struct { Headers *TapByResourceRequest_Extract_Http_Headers `protobuf:"bytes,1,opt,name=headers,proto3,oneof"` } func (*TapByResourceRequest_Extract_Http_Headers_) isTapByResourceRequest_Extract_Http_Extract() {} type TapByResourceRequest_Extract_Http_Headers struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *TapByResourceRequest_Extract_Http_Headers) Reset() { *x = TapByResourceRequest_Extract_Http_Headers{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TapByResourceRequest_Extract_Http_Headers) String() string { return protoimpl.X.MessageStringOf(x) } func (*TapByResourceRequest_Extract_Http_Headers) ProtoMessage() {} func (x *TapByResourceRequest_Extract_Http_Headers) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[43] 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 TapByResourceRequest_Extract_Http_Headers.ProtoReflect.Descriptor instead. func (*TapByResourceRequest_Extract_Http_Headers) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{9, 1, 0, 0} } type Headers_Header struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The name of a header in a request. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // The value of a header in a request. If the value consists entirely of // UTF-8 encodings, `value` will be set; otherwise a binary value is // assumed and `value_bin` will be set. // // Types that are assignable to Value: // *Headers_Header_ValueStr // *Headers_Header_ValueBin Value isHeaders_Header_Value `protobuf_oneof:"value"` } func (x *Headers_Header) Reset() { *x = Headers_Header{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Headers_Header) String() string { return protoimpl.X.MessageStringOf(x) } func (*Headers_Header) ProtoMessage() {} func (x *Headers_Header) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[44] 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 Headers_Header.ProtoReflect.Descriptor instead. func (*Headers_Header) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{12, 0} } func (x *Headers_Header) GetName() string { if x != nil { return x.Name } return "" } func (m *Headers_Header) GetValue() isHeaders_Header_Value { if m != nil { return m.Value } return nil } func (x *Headers_Header) GetValueStr() string { if x, ok := x.GetValue().(*Headers_Header_ValueStr); ok { return x.ValueStr } return "" } func (x *Headers_Header) GetValueBin() []byte { if x, ok := x.GetValue().(*Headers_Header_ValueBin); ok { return x.ValueBin } return nil } type isHeaders_Header_Value interface { isHeaders_Header_Value() } type Headers_Header_ValueStr struct { ValueStr string `protobuf:"bytes,2,opt,name=value_str,json=valueStr,proto3,oneof"` } type Headers_Header_ValueBin struct { ValueBin []byte `protobuf:"bytes,3,opt,name=value_bin,json=valueBin,proto3,oneof"` } func (*Headers_Header_ValueStr) isHeaders_Header_Value() {} func (*Headers_Header_ValueBin) isHeaders_Header_Value() {} type TapEvent_EndpointMeta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Labels map[string]string `protobuf:"bytes,1,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *TapEvent_EndpointMeta) Reset() { *x = TapEvent_EndpointMeta{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TapEvent_EndpointMeta) String() string { return protoimpl.X.MessageStringOf(x) } func (*TapEvent_EndpointMeta) ProtoMessage() {} func (x *TapEvent_EndpointMeta) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[45] 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 TapEvent_EndpointMeta.ProtoReflect.Descriptor instead. func (*TapEvent_EndpointMeta) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{17, 0} } func (x *TapEvent_EndpointMeta) GetLabels() map[string]string { if x != nil { return x.Labels } return nil } type TapEvent_RouteMeta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Labels map[string]string `protobuf:"bytes,1,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *TapEvent_RouteMeta) Reset() { *x = TapEvent_RouteMeta{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TapEvent_RouteMeta) String() string { return protoimpl.X.MessageStringOf(x) } func (*TapEvent_RouteMeta) ProtoMessage() {} func (x *TapEvent_RouteMeta) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[46] 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 TapEvent_RouteMeta.ProtoReflect.Descriptor instead. func (*TapEvent_RouteMeta) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{17, 1} } func (x *TapEvent_RouteMeta) GetLabels() map[string]string { if x != nil { return x.Labels } return nil } type TapEvent_Http struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Event: // *TapEvent_Http_RequestInit_ // *TapEvent_Http_ResponseInit_ // *TapEvent_Http_ResponseEnd_ Event isTapEvent_Http_Event `protobuf_oneof:"event"` } func (x *TapEvent_Http) Reset() { *x = TapEvent_Http{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TapEvent_Http) String() string { return protoimpl.X.MessageStringOf(x) } func (*TapEvent_Http) ProtoMessage() {} func (x *TapEvent_Http) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[47] 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 TapEvent_Http.ProtoReflect.Descriptor instead. func (*TapEvent_Http) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{17, 2} } func (m *TapEvent_Http) GetEvent() isTapEvent_Http_Event { if m != nil { return m.Event } return nil } func (x *TapEvent_Http) GetRequestInit() *TapEvent_Http_RequestInit { if x, ok := x.GetEvent().(*TapEvent_Http_RequestInit_); ok { return x.RequestInit } return nil } func (x *TapEvent_Http) GetResponseInit() *TapEvent_Http_ResponseInit { if x, ok := x.GetEvent().(*TapEvent_Http_ResponseInit_); ok { return x.ResponseInit } return nil } func (x *TapEvent_Http) GetResponseEnd() *TapEvent_Http_ResponseEnd { if x, ok := x.GetEvent().(*TapEvent_Http_ResponseEnd_); ok { return x.ResponseEnd } return nil } type isTapEvent_Http_Event interface { isTapEvent_Http_Event() } type TapEvent_Http_RequestInit_ struct { RequestInit *TapEvent_Http_RequestInit `protobuf:"bytes,1,opt,name=request_init,json=requestInit,proto3,oneof"` } type TapEvent_Http_ResponseInit_ struct { ResponseInit *TapEvent_Http_ResponseInit `protobuf:"bytes,2,opt,name=response_init,json=responseInit,proto3,oneof"` } type TapEvent_Http_ResponseEnd_ struct { ResponseEnd *TapEvent_Http_ResponseEnd `protobuf:"bytes,3,opt,name=response_end,json=responseEnd,proto3,oneof"` } func (*TapEvent_Http_RequestInit_) isTapEvent_Http_Event() {} func (*TapEvent_Http_ResponseInit_) isTapEvent_Http_Event() {} func (*TapEvent_Http_ResponseEnd_) isTapEvent_Http_Event() {} type TapEvent_Http_StreamId struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // A randomized base (stable across a process's runtime) Base uint32 `protobuf:"varint,1,opt,name=base,proto3" json:"base,omitempty"` // A stream id unique within the lifetime of `base`. Stream uint64 `protobuf:"varint,2,opt,name=stream,proto3" json:"stream,omitempty"` } func (x *TapEvent_Http_StreamId) Reset() { *x = TapEvent_Http_StreamId{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TapEvent_Http_StreamId) String() string { return protoimpl.X.MessageStringOf(x) } func (*TapEvent_Http_StreamId) ProtoMessage() {} func (x *TapEvent_Http_StreamId) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[50] 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 TapEvent_Http_StreamId.ProtoReflect.Descriptor instead. func (*TapEvent_Http_StreamId) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{17, 2, 0} } func (x *TapEvent_Http_StreamId) GetBase() uint32 { if x != nil { return x.Base } return 0 } func (x *TapEvent_Http_StreamId) GetStream() uint64 { if x != nil { return x.Stream } return 0 } type TapEvent_Http_RequestInit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id *TapEvent_Http_StreamId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Method *HttpMethod `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"` Scheme *Scheme `protobuf:"bytes,3,opt,name=scheme,proto3" json:"scheme,omitempty"` Authority string `protobuf:"bytes,4,opt,name=authority,proto3" json:"authority,omitempty"` Path string `protobuf:"bytes,5,opt,name=path,proto3" json:"path,omitempty"` Headers *Headers `protobuf:"bytes,6,opt,name=headers,proto3" json:"headers,omitempty"` } func (x *TapEvent_Http_RequestInit) Reset() { *x = TapEvent_Http_RequestInit{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TapEvent_Http_RequestInit) String() string { return protoimpl.X.MessageStringOf(x) } func (*TapEvent_Http_RequestInit) ProtoMessage() {} func (x *TapEvent_Http_RequestInit) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[51] 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 TapEvent_Http_RequestInit.ProtoReflect.Descriptor instead. func (*TapEvent_Http_RequestInit) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{17, 2, 1} } func (x *TapEvent_Http_RequestInit) GetId() *TapEvent_Http_StreamId { if x != nil { return x.Id } return nil } func (x *TapEvent_Http_RequestInit) GetMethod() *HttpMethod { if x != nil { return x.Method } return nil } func (x *TapEvent_Http_RequestInit) GetScheme() *Scheme { if x != nil { return x.Scheme } return nil } func (x *TapEvent_Http_RequestInit) GetAuthority() string { if x != nil { return x.Authority } return "" } func (x *TapEvent_Http_RequestInit) GetPath() string { if x != nil { return x.Path } return "" } func (x *TapEvent_Http_RequestInit) GetHeaders() *Headers { if x != nil { return x.Headers } return nil } type TapEvent_Http_ResponseInit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id *TapEvent_Http_StreamId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` SinceRequestInit *duration.Duration `protobuf:"bytes,2,opt,name=since_request_init,json=sinceRequestInit,proto3" json:"since_request_init,omitempty"` HttpStatus uint32 `protobuf:"varint,3,opt,name=http_status,json=httpStatus,proto3" json:"http_status,omitempty"` Headers *Headers `protobuf:"bytes,4,opt,name=headers,proto3" json:"headers,omitempty"` } func (x *TapEvent_Http_ResponseInit) Reset() { *x = TapEvent_Http_ResponseInit{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TapEvent_Http_ResponseInit) String() string { return protoimpl.X.MessageStringOf(x) } func (*TapEvent_Http_ResponseInit) ProtoMessage() {} func (x *TapEvent_Http_ResponseInit) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[52] 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 TapEvent_Http_ResponseInit.ProtoReflect.Descriptor instead. func (*TapEvent_Http_ResponseInit) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{17, 2, 2} } func (x *TapEvent_Http_ResponseInit) GetId() *TapEvent_Http_StreamId { if x != nil { return x.Id } return nil } func (x *TapEvent_Http_ResponseInit) GetSinceRequestInit() *duration.Duration { if x != nil { return x.SinceRequestInit } return nil } func (x *TapEvent_Http_ResponseInit) GetHttpStatus() uint32 { if x != nil { return x.HttpStatus } return 0 } func (x *TapEvent_Http_ResponseInit) GetHeaders() *Headers { if x != nil { return x.Headers } return nil } type TapEvent_Http_ResponseEnd struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id *TapEvent_Http_StreamId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` SinceRequestInit *duration.Duration `protobuf:"bytes,2,opt,name=since_request_init,json=sinceRequestInit,proto3" json:"since_request_init,omitempty"` SinceResponseInit *duration.Duration `protobuf:"bytes,3,opt,name=since_response_init,json=sinceResponseInit,proto3" json:"since_response_init,omitempty"` ResponseBytes uint64 `protobuf:"varint,4,opt,name=response_bytes,json=responseBytes,proto3" json:"response_bytes,omitempty"` Eos *Eos `protobuf:"bytes,5,opt,name=eos,proto3" json:"eos,omitempty"` Trailers *Headers `protobuf:"bytes,6,opt,name=trailers,proto3" json:"trailers,omitempty"` } func (x *TapEvent_Http_ResponseEnd) Reset() { *x = TapEvent_Http_ResponseEnd{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TapEvent_Http_ResponseEnd) String() string { return protoimpl.X.MessageStringOf(x) } func (*TapEvent_Http_ResponseEnd) ProtoMessage() {} func (x *TapEvent_Http_ResponseEnd) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[53] 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 TapEvent_Http_ResponseEnd.ProtoReflect.Descriptor instead. func (*TapEvent_Http_ResponseEnd) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{17, 2, 3} } func (x *TapEvent_Http_ResponseEnd) GetId() *TapEvent_Http_StreamId { if x != nil { return x.Id } return nil } func (x *TapEvent_Http_ResponseEnd) GetSinceRequestInit() *duration.Duration { if x != nil { return x.SinceRequestInit } return nil } func (x *TapEvent_Http_ResponseEnd) GetSinceResponseInit() *duration.Duration { if x != nil { return x.SinceResponseInit } return nil } func (x *TapEvent_Http_ResponseEnd) GetResponseBytes() uint64 { if x != nil { return x.ResponseBytes } return 0 } func (x *TapEvent_Http_ResponseEnd) GetEos() *Eos { if x != nil { return x.Eos } return nil } func (x *TapEvent_Http_ResponseEnd) GetTrailers() *Headers { if x != nil { return x.Trailers } return nil } type PodErrors_PodError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Error: // *PodErrors_PodError_Container Error isPodErrors_PodError_Error `protobuf_oneof:"error"` } func (x *PodErrors_PodError) Reset() { *x = PodErrors_PodError{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PodErrors_PodError) String() string { return protoimpl.X.MessageStringOf(x) } func (*PodErrors_PodError) ProtoMessage() {} func (x *PodErrors_PodError) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[54] 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 PodErrors_PodError.ProtoReflect.Descriptor instead. func (*PodErrors_PodError) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{19, 0} } func (m *PodErrors_PodError) GetError() isPodErrors_PodError_Error { if m != nil { return m.Error } return nil } func (x *PodErrors_PodError) GetContainer() *PodErrors_PodError_ContainerError { if x, ok := x.GetError().(*PodErrors_PodError_Container); ok { return x.Container } return nil } type isPodErrors_PodError_Error interface { isPodErrors_PodError_Error() } type PodErrors_PodError_Container struct { Container *PodErrors_PodError_ContainerError `protobuf:"bytes,1,opt,name=container,proto3,oneof"` } func (*PodErrors_PodError_Container) isPodErrors_PodError_Error() {} // To report init-container and container failures type PodErrors_PodError_ContainerError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` Container string `protobuf:"bytes,2,opt,name=container,proto3" json:"container,omitempty"` Image string `protobuf:"bytes,3,opt,name=image,proto3" json:"image,omitempty"` Reason string `protobuf:"bytes,4,opt,name=reason,proto3" json:"reason,omitempty"` } func (x *PodErrors_PodError_ContainerError) Reset() { *x = PodErrors_PodError_ContainerError{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PodErrors_PodError_ContainerError) String() string { return protoimpl.X.MessageStringOf(x) } func (*PodErrors_PodError_ContainerError) ProtoMessage() {} func (x *PodErrors_PodError_ContainerError) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[55] 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 PodErrors_PodError_ContainerError.ProtoReflect.Descriptor instead. func (*PodErrors_PodError_ContainerError) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{19, 0, 0} } func (x *PodErrors_PodError_ContainerError) GetMessage() string { if x != nil { return x.Message } return "" } func (x *PodErrors_PodError_ContainerError) GetContainer() string { if x != nil { return x.Container } return "" } func (x *PodErrors_PodError_ContainerError) GetImage() string { if x != nil { return x.Image } return "" } func (x *PodErrors_PodError_ContainerError) GetReason() string { if x != nil { return x.Reason } return "" } type StatSummaryResponse_Ok struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields StatTables []*StatTable `protobuf:"bytes,1,rep,name=stat_tables,json=statTables,proto3" json:"stat_tables,omitempty"` } func (x *StatSummaryResponse_Ok) Reset() { *x = StatSummaryResponse_Ok{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StatSummaryResponse_Ok) String() string { return protoimpl.X.MessageStringOf(x) } func (*StatSummaryResponse_Ok) ProtoMessage() {} func (x *StatSummaryResponse_Ok) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[56] 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 StatSummaryResponse_Ok.ProtoReflect.Descriptor instead. func (*StatSummaryResponse_Ok) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{24, 0} } func (x *StatSummaryResponse_Ok) GetStatTables() []*StatTable { if x != nil { return x.StatTables } return nil } type StatTable_PodGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Rows []*StatTable_PodGroup_Row `protobuf:"bytes,1,rep,name=rows,proto3" json:"rows,omitempty"` } func (x *StatTable_PodGroup) Reset() { *x = StatTable_PodGroup{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StatTable_PodGroup) String() string { return protoimpl.X.MessageStringOf(x) } func (*StatTable_PodGroup) ProtoMessage() {} func (x *StatTable_PodGroup) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[57] 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 StatTable_PodGroup.ProtoReflect.Descriptor instead. func (*StatTable_PodGroup) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{28, 0} } func (x *StatTable_PodGroup) GetRows() []*StatTable_PodGroup_Row { if x != nil { return x.Rows } return nil } type StatTable_PodGroup_Row struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Resource *Resource `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"` TimeWindow string `protobuf:"bytes,2,opt,name=time_window,json=timeWindow,proto3" json:"time_window,omitempty"` // pod status on Kubernetes Status string `protobuf:"bytes,9,opt,name=status,proto3" json:"status,omitempty"` // number of pending or running pods in this resource that have linkerd injected MeshedPodCount uint64 `protobuf:"varint,3,opt,name=meshed_pod_count,json=meshedPodCount,proto3" json:"meshed_pod_count,omitempty"` // number of pending or running pods in this resource RunningPodCount uint64 `protobuf:"varint,4,opt,name=running_pod_count,json=runningPodCount,proto3" json:"running_pod_count,omitempty"` // number of pods in this resource that have Phase PodFailed FailedPodCount uint64 `protobuf:"varint,6,opt,name=failed_pod_count,json=failedPodCount,proto3" json:"failed_pod_count,omitempty"` Stats *BasicStats `protobuf:"bytes,5,opt,name=stats,proto3" json:"stats,omitempty"` TcpStats *TcpStats `protobuf:"bytes,8,opt,name=tcp_stats,json=tcpStats,proto3" json:"tcp_stats,omitempty"` TsStats *TrafficSplitStats `protobuf:"bytes,10,opt,name=ts_stats,json=tsStats,proto3" json:"ts_stats,omitempty"` // Stores a set of errors for each pod name. If a pod has no errors, it may be omitted. ErrorsByPod map[string]*PodErrors `protobuf:"bytes,7,rep,name=errors_by_pod,json=errorsByPod,proto3" json:"errors_by_pod,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *StatTable_PodGroup_Row) Reset() { *x = StatTable_PodGroup_Row{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StatTable_PodGroup_Row) String() string { return protoimpl.X.MessageStringOf(x) } func (*StatTable_PodGroup_Row) ProtoMessage() {} func (x *StatTable_PodGroup_Row) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[58] 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 StatTable_PodGroup_Row.ProtoReflect.Descriptor instead. func (*StatTable_PodGroup_Row) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{28, 0, 0} } func (x *StatTable_PodGroup_Row) GetResource() *Resource { if x != nil { return x.Resource } return nil } func (x *StatTable_PodGroup_Row) GetTimeWindow() string { if x != nil { return x.TimeWindow } return "" } func (x *StatTable_PodGroup_Row) GetStatus() string { if x != nil { return x.Status } return "" } func (x *StatTable_PodGroup_Row) GetMeshedPodCount() uint64 { if x != nil { return x.MeshedPodCount } return 0 } func (x *StatTable_PodGroup_Row) GetRunningPodCount() uint64 { if x != nil { return x.RunningPodCount } return 0 } func (x *StatTable_PodGroup_Row) GetFailedPodCount() uint64 { if x != nil { return x.FailedPodCount } return 0 } func (x *StatTable_PodGroup_Row) GetStats() *BasicStats { if x != nil { return x.Stats } return nil } func (x *StatTable_PodGroup_Row) GetTcpStats() *TcpStats { if x != nil { return x.TcpStats } return nil } func (x *StatTable_PodGroup_Row) GetTsStats() *TrafficSplitStats { if x != nil { return x.TsStats } return nil } func (x *StatTable_PodGroup_Row) GetErrorsByPod() map[string]*PodErrors { if x != nil { return x.ErrorsByPod } return nil } type EdgesResponse_Ok struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Edges []*Edge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` } func (x *EdgesResponse_Ok) Reset() { *x = EdgesResponse_Ok{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EdgesResponse_Ok) String() string { return protoimpl.X.MessageStringOf(x) } func (*EdgesResponse_Ok) ProtoMessage() {} func (x *EdgesResponse_Ok) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[60] 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 EdgesResponse_Ok.ProtoReflect.Descriptor instead. func (*EdgesResponse_Ok) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{30, 0} } func (x *EdgesResponse_Ok) GetEdges() []*Edge { if x != nil { return x.Edges } return nil } type TopRoutesResponse_Ok struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Routes []*RouteTable `protobuf:"bytes,1,rep,name=routes,proto3" json:"routes,omitempty"` } func (x *TopRoutesResponse_Ok) Reset() { *x = TopRoutesResponse_Ok{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TopRoutesResponse_Ok) String() string { return protoimpl.X.MessageStringOf(x) } func (*TopRoutesResponse_Ok) ProtoMessage() {} func (x *TopRoutesResponse_Ok) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[61] 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 TopRoutesResponse_Ok.ProtoReflect.Descriptor instead. func (*TopRoutesResponse_Ok) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{33, 0} } func (x *TopRoutesResponse_Ok) GetRoutes() []*RouteTable { if x != nil { return x.Routes } return nil } type RouteTable_Row struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Route string `protobuf:"bytes,1,opt,name=route,proto3" json:"route,omitempty"` TimeWindow string `protobuf:"bytes,2,opt,name=time_window,json=timeWindow,proto3" json:"time_window,omitempty"` Authority string `protobuf:"bytes,6,opt,name=authority,proto3" json:"authority,omitempty"` Stats *BasicStats `protobuf:"bytes,5,opt,name=stats,proto3" json:"stats,omitempty"` } func (x *RouteTable_Row) Reset() { *x = RouteTable_Row{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RouteTable_Row) String() string { return protoimpl.X.MessageStringOf(x) } func (*RouteTable_Row) ProtoMessage() {} func (x *RouteTable_Row) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[62] 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 RouteTable_Row.ProtoReflect.Descriptor instead. func (*RouteTable_Row) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{34, 0} } func (x *RouteTable_Row) GetRoute() string { if x != nil { return x.Route } return "" } func (x *RouteTable_Row) GetTimeWindow() string { if x != nil { return x.TimeWindow } return "" } func (x *RouteTable_Row) GetAuthority() string { if x != nil { return x.Authority } return "" } func (x *RouteTable_Row) GetStats() *BasicStats { if x != nil { return x.Stats } return nil } type GatewaysTable_Row struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` ClusterName string `protobuf:"bytes,3,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` PairedServices uint64 `protobuf:"varint,4,opt,name=paired_services,json=pairedServices,proto3" json:"paired_services,omitempty"` Alive bool `protobuf:"varint,5,opt,name=alive,proto3" json:"alive,omitempty"` LatencyMsP50 uint64 `protobuf:"varint,6,opt,name=latency_ms_p50,json=latencyMsP50,proto3" json:"latency_ms_p50,omitempty"` LatencyMsP95 uint64 `protobuf:"varint,7,opt,name=latency_ms_p95,json=latencyMsP95,proto3" json:"latency_ms_p95,omitempty"` LatencyMsP99 uint64 `protobuf:"varint,8,opt,name=latency_ms_p99,json=latencyMsP99,proto3" json:"latency_ms_p99,omitempty"` } func (x *GatewaysTable_Row) Reset() { *x = GatewaysTable_Row{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GatewaysTable_Row) String() string { return protoimpl.X.MessageStringOf(x) } func (*GatewaysTable_Row) ProtoMessage() {} func (x *GatewaysTable_Row) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[63] 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 GatewaysTable_Row.ProtoReflect.Descriptor instead. func (*GatewaysTable_Row) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{35, 0} } func (x *GatewaysTable_Row) GetNamespace() string { if x != nil { return x.Namespace } return "" } func (x *GatewaysTable_Row) GetName() string { if x != nil { return x.Name } return "" } func (x *GatewaysTable_Row) GetClusterName() string { if x != nil { return x.ClusterName } return "" } func (x *GatewaysTable_Row) GetPairedServices() uint64 { if x != nil { return x.PairedServices } return 0 } func (x *GatewaysTable_Row) GetAlive() bool { if x != nil { return x.Alive } return false } func (x *GatewaysTable_Row) GetLatencyMsP50() uint64 { if x != nil { return x.LatencyMsP50 } return 0 } func (x *GatewaysTable_Row) GetLatencyMsP95() uint64 { if x != nil { return x.LatencyMsP95 } return 0 } func (x *GatewaysTable_Row) GetLatencyMsP99() uint64 { if x != nil { return x.LatencyMsP99 } return 0 } type GatewaysResponse_Ok struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GatewaysTable *GatewaysTable `protobuf:"bytes,1,opt,name=gateways_table,json=gatewaysTable,proto3" json:"gateways_table,omitempty"` } func (x *GatewaysResponse_Ok) Reset() { *x = GatewaysResponse_Ok{} if protoimpl.UnsafeEnabled { mi := &file_public_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GatewaysResponse_Ok) String() string { return protoimpl.X.MessageStringOf(x) } func (*GatewaysResponse_Ok) ProtoMessage() {} func (x *GatewaysResponse_Ok) ProtoReflect() protoreflect.Message { mi := &file_public_proto_msgTypes[64] 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 GatewaysResponse_Ok.ProtoReflect.Descriptor instead. func (*GatewaysResponse_Ok) Descriptor() ([]byte, []int) { return file_public_proto_rawDescGZIP(), []int{37, 0} } func (x *GatewaysResponse_Ok) GetGatewaysTable() *GatewaysTable { if x != nil { return x.GatewaysTable } return nil } var File_public_proto protoreflect.FileDescriptor var file_public_proto_rawDesc = []byte{ 0x0a, 0x0c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x71, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x6f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x6f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x33, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0x3b, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x73, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x3c, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x50, 0x6f, 0x64, 0x52, 0x04, 0x70, 0x6f, 0x64, 0x73, 0x22, 0xfa, 0x04, 0x0a, 0x03, 0x50, 0x6f, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x64, 0x49, 0x50, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x64, 0x49, 0x50, 0x12, 0x20, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x65, 0x74, 0x12, 0x37, 0x0a, 0x16, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x15, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x12, 0x1f, 0x0a, 0x0a, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x43, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, 0x61, 0x64, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x22, 0xaa, 0x02, 0x0a, 0x0a, 0x54, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x70, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x70, 0x6f, 0x64, 0x12, 0x20, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x78, 0x52, 0x70, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x52, 0x70, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x6f, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x74, 0x6f, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x6f, 0x49, 0x50, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x6f, 0x49, 0x50, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x72, 0x6f, 0x6d, 0x49, 0x50, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x72, 0x6f, 0x6d, 0x49, 0x50, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x3a, 0x02, 0x18, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x86, 0x08, 0x0a, 0x14, 0x54, 0x61, 0x70, 0x42, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x41, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x42, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x78, 0x52, 0x70, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x52, 0x70, 0x73, 0x12, 0x47, 0x0a, 0x07, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x42, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x07, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x1a, 0xb6, 0x04, 0x0a, 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x43, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x42, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x53, 0x65, 0x71, 0x48, 0x00, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x43, 0x0a, 0x03, 0x61, 0x6e, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x42, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x53, 0x65, 0x71, 0x48, 0x00, 0x52, 0x03, 0x61, 0x6e, 0x79, 0x12, 0x3f, 0x0a, 0x03, 0x6e, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x42, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x48, 0x00, 0x52, 0x03, 0x6e, 0x6f, 0x74, 0x12, 0x48, 0x0a, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x04, 0x68, 0x74, 0x74, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x42, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x48, 0x00, 0x52, 0x04, 0x68, 0x74, 0x74, 0x70, 0x1a, 0x4c, 0x0a, 0x03, 0x53, 0x65, 0x71, 0x12, 0x45, 0x0a, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x42, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x1a, 0x79, 0x0a, 0x04, 0x48, 0x74, 0x74, 0x70, 0x12, 0x18, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1e, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x42, 0x07, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x07, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x1a, 0xd4, 0x01, 0x0a, 0x07, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x48, 0x0a, 0x04, 0x68, 0x74, 0x74, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x42, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x48, 0x00, 0x52, 0x04, 0x68, 0x74, 0x74, 0x70, 0x1a, 0x74, 0x0a, 0x04, 0x48, 0x74, 0x74, 0x70, 0x12, 0x56, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x42, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x09, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x22, 0xf4, 0x01, 0x0a, 0x0a, 0x48, 0x74, 0x74, 0x70, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x48, 0x0a, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0c, 0x75, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x75, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x22, 0x6e, 0x0a, 0x0a, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x45, 0x54, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x4f, 0x53, 0x54, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x55, 0x54, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x41, 0x54, 0x43, 0x48, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x45, 0x41, 0x44, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x52, 0x41, 0x43, 0x45, 0x10, 0x08, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x06, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0c, 0x75, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x75, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x22, 0x21, 0x0a, 0x0a, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x54, 0x50, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x48, 0x54, 0x54, 0x50, 0x53, 0x10, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x63, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x74, 0x72, 0x12, 0x1d, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x69, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x54, 0x0a, 0x09, 0x49, 0x50, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x48, 0x00, 0x52, 0x04, 0x69, 0x70, 0x76, 0x34, 0x12, 0x2b, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x49, 0x50, 0x76, 0x36, 0x48, 0x00, 0x52, 0x04, 0x69, 0x70, 0x76, 0x36, 0x42, 0x04, 0x0a, 0x02, 0x69, 0x70, 0x22, 0x30, 0x0a, 0x04, 0x49, 0x50, 0x76, 0x36, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06, 0x52, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x06, 0x52, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x22, 0x4c, 0x0a, 0x0a, 0x54, 0x63, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2a, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x49, 0x50, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x02, 0x69, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x64, 0x0a, 0x03, 0x45, 0x6f, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0e, 0x67, 0x72, 0x70, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x05, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x22, 0xf3, 0x0f, 0x0a, 0x08, 0x54, 0x61, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x63, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x47, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x3d, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x63, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x51, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x42, 0x0a, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x51, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x04, 0x68, 0x74, 0x74, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x48, 0x00, 0x52, 0x04, 0x68, 0x74, 0x74, 0x70, 0x1a, 0x95, 0x01, 0x0a, 0x0c, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x4a, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x8f, 0x01, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x47, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x9c, 0x09, 0x0a, 0x04, 0x48, 0x74, 0x74, 0x70, 0x12, 0x4f, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x52, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x4f, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x45, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x45, 0x6e, 0x64, 0x1a, 0x36, 0x0a, 0x08, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x62, 0x61, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x1a, 0x92, 0x02, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x37, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x33, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x32, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0xe5, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x37, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x47, 0x0a, 0x12, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x68, 0x74, 0x74, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0xdf, 0x02, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x37, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x47, 0x0a, 0x12, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x49, 0x0a, 0x13, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x03, 0x65, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x45, 0x6f, 0x73, 0x52, 0x03, 0x65, 0x6f, 0x73, 0x12, 0x34, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x08, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x38, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x55, 0x54, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x20, 0x0a, 0x08, 0x41, 0x70, 0x69, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xaa, 0x02, 0x0a, 0x09, 0x50, 0x6f, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x50, 0x6f, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x2e, 0x50, 0x6f, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x1a, 0xdf, 0x01, 0x0a, 0x08, 0x50, 0x6f, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x52, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x50, 0x6f, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x2e, 0x50, 0x6f, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x1a, 0x76, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x50, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x71, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x5c, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xeb, 0x02, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x2c, 0x0a, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x40, 0x0a, 0x0d, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x6b, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x63, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 0x63, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0xd7, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x6b, 0x48, 0x00, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x36, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x41, 0x0a, 0x02, 0x4f, 0x6b, 0x12, 0x3b, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xac, 0x02, 0x0a, 0x0a, 0x42, 0x61, 0x73, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x5f, 0x70, 0x35, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x73, 0x50, 0x35, 0x30, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x5f, 0x70, 0x39, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x73, 0x50, 0x39, 0x35, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x73, 0x50, 0x39, 0x39, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8b, 0x01, 0x0a, 0x08, 0x54, 0x63, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x53, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x70, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x70, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x65, 0x61, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x65, 0x61, 0x66, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xfe, 0x05, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x42, 0x0a, 0x09, 0x70, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x50, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x48, 0x00, 0x52, 0x08, 0x70, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0xa3, 0x05, 0x0a, 0x08, 0x50, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3b, 0x0a, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x50, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x52, 0x6f, 0x77, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x1a, 0xd9, 0x04, 0x0a, 0x03, 0x52, 0x6f, 0x77, 0x12, 0x35, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6d, 0x65, 0x73, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x50, 0x6f, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x74, 0x63, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x63, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x08, 0x74, 0x63, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x3d, 0x0a, 0x08, 0x74, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x07, 0x74, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x5c, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x70, 0x6f, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x50, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x52, 0x6f, 0x77, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x42, 0x79, 0x50, 0x6f, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x42, 0x79, 0x50, 0x6f, 0x64, 0x1a, 0x5a, 0x0a, 0x10, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x42, 0x79, 0x50, 0x6f, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x50, 0x6f, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x4e, 0x0a, 0x0c, 0x45, 0x64, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xbb, 0x01, 0x0a, 0x0d, 0x45, 0x64, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x45, 0x64, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x6b, 0x48, 0x00, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x36, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x31, 0x0a, 0x02, 0x4f, 0x6b, 0x12, 0x2b, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc2, 0x01, 0x0a, 0x04, 0x45, 0x64, 0x67, 0x65, 0x12, 0x2b, 0x0a, 0x03, 0x73, 0x72, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x03, 0x73, 0x72, 0x63, 0x12, 0x2b, 0x0a, 0x03, 0x64, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x03, 0x64, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x73, 0x67, 0x22, 0xeb, 0x01, 0x0a, 0x10, 0x54, 0x6f, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x2c, 0x0a, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0xcb, 0x01, 0x0a, 0x11, 0x54, 0x6f, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x37, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x6f, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x6b, 0x48, 0x00, 0x52, 0x02, 0x6f, 0x6b, 0x1a, 0x39, 0x0a, 0x02, 0x4f, 0x6b, 0x12, 0x33, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xed, 0x01, 0x0a, 0x0a, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x52, 0x6f, 0x77, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x8d, 0x01, 0x0a, 0x03, 0x52, 0x6f, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x31, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0xd5, 0x02, 0x0a, 0x0d, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x52, 0x6f, 0x77, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x1a, 0x8b, 0x02, 0x0a, 0x03, 0x52, 0x6f, 0x77, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x70, 0x61, 0x69, 0x72, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x5f, 0x70, 0x35, 0x30, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x73, 0x50, 0x35, 0x30, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x5f, 0x70, 0x39, 0x35, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x73, 0x50, 0x39, 0x35, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x73, 0x50, 0x39, 0x39, 0x22, 0x8f, 0x01, 0x0a, 0x0f, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x22, 0xdb, 0x01, 0x0a, 0x10, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x6b, 0x48, 0x00, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x36, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x4b, 0x0a, 0x02, 0x4f, 0x6b, 0x12, 0x45, 0x0a, 0x0e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x91, 0x07, 0x0a, 0x03, 0x41, 0x70, 0x69, 0x12, 0x5a, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x23, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x05, 0x45, 0x64, 0x67, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x45, 0x64, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x45, 0x64, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x08, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x20, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x09, 0x54, 0x6f, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x6f, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x6f, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x20, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x03, 0x54, 0x61, 0x70, 0x12, 0x1b, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x03, 0x88, 0x02, 0x01, 0x30, 0x01, 0x12, 0x58, 0x0a, 0x0d, 0x54, 0x61, 0x70, 0x42, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x25, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x42, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x54, 0x61, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x03, 0x88, 0x02, 0x01, 0x30, 0x01, 0x12, 0x41, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x09, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x2d, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x53, 0x65, 0x6c, 0x66, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x14, 0x2e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x6c, 0x6c, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x64, 0x32, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_public_proto_rawDescOnce sync.Once file_public_proto_rawDescData = file_public_proto_rawDesc ) func file_public_proto_rawDescGZIP() []byte { file_public_proto_rawDescOnce.Do(func() { file_public_proto_rawDescData = protoimpl.X.CompressGZIP(file_public_proto_rawDescData) }) return file_public_proto_rawDescData } var file_public_proto_enumTypes = make([]protoimpl.EnumInfo, 3) var file_public_proto_msgTypes = make([]protoimpl.MessageInfo, 65) var file_public_proto_goTypes = []interface{}{ (HttpMethod_Registered)(0), // 0: linkerd2.public.HttpMethod.Registered (Scheme_Registered)(0), // 1: linkerd2.public.Scheme.Registered (TapEvent_ProxyDirection)(0), // 2: linkerd2.public.TapEvent.ProxyDirection (*Empty)(nil), // 3: linkerd2.public.Empty (*VersionInfo)(nil), // 4: linkerd2.public.VersionInfo (*ListServicesRequest)(nil), // 5: linkerd2.public.ListServicesRequest (*ListServicesResponse)(nil), // 6: linkerd2.public.ListServicesResponse (*Service)(nil), // 7: linkerd2.public.Service (*ListPodsRequest)(nil), // 8: linkerd2.public.ListPodsRequest (*ListPodsResponse)(nil), // 9: linkerd2.public.ListPodsResponse (*Pod)(nil), // 10: linkerd2.public.Pod (*TapRequest)(nil), // 11: linkerd2.public.TapRequest (*TapByResourceRequest)(nil), // 12: linkerd2.public.TapByResourceRequest (*HttpMethod)(nil), // 13: linkerd2.public.HttpMethod (*Scheme)(nil), // 14: linkerd2.public.Scheme (*Headers)(nil), // 15: linkerd2.public.Headers (*IPAddress)(nil), // 16: linkerd2.public.IPAddress (*IPv6)(nil), // 17: linkerd2.public.IPv6 (*TcpAddress)(nil), // 18: linkerd2.public.TcpAddress (*Eos)(nil), // 19: linkerd2.public.Eos (*TapEvent)(nil), // 20: linkerd2.public.TapEvent (*ApiError)(nil), // 21: linkerd2.public.ApiError (*PodErrors)(nil), // 22: linkerd2.public.PodErrors (*Resource)(nil), // 23: linkerd2.public.Resource (*ResourceSelection)(nil), // 24: linkerd2.public.ResourceSelection (*ResourceError)(nil), // 25: linkerd2.public.ResourceError (*StatSummaryRequest)(nil), // 26: linkerd2.public.StatSummaryRequest (*StatSummaryResponse)(nil), // 27: linkerd2.public.StatSummaryResponse (*BasicStats)(nil), // 28: linkerd2.public.BasicStats (*TcpStats)(nil), // 29: linkerd2.public.TcpStats (*TrafficSplitStats)(nil), // 30: linkerd2.public.TrafficSplitStats (*StatTable)(nil), // 31: linkerd2.public.StatTable (*EdgesRequest)(nil), // 32: linkerd2.public.EdgesRequest (*EdgesResponse)(nil), // 33: linkerd2.public.EdgesResponse (*Edge)(nil), // 34: linkerd2.public.Edge (*TopRoutesRequest)(nil), // 35: linkerd2.public.TopRoutesRequest (*TopRoutesResponse)(nil), // 36: linkerd2.public.TopRoutesResponse (*RouteTable)(nil), // 37: linkerd2.public.RouteTable (*GatewaysTable)(nil), // 38: linkerd2.public.GatewaysTable (*GatewaysRequest)(nil), // 39: linkerd2.public.GatewaysRequest (*GatewaysResponse)(nil), // 40: linkerd2.public.GatewaysResponse (*TapByResourceRequest_Match)(nil), // 41: linkerd2.public.TapByResourceRequest.Match (*TapByResourceRequest_Extract)(nil), // 42: linkerd2.public.TapByResourceRequest.Extract (*TapByResourceRequest_Match_Seq)(nil), // 43: linkerd2.public.TapByResourceRequest.Match.Seq (*TapByResourceRequest_Match_Http)(nil), // 44: linkerd2.public.TapByResourceRequest.Match.Http (*TapByResourceRequest_Extract_Http)(nil), // 45: linkerd2.public.TapByResourceRequest.Extract.Http (*TapByResourceRequest_Extract_Http_Headers)(nil), // 46: linkerd2.public.TapByResourceRequest.Extract.Http.Headers (*Headers_Header)(nil), // 47: linkerd2.public.Headers.Header (*TapEvent_EndpointMeta)(nil), // 48: linkerd2.public.TapEvent.EndpointMeta (*TapEvent_RouteMeta)(nil), // 49: linkerd2.public.TapEvent.RouteMeta (*TapEvent_Http)(nil), // 50: linkerd2.public.TapEvent.Http nil, // 51: linkerd2.public.TapEvent.EndpointMeta.LabelsEntry nil, // 52: linkerd2.public.TapEvent.RouteMeta.LabelsEntry (*TapEvent_Http_StreamId)(nil), // 53: linkerd2.public.TapEvent.Http.StreamId (*TapEvent_Http_RequestInit)(nil), // 54: linkerd2.public.TapEvent.Http.RequestInit (*TapEvent_Http_ResponseInit)(nil), // 55: linkerd2.public.TapEvent.Http.ResponseInit (*TapEvent_Http_ResponseEnd)(nil), // 56: linkerd2.public.TapEvent.Http.ResponseEnd (*PodErrors_PodError)(nil), // 57: linkerd2.public.PodErrors.PodError (*PodErrors_PodError_ContainerError)(nil), // 58: linkerd2.public.PodErrors.PodError.ContainerError (*StatSummaryResponse_Ok)(nil), // 59: linkerd2.public.StatSummaryResponse.Ok (*StatTable_PodGroup)(nil), // 60: linkerd2.public.StatTable.PodGroup (*StatTable_PodGroup_Row)(nil), // 61: linkerd2.public.StatTable.PodGroup.Row nil, // 62: linkerd2.public.StatTable.PodGroup.Row.ErrorsByPodEntry (*EdgesResponse_Ok)(nil), // 63: linkerd2.public.EdgesResponse.Ok (*TopRoutesResponse_Ok)(nil), // 64: linkerd2.public.TopRoutesResponse.Ok (*RouteTable_Row)(nil), // 65: linkerd2.public.RouteTable.Row (*GatewaysTable_Row)(nil), // 66: linkerd2.public.GatewaysTable.Row (*GatewaysResponse_Ok)(nil), // 67: linkerd2.public.GatewaysResponse.Ok (*duration.Duration)(nil), // 68: google.protobuf.Duration (*healthcheck.SelfCheckRequest)(nil), // 69: linkerd2.common.healthcheck.SelfCheckRequest (*healthcheck.SelfCheckResponse)(nil), // 70: linkerd2.common.healthcheck.SelfCheckResponse (*config.All)(nil), // 71: linkerd2.config.All } var file_public_proto_depIdxs = []int32{ 7, // 0: linkerd2.public.ListServicesResponse.services:type_name -> linkerd2.public.Service 24, // 1: linkerd2.public.ListPodsRequest.selector:type_name -> linkerd2.public.ResourceSelection 10, // 2: linkerd2.public.ListPodsResponse.pods:type_name -> linkerd2.public.Pod 68, // 3: linkerd2.public.Pod.sinceLastReport:type_name -> google.protobuf.Duration 68, // 4: linkerd2.public.Pod.uptime:type_name -> google.protobuf.Duration 24, // 5: linkerd2.public.TapByResourceRequest.target:type_name -> linkerd2.public.ResourceSelection 41, // 6: linkerd2.public.TapByResourceRequest.match:type_name -> linkerd2.public.TapByResourceRequest.Match 42, // 7: linkerd2.public.TapByResourceRequest.extract:type_name -> linkerd2.public.TapByResourceRequest.Extract 0, // 8: linkerd2.public.HttpMethod.registered:type_name -> linkerd2.public.HttpMethod.Registered 1, // 9: linkerd2.public.Scheme.registered:type_name -> linkerd2.public.Scheme.Registered 47, // 10: linkerd2.public.Headers.headers:type_name -> linkerd2.public.Headers.Header 17, // 11: linkerd2.public.IPAddress.ipv6:type_name -> linkerd2.public.IPv6 16, // 12: linkerd2.public.TcpAddress.ip:type_name -> linkerd2.public.IPAddress 18, // 13: linkerd2.public.TapEvent.source:type_name -> linkerd2.public.TcpAddress 48, // 14: linkerd2.public.TapEvent.source_meta:type_name -> linkerd2.public.TapEvent.EndpointMeta 18, // 15: linkerd2.public.TapEvent.destination:type_name -> linkerd2.public.TcpAddress 48, // 16: linkerd2.public.TapEvent.destination_meta:type_name -> linkerd2.public.TapEvent.EndpointMeta 49, // 17: linkerd2.public.TapEvent.route_meta:type_name -> linkerd2.public.TapEvent.RouteMeta 2, // 18: linkerd2.public.TapEvent.proxy_direction:type_name -> linkerd2.public.TapEvent.ProxyDirection 50, // 19: linkerd2.public.TapEvent.http:type_name -> linkerd2.public.TapEvent.Http 57, // 20: linkerd2.public.PodErrors.errors:type_name -> linkerd2.public.PodErrors.PodError 23, // 21: linkerd2.public.ResourceSelection.resource:type_name -> linkerd2.public.Resource 23, // 22: linkerd2.public.ResourceError.resource:type_name -> linkerd2.public.Resource 24, // 23: linkerd2.public.StatSummaryRequest.selector:type_name -> linkerd2.public.ResourceSelection 3, // 24: linkerd2.public.StatSummaryRequest.none:type_name -> linkerd2.public.Empty 23, // 25: linkerd2.public.StatSummaryRequest.to_resource:type_name -> linkerd2.public.Resource 23, // 26: linkerd2.public.StatSummaryRequest.from_resource:type_name -> linkerd2.public.Resource 59, // 27: linkerd2.public.StatSummaryResponse.ok:type_name -> linkerd2.public.StatSummaryResponse.Ok 25, // 28: linkerd2.public.StatSummaryResponse.error:type_name -> linkerd2.public.ResourceError 60, // 29: linkerd2.public.StatTable.pod_group:type_name -> linkerd2.public.StatTable.PodGroup 24, // 30: linkerd2.public.EdgesRequest.selector:type_name -> linkerd2.public.ResourceSelection 63, // 31: linkerd2.public.EdgesResponse.ok:type_name -> linkerd2.public.EdgesResponse.Ok 25, // 32: linkerd2.public.EdgesResponse.error:type_name -> linkerd2.public.ResourceError 23, // 33: linkerd2.public.Edge.src:type_name -> linkerd2.public.Resource 23, // 34: linkerd2.public.Edge.dst:type_name -> linkerd2.public.Resource 24, // 35: linkerd2.public.TopRoutesRequest.selector:type_name -> linkerd2.public.ResourceSelection 3, // 36: linkerd2.public.TopRoutesRequest.none:type_name -> linkerd2.public.Empty 23, // 37: linkerd2.public.TopRoutesRequest.to_resource:type_name -> linkerd2.public.Resource 25, // 38: linkerd2.public.TopRoutesResponse.error:type_name -> linkerd2.public.ResourceError 64, // 39: linkerd2.public.TopRoutesResponse.ok:type_name -> linkerd2.public.TopRoutesResponse.Ok 65, // 40: linkerd2.public.RouteTable.rows:type_name -> linkerd2.public.RouteTable.Row 66, // 41: linkerd2.public.GatewaysTable.rows:type_name -> linkerd2.public.GatewaysTable.Row 67, // 42: linkerd2.public.GatewaysResponse.ok:type_name -> linkerd2.public.GatewaysResponse.Ok 25, // 43: linkerd2.public.GatewaysResponse.error:type_name -> linkerd2.public.ResourceError 43, // 44: linkerd2.public.TapByResourceRequest.Match.all:type_name -> linkerd2.public.TapByResourceRequest.Match.Seq 43, // 45: linkerd2.public.TapByResourceRequest.Match.any:type_name -> linkerd2.public.TapByResourceRequest.Match.Seq 41, // 46: linkerd2.public.TapByResourceRequest.Match.not:type_name -> linkerd2.public.TapByResourceRequest.Match 24, // 47: linkerd2.public.TapByResourceRequest.Match.destinations:type_name -> linkerd2.public.ResourceSelection 44, // 48: linkerd2.public.TapByResourceRequest.Match.http:type_name -> linkerd2.public.TapByResourceRequest.Match.Http 45, // 49: linkerd2.public.TapByResourceRequest.Extract.http:type_name -> linkerd2.public.TapByResourceRequest.Extract.Http 41, // 50: linkerd2.public.TapByResourceRequest.Match.Seq.matches:type_name -> linkerd2.public.TapByResourceRequest.Match 46, // 51: linkerd2.public.TapByResourceRequest.Extract.Http.headers:type_name -> linkerd2.public.TapByResourceRequest.Extract.Http.Headers 51, // 52: linkerd2.public.TapEvent.EndpointMeta.labels:type_name -> linkerd2.public.TapEvent.EndpointMeta.LabelsEntry 52, // 53: linkerd2.public.TapEvent.RouteMeta.labels:type_name -> linkerd2.public.TapEvent.RouteMeta.LabelsEntry 54, // 54: linkerd2.public.TapEvent.Http.request_init:type_name -> linkerd2.public.TapEvent.Http.RequestInit 55, // 55: linkerd2.public.TapEvent.Http.response_init:type_name -> linkerd2.public.TapEvent.Http.ResponseInit 56, // 56: linkerd2.public.TapEvent.Http.response_end:type_name -> linkerd2.public.TapEvent.Http.ResponseEnd 53, // 57: linkerd2.public.TapEvent.Http.RequestInit.id:type_name -> linkerd2.public.TapEvent.Http.StreamId 13, // 58: linkerd2.public.TapEvent.Http.RequestInit.method:type_name -> linkerd2.public.HttpMethod 14, // 59: linkerd2.public.TapEvent.Http.RequestInit.scheme:type_name -> linkerd2.public.Scheme 15, // 60: linkerd2.public.TapEvent.Http.RequestInit.headers:type_name -> linkerd2.public.Headers 53, // 61: linkerd2.public.TapEvent.Http.ResponseInit.id:type_name -> linkerd2.public.TapEvent.Http.StreamId 68, // 62: linkerd2.public.TapEvent.Http.ResponseInit.since_request_init:type_name -> google.protobuf.Duration 15, // 63: linkerd2.public.TapEvent.Http.ResponseInit.headers:type_name -> linkerd2.public.Headers 53, // 64: linkerd2.public.TapEvent.Http.ResponseEnd.id:type_name -> linkerd2.public.TapEvent.Http.StreamId 68, // 65: linkerd2.public.TapEvent.Http.ResponseEnd.since_request_init:type_name -> google.protobuf.Duration 68, // 66: linkerd2.public.TapEvent.Http.ResponseEnd.since_response_init:type_name -> google.protobuf.Duration 19, // 67: linkerd2.public.TapEvent.Http.ResponseEnd.eos:type_name -> linkerd2.public.Eos 15, // 68: linkerd2.public.TapEvent.Http.ResponseEnd.trailers:type_name -> linkerd2.public.Headers 58, // 69: linkerd2.public.PodErrors.PodError.container:type_name -> linkerd2.public.PodErrors.PodError.ContainerError 31, // 70: linkerd2.public.StatSummaryResponse.Ok.stat_tables:type_name -> linkerd2.public.StatTable 61, // 71: linkerd2.public.StatTable.PodGroup.rows:type_name -> linkerd2.public.StatTable.PodGroup.Row 23, // 72: linkerd2.public.StatTable.PodGroup.Row.resource:type_name -> linkerd2.public.Resource 28, // 73: linkerd2.public.StatTable.PodGroup.Row.stats:type_name -> linkerd2.public.BasicStats 29, // 74: linkerd2.public.StatTable.PodGroup.Row.tcp_stats:type_name -> linkerd2.public.TcpStats 30, // 75: linkerd2.public.StatTable.PodGroup.Row.ts_stats:type_name -> linkerd2.public.TrafficSplitStats 62, // 76: linkerd2.public.StatTable.PodGroup.Row.errors_by_pod:type_name -> linkerd2.public.StatTable.PodGroup.Row.ErrorsByPodEntry 22, // 77: linkerd2.public.StatTable.PodGroup.Row.ErrorsByPodEntry.value:type_name -> linkerd2.public.PodErrors 34, // 78: linkerd2.public.EdgesResponse.Ok.edges:type_name -> linkerd2.public.Edge 37, // 79: linkerd2.public.TopRoutesResponse.Ok.routes:type_name -> linkerd2.public.RouteTable 28, // 80: linkerd2.public.RouteTable.Row.stats:type_name -> linkerd2.public.BasicStats 38, // 81: linkerd2.public.GatewaysResponse.Ok.gateways_table:type_name -> linkerd2.public.GatewaysTable 26, // 82: linkerd2.public.Api.StatSummary:input_type -> linkerd2.public.StatSummaryRequest 32, // 83: linkerd2.public.Api.Edges:input_type -> linkerd2.public.EdgesRequest 39, // 84: linkerd2.public.Api.Gateways:input_type -> linkerd2.public.GatewaysRequest 35, // 85: linkerd2.public.Api.TopRoutes:input_type -> linkerd2.public.TopRoutesRequest 8, // 86: linkerd2.public.Api.ListPods:input_type -> linkerd2.public.ListPodsRequest 5, // 87: linkerd2.public.Api.ListServices:input_type -> linkerd2.public.ListServicesRequest 11, // 88: linkerd2.public.Api.Tap:input_type -> linkerd2.public.TapRequest 12, // 89: linkerd2.public.Api.TapByResource:input_type -> linkerd2.public.TapByResourceRequest 3, // 90: linkerd2.public.Api.Version:input_type -> linkerd2.public.Empty 69, // 91: linkerd2.public.Api.SelfCheck:input_type -> linkerd2.common.healthcheck.SelfCheckRequest 3, // 92: linkerd2.public.Api.Config:input_type -> linkerd2.public.Empty 27, // 93: linkerd2.public.Api.StatSummary:output_type -> linkerd2.public.StatSummaryResponse 33, // 94: linkerd2.public.Api.Edges:output_type -> linkerd2.public.EdgesResponse 40, // 95: linkerd2.public.Api.Gateways:output_type -> linkerd2.public.GatewaysResponse 36, // 96: linkerd2.public.Api.TopRoutes:output_type -> linkerd2.public.TopRoutesResponse 9, // 97: linkerd2.public.Api.ListPods:output_type -> linkerd2.public.ListPodsResponse 6, // 98: linkerd2.public.Api.ListServices:output_type -> linkerd2.public.ListServicesResponse 20, // 99: linkerd2.public.Api.Tap:output_type -> linkerd2.public.TapEvent 20, // 100: linkerd2.public.Api.TapByResource:output_type -> linkerd2.public.TapEvent 4, // 101: linkerd2.public.Api.Version:output_type -> linkerd2.public.VersionInfo 70, // 102: linkerd2.public.Api.SelfCheck:output_type -> linkerd2.common.healthcheck.SelfCheckResponse 71, // 103: linkerd2.public.Api.Config:output_type -> linkerd2.config.All 93, // [93:104] is the sub-list for method output_type 82, // [82:93] is the sub-list for method input_type 82, // [82:82] is the sub-list for extension type_name 82, // [82:82] is the sub-list for extension extendee 0, // [0:82] is the sub-list for field type_name } func init() { file_public_proto_init() } func file_public_proto_init() { if File_public_proto != nil { return } if !protoimpl.UnsafeEnabled { file_public_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Empty); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VersionInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListServicesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListServicesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Service); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPodsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPodsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Pod); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TapRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TapByResourceRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HttpMethod); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Scheme); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Headers); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IPAddress); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IPv6); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TcpAddress); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Eos); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TapEvent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ApiError); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PodErrors); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Resource); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ResourceSelection); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ResourceError); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StatSummaryRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StatSummaryResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BasicStats); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TcpStats); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TrafficSplitStats); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StatTable); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EdgesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EdgesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Edge); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TopRoutesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TopRoutesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RouteTable); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GatewaysTable); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GatewaysRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GatewaysResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TapByResourceRequest_Match); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TapByResourceRequest_Extract); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TapByResourceRequest_Match_Seq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TapByResourceRequest_Match_Http); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TapByResourceRequest_Extract_Http); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TapByResourceRequest_Extract_Http_Headers); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Headers_Header); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TapEvent_EndpointMeta); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TapEvent_RouteMeta); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TapEvent_Http); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TapEvent_Http_StreamId); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TapEvent_Http_RequestInit); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TapEvent_Http_ResponseInit); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TapEvent_Http_ResponseEnd); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PodErrors_PodError); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PodErrors_PodError_ContainerError); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StatSummaryResponse_Ok); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StatTable_PodGroup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StatTable_PodGroup_Row); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EdgesResponse_Ok); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TopRoutesResponse_Ok); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RouteTable_Row); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GatewaysTable_Row); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_public_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GatewaysResponse_Ok); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_public_proto_msgTypes[7].OneofWrappers = []interface{}{ (*Pod_Deployment)(nil), (*Pod_ReplicaSet)(nil), (*Pod_ReplicationController)(nil), (*Pod_StatefulSet)(nil), (*Pod_DaemonSet)(nil), (*Pod_Job)(nil), } file_public_proto_msgTypes[8].OneofWrappers = []interface{}{ (*TapRequest_Pod)(nil), (*TapRequest_Deployment)(nil), } file_public_proto_msgTypes[10].OneofWrappers = []interface{}{ (*HttpMethod_Registered_)(nil), (*HttpMethod_Unregistered)(nil), } file_public_proto_msgTypes[11].OneofWrappers = []interface{}{ (*Scheme_Registered_)(nil), (*Scheme_Unregistered)(nil), } file_public_proto_msgTypes[13].OneofWrappers = []interface{}{ (*IPAddress_Ipv4)(nil), (*IPAddress_Ipv6)(nil), } file_public_proto_msgTypes[16].OneofWrappers = []interface{}{ (*Eos_GrpcStatusCode)(nil), (*Eos_ResetErrorCode)(nil), } file_public_proto_msgTypes[17].OneofWrappers = []interface{}{ (*TapEvent_Http_)(nil), } file_public_proto_msgTypes[23].OneofWrappers = []interface{}{ (*StatSummaryRequest_None)(nil), (*StatSummaryRequest_ToResource)(nil), (*StatSummaryRequest_FromResource)(nil), } file_public_proto_msgTypes[24].OneofWrappers = []interface{}{ (*StatSummaryResponse_Ok_)(nil), (*StatSummaryResponse_Error)(nil), } file_public_proto_msgTypes[28].OneofWrappers = []interface{}{ (*StatTable_PodGroup_)(nil), } file_public_proto_msgTypes[30].OneofWrappers = []interface{}{ (*EdgesResponse_Ok_)(nil), (*EdgesResponse_Error)(nil), } file_public_proto_msgTypes[32].OneofWrappers = []interface{}{ (*TopRoutesRequest_None)(nil), (*TopRoutesRequest_ToResource)(nil), } file_public_proto_msgTypes[33].OneofWrappers = []interface{}{ (*TopRoutesResponse_Error)(nil), (*TopRoutesResponse_Ok_)(nil), } file_public_proto_msgTypes[37].OneofWrappers = []interface{}{ (*GatewaysResponse_Ok_)(nil), (*GatewaysResponse_Error)(nil), } file_public_proto_msgTypes[38].OneofWrappers = []interface{}{ (*TapByResourceRequest_Match_All)(nil), (*TapByResourceRequest_Match_Any)(nil), (*TapByResourceRequest_Match_Not)(nil), (*TapByResourceRequest_Match_Destinations)(nil), (*TapByResourceRequest_Match_Http_)(nil), } file_public_proto_msgTypes[39].OneofWrappers = []interface{}{ (*TapByResourceRequest_Extract_Http_)(nil), } file_public_proto_msgTypes[41].OneofWrappers = []interface{}{ (*TapByResourceRequest_Match_Http_Scheme)(nil), (*TapByResourceRequest_Match_Http_Method)(nil), (*TapByResourceRequest_Match_Http_Authority)(nil), (*TapByResourceRequest_Match_Http_Path)(nil), } file_public_proto_msgTypes[42].OneofWrappers = []interface{}{ (*TapByResourceRequest_Extract_Http_Headers_)(nil), } file_public_proto_msgTypes[44].OneofWrappers = []interface{}{ (*Headers_Header_ValueStr)(nil), (*Headers_Header_ValueBin)(nil), } file_public_proto_msgTypes[47].OneofWrappers = []interface{}{ (*TapEvent_Http_RequestInit_)(nil), (*TapEvent_Http_ResponseInit_)(nil), (*TapEvent_Http_ResponseEnd_)(nil), } file_public_proto_msgTypes[54].OneofWrappers = []interface{}{ (*PodErrors_PodError_Container)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_public_proto_rawDesc, NumEnums: 3, NumMessages: 65, NumExtensions: 0, NumServices: 1, }, GoTypes: file_public_proto_goTypes, DependencyIndexes: file_public_proto_depIdxs, EnumInfos: file_public_proto_enumTypes, MessageInfos: file_public_proto_msgTypes, }.Build() File_public_proto = out.File file_public_proto_rawDesc = nil file_public_proto_goTypes = nil file_public_proto_depIdxs = nil } // Reference imports to suppress errors if they are not otherwise used. var _ context.Context var _ grpc.ClientConnInterface // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. const _ = grpc.SupportPackageIsVersion6 // ApiClient is the client API for Api service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type ApiClient interface { StatSummary(ctx context.Context, in *StatSummaryRequest, opts ...grpc.CallOption) (*StatSummaryResponse, error) Edges(ctx context.Context, in *EdgesRequest, opts ...grpc.CallOption) (*EdgesResponse, error) Gateways(ctx context.Context, in *GatewaysRequest, opts ...grpc.CallOption) (*GatewaysResponse, error) TopRoutes(ctx context.Context, in *TopRoutesRequest, opts ...grpc.CallOption) (*TopRoutesResponse, error) ListPods(ctx context.Context, in *ListPodsRequest, opts ...grpc.CallOption) (*ListPodsResponse, error) ListServices(ctx context.Context, in *ListServicesRequest, opts ...grpc.CallOption) (*ListServicesResponse, error) // Deprecated: Do not use. // Superseded by `TapByResource`. Tap(ctx context.Context, in *TapRequest, opts ...grpc.CallOption) (Api_TapClient, error) // Deprecated: Do not use. // Superseded by tap APIServer. TapByResource(ctx context.Context, in *TapByResourceRequest, opts ...grpc.CallOption) (Api_TapByResourceClient, error) Version(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*VersionInfo, error) SelfCheck(ctx context.Context, in *healthcheck.SelfCheckRequest, opts ...grpc.CallOption) (*healthcheck.SelfCheckResponse, error) Config(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*config.All, error) } type apiClient struct { cc grpc.ClientConnInterface } func NewApiClient(cc grpc.ClientConnInterface) ApiClient { return &apiClient{cc} } func (c *apiClient) StatSummary(ctx context.Context, in *StatSummaryRequest, opts ...grpc.CallOption) (*StatSummaryResponse, error) { out := new(StatSummaryResponse) err := c.cc.Invoke(ctx, "/linkerd2.public.Api/StatSummary", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *apiClient) Edges(ctx context.Context, in *EdgesRequest, opts ...grpc.CallOption) (*EdgesResponse, error) { out := new(EdgesResponse) err := c.cc.Invoke(ctx, "/linkerd2.public.Api/Edges", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *apiClient) Gateways(ctx context.Context, in *GatewaysRequest, opts ...grpc.CallOption) (*GatewaysResponse, error) { out := new(GatewaysResponse) err := c.cc.Invoke(ctx, "/linkerd2.public.Api/Gateways", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *apiClient) TopRoutes(ctx context.Context, in *TopRoutesRequest, opts ...grpc.CallOption) (*TopRoutesResponse, error) { out := new(TopRoutesResponse) err := c.cc.Invoke(ctx, "/linkerd2.public.Api/TopRoutes", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *apiClient) ListPods(ctx context.Context, in *ListPodsRequest, opts ...grpc.CallOption) (*ListPodsResponse, error) { out := new(ListPodsResponse) err := c.cc.Invoke(ctx, "/linkerd2.public.Api/ListPods", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *apiClient) ListServices(ctx context.Context, in *ListServicesRequest, opts ...grpc.CallOption) (*ListServicesResponse, error) { out := new(ListServicesResponse) err := c.cc.Invoke(ctx, "/linkerd2.public.Api/ListServices", in, out, opts...) if err != nil { return nil, err } return out, nil } // Deprecated: Do not use. func (c *apiClient) Tap(ctx context.Context, in *TapRequest, opts ...grpc.CallOption) (Api_TapClient, error) { stream, err := c.cc.NewStream(ctx, &_Api_serviceDesc.Streams[0], "/linkerd2.public.Api/Tap", opts...) if err != nil { return nil, err } x := &apiTapClient{stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } if err := x.ClientStream.CloseSend(); err != nil { return nil, err } return x, nil } type Api_TapClient interface { Recv() (*TapEvent, error) grpc.ClientStream } type apiTapClient struct { grpc.ClientStream } func (x *apiTapClient) Recv() (*TapEvent, error) { m := new(TapEvent) if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err } return m, nil } // Deprecated: Do not use. func (c *apiClient) TapByResource(ctx context.Context, in *TapByResourceRequest, opts ...grpc.CallOption) (Api_TapByResourceClient, error) { stream, err := c.cc.NewStream(ctx, &_Api_serviceDesc.Streams[1], "/linkerd2.public.Api/TapByResource", opts...) if err != nil { return nil, err } x := &apiTapByResourceClient{stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } if err := x.ClientStream.CloseSend(); err != nil { return nil, err } return x, nil } type Api_TapByResourceClient interface { Recv() (*TapEvent, error) grpc.ClientStream } type apiTapByResourceClient struct { grpc.ClientStream } func (x *apiTapByResourceClient) Recv() (*TapEvent, error) { m := new(TapEvent) if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err } return m, nil } func (c *apiClient) Version(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*VersionInfo, error) { out := new(VersionInfo) err := c.cc.Invoke(ctx, "/linkerd2.public.Api/Version", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *apiClient) SelfCheck(ctx context.Context, in *healthcheck.SelfCheckRequest, opts ...grpc.CallOption) (*healthcheck.SelfCheckResponse, error) { out := new(healthcheck.SelfCheckResponse) err := c.cc.Invoke(ctx, "/linkerd2.public.Api/SelfCheck", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *apiClient) Config(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*config.All, error) { out := new(config.All) err := c.cc.Invoke(ctx, "/linkerd2.public.Api/Config", in, out, opts...) if err != nil { return nil, err } return out, nil } // ApiServer is the server API for Api service. type ApiServer interface { StatSummary(context.Context, *StatSummaryRequest) (*StatSummaryResponse, error) Edges(context.Context, *EdgesRequest) (*EdgesResponse, error) Gateways(context.Context, *GatewaysRequest) (*GatewaysResponse, error) TopRoutes(context.Context, *TopRoutesRequest) (*TopRoutesResponse, error) ListPods(context.Context, *ListPodsRequest) (*ListPodsResponse, error) ListServices(context.Context, *ListServicesRequest) (*ListServicesResponse, error) // Deprecated: Do not use. // Superseded by `TapByResource`. Tap(*TapRequest, Api_TapServer) error // Deprecated: Do not use. // Superseded by tap APIServer. TapByResource(*TapByResourceRequest, Api_TapByResourceServer) error Version(context.Context, *Empty) (*VersionInfo, error) SelfCheck(context.Context, *healthcheck.SelfCheckRequest) (*healthcheck.SelfCheckResponse, error) Config(context.Context, *Empty) (*config.All, error) } // UnimplementedApiServer can be embedded to have forward compatible implementations. type UnimplementedApiServer struct { } func (*UnimplementedApiServer) StatSummary(context.Context, *StatSummaryRequest) (*StatSummaryResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method StatSummary not implemented") } func (*UnimplementedApiServer) Edges(context.Context, *EdgesRequest) (*EdgesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Edges not implemented") } func (*UnimplementedApiServer) Gateways(context.Context, *GatewaysRequest) (*GatewaysResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Gateways not implemented") } func (*UnimplementedApiServer) TopRoutes(context.Context, *TopRoutesRequest) (*TopRoutesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method TopRoutes not implemented") } func (*UnimplementedApiServer) ListPods(context.Context, *ListPodsRequest) (*ListPodsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListPods not implemented") } func (*UnimplementedApiServer) ListServices(context.Context, *ListServicesRequest) (*ListServicesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListServices not implemented") } func (*UnimplementedApiServer) Tap(*TapRequest, Api_TapServer) error { return status.Errorf(codes.Unimplemented, "method Tap not implemented") } func (*UnimplementedApiServer) TapByResource(*TapByResourceRequest, Api_TapByResourceServer) error { return status.Errorf(codes.Unimplemented, "method TapByResource not implemented") } func (*UnimplementedApiServer) Version(context.Context, *Empty) (*VersionInfo, error) { return nil, status.Errorf(codes.Unimplemented, "method Version not implemented") } func (*UnimplementedApiServer) SelfCheck(context.Context, *healthcheck.SelfCheckRequest) (*healthcheck.SelfCheckResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SelfCheck not implemented") } func (*UnimplementedApiServer) Config(context.Context, *Empty) (*config.All, error) { return nil, status.Errorf(codes.Unimplemented, "method Config not implemented") } func RegisterApiServer(s *grpc.Server, srv ApiServer) { s.RegisterService(&_Api_serviceDesc, srv) } func _Api_StatSummary_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(StatSummaryRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ApiServer).StatSummary(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkerd2.public.Api/StatSummary", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).StatSummary(ctx, req.(*StatSummaryRequest)) } return interceptor(ctx, in, info, handler) } func _Api_Edges_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(EdgesRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ApiServer).Edges(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkerd2.public.Api/Edges", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).Edges(ctx, req.(*EdgesRequest)) } return interceptor(ctx, in, info, handler) } func _Api_Gateways_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GatewaysRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ApiServer).Gateways(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkerd2.public.Api/Gateways", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).Gateways(ctx, req.(*GatewaysRequest)) } return interceptor(ctx, in, info, handler) } func _Api_TopRoutes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(TopRoutesRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ApiServer).TopRoutes(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkerd2.public.Api/TopRoutes", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).TopRoutes(ctx, req.(*TopRoutesRequest)) } return interceptor(ctx, in, info, handler) } func _Api_ListPods_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListPodsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ApiServer).ListPods(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkerd2.public.Api/ListPods", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).ListPods(ctx, req.(*ListPodsRequest)) } return interceptor(ctx, in, info, handler) } func _Api_ListServices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListServicesRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ApiServer).ListServices(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkerd2.public.Api/ListServices", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).ListServices(ctx, req.(*ListServicesRequest)) } return interceptor(ctx, in, info, handler) } func _Api_Tap_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(TapRequest) if err := stream.RecvMsg(m); err != nil { return err } return srv.(ApiServer).Tap(m, &apiTapServer{stream}) } type Api_TapServer interface { Send(*TapEvent) error grpc.ServerStream } type apiTapServer struct { grpc.ServerStream } func (x *apiTapServer) Send(m *TapEvent) error { return x.ServerStream.SendMsg(m) } func _Api_TapByResource_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(TapByResourceRequest) if err := stream.RecvMsg(m); err != nil { return err } return srv.(ApiServer).TapByResource(m, &apiTapByResourceServer{stream}) } type Api_TapByResourceServer interface { Send(*TapEvent) error grpc.ServerStream } type apiTapByResourceServer struct { grpc.ServerStream } func (x *apiTapByResourceServer) Send(m *TapEvent) error { return x.ServerStream.SendMsg(m) } func _Api_Version_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(Empty) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ApiServer).Version(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkerd2.public.Api/Version", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).Version(ctx, req.(*Empty)) } return interceptor(ctx, in, info, handler) } func _Api_SelfCheck_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(healthcheck.SelfCheckRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ApiServer).SelfCheck(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkerd2.public.Api/SelfCheck", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).SelfCheck(ctx, req.(*healthcheck.SelfCheckRequest)) } return interceptor(ctx, in, info, handler) } func _Api_Config_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(Empty) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(ApiServer).Config(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/linkerd2.public.Api/Config", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ApiServer).Config(ctx, req.(*Empty)) } return interceptor(ctx, in, info, handler) } var _Api_serviceDesc = grpc.ServiceDesc{ ServiceName: "linkerd2.public.Api", HandlerType: (*ApiServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "StatSummary", Handler: _Api_StatSummary_Handler, }, { MethodName: "Edges", Handler: _Api_Edges_Handler, }, { MethodName: "Gateways", Handler: _Api_Gateways_Handler, }, { MethodName: "TopRoutes", Handler: _Api_TopRoutes_Handler, }, { MethodName: "ListPods", Handler: _Api_ListPods_Handler, }, { MethodName: "ListServices", Handler: _Api_ListServices_Handler, }, { MethodName: "Version", Handler: _Api_Version_Handler, }, { MethodName: "SelfCheck", Handler: _Api_SelfCheck_Handler, }, { MethodName: "Config", Handler: _Api_Config_Handler, }, }, Streams: []grpc.StreamDesc{ { StreamName: "Tap", Handler: _Api_Tap_Handler, ServerStreams: true, }, { StreamName: "TapByResource", Handler: _Api_TapByResource_Handler, ServerStreams: true, }, }, Metadata: "public.proto", }