// Code generated by protoc-gen-go. DO NOT EDIT.
// source: public/api.proto

/*
Package conduit_public is a generated protocol buffer package.

It is generated from these files:
	public/api.proto

It has these top-level messages:
	Empty
	VersionInfo
	ListPodsResponse
	Pod
	TapRequest
	TapByResourceRequest
	ApiError
	Resource
	ResourceSelection
	ResourceError
	StatSummaryRequest
	StatSummaryResponse
	BasicStats
	StatTable
*/
package conduit_public

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import google_protobuf "github.com/golang/protobuf/ptypes/duration"
import conduit_common "github.com/runconduit/conduit/controller/gen/common"
import conduit_common_healthcheck "github.com/runconduit/conduit/controller/gen/common/healthcheck"

import (
	context "golang.org/x/net/context"
	grpc "google.golang.org/grpc"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package

type Empty struct {
}

func (m *Empty) Reset()                    { *m = Empty{} }
func (m *Empty) String() string            { return proto.CompactTextString(m) }
func (*Empty) ProtoMessage()               {}
func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }

type VersionInfo struct {
	GoVersion      string `protobuf:"bytes,1,opt,name=goVersion" json:"goVersion,omitempty"`
	BuildDate      string `protobuf:"bytes,2,opt,name=buildDate" json:"buildDate,omitempty"`
	ReleaseVersion string `protobuf:"bytes,3,opt,name=releaseVersion" json:"releaseVersion,omitempty"`
}

func (m *VersionInfo) Reset()                    { *m = VersionInfo{} }
func (m *VersionInfo) String() string            { return proto.CompactTextString(m) }
func (*VersionInfo) ProtoMessage()               {}
func (*VersionInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }

func (m *VersionInfo) GetGoVersion() string {
	if m != nil {
		return m.GoVersion
	}
	return ""
}

func (m *VersionInfo) GetBuildDate() string {
	if m != nil {
		return m.BuildDate
	}
	return ""
}

func (m *VersionInfo) GetReleaseVersion() string {
	if m != nil {
		return m.ReleaseVersion
	}
	return ""
}

type ListPodsResponse struct {
	Pods []*Pod `protobuf:"bytes,1,rep,name=pods" json:"pods,omitempty"`
}

func (m *ListPodsResponse) Reset()                    { *m = ListPodsResponse{} }
func (m *ListPodsResponse) String() string            { return proto.CompactTextString(m) }
func (*ListPodsResponse) ProtoMessage()               {}
func (*ListPodsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }

func (m *ListPodsResponse) GetPods() []*Pod {
	if m != nil {
		return m.Pods
	}
	return nil
}

type Pod struct {
	Name                string                    `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	PodIP               string                    `protobuf:"bytes,2,opt,name=podIP" json:"podIP,omitempty"`
	Deployment          string                    `protobuf:"bytes,3,opt,name=deployment" json:"deployment,omitempty"`
	Status              string                    `protobuf:"bytes,4,opt,name=status" json:"status,omitempty"`
	Added               bool                      `protobuf:"varint,5,opt,name=added" json:"added,omitempty"`
	SinceLastReport     *google_protobuf.Duration `protobuf:"bytes,6,opt,name=sinceLastReport" json:"sinceLastReport,omitempty"`
	ControllerNamespace string                    `protobuf:"bytes,7,opt,name=controllerNamespace" json:"controllerNamespace,omitempty"`
	ControlPlane        bool                      `protobuf:"varint,8,opt,name=controlPlane" json:"controlPlane,omitempty"`
}

func (m *Pod) Reset()                    { *m = Pod{} }
func (m *Pod) String() string            { return proto.CompactTextString(m) }
func (*Pod) ProtoMessage()               {}
func (*Pod) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }

func (m *Pod) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *Pod) GetPodIP() string {
	if m != nil {
		return m.PodIP
	}
	return ""
}

func (m *Pod) GetDeployment() string {
	if m != nil {
		return m.Deployment
	}
	return ""
}

func (m *Pod) GetStatus() string {
	if m != nil {
		return m.Status
	}
	return ""
}

func (m *Pod) GetAdded() bool {
	if m != nil {
		return m.Added
	}
	return false
}

func (m *Pod) GetSinceLastReport() *google_protobuf.Duration {
	if m != nil {
		return m.SinceLastReport
	}
	return nil
}

func (m *Pod) GetControllerNamespace() string {
	if m != nil {
		return m.ControllerNamespace
	}
	return ""
}

func (m *Pod) GetControlPlane() bool {
	if m != nil {
		return m.ControlPlane
	}
	return false
}

type TapRequest struct {
	// Types that are valid to be assigned 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" json:"maxRps,omitempty"`
	ToPort    uint32  `protobuf:"varint,4,opt,name=toPort" json:"toPort,omitempty"`
	ToIP      string  `protobuf:"bytes,5,opt,name=toIP" json:"toIP,omitempty"`
	FromPort  uint32  `protobuf:"varint,6,opt,name=fromPort" json:"fromPort,omitempty"`
	FromIP    string  `protobuf:"bytes,7,opt,name=fromIP" json:"fromIP,omitempty"`
	Scheme    string  `protobuf:"bytes,8,opt,name=scheme" json:"scheme,omitempty"`
	Method    string  `protobuf:"bytes,9,opt,name=method" json:"method,omitempty"`
	Authority string  `protobuf:"bytes,10,opt,name=authority" json:"authority,omitempty"`
	Path      string  `protobuf:"bytes,11,opt,name=path" json:"path,omitempty"`
}

func (m *TapRequest) Reset()                    { *m = TapRequest{} }
func (m *TapRequest) String() string            { return proto.CompactTextString(m) }
func (*TapRequest) ProtoMessage()               {}
func (*TapRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }

type isTapRequest_Target interface{ isTapRequest_Target() }

type TapRequest_Pod struct {
	Pod string `protobuf:"bytes,1,opt,name=pod,oneof"`
}
type TapRequest_Deployment struct {
	Deployment string `protobuf:"bytes,2,opt,name=deployment,oneof"`
}

func (*TapRequest_Pod) isTapRequest_Target()        {}
func (*TapRequest_Deployment) isTapRequest_Target() {}

func (m *TapRequest) GetTarget() isTapRequest_Target {
	if m != nil {
		return m.Target
	}
	return nil
}

func (m *TapRequest) GetPod() string {
	if x, ok := m.GetTarget().(*TapRequest_Pod); ok {
		return x.Pod
	}
	return ""
}

func (m *TapRequest) GetDeployment() string {
	if x, ok := m.GetTarget().(*TapRequest_Deployment); ok {
		return x.Deployment
	}
	return ""
}

func (m *TapRequest) GetMaxRps() float32 {
	if m != nil {
		return m.MaxRps
	}
	return 0
}

func (m *TapRequest) GetToPort() uint32 {
	if m != nil {
		return m.ToPort
	}
	return 0
}

func (m *TapRequest) GetToIP() string {
	if m != nil {
		return m.ToIP
	}
	return ""
}

func (m *TapRequest) GetFromPort() uint32 {
	if m != nil {
		return m.FromPort
	}
	return 0
}

func (m *TapRequest) GetFromIP() string {
	if m != nil {
		return m.FromIP
	}
	return ""
}

func (m *TapRequest) GetScheme() string {
	if m != nil {
		return m.Scheme
	}
	return ""
}

func (m *TapRequest) GetMethod() string {
	if m != nil {
		return m.Method
	}
	return ""
}

func (m *TapRequest) GetAuthority() string {
	if m != nil {
		return m.Authority
	}
	return ""
}

func (m *TapRequest) GetPath() string {
	if m != nil {
		return m.Path
	}
	return ""
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*TapRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _TapRequest_OneofMarshaler, _TapRequest_OneofUnmarshaler, _TapRequest_OneofSizer, []interface{}{
		(*TapRequest_Pod)(nil),
		(*TapRequest_Deployment)(nil),
	}
}

func _TapRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*TapRequest)
	// target
	switch x := m.Target.(type) {
	case *TapRequest_Pod:
		b.EncodeVarint(1<<3 | proto.WireBytes)
		b.EncodeStringBytes(x.Pod)
	case *TapRequest_Deployment:
		b.EncodeVarint(2<<3 | proto.WireBytes)
		b.EncodeStringBytes(x.Deployment)
	case nil:
	default:
		return fmt.Errorf("TapRequest.Target has unexpected type %T", x)
	}
	return nil
}

func _TapRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*TapRequest)
	switch tag {
	case 1: // target.pod
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeStringBytes()
		m.Target = &TapRequest_Pod{x}
		return true, err
	case 2: // target.deployment
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeStringBytes()
		m.Target = &TapRequest_Deployment{x}
		return true, err
	default:
		return false, nil
	}
}

func _TapRequest_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*TapRequest)
	// target
	switch x := m.Target.(type) {
	case *TapRequest_Pod:
		n += proto.SizeVarint(1<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(len(x.Pod)))
		n += len(x.Pod)
	case *TapRequest_Deployment:
		n += proto.SizeVarint(2<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(len(x.Deployment)))
		n += len(x.Deployment)
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

// A tap request over kubernetes resources.
type TapByResourceRequest struct {
	// Describes the kubernetes pods that should be tapped.
	Target *ResourceSelection `protobuf:"bytes,1,opt,name=target" json:"target,omitempty"`
	// Selects over events to be reported.
	Match *TapByResourceRequest_Match `protobuf:"bytes,2,opt,name=match" json:"match,omitempty"`
	// Limits the number of events to be inspected.
	MaxRps float32 `protobuf:"fixed32,3,opt,name=maxRps" json:"maxRps,omitempty"`
}

func (m *TapByResourceRequest) Reset()                    { *m = TapByResourceRequest{} }
func (m *TapByResourceRequest) String() string            { return proto.CompactTextString(m) }
func (*TapByResourceRequest) ProtoMessage()               {}
func (*TapByResourceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }

func (m *TapByResourceRequest) GetTarget() *ResourceSelection {
	if m != nil {
		return m.Target
	}
	return nil
}

func (m *TapByResourceRequest) GetMatch() *TapByResourceRequest_Match {
	if m != nil {
		return m.Match
	}
	return nil
}

func (m *TapByResourceRequest) GetMaxRps() float32 {
	if m != nil {
		return m.MaxRps
	}
	return 0
}

type TapByResourceRequest_Match struct {
	// Types that are valid to be assigned 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 (m *TapByResourceRequest_Match) Reset()                    { *m = TapByResourceRequest_Match{} }
func (m *TapByResourceRequest_Match) String() string            { return proto.CompactTextString(m) }
func (*TapByResourceRequest_Match) ProtoMessage()               {}
func (*TapByResourceRequest_Match) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 0} }

type isTapByResourceRequest_Match_Match interface{ isTapByResourceRequest_Match_Match() }

type TapByResourceRequest_Match_All struct {
	All *TapByResourceRequest_Match_Seq `protobuf:"bytes,1,opt,name=all,oneof"`
}
type TapByResourceRequest_Match_Any struct {
	Any *TapByResourceRequest_Match_Seq `protobuf:"bytes,2,opt,name=any,oneof"`
}
type TapByResourceRequest_Match_Not struct {
	Not *TapByResourceRequest_Match `protobuf:"bytes,3,opt,name=not,oneof"`
}
type TapByResourceRequest_Match_Destinations struct {
	Destinations *ResourceSelection `protobuf:"bytes,4,opt,name=destinations,oneof"`
}
type TapByResourceRequest_Match_Http_ struct {
	Http *TapByResourceRequest_Match_Http `protobuf:"bytes,5,opt,name=http,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()        {}

func (m *TapByResourceRequest_Match) GetMatch() isTapByResourceRequest_Match_Match {
	if m != nil {
		return m.Match
	}
	return nil
}

func (m *TapByResourceRequest_Match) GetAll() *TapByResourceRequest_Match_Seq {
	if x, ok := m.GetMatch().(*TapByResourceRequest_Match_All); ok {
		return x.All
	}
	return nil
}

func (m *TapByResourceRequest_Match) GetAny() *TapByResourceRequest_Match_Seq {
	if x, ok := m.GetMatch().(*TapByResourceRequest_Match_Any); ok {
		return x.Any
	}
	return nil
}

func (m *TapByResourceRequest_Match) GetNot() *TapByResourceRequest_Match {
	if x, ok := m.GetMatch().(*TapByResourceRequest_Match_Not); ok {
		return x.Not
	}
	return nil
}

func (m *TapByResourceRequest_Match) GetDestinations() *ResourceSelection {
	if x, ok := m.GetMatch().(*TapByResourceRequest_Match_Destinations); ok {
		return x.Destinations
	}
	return nil
}

func (m *TapByResourceRequest_Match) GetHttp() *TapByResourceRequest_Match_Http {
	if x, ok := m.GetMatch().(*TapByResourceRequest_Match_Http_); ok {
		return x.Http
	}
	return nil
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*TapByResourceRequest_Match) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _TapByResourceRequest_Match_OneofMarshaler, _TapByResourceRequest_Match_OneofUnmarshaler, _TapByResourceRequest_Match_OneofSizer, []interface{}{
		(*TapByResourceRequest_Match_All)(nil),
		(*TapByResourceRequest_Match_Any)(nil),
		(*TapByResourceRequest_Match_Not)(nil),
		(*TapByResourceRequest_Match_Destinations)(nil),
		(*TapByResourceRequest_Match_Http_)(nil),
	}
}

func _TapByResourceRequest_Match_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*TapByResourceRequest_Match)
	// match
	switch x := m.Match.(type) {
	case *TapByResourceRequest_Match_All:
		b.EncodeVarint(1<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.All); err != nil {
			return err
		}
	case *TapByResourceRequest_Match_Any:
		b.EncodeVarint(2<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Any); err != nil {
			return err
		}
	case *TapByResourceRequest_Match_Not:
		b.EncodeVarint(3<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Not); err != nil {
			return err
		}
	case *TapByResourceRequest_Match_Destinations:
		b.EncodeVarint(4<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Destinations); err != nil {
			return err
		}
	case *TapByResourceRequest_Match_Http_:
		b.EncodeVarint(5<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Http); err != nil {
			return err
		}
	case nil:
	default:
		return fmt.Errorf("TapByResourceRequest_Match.Match has unexpected type %T", x)
	}
	return nil
}

func _TapByResourceRequest_Match_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*TapByResourceRequest_Match)
	switch tag {
	case 1: // match.all
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(TapByResourceRequest_Match_Seq)
		err := b.DecodeMessage(msg)
		m.Match = &TapByResourceRequest_Match_All{msg}
		return true, err
	case 2: // match.any
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(TapByResourceRequest_Match_Seq)
		err := b.DecodeMessage(msg)
		m.Match = &TapByResourceRequest_Match_Any{msg}
		return true, err
	case 3: // match.not
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(TapByResourceRequest_Match)
		err := b.DecodeMessage(msg)
		m.Match = &TapByResourceRequest_Match_Not{msg}
		return true, err
	case 4: // match.destinations
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(ResourceSelection)
		err := b.DecodeMessage(msg)
		m.Match = &TapByResourceRequest_Match_Destinations{msg}
		return true, err
	case 5: // match.http
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(TapByResourceRequest_Match_Http)
		err := b.DecodeMessage(msg)
		m.Match = &TapByResourceRequest_Match_Http_{msg}
		return true, err
	default:
		return false, nil
	}
}

func _TapByResourceRequest_Match_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*TapByResourceRequest_Match)
	// match
	switch x := m.Match.(type) {
	case *TapByResourceRequest_Match_All:
		s := proto.Size(x.All)
		n += proto.SizeVarint(1<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *TapByResourceRequest_Match_Any:
		s := proto.Size(x.Any)
		n += proto.SizeVarint(2<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *TapByResourceRequest_Match_Not:
		s := proto.Size(x.Not)
		n += proto.SizeVarint(3<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *TapByResourceRequest_Match_Destinations:
		s := proto.Size(x.Destinations)
		n += proto.SizeVarint(4<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *TapByResourceRequest_Match_Http_:
		s := proto.Size(x.Http)
		n += proto.SizeVarint(5<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

type TapByResourceRequest_Match_Seq struct {
	Matches []*TapByResourceRequest_Match `protobuf:"bytes,1,rep,name=matches" json:"matches,omitempty"`
}

func (m *TapByResourceRequest_Match_Seq) Reset()         { *m = TapByResourceRequest_Match_Seq{} }
func (m *TapByResourceRequest_Match_Seq) String() string { return proto.CompactTextString(m) }
func (*TapByResourceRequest_Match_Seq) ProtoMessage()    {}
func (*TapByResourceRequest_Match_Seq) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{5, 0, 0}
}

func (m *TapByResourceRequest_Match_Seq) GetMatches() []*TapByResourceRequest_Match {
	if m != nil {
		return m.Matches
	}
	return nil
}

type TapByResourceRequest_Match_Http struct {
	// Types that are valid to be assigned 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 (m *TapByResourceRequest_Match_Http) Reset()         { *m = TapByResourceRequest_Match_Http{} }
func (m *TapByResourceRequest_Match_Http) String() string { return proto.CompactTextString(m) }
func (*TapByResourceRequest_Match_Http) ProtoMessage()    {}
func (*TapByResourceRequest_Match_Http) Descriptor() ([]byte, []int) {
	return fileDescriptor0, []int{5, 0, 1}
}

type isTapByResourceRequest_Match_Http_Match interface{ isTapByResourceRequest_Match_Http_Match() }

type TapByResourceRequest_Match_Http_Scheme struct {
	Scheme string `protobuf:"bytes,1,opt,name=scheme,oneof"`
}
type TapByResourceRequest_Match_Http_Method struct {
	Method string `protobuf:"bytes,2,opt,name=method,oneof"`
}
type TapByResourceRequest_Match_Http_Authority struct {
	Authority string `protobuf:"bytes,3,opt,name=authority,oneof"`
}
type TapByResourceRequest_Match_Http_Path struct {
	Path string `protobuf:"bytes,4,opt,name=path,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()      {}

func (m *TapByResourceRequest_Match_Http) GetMatch() isTapByResourceRequest_Match_Http_Match {
	if m != nil {
		return m.Match
	}
	return nil
}

func (m *TapByResourceRequest_Match_Http) GetScheme() string {
	if x, ok := m.GetMatch().(*TapByResourceRequest_Match_Http_Scheme); ok {
		return x.Scheme
	}
	return ""
}

func (m *TapByResourceRequest_Match_Http) GetMethod() string {
	if x, ok := m.GetMatch().(*TapByResourceRequest_Match_Http_Method); ok {
		return x.Method
	}
	return ""
}

func (m *TapByResourceRequest_Match_Http) GetAuthority() string {
	if x, ok := m.GetMatch().(*TapByResourceRequest_Match_Http_Authority); ok {
		return x.Authority
	}
	return ""
}

func (m *TapByResourceRequest_Match_Http) GetPath() string {
	if x, ok := m.GetMatch().(*TapByResourceRequest_Match_Http_Path); ok {
		return x.Path
	}
	return ""
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*TapByResourceRequest_Match_Http) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _TapByResourceRequest_Match_Http_OneofMarshaler, _TapByResourceRequest_Match_Http_OneofUnmarshaler, _TapByResourceRequest_Match_Http_OneofSizer, []interface{}{
		(*TapByResourceRequest_Match_Http_Scheme)(nil),
		(*TapByResourceRequest_Match_Http_Method)(nil),
		(*TapByResourceRequest_Match_Http_Authority)(nil),
		(*TapByResourceRequest_Match_Http_Path)(nil),
	}
}

func _TapByResourceRequest_Match_Http_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*TapByResourceRequest_Match_Http)
	// match
	switch x := m.Match.(type) {
	case *TapByResourceRequest_Match_Http_Scheme:
		b.EncodeVarint(1<<3 | proto.WireBytes)
		b.EncodeStringBytes(x.Scheme)
	case *TapByResourceRequest_Match_Http_Method:
		b.EncodeVarint(2<<3 | proto.WireBytes)
		b.EncodeStringBytes(x.Method)
	case *TapByResourceRequest_Match_Http_Authority:
		b.EncodeVarint(3<<3 | proto.WireBytes)
		b.EncodeStringBytes(x.Authority)
	case *TapByResourceRequest_Match_Http_Path:
		b.EncodeVarint(4<<3 | proto.WireBytes)
		b.EncodeStringBytes(x.Path)
	case nil:
	default:
		return fmt.Errorf("TapByResourceRequest_Match_Http.Match has unexpected type %T", x)
	}
	return nil
}

func _TapByResourceRequest_Match_Http_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*TapByResourceRequest_Match_Http)
	switch tag {
	case 1: // match.scheme
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeStringBytes()
		m.Match = &TapByResourceRequest_Match_Http_Scheme{x}
		return true, err
	case 2: // match.method
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeStringBytes()
		m.Match = &TapByResourceRequest_Match_Http_Method{x}
		return true, err
	case 3: // match.authority
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeStringBytes()
		m.Match = &TapByResourceRequest_Match_Http_Authority{x}
		return true, err
	case 4: // match.path
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeStringBytes()
		m.Match = &TapByResourceRequest_Match_Http_Path{x}
		return true, err
	default:
		return false, nil
	}
}

func _TapByResourceRequest_Match_Http_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*TapByResourceRequest_Match_Http)
	// match
	switch x := m.Match.(type) {
	case *TapByResourceRequest_Match_Http_Scheme:
		n += proto.SizeVarint(1<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(len(x.Scheme)))
		n += len(x.Scheme)
	case *TapByResourceRequest_Match_Http_Method:
		n += proto.SizeVarint(2<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(len(x.Method)))
		n += len(x.Method)
	case *TapByResourceRequest_Match_Http_Authority:
		n += proto.SizeVarint(3<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(len(x.Authority)))
		n += len(x.Authority)
	case *TapByResourceRequest_Match_Http_Path:
		n += proto.SizeVarint(4<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(len(x.Path)))
		n += len(x.Path)
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

type ApiError struct {
	Error string `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"`
}

func (m *ApiError) Reset()                    { *m = ApiError{} }
func (m *ApiError) String() string            { return proto.CompactTextString(m) }
func (*ApiError) ProtoMessage()               {}
func (*ApiError) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }

func (m *ApiError) GetError() string {
	if m != nil {
		return m.Error
	}
	return ""
}

type Resource struct {
	// The namespace the resource is in.
	//
	// If empty, indicates all namespaces should be considered.
	Namespace string `protobuf:"bytes,1,opt,name=namespace" json:"namespace,omitempty"`
	// The type of Kubernetes resource.
	//
	// E.g. pod, deployment, service, ...
	//
	// If `all` refers, to all resource types.
	Type string `protobuf:"bytes,2,opt,name=type" json:"type,omitempty"`
	// An optional Kubernetes resource name.
	Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
}

func (m *Resource) Reset()                    { *m = Resource{} }
func (m *Resource) String() string            { return proto.CompactTextString(m) }
func (*Resource) ProtoMessage()               {}
func (*Resource) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }

func (m *Resource) GetNamespace() string {
	if m != nil {
		return m.Namespace
	}
	return ""
}

func (m *Resource) GetType() string {
	if m != nil {
		return m.Type
	}
	return ""
}

func (m *Resource) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

type ResourceSelection struct {
	// Identifies a Kubernetes resource.
	Resource *Resource `protobuf:"bytes,1,opt,name=resource" json:"resource,omitempty"`
	// A string-formatted Kubernetes label selector as passed to `kubectl get
	// --selector`.
	//
	// XXX in the future this may be superceded by a data structure that more
	// richly describes a parsed label selector.
	LabelSelector string `protobuf:"bytes,2,opt,name=label_selector,json=labelSelector" json:"label_selector,omitempty"`
}

func (m *ResourceSelection) Reset()                    { *m = ResourceSelection{} }
func (m *ResourceSelection) String() string            { return proto.CompactTextString(m) }
func (*ResourceSelection) ProtoMessage()               {}
func (*ResourceSelection) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }

func (m *ResourceSelection) GetResource() *Resource {
	if m != nil {
		return m.Resource
	}
	return nil
}

func (m *ResourceSelection) GetLabelSelector() string {
	if m != nil {
		return m.LabelSelector
	}
	return ""
}

type ResourceError struct {
	Resource *Resource `protobuf:"bytes,1,opt,name=resource" json:"resource,omitempty"`
	Error    string    `protobuf:"bytes,2,opt,name=error" json:"error,omitempty"`
}

func (m *ResourceError) Reset()                    { *m = ResourceError{} }
func (m *ResourceError) String() string            { return proto.CompactTextString(m) }
func (*ResourceError) ProtoMessage()               {}
func (*ResourceError) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }

func (m *ResourceError) GetResource() *Resource {
	if m != nil {
		return m.Resource
	}
	return nil
}

func (m *ResourceError) GetError() string {
	if m != nil {
		return m.Error
	}
	return ""
}

type StatSummaryRequest struct {
	Selector   *ResourceSelection `protobuf:"bytes,1,opt,name=selector" json:"selector,omitempty"`
	TimeWindow string             `protobuf:"bytes,2,opt,name=time_window,json=timeWindow" json:"time_window,omitempty"`
	// Types that are valid to be assigned to Outbound:
	//	*StatSummaryRequest_None
	//	*StatSummaryRequest_ToResource
	//	*StatSummaryRequest_FromResource
	Outbound isStatSummaryRequest_Outbound `protobuf_oneof:"outbound"`
}

func (m *StatSummaryRequest) Reset()                    { *m = StatSummaryRequest{} }
func (m *StatSummaryRequest) String() string            { return proto.CompactTextString(m) }
func (*StatSummaryRequest) ProtoMessage()               {}
func (*StatSummaryRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }

type isStatSummaryRequest_Outbound interface{ isStatSummaryRequest_Outbound() }

type StatSummaryRequest_None struct {
	None *Empty `protobuf:"bytes,3,opt,name=none,oneof"`
}
type StatSummaryRequest_ToResource struct {
	ToResource *Resource `protobuf:"bytes,4,opt,name=to_resource,json=toResource,oneof"`
}
type StatSummaryRequest_FromResource struct {
	FromResource *Resource `protobuf:"bytes,5,opt,name=from_resource,json=fromResource,oneof"`
}

func (*StatSummaryRequest_None) isStatSummaryRequest_Outbound()         {}
func (*StatSummaryRequest_ToResource) isStatSummaryRequest_Outbound()   {}
func (*StatSummaryRequest_FromResource) isStatSummaryRequest_Outbound() {}

func (m *StatSummaryRequest) GetOutbound() isStatSummaryRequest_Outbound {
	if m != nil {
		return m.Outbound
	}
	return nil
}

func (m *StatSummaryRequest) GetSelector() *ResourceSelection {
	if m != nil {
		return m.Selector
	}
	return nil
}

func (m *StatSummaryRequest) GetTimeWindow() string {
	if m != nil {
		return m.TimeWindow
	}
	return ""
}

func (m *StatSummaryRequest) GetNone() *Empty {
	if x, ok := m.GetOutbound().(*StatSummaryRequest_None); ok {
		return x.None
	}
	return nil
}

func (m *StatSummaryRequest) GetToResource() *Resource {
	if x, ok := m.GetOutbound().(*StatSummaryRequest_ToResource); ok {
		return x.ToResource
	}
	return nil
}

func (m *StatSummaryRequest) GetFromResource() *Resource {
	if x, ok := m.GetOutbound().(*StatSummaryRequest_FromResource); ok {
		return x.FromResource
	}
	return nil
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*StatSummaryRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _StatSummaryRequest_OneofMarshaler, _StatSummaryRequest_OneofUnmarshaler, _StatSummaryRequest_OneofSizer, []interface{}{
		(*StatSummaryRequest_None)(nil),
		(*StatSummaryRequest_ToResource)(nil),
		(*StatSummaryRequest_FromResource)(nil),
	}
}

func _StatSummaryRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*StatSummaryRequest)
	// outbound
	switch x := m.Outbound.(type) {
	case *StatSummaryRequest_None:
		b.EncodeVarint(3<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.None); err != nil {
			return err
		}
	case *StatSummaryRequest_ToResource:
		b.EncodeVarint(4<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.ToResource); err != nil {
			return err
		}
	case *StatSummaryRequest_FromResource:
		b.EncodeVarint(5<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.FromResource); err != nil {
			return err
		}
	case nil:
	default:
		return fmt.Errorf("StatSummaryRequest.Outbound has unexpected type %T", x)
	}
	return nil
}

func _StatSummaryRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*StatSummaryRequest)
	switch tag {
	case 3: // outbound.none
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(Empty)
		err := b.DecodeMessage(msg)
		m.Outbound = &StatSummaryRequest_None{msg}
		return true, err
	case 4: // outbound.to_resource
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(Resource)
		err := b.DecodeMessage(msg)
		m.Outbound = &StatSummaryRequest_ToResource{msg}
		return true, err
	case 5: // outbound.from_resource
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(Resource)
		err := b.DecodeMessage(msg)
		m.Outbound = &StatSummaryRequest_FromResource{msg}
		return true, err
	default:
		return false, nil
	}
}

func _StatSummaryRequest_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*StatSummaryRequest)
	// outbound
	switch x := m.Outbound.(type) {
	case *StatSummaryRequest_None:
		s := proto.Size(x.None)
		n += proto.SizeVarint(3<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *StatSummaryRequest_ToResource:
		s := proto.Size(x.ToResource)
		n += proto.SizeVarint(4<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *StatSummaryRequest_FromResource:
		s := proto.Size(x.FromResource)
		n += proto.SizeVarint(5<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

type StatSummaryResponse struct {
	// Types that are valid to be assigned to Response:
	//	*StatSummaryResponse_Ok_
	//	*StatSummaryResponse_Error
	Response isStatSummaryResponse_Response `protobuf_oneof:"response"`
}

func (m *StatSummaryResponse) Reset()                    { *m = StatSummaryResponse{} }
func (m *StatSummaryResponse) String() string            { return proto.CompactTextString(m) }
func (*StatSummaryResponse) ProtoMessage()               {}
func (*StatSummaryResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }

type isStatSummaryResponse_Response interface{ isStatSummaryResponse_Response() }

type StatSummaryResponse_Ok_ struct {
	Ok *StatSummaryResponse_Ok `protobuf:"bytes,1,opt,name=ok,oneof"`
}
type StatSummaryResponse_Error struct {
	Error *ResourceError `protobuf:"bytes,2,opt,name=error,oneof"`
}

func (*StatSummaryResponse_Ok_) isStatSummaryResponse_Response()   {}
func (*StatSummaryResponse_Error) isStatSummaryResponse_Response() {}

func (m *StatSummaryResponse) GetResponse() isStatSummaryResponse_Response {
	if m != nil {
		return m.Response
	}
	return nil
}

func (m *StatSummaryResponse) GetOk() *StatSummaryResponse_Ok {
	if x, ok := m.GetResponse().(*StatSummaryResponse_Ok_); ok {
		return x.Ok
	}
	return nil
}

func (m *StatSummaryResponse) GetError() *ResourceError {
	if x, ok := m.GetResponse().(*StatSummaryResponse_Error); ok {
		return x.Error
	}
	return nil
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*StatSummaryResponse) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _StatSummaryResponse_OneofMarshaler, _StatSummaryResponse_OneofUnmarshaler, _StatSummaryResponse_OneofSizer, []interface{}{
		(*StatSummaryResponse_Ok_)(nil),
		(*StatSummaryResponse_Error)(nil),
	}
}

func _StatSummaryResponse_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*StatSummaryResponse)
	// response
	switch x := m.Response.(type) {
	case *StatSummaryResponse_Ok_:
		b.EncodeVarint(1<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Ok); err != nil {
			return err
		}
	case *StatSummaryResponse_Error:
		b.EncodeVarint(2<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Error); err != nil {
			return err
		}
	case nil:
	default:
		return fmt.Errorf("StatSummaryResponse.Response has unexpected type %T", x)
	}
	return nil
}

func _StatSummaryResponse_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*StatSummaryResponse)
	switch tag {
	case 1: // response.ok
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(StatSummaryResponse_Ok)
		err := b.DecodeMessage(msg)
		m.Response = &StatSummaryResponse_Ok_{msg}
		return true, err
	case 2: // response.error
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(ResourceError)
		err := b.DecodeMessage(msg)
		m.Response = &StatSummaryResponse_Error{msg}
		return true, err
	default:
		return false, nil
	}
}

func _StatSummaryResponse_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*StatSummaryResponse)
	// response
	switch x := m.Response.(type) {
	case *StatSummaryResponse_Ok_:
		s := proto.Size(x.Ok)
		n += proto.SizeVarint(1<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *StatSummaryResponse_Error:
		s := proto.Size(x.Error)
		n += proto.SizeVarint(2<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

type StatSummaryResponse_Ok struct {
	StatTables []*StatTable `protobuf:"bytes,1,rep,name=stat_tables,json=statTables" json:"stat_tables,omitempty"`
}

func (m *StatSummaryResponse_Ok) Reset()                    { *m = StatSummaryResponse_Ok{} }
func (m *StatSummaryResponse_Ok) String() string            { return proto.CompactTextString(m) }
func (*StatSummaryResponse_Ok) ProtoMessage()               {}
func (*StatSummaryResponse_Ok) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11, 0} }

func (m *StatSummaryResponse_Ok) GetStatTables() []*StatTable {
	if m != nil {
		return m.StatTables
	}
	return nil
}

type BasicStats struct {
	SuccessCount uint64 `protobuf:"varint,1,opt,name=success_count,json=successCount" json:"success_count,omitempty"`
	FailureCount uint64 `protobuf:"varint,2,opt,name=failure_count,json=failureCount" json:"failure_count,omitempty"`
	LatencyMsP50 uint64 `protobuf:"varint,3,opt,name=latency_ms_p50,json=latencyMsP50" json:"latency_ms_p50,omitempty"`
	LatencyMsP95 uint64 `protobuf:"varint,4,opt,name=latency_ms_p95,json=latencyMsP95" json:"latency_ms_p95,omitempty"`
	LatencyMsP99 uint64 `protobuf:"varint,5,opt,name=latency_ms_p99,json=latencyMsP99" json:"latency_ms_p99,omitempty"`
	// count of requests that are TLSed
	MeshedRequestCount uint64 `protobuf:"varint,6,opt,name=meshed_request_count,json=meshedRequestCount" json:"meshed_request_count,omitempty"`
}

func (m *BasicStats) Reset()                    { *m = BasicStats{} }
func (m *BasicStats) String() string            { return proto.CompactTextString(m) }
func (*BasicStats) ProtoMessage()               {}
func (*BasicStats) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }

func (m *BasicStats) GetSuccessCount() uint64 {
	if m != nil {
		return m.SuccessCount
	}
	return 0
}

func (m *BasicStats) GetFailureCount() uint64 {
	if m != nil {
		return m.FailureCount
	}
	return 0
}

func (m *BasicStats) GetLatencyMsP50() uint64 {
	if m != nil {
		return m.LatencyMsP50
	}
	return 0
}

func (m *BasicStats) GetLatencyMsP95() uint64 {
	if m != nil {
		return m.LatencyMsP95
	}
	return 0
}

func (m *BasicStats) GetLatencyMsP99() uint64 {
	if m != nil {
		return m.LatencyMsP99
	}
	return 0
}

func (m *BasicStats) GetMeshedRequestCount() uint64 {
	if m != nil {
		return m.MeshedRequestCount
	}
	return 0
}

type StatTable struct {
	// Types that are valid to be assigned to Table:
	//	*StatTable_PodGroup_
	Table isStatTable_Table `protobuf_oneof:"table"`
}

func (m *StatTable) Reset()                    { *m = StatTable{} }
func (m *StatTable) String() string            { return proto.CompactTextString(m) }
func (*StatTable) ProtoMessage()               {}
func (*StatTable) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }

type isStatTable_Table interface{ isStatTable_Table() }

type StatTable_PodGroup_ struct {
	PodGroup *StatTable_PodGroup `protobuf:"bytes,1,opt,name=pod_group,json=podGroup,oneof"`
}

func (*StatTable_PodGroup_) isStatTable_Table() {}

func (m *StatTable) GetTable() isStatTable_Table {
	if m != nil {
		return m.Table
	}
	return nil
}

func (m *StatTable) GetPodGroup() *StatTable_PodGroup {
	if x, ok := m.GetTable().(*StatTable_PodGroup_); ok {
		return x.PodGroup
	}
	return nil
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*StatTable) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _StatTable_OneofMarshaler, _StatTable_OneofUnmarshaler, _StatTable_OneofSizer, []interface{}{
		(*StatTable_PodGroup_)(nil),
	}
}

func _StatTable_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*StatTable)
	// table
	switch x := m.Table.(type) {
	case *StatTable_PodGroup_:
		b.EncodeVarint(1<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.PodGroup); err != nil {
			return err
		}
	case nil:
	default:
		return fmt.Errorf("StatTable.Table has unexpected type %T", x)
	}
	return nil
}

func _StatTable_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*StatTable)
	switch tag {
	case 1: // table.pod_group
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(StatTable_PodGroup)
		err := b.DecodeMessage(msg)
		m.Table = &StatTable_PodGroup_{msg}
		return true, err
	default:
		return false, nil
	}
}

func _StatTable_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*StatTable)
	// table
	switch x := m.Table.(type) {
	case *StatTable_PodGroup_:
		s := proto.Size(x.PodGroup)
		n += proto.SizeVarint(1<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

type StatTable_PodGroup struct {
	Rows []*StatTable_PodGroup_Row `protobuf:"bytes,1,rep,name=rows" json:"rows,omitempty"`
}

func (m *StatTable_PodGroup) Reset()                    { *m = StatTable_PodGroup{} }
func (m *StatTable_PodGroup) String() string            { return proto.CompactTextString(m) }
func (*StatTable_PodGroup) ProtoMessage()               {}
func (*StatTable_PodGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13, 0} }

func (m *StatTable_PodGroup) GetRows() []*StatTable_PodGroup_Row {
	if m != nil {
		return m.Rows
	}
	return nil
}

type StatTable_PodGroup_Row struct {
	Resource   *Resource `protobuf:"bytes,1,opt,name=resource" json:"resource,omitempty"`
	TimeWindow string    `protobuf:"bytes,2,opt,name=time_window,json=timeWindow" json:"time_window,omitempty"`
	// number of pending or running pods in this resource that have conduit injected
	MeshedPodCount uint64 `protobuf:"varint,3,opt,name=meshed_pod_count,json=meshedPodCount" 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" 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" json:"failed_pod_count,omitempty"`
	Stats          *BasicStats `protobuf:"bytes,5,opt,name=stats" json:"stats,omitempty"`
}

func (m *StatTable_PodGroup_Row) Reset()                    { *m = StatTable_PodGroup_Row{} }
func (m *StatTable_PodGroup_Row) String() string            { return proto.CompactTextString(m) }
func (*StatTable_PodGroup_Row) ProtoMessage()               {}
func (*StatTable_PodGroup_Row) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13, 0, 0} }

func (m *StatTable_PodGroup_Row) GetResource() *Resource {
	if m != nil {
		return m.Resource
	}
	return nil
}

func (m *StatTable_PodGroup_Row) GetTimeWindow() string {
	if m != nil {
		return m.TimeWindow
	}
	return ""
}

func (m *StatTable_PodGroup_Row) GetMeshedPodCount() uint64 {
	if m != nil {
		return m.MeshedPodCount
	}
	return 0
}

func (m *StatTable_PodGroup_Row) GetRunningPodCount() uint64 {
	if m != nil {
		return m.RunningPodCount
	}
	return 0
}

func (m *StatTable_PodGroup_Row) GetFailedPodCount() uint64 {
	if m != nil {
		return m.FailedPodCount
	}
	return 0
}

func (m *StatTable_PodGroup_Row) GetStats() *BasicStats {
	if m != nil {
		return m.Stats
	}
	return nil
}

func init() {
	proto.RegisterType((*Empty)(nil), "conduit.public.Empty")
	proto.RegisterType((*VersionInfo)(nil), "conduit.public.VersionInfo")
	proto.RegisterType((*ListPodsResponse)(nil), "conduit.public.ListPodsResponse")
	proto.RegisterType((*Pod)(nil), "conduit.public.Pod")
	proto.RegisterType((*TapRequest)(nil), "conduit.public.TapRequest")
	proto.RegisterType((*TapByResourceRequest)(nil), "conduit.public.TapByResourceRequest")
	proto.RegisterType((*TapByResourceRequest_Match)(nil), "conduit.public.TapByResourceRequest.Match")
	proto.RegisterType((*TapByResourceRequest_Match_Seq)(nil), "conduit.public.TapByResourceRequest.Match.Seq")
	proto.RegisterType((*TapByResourceRequest_Match_Http)(nil), "conduit.public.TapByResourceRequest.Match.Http")
	proto.RegisterType((*ApiError)(nil), "conduit.public.ApiError")
	proto.RegisterType((*Resource)(nil), "conduit.public.Resource")
	proto.RegisterType((*ResourceSelection)(nil), "conduit.public.ResourceSelection")
	proto.RegisterType((*ResourceError)(nil), "conduit.public.ResourceError")
	proto.RegisterType((*StatSummaryRequest)(nil), "conduit.public.StatSummaryRequest")
	proto.RegisterType((*StatSummaryResponse)(nil), "conduit.public.StatSummaryResponse")
	proto.RegisterType((*StatSummaryResponse_Ok)(nil), "conduit.public.StatSummaryResponse.Ok")
	proto.RegisterType((*BasicStats)(nil), "conduit.public.BasicStats")
	proto.RegisterType((*StatTable)(nil), "conduit.public.StatTable")
	proto.RegisterType((*StatTable_PodGroup)(nil), "conduit.public.StatTable.PodGroup")
	proto.RegisterType((*StatTable_PodGroup_Row)(nil), "conduit.public.StatTable.PodGroup.Row")
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn

// 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.SupportPackageIsVersion4

// Client API for Api service

type ApiClient interface {
	StatSummary(ctx context.Context, in *StatSummaryRequest, opts ...grpc.CallOption) (*StatSummaryResponse, error)
	ListPods(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*ListPodsResponse, error)
	// Superceded by `TapByResource`.
	Tap(ctx context.Context, in *TapRequest, opts ...grpc.CallOption) (Api_TapClient, error)
	// Executes tapping over Kubernetes resources.
	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 *conduit_common_healthcheck.SelfCheckRequest, opts ...grpc.CallOption) (*conduit_common_healthcheck.SelfCheckResponse, error)
}

type apiClient struct {
	cc *grpc.ClientConn
}

func NewApiClient(cc *grpc.ClientConn) ApiClient {
	return &apiClient{cc}
}

func (c *apiClient) StatSummary(ctx context.Context, in *StatSummaryRequest, opts ...grpc.CallOption) (*StatSummaryResponse, error) {
	out := new(StatSummaryResponse)
	err := grpc.Invoke(ctx, "/conduit.public.Api/StatSummary", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *apiClient) ListPods(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*ListPodsResponse, error) {
	out := new(ListPodsResponse)
	err := grpc.Invoke(ctx, "/conduit.public.Api/ListPods", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *apiClient) Tap(ctx context.Context, in *TapRequest, opts ...grpc.CallOption) (Api_TapClient, error) {
	stream, err := grpc.NewClientStream(ctx, &_Api_serviceDesc.Streams[0], c.cc, "/conduit.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() (*conduit_common.TapEvent, error)
	grpc.ClientStream
}

type apiTapClient struct {
	grpc.ClientStream
}

func (x *apiTapClient) Recv() (*conduit_common.TapEvent, error) {
	m := new(conduit_common.TapEvent)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *apiClient) TapByResource(ctx context.Context, in *TapByResourceRequest, opts ...grpc.CallOption) (Api_TapByResourceClient, error) {
	stream, err := grpc.NewClientStream(ctx, &_Api_serviceDesc.Streams[1], c.cc, "/conduit.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() (*conduit_common.TapEvent, error)
	grpc.ClientStream
}

type apiTapByResourceClient struct {
	grpc.ClientStream
}

func (x *apiTapByResourceClient) Recv() (*conduit_common.TapEvent, error) {
	m := new(conduit_common.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 := grpc.Invoke(ctx, "/conduit.public.Api/Version", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *apiClient) SelfCheck(ctx context.Context, in *conduit_common_healthcheck.SelfCheckRequest, opts ...grpc.CallOption) (*conduit_common_healthcheck.SelfCheckResponse, error) {
	out := new(conduit_common_healthcheck.SelfCheckResponse)
	err := grpc.Invoke(ctx, "/conduit.public.Api/SelfCheck", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// Server API for Api service

type ApiServer interface {
	StatSummary(context.Context, *StatSummaryRequest) (*StatSummaryResponse, error)
	ListPods(context.Context, *Empty) (*ListPodsResponse, error)
	// Superceded by `TapByResource`.
	Tap(*TapRequest, Api_TapServer) error
	// Executes tapping over Kubernetes resources.
	TapByResource(*TapByResourceRequest, Api_TapByResourceServer) error
	Version(context.Context, *Empty) (*VersionInfo, error)
	SelfCheck(context.Context, *conduit_common_healthcheck.SelfCheckRequest) (*conduit_common_healthcheck.SelfCheckResponse, error)
}

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: "/conduit.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_ListPods_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).ListPods(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/conduit.public.Api/ListPods",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ApiServer).ListPods(ctx, req.(*Empty))
	}
	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(*conduit_common.TapEvent) error
	grpc.ServerStream
}

type apiTapServer struct {
	grpc.ServerStream
}

func (x *apiTapServer) Send(m *conduit_common.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(*conduit_common.TapEvent) error
	grpc.ServerStream
}

type apiTapByResourceServer struct {
	grpc.ServerStream
}

func (x *apiTapByResourceServer) Send(m *conduit_common.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: "/conduit.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(conduit_common_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: "/conduit.public.Api/SelfCheck",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ApiServer).SelfCheck(ctx, req.(*conduit_common_healthcheck.SelfCheckRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _Api_serviceDesc = grpc.ServiceDesc{
	ServiceName: "conduit.public.Api",
	HandlerType: (*ApiServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "StatSummary",
			Handler:    _Api_StatSummary_Handler,
		},
		{
			MethodName: "ListPods",
			Handler:    _Api_ListPods_Handler,
		},
		{
			MethodName: "Version",
			Handler:    _Api_Version_Handler,
		},
		{
			MethodName: "SelfCheck",
			Handler:    _Api_SelfCheck_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "Tap",
			Handler:       _Api_Tap_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "TapByResource",
			Handler:       _Api_TapByResource_Handler,
			ServerStreams: true,
		},
	},
	Metadata: "public/api.proto",
}

func init() { proto.RegisterFile("public/api.proto", fileDescriptor0) }

var fileDescriptor0 = []byte{
	// 1395 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xdf, 0x72, 0xdb, 0xc4,
	0x17, 0xb6, 0x25, 0x3b, 0xb1, 0x8f, 0xe3, 0x34, 0xdd, 0xe4, 0xf7, 0x1b, 0xd5, 0x40, 0x31, 0x6a,
	0x29, 0x99, 0x02, 0x8e, 0xc7, 0x90, 0x19, 0xd2, 0x0e, 0xb4, 0x4d, 0x9b, 0xa9, 0x33, 0xb4, 0xd4,
	0x23, 0x67, 0x80, 0x19, 0x2e, 0x3c, 0x6b, 0x69, 0x13, 0x8b, 0x48, 0xda, 0x8d, 0x76, 0x45, 0xf0,
	0x1b, 0x70, 0xc5, 0x35, 0xcf, 0x00, 0x37, 0xf0, 0x2e, 0xcc, 0x70, 0xc7, 0x13, 0xf0, 0x04, 0x5c,
	0x31, 0xfb, 0x47, 0x8a, 0xed, 0x26, 0x6d, 0x9a, 0x2b, 0xef, 0x7e, 0xfb, 0x9d, 0xdd, 0xb3, 0xe7,
	0x3b, 0xe7, 0xac, 0x05, 0x6b, 0x2c, 0x1b, 0x47, 0xa1, 0xbf, 0x85, 0x59, 0xd8, 0x61, 0x29, 0x15,
	0x14, 0xad, 0xfa, 0x34, 0x09, 0xb2, 0x50, 0x74, 0xf4, 0x4a, 0xeb, 0xe6, 0x11, 0xa5, 0x47, 0x11,
	0xd9, 0x52, 0xab, 0xe3, 0xec, 0x70, 0x2b, 0xc8, 0x52, 0x2c, 0x42, 0x9a, 0x68, 0x7e, 0x6b, 0xdd,
	0xa7, 0x71, 0x4c, 0x93, 0x2d, 0xfd, 0x63, 0xc0, 0xdb, 0x06, 0x9c, 0x10, 0x1c, 0x89, 0x89, 0x3f,
	0x21, 0xfe, 0xf1, 0xec, 0x58, 0xb3, 0xdc, 0x65, 0xa8, 0xee, 0xc5, 0x4c, 0x4c, 0xdd, 0x13, 0x68,
	0x7c, 0x4d, 0x52, 0x1e, 0xd2, 0x64, 0x3f, 0x39, 0xa4, 0xe8, 0x6d, 0xa8, 0x1f, 0x51, 0x03, 0x38,
	0xe5, 0x76, 0x79, 0xb3, 0xee, 0x9d, 0x01, 0x72, 0x75, 0x9c, 0x85, 0x51, 0xf0, 0x04, 0x0b, 0xe2,
	0x58, 0x7a, 0xb5, 0x00, 0xd0, 0x1d, 0x58, 0x4d, 0x49, 0x44, 0x30, 0x27, 0xf9, 0x06, 0xb6, 0xa2,
	0x2c, 0xa0, 0xee, 0x7d, 0x58, 0x7b, 0x16, 0x72, 0x31, 0xa0, 0x01, 0xf7, 0x08, 0x67, 0x34, 0xe1,
	0x04, 0x7d, 0x00, 0x15, 0x46, 0x03, 0xee, 0x94, 0xdb, 0xf6, 0x66, 0xa3, 0xb7, 0xde, 0x99, 0x8f,
	0x44, 0x67, 0x40, 0x03, 0x4f, 0x11, 0xdc, 0x5f, 0x2c, 0xb0, 0x07, 0x34, 0x40, 0x08, 0x2a, 0x09,
	0x8e, 0x89, 0xf1, 0x51, 0x8d, 0xd1, 0x06, 0x54, 0x19, 0x0d, 0xf6, 0x07, 0xc6, 0x35, 0x3d, 0x41,
	0x37, 0x01, 0x02, 0xc2, 0x22, 0x3a, 0x8d, 0x49, 0x22, 0x8c, 0x4b, 0x33, 0x08, 0xfa, 0x3f, 0x2c,
	0x71, 0x81, 0x45, 0xc6, 0x9d, 0x8a, 0x5a, 0x33, 0x33, 0xb9, 0x1b, 0x0e, 0x02, 0x12, 0x38, 0xd5,
	0x76, 0x79, 0xb3, 0xe6, 0xe9, 0x09, 0x7a, 0x0c, 0xd7, 0x78, 0x98, 0xf8, 0xe4, 0x19, 0xe6, 0xc2,
	0x23, 0x8c, 0xa6, 0xc2, 0x59, 0x6a, 0x97, 0x37, 0x1b, 0xbd, 0x1b, 0x1d, 0xad, 0x56, 0x27, 0x57,
	0xab, 0xf3, 0xc4, 0xa8, 0xe5, 0x2d, 0x5a, 0xa0, 0x2e, 0xac, 0xfb, 0x34, 0x11, 0x29, 0x8d, 0x22,
	0x92, 0x7e, 0x85, 0x63, 0xc2, 0x19, 0xf6, 0x89, 0xb3, 0xac, 0xce, 0x3f, 0x6f, 0x09, 0xb9, 0xb0,
	0x62, 0xe0, 0x41, 0x84, 0x13, 0xe2, 0xd4, 0x94, 0x4f, 0x73, 0x98, 0xfb, 0xab, 0x05, 0x70, 0x80,
	0x99, 0x47, 0x4e, 0x32, 0xc2, 0x05, 0x42, 0x60, 0x33, 0x1a, 0xe8, 0x00, 0xf5, 0x4b, 0x9e, 0x9c,
	0xa0, 0xf6, 0x5c, 0x2c, 0x2c, 0xb3, 0xb4, 0x10, 0x8d, 0x18, 0xff, 0xe8, 0x31, 0xae, 0x22, 0x65,
	0x79, 0x66, 0x26, 0x71, 0x41, 0x07, 0xf2, 0xba, 0x32, 0x4a, 0x4d, 0xcf, 0xcc, 0xa4, 0x0e, 0x82,
	0xee, 0x0f, 0x54, 0x90, 0xea, 0x9e, 0x1a, 0xa3, 0x16, 0xd4, 0x0e, 0x53, 0x1a, 0x0f, 0xf2, 0xe0,
	0x34, 0xbd, 0x62, 0x2e, 0xf7, 0x91, 0xe3, 0xfd, 0x81, 0xb9, 0xad, 0x99, 0x29, 0x15, 0xfc, 0x09,
	0x89, 0xf5, 0xd5, 0xa4, 0x0a, 0x6a, 0xa6, 0xfc, 0x21, 0x62, 0x42, 0x03, 0xa7, 0xae, 0x71, 0x3d,
	0x93, 0xa9, 0x88, 0x33, 0x31, 0xa1, 0x69, 0x28, 0xa6, 0x0e, 0xe8, 0x54, 0x2c, 0x00, 0xe9, 0x15,
	0xc3, 0x62, 0xe2, 0x34, 0xb4, 0x57, 0x72, 0x7c, 0xcf, 0x72, 0xca, 0xbb, 0x35, 0x58, 0x12, 0x38,
	0x3d, 0x22, 0xc2, 0xfd, 0xbb, 0x0a, 0x1b, 0x07, 0x98, 0xed, 0x4e, 0x3d, 0xc2, 0x69, 0x96, 0xfa,
	0x24, 0x0f, 0xdb, 0x4e, 0x4e, 0x51, 0x91, 0x6b, 0xf4, 0xde, 0x5b, 0xcc, 0xc5, 0xdc, 0x60, 0x48,
	0x22, 0xe2, 0x2b, 0x7d, 0x8d, 0x01, 0x7a, 0x08, 0xd5, 0x18, 0x0b, 0x7f, 0xa2, 0x02, 0xdb, 0xe8,
	0xdd, 0x5d, 0xb4, 0x3c, 0xef, 0xbc, 0xce, 0x73, 0x69, 0xe1, 0x69, 0xc3, 0x8b, 0xa2, 0xdf, 0xfa,
	0xbd, 0x02, 0x55, 0x45, 0x44, 0xbb, 0x60, 0xe3, 0x28, 0x32, 0xbe, 0x75, 0x2e, 0x7f, 0x42, 0x67,
	0x48, 0x4e, 0x64, 0x16, 0xe0, 0x28, 0x52, 0x7b, 0x24, 0x53, 0xe3, 0xe5, 0x55, 0xf6, 0x48, 0xa6,
	0xe8, 0x0b, 0xb0, 0x13, 0xaa, 0xcb, 0xe9, 0x8d, 0x6e, 0x2a, 0xed, 0x13, 0x2a, 0xd0, 0x53, 0x58,
	0x09, 0x08, 0x17, 0x61, 0xa2, 0x4a, 0x44, 0xd7, 0xde, 0x65, 0x82, 0xdd, 0x2f, 0x79, 0x73, 0x86,
	0x68, 0x0f, 0x2a, 0x13, 0x21, 0x98, 0x4a, 0xc0, 0x46, 0x6f, 0xeb, 0x0d, 0x6e, 0xd3, 0x17, 0x82,
	0xf5, 0x4b, 0x9e, 0x32, 0x6f, 0x7d, 0x09, 0xf6, 0x90, 0x9c, 0xa0, 0x27, 0xb0, 0xac, 0x94, 0x20,
	0x79, 0x2b, 0x7a, 0x13, 0x11, 0x73, 0xd3, 0xd6, 0x14, 0x2a, 0x72, 0x73, 0xe4, 0x14, 0x49, 0x9d,
	0x57, 0x61, 0x9e, 0xd6, 0x4e, 0x91, 0xd6, 0x79, 0x11, 0xe6, 0x89, 0x7d, 0x73, 0x36, 0xb1, 0x6d,
	0xb3, 0x38, 0x93, 0xda, 0x1b, 0x26, 0xb5, 0x2b, 0x66, 0x49, 0xcd, 0x76, 0x97, 0x4d, 0xea, 0x15,
	0x03, 0xb7, 0x0d, 0xb5, 0x47, 0x2c, 0xdc, 0x4b, 0x53, 0x9a, 0xca, 0x56, 0x46, 0xe4, 0xc0, 0x74,
	0x4b, 0x3d, 0x71, 0x07, 0x50, 0xcb, 0xef, 0x21, 0xcb, 0x29, 0x29, 0xfa, 0x90, 0xe9, 0xfb, 0x05,
	0xa0, 0x8a, 0x7c, 0xca, 0xf2, 0x96, 0xaf, 0xc6, 0x45, 0x03, 0xb6, 0xcf, 0x1a, 0xb0, 0xcb, 0xe0,
	0xfa, 0x4b, 0x82, 0xa1, 0x4f, 0xa1, 0x96, 0x1a, 0xd0, 0xa4, 0xad, 0x73, 0x91, 0xca, 0x5e, 0xc1,
	0x44, 0xef, 0xc3, 0x6a, 0x84, 0xc7, 0x24, 0x1a, 0x71, 0xb5, 0x11, 0x4d, 0xcd, 0xe1, 0x4d, 0x85,
	0x0e, 0x0d, 0xe8, 0x7e, 0x07, 0xcd, 0xdc, 0x58, 0x5f, 0xf5, 0x6a, 0xa7, 0x15, 0x01, 0xb2, 0x66,
	0x03, 0xf4, 0x9b, 0x05, 0x68, 0x28, 0xb0, 0x18, 0x66, 0x71, 0x8c, 0xd3, 0x69, 0xde, 0x21, 0x3e,
	0x87, 0x5a, 0xe1, 0xd4, 0xa5, 0x7b, 0x44, 0x61, 0x82, 0xde, 0x85, 0x86, 0x08, 0x63, 0x32, 0x3a,
	0x0d, 0x93, 0x80, 0x9e, 0x9a, 0x13, 0x41, 0x42, 0xdf, 0x28, 0x04, 0x7d, 0x08, 0x95, 0x84, 0x26,
	0xc4, 0xd4, 0xd6, 0xff, 0x16, 0xf7, 0x56, 0xef, 0xb6, 0x14, 0x5e, 0x92, 0xd0, 0x7d, 0x68, 0x08,
	0x3a, 0x2a, 0xae, 0x5c, 0x79, 0xf5, 0x95, 0x65, 0xb3, 0x17, 0xb4, 0x50, 0xfd, 0x01, 0x34, 0x65,
	0xfb, 0x3d, 0x33, 0xaf, 0xbe, 0xd6, 0x7c, 0x45, 0x1a, 0xe4, 0xf3, 0x5d, 0x80, 0x1a, 0xcd, 0xc4,
	0x98, 0x66, 0x49, 0xe0, 0xfe, 0x59, 0x86, 0xf5, 0xb9, 0x68, 0x99, 0xa7, 0xfd, 0x33, 0xb0, 0xe8,
	0xb1, 0x09, 0xd4, 0x9d, 0xc5, 0x9d, 0xcf, 0x31, 0xe8, 0xbc, 0x38, 0xee, 0x97, 0x3c, 0x8b, 0x1e,
	0xa3, 0xed, 0x59, 0x55, 0x1a, 0xbd, 0x77, 0x2e, 0x72, 0x4b, 0x29, 0xdf, 0x2f, 0x19, 0xd9, 0x5a,
	0x0f, 0xc1, 0x7a, 0x71, 0x8c, 0xee, 0x41, 0x43, 0x3e, 0xe4, 0x23, 0x81, 0xc7, 0x51, 0x51, 0xcd,
	0x37, 0xce, 0x3b, 0xff, 0x40, 0x32, 0x3c, 0xe0, 0xf9, 0x90, 0xcb, 0x6b, 0xa5, 0xc6, 0x1b, 0xf7,
	0xdf, 0x32, 0xc0, 0x2e, 0xe6, 0xa1, 0x2f, 0xa9, 0x1c, 0xdd, 0x82, 0x26, 0xcf, 0x7c, 0x9f, 0x70,
	0x3e, 0xf2, 0x69, 0x96, 0xe8, 0x57, 0xa2, 0xe2, 0xad, 0x18, 0xf0, 0xb1, 0xc4, 0x24, 0xe9, 0x10,
	0x87, 0x51, 0x96, 0x12, 0x43, 0xb2, 0x34, 0xc9, 0x80, 0x9a, 0x74, 0x5b, 0x66, 0xb8, 0x20, 0x89,
	0x3f, 0x1d, 0xc5, 0x7c, 0xc4, 0xb6, 0xbb, 0x4a, 0xf0, 0x8a, 0xb7, 0x62, 0xd0, 0xe7, 0x7c, 0xb0,
	0xdd, 0x5d, 0x64, 0xed, 0x6c, 0x2b, 0x89, 0xe7, 0x58, 0x3b, 0xdb, 0x2f, 0xb1, 0x76, 0x94, 0x92,
	0xf3, 0xac, 0x1d, 0xd4, 0x85, 0x8d, 0x98, 0xf0, 0x09, 0x09, 0x46, 0xa9, 0x4e, 0x65, 0xe3, 0xdd,
	0x92, 0xe2, 0x22, 0xbd, 0x66, 0xb2, 0x5c, 0xf9, 0xe8, 0xfe, 0x61, 0x43, 0xbd, 0x08, 0x11, 0x7a,
	0x04, 0x75, 0x46, 0x83, 0xd1, 0x51, 0x4a, 0x33, 0x66, 0x04, 0x75, 0x2f, 0x0c, 0xa8, 0xfc, 0xcf,
	0xf6, 0x54, 0x32, 0xfb, 0x25, 0xaf, 0xc6, 0xcc, 0xb8, 0xf5, 0x97, 0x05, 0xb5, 0x7c, 0x01, 0xdd,
	0x83, 0x4a, 0x4a, 0x4f, 0x73, 0x6d, 0xee, 0xbc, 0x7e, 0xab, 0x8e, 0x47, 0x4f, 0x3d, 0x65, 0xd3,
	0xfa, 0xd9, 0x02, 0xdb, 0xa3, 0xa7, 0x57, 0xac, 0xf7, 0xd7, 0xd6, 0xe0, 0x26, 0xac, 0x99, 0x50,
	0xc9, 0x1b, 0xeb, 0x30, 0x69, 0x79, 0x56, 0x35, 0x3e, 0xa0, 0x81, 0x96, 0xf1, 0x2e, 0x5c, 0x4f,
	0xb3, 0x24, 0x09, 0x93, 0xa3, 0x19, 0xaa, 0xd6, 0xe8, 0x9a, 0x59, 0x28, 0xb8, 0x9b, 0xb0, 0x26,
	0x53, 0x60, 0x6e, 0x57, 0x1d, 0xfc, 0x55, 0x8d, 0x17, 0xcc, 0x2e, 0x54, 0x65, 0x3e, 0x72, 0x53,
	0x91, 0xad, 0xc5, 0x3b, 0x9d, 0x65, 0xa4, 0xa7, 0x89, 0xb2, 0xf1, 0xab, 0x54, 0xef, 0xfd, 0x63,
	0x83, 0xfd, 0x88, 0x85, 0xe8, 0x5b, 0x68, 0xcc, 0x54, 0x17, 0x72, 0x5f, 0x59, 0x7a, 0x4a, 0xf3,
	0xd6, 0xad, 0x4b, 0x94, 0xa7, 0x5b, 0x42, 0x7b, 0x50, 0xcb, 0xff, 0xc0, 0xa3, 0xf3, 0xdb, 0x53,
	0xab, 0xbd, 0x08, 0x2f, 0xfe, 0xe3, 0x77, 0x4b, 0xf2, 0x6f, 0xc8, 0x01, 0x66, 0xa8, 0x75, 0xce,
	0x0b, 0x9b, 0x3b, 0x74, 0xa6, 0xa5, 0xf9, 0xc6, 0x39, 0xc0, 0x6c, 0xef, 0x07, 0x92, 0x08, 0xd7,
	0xfe, 0xc9, 0x2a, 0x77, 0xcb, 0x68, 0x08, 0xcd, 0xb9, 0x07, 0x19, 0xdd, 0xbe, 0xcc, 0x7b, 0xfd,
	0x8a, 0x7d, 0x4b, 0xdd, 0x32, 0x7a, 0x00, 0xcb, 0xf9, 0x17, 0xcf, 0x05, 0xd7, 0x7b, 0x6b, 0x11,
	0x9e, 0xf9, 0x86, 0x72, 0x4b, 0xe8, 0x7b, 0xa8, 0x0f, 0x49, 0x74, 0xf8, 0x58, 0x7e, 0x70, 0xa1,
	0x8f, 0x16, 0xcf, 0x9a, 0xfd, 0x1a, 0x2b, 0x68, 0xb9, 0x67, 0x1f, 0x5f, 0x92, 0x9d, 0x47, 0x71,
	0xbc, 0xa4, 0xbe, 0x37, 0x3e, 0xf9, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x0f, 0xd8, 0x85, 0x4d, 0x4f,
	0x0e, 0x00, 0x00,
}
