[VOL-2778] Introducing Service definition in order to support the TT workflow

Change-Id: Ib171502e8940b5d0b219620a4503f7095d376d7a
diff --git a/api/bbsim/bbsim.pb.go b/api/bbsim/bbsim.pb.go
index 5d4a80d..39f8616 100644
--- a/api/bbsim/bbsim.pb.go
+++ b/api/bbsim/bbsim.pb.go
@@ -131,7 +131,7 @@
 }
 
 func (AlarmType_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_ef7750073d18011b, []int{8, 0}
+	return fileDescriptor_ef7750073d18011b, []int{10, 0}
 }
 
 type PONPort struct {
@@ -316,18 +316,17 @@
 }
 
 type ONU struct {
-	ID                   int32    `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"`
-	SerialNumber         string   `protobuf:"bytes,2,opt,name=SerialNumber,proto3" json:"SerialNumber,omitempty"`
-	OperState            string   `protobuf:"bytes,3,opt,name=OperState,proto3" json:"OperState,omitempty"`
-	InternalState        string   `protobuf:"bytes,4,opt,name=InternalState,proto3" json:"InternalState,omitempty"`
-	PonPortID            int32    `protobuf:"varint,5,opt,name=PonPortID,proto3" json:"PonPortID,omitempty"`
-	STag                 int32    `protobuf:"varint,6,opt,name=STag,proto3" json:"STag,omitempty"`
-	CTag                 int32    `protobuf:"varint,7,opt,name=CTag,proto3" json:"CTag,omitempty"`
-	HwAddress            string   `protobuf:"bytes,8,opt,name=HwAddress,proto3" json:"HwAddress,omitempty"`
-	PortNo               int32    `protobuf:"varint,9,opt,name=PortNo,proto3" json:"PortNo,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	ID                   int32      `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"`
+	SerialNumber         string     `protobuf:"bytes,2,opt,name=SerialNumber,proto3" json:"SerialNumber,omitempty"`
+	OperState            string     `protobuf:"bytes,3,opt,name=OperState,proto3" json:"OperState,omitempty"`
+	InternalState        string     `protobuf:"bytes,4,opt,name=InternalState,proto3" json:"InternalState,omitempty"`
+	PonPortID            int32      `protobuf:"varint,5,opt,name=PonPortID,proto3" json:"PonPortID,omitempty"`
+	HwAddress            string     `protobuf:"bytes,8,opt,name=HwAddress,proto3" json:"HwAddress,omitempty"`
+	PortNo               int32      `protobuf:"varint,9,opt,name=PortNo,proto3" json:"PortNo,omitempty"`
+	Services             []*Service `protobuf:"bytes,10,rep,name=services,proto3" json:"services,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
+	XXX_unrecognized     []byte     `json:"-"`
+	XXX_sizecache        int32      `json:"-"`
 }
 
 func (m *ONU) Reset()         { *m = ONU{} }
@@ -390,20 +389,6 @@
 	return 0
 }
 
-func (m *ONU) GetSTag() int32 {
-	if m != nil {
-		return m.STag
-	}
-	return 0
-}
-
-func (m *ONU) GetCTag() int32 {
-	if m != nil {
-		return m.CTag
-	}
-	return 0
-}
-
 func (m *ONU) GetHwAddress() string {
 	if m != nil {
 		return m.HwAddress
@@ -418,6 +403,132 @@
 	return 0
 }
 
+func (m *ONU) GetServices() []*Service {
+	if m != nil {
+		return m.Services
+	}
+	return nil
+}
+
+type Service struct {
+	Name                 string   `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
+	HwAddress            string   `protobuf:"bytes,2,opt,name=HwAddress,proto3" json:"HwAddress,omitempty"`
+	OnuSn                string   `protobuf:"bytes,3,opt,name=OnuSn,proto3" json:"OnuSn,omitempty"`
+	STag                 int32    `protobuf:"varint,4,opt,name=STag,proto3" json:"STag,omitempty"`
+	CTag                 int32    `protobuf:"varint,5,opt,name=CTag,proto3" json:"CTag,omitempty"`
+	NeedsEapol           bool     `protobuf:"varint,6,opt,name=NeedsEapol,proto3" json:"NeedsEapol,omitempty"`
+	NeedsDhcp            bool     `protobuf:"varint,7,opt,name=NeedsDhcp,proto3" json:"NeedsDhcp,omitempty"`
+	NeedsIgmp            bool     `protobuf:"varint,8,opt,name=NeedsIgmp,proto3" json:"NeedsIgmp,omitempty"`
+	GemPort              int32    `protobuf:"varint,9,opt,name=GemPort,proto3" json:"GemPort,omitempty"`
+	EapolState           string   `protobuf:"bytes,10,opt,name=EapolState,proto3" json:"EapolState,omitempty"`
+	DhcpState            string   `protobuf:"bytes,11,opt,name=DhcpState,proto3" json:"DhcpState,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Service) Reset()         { *m = Service{} }
+func (m *Service) String() string { return proto.CompactTextString(m) }
+func (*Service) ProtoMessage()    {}
+func (*Service) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ef7750073d18011b, []int{4}
+}
+
+func (m *Service) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Service.Unmarshal(m, b)
+}
+func (m *Service) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Service.Marshal(b, m, deterministic)
+}
+func (m *Service) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Service.Merge(m, src)
+}
+func (m *Service) XXX_Size() int {
+	return xxx_messageInfo_Service.Size(m)
+}
+func (m *Service) XXX_DiscardUnknown() {
+	xxx_messageInfo_Service.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Service proto.InternalMessageInfo
+
+func (m *Service) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Service) GetHwAddress() string {
+	if m != nil {
+		return m.HwAddress
+	}
+	return ""
+}
+
+func (m *Service) GetOnuSn() string {
+	if m != nil {
+		return m.OnuSn
+	}
+	return ""
+}
+
+func (m *Service) GetSTag() int32 {
+	if m != nil {
+		return m.STag
+	}
+	return 0
+}
+
+func (m *Service) GetCTag() int32 {
+	if m != nil {
+		return m.CTag
+	}
+	return 0
+}
+
+func (m *Service) GetNeedsEapol() bool {
+	if m != nil {
+		return m.NeedsEapol
+	}
+	return false
+}
+
+func (m *Service) GetNeedsDhcp() bool {
+	if m != nil {
+		return m.NeedsDhcp
+	}
+	return false
+}
+
+func (m *Service) GetNeedsIgmp() bool {
+	if m != nil {
+		return m.NeedsIgmp
+	}
+	return false
+}
+
+func (m *Service) GetGemPort() int32 {
+	if m != nil {
+		return m.GemPort
+	}
+	return 0
+}
+
+func (m *Service) GetEapolState() string {
+	if m != nil {
+		return m.EapolState
+	}
+	return ""
+}
+
+func (m *Service) GetDhcpState() string {
+	if m != nil {
+		return m.DhcpState
+	}
+	return ""
+}
+
 type ONUTrafficSchedulers struct {
 	TraffSchedulers      *tech_profile.TrafficSchedulers `protobuf:"bytes,1,opt,name=traffSchedulers,proto3" json:"traffSchedulers,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
@@ -429,7 +540,7 @@
 func (m *ONUTrafficSchedulers) String() string { return proto.CompactTextString(m) }
 func (*ONUTrafficSchedulers) ProtoMessage()    {}
 func (*ONUTrafficSchedulers) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ef7750073d18011b, []int{4}
+	return fileDescriptor_ef7750073d18011b, []int{5}
 }
 
 func (m *ONUTrafficSchedulers) XXX_Unmarshal(b []byte) error {
@@ -468,7 +579,7 @@
 func (m *ONUs) String() string { return proto.CompactTextString(m) }
 func (*ONUs) ProtoMessage()    {}
 func (*ONUs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ef7750073d18011b, []int{5}
+	return fileDescriptor_ef7750073d18011b, []int{6}
 }
 
 func (m *ONUs) XXX_Unmarshal(b []byte) error {
@@ -496,6 +607,45 @@
 	return nil
 }
 
+type Services struct {
+	Items                []*Service `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
+	XXX_unrecognized     []byte     `json:"-"`
+	XXX_sizecache        int32      `json:"-"`
+}
+
+func (m *Services) Reset()         { *m = Services{} }
+func (m *Services) String() string { return proto.CompactTextString(m) }
+func (*Services) ProtoMessage()    {}
+func (*Services) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ef7750073d18011b, []int{7}
+}
+
+func (m *Services) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Services.Unmarshal(m, b)
+}
+func (m *Services) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Services.Marshal(b, m, deterministic)
+}
+func (m *Services) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Services.Merge(m, src)
+}
+func (m *Services) XXX_Size() int {
+	return xxx_messageInfo_Services.Size(m)
+}
+func (m *Services) XXX_DiscardUnknown() {
+	xxx_messageInfo_Services.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Services proto.InternalMessageInfo
+
+func (m *Services) GetItems() []*Service {
+	if m != nil {
+		return m.Items
+	}
+	return nil
+}
+
 type ONURequest struct {
 	SerialNumber         string   `protobuf:"bytes,1,opt,name=SerialNumber,proto3" json:"SerialNumber,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -507,7 +657,7 @@
 func (m *ONURequest) String() string { return proto.CompactTextString(m) }
 func (*ONURequest) ProtoMessage()    {}
 func (*ONURequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ef7750073d18011b, []int{6}
+	return fileDescriptor_ef7750073d18011b, []int{8}
 }
 
 func (m *ONURequest) XXX_Unmarshal(b []byte) error {
@@ -546,7 +696,7 @@
 func (m *PONRequest) String() string { return proto.CompactTextString(m) }
 func (*PONRequest) ProtoMessage()    {}
 func (*PONRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ef7750073d18011b, []int{7}
+	return fileDescriptor_ef7750073d18011b, []int{9}
 }
 
 func (m *PONRequest) XXX_Unmarshal(b []byte) error {
@@ -584,7 +734,7 @@
 func (m *AlarmType) String() string { return proto.CompactTextString(m) }
 func (*AlarmType) ProtoMessage()    {}
 func (*AlarmType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ef7750073d18011b, []int{8}
+	return fileDescriptor_ef7750073d18011b, []int{10}
 }
 
 func (m *AlarmType) XXX_Unmarshal(b []byte) error {
@@ -617,7 +767,7 @@
 func (m *AlarmParameter) String() string { return proto.CompactTextString(m) }
 func (*AlarmParameter) ProtoMessage()    {}
 func (*AlarmParameter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ef7750073d18011b, []int{9}
+	return fileDescriptor_ef7750073d18011b, []int{11}
 }
 
 func (m *AlarmParameter) XXX_Unmarshal(b []byte) error {
@@ -669,7 +819,7 @@
 func (m *ONUAlarmRequest) String() string { return proto.CompactTextString(m) }
 func (*ONUAlarmRequest) ProtoMessage()    {}
 func (*ONUAlarmRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ef7750073d18011b, []int{10}
+	return fileDescriptor_ef7750073d18011b, []int{12}
 }
 
 func (m *ONUAlarmRequest) XXX_Unmarshal(b []byte) error {
@@ -732,7 +882,7 @@
 func (m *OLTAlarmRequest) String() string { return proto.CompactTextString(m) }
 func (*OLTAlarmRequest) ProtoMessage()    {}
 func (*OLTAlarmRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ef7750073d18011b, []int{11}
+	return fileDescriptor_ef7750073d18011b, []int{13}
 }
 
 func (m *OLTAlarmRequest) XXX_Unmarshal(b []byte) error {
@@ -788,7 +938,7 @@
 func (m *VersionNumber) String() string { return proto.CompactTextString(m) }
 func (*VersionNumber) ProtoMessage()    {}
 func (*VersionNumber) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ef7750073d18011b, []int{12}
+	return fileDescriptor_ef7750073d18011b, []int{14}
 }
 
 func (m *VersionNumber) XXX_Unmarshal(b []byte) error {
@@ -849,7 +999,7 @@
 func (m *LogLevel) String() string { return proto.CompactTextString(m) }
 func (*LogLevel) ProtoMessage()    {}
 func (*LogLevel) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ef7750073d18011b, []int{13}
+	return fileDescriptor_ef7750073d18011b, []int{15}
 }
 
 func (m *LogLevel) XXX_Unmarshal(b []byte) error {
@@ -896,7 +1046,7 @@
 func (m *Response) String() string { return proto.CompactTextString(m) }
 func (*Response) ProtoMessage()    {}
 func (*Response) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ef7750073d18011b, []int{14}
+	return fileDescriptor_ef7750073d18011b, []int{16}
 }
 
 func (m *Response) XXX_Unmarshal(b []byte) error {
@@ -943,7 +1093,7 @@
 func (m *IgmpRequest) String() string { return proto.CompactTextString(m) }
 func (*IgmpRequest) ProtoMessage()    {}
 func (*IgmpRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ef7750073d18011b, []int{15}
+	return fileDescriptor_ef7750073d18011b, []int{17}
 }
 
 func (m *IgmpRequest) XXX_Unmarshal(b []byte) error {
@@ -990,7 +1140,7 @@
 func (m *Flows) String() string { return proto.CompactTextString(m) }
 func (*Flows) ProtoMessage()    {}
 func (*Flows) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ef7750073d18011b, []int{16}
+	return fileDescriptor_ef7750073d18011b, []int{18}
 }
 
 func (m *Flows) XXX_Unmarshal(b []byte) error {
@@ -1035,7 +1185,7 @@
 func (m *Empty) String() string { return proto.CompactTextString(m) }
 func (*Empty) ProtoMessage()    {}
 func (*Empty) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ef7750073d18011b, []int{17}
+	return fileDescriptor_ef7750073d18011b, []int{19}
 }
 
 func (m *Empty) XXX_Unmarshal(b []byte) error {
@@ -1063,8 +1213,10 @@
 	proto.RegisterType((*NNIPort)(nil), "bbsim.NNIPort")
 	proto.RegisterType((*Olt)(nil), "bbsim.Olt")
 	proto.RegisterType((*ONU)(nil), "bbsim.ONU")
+	proto.RegisterType((*Service)(nil), "bbsim.Service")
 	proto.RegisterType((*ONUTrafficSchedulers)(nil), "bbsim.ONUTrafficSchedulers")
 	proto.RegisterType((*ONUs)(nil), "bbsim.ONUs")
+	proto.RegisterType((*Services)(nil), "bbsim.Services")
 	proto.RegisterType((*ONURequest)(nil), "bbsim.ONURequest")
 	proto.RegisterType((*PONRequest)(nil), "bbsim.PONRequest")
 	proto.RegisterType((*AlarmType)(nil), "bbsim.AlarmType")
@@ -1082,92 +1234,101 @@
 func init() { proto.RegisterFile("api/bbsim/bbsim.proto", fileDescriptor_ef7750073d18011b) }
 
 var fileDescriptor_ef7750073d18011b = []byte{
-	// 1353 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xdd, 0x72, 0x9b, 0xd6,
-	0x16, 0xd6, 0x8f, 0xf5, 0xb7, 0x64, 0xc9, 0x78, 0x27, 0x76, 0x18, 0xc7, 0xe7, 0xc4, 0xc3, 0xc9,
-	0x39, 0xe3, 0x64, 0x4e, 0x9c, 0xc6, 0x6e, 0xa7, 0xc9, 0x25, 0x96, 0xb0, 0x42, 0x2d, 0x03, 0xb3,
-	0x41, 0xce, 0xe4, 0x8a, 0xc1, 0xd2, 0xb6, 0xc5, 0x0c, 0x02, 0x05, 0x50, 0x3c, 0x79, 0x80, 0xbe,
-	0x48, 0x9f, 0xa8, 0x4f, 0xd0, 0x5e, 0xf5, 0x21, 0x7a, 0xd7, 0xd9, 0x9b, 0x0d, 0x02, 0x4b, 0xe9,
-	0xa8, 0xbd, 0xe9, 0x8d, 0x66, 0xaf, 0x6f, 0x7d, 0xeb, 0x7f, 0xb3, 0x40, 0xb0, 0xe7, 0xcc, 0xdd,
-	0xd7, 0x37, 0x37, 0x91, 0x3b, 0x4b, 0x7e, 0x4f, 0xe6, 0x61, 0x10, 0x07, 0xa8, 0xc6, 0x84, 0x83,
-	0xa7, 0x9f, 0x03, 0x2f, 0x9e, 0x3a, 0x36, 0x03, 0xa3, 0xd7, 0xc1, 0x9c, 0xf8, 0x81, 0x17, 0x27,
-	0x9c, 0x83, 0xa3, 0xa2, 0x32, 0x26, 0xe3, 0x29, 0x3d, 0xdf, 0xba, 0x1e, 0x49, 0x18, 0xd2, 0xf7,
-	0xd0, 0x30, 0x74, 0xcd, 0x08, 0xc2, 0x18, 0x75, 0xa1, 0xa2, 0xf6, 0xc5, 0xf2, 0x51, 0xf9, 0xb8,
-	0x86, 0x2b, 0x6a, 0x1f, 0x1d, 0x42, 0x4b, 0x9f, 0x93, 0xd0, 0x8c, 0x9d, 0x98, 0x88, 0x95, 0xa3,
-	0xf2, 0x71, 0x0b, 0x2f, 0x01, 0x6a, 0xa8, 0x69, 0xea, 0xdf, 0x30, 0xfc, 0xad, 0x0c, 0x55, 0xdd,
-	0x5b, 0xb5, 0x92, 0x60, 0xdb, 0x24, 0xa1, 0xeb, 0x78, 0xda, 0x62, 0x76, 0x43, 0x42, 0x6e, 0x58,
-	0xc0, 0x8a, 0x9e, 0xab, 0x0f, 0x3c, 0xa3, 0xe7, 0xd0, 0x51, 0xfd, 0x98, 0x84, 0xbe, 0xe3, 0x25,
-	0x8c, 0x2d, 0xc6, 0x28, 0x82, 0x2c, 0xae, 0x21, 0x36, 0x98, 0xaa, 0xa2, 0x1a, 0xe8, 0x25, 0x34,
-	0x79, 0x21, 0x91, 0x58, 0x3b, 0xaa, 0x1e, 0xb7, 0x4f, 0xbb, 0x27, 0x49, 0x9f, 0x39, 0x8c, 0x33,
-	0x3d, 0xe5, 0xf2, 0x6e, 0x45, 0x62, 0xbd, 0xc0, 0xe5, 0x30, 0xce, 0xf4, 0xd2, 0xef, 0xb4, 0x4e,
-	0x6d, 0xf4, 0x8f, 0xd5, 0x79, 0x08, 0x2d, 0x23, 0xf0, 0x69, 0x2e, 0x6a, 0x5f, 0xac, 0xb1, 0xf0,
-	0x4b, 0x00, 0x21, 0xd8, 0x32, 0x2d, 0xe7, 0x4e, 0xac, 0x33, 0x05, 0x3b, 0x53, 0xac, 0x47, 0xb1,
-	0x46, 0x82, 0xd1, 0x33, 0xf5, 0xf2, 0xfe, 0x5e, 0x9e, 0x4c, 0x42, 0x12, 0x45, 0x62, 0x33, 0xc9,
-	0x24, 0x03, 0xd0, 0x3e, 0xd4, 0xa9, 0x3f, 0x2d, 0x10, 0x5b, 0xcc, 0x86, 0x4b, 0x92, 0x03, 0x8f,
-	0x75, 0x6d, 0x64, 0x85, 0xce, 0xed, 0xad, 0x3b, 0x36, 0xc7, 0x53, 0x32, 0x59, 0x78, 0x24, 0x8c,
-	0x90, 0x0a, 0x3b, 0x31, 0x05, 0x97, 0x10, 0x6b, 0x4c, 0xfb, 0xf4, 0xd9, 0x49, 0xe1, 0x6e, 0xae,
-	0x58, 0xe2, 0x87, 0x76, 0xd2, 0x31, 0x6c, 0xe9, 0xda, 0x28, 0x42, 0x47, 0x50, 0x73, 0x63, 0x32,
-	0xa3, 0x8e, 0xe8, 0x3c, 0x80, 0xcf, 0x43, 0xd7, 0x46, 0x38, 0x51, 0x48, 0xdf, 0x00, 0x50, 0x89,
-	0x7c, 0x5a, 0x90, 0x28, 0x5e, 0x69, 0x7f, 0x79, 0xb5, 0xfd, 0xd2, 0x4b, 0x00, 0x43, 0xd7, 0x52,
-	0x8b, 0x5c, 0x23, 0x27, 0x8c, 0xde, 0x59, 0x36, 0x72, 0x22, 0xfd, 0x52, 0x85, 0x96, 0xec, 0x39,
-	0xe1, 0xcc, 0xfa, 0x32, 0x27, 0xd2, 0xcf, 0x55, 0xa8, 0xd1, 0x43, 0x84, 0x1a, 0x50, 0x1d, 0xea,
-	0xa6, 0x50, 0x42, 0x5d, 0x80, 0xfe, 0x47, 0x55, 0x1b, 0xd8, 0x03, 0xd9, 0x34, 0x84, 0x32, 0xea,
-	0x40, 0x4b, 0xd7, 0x46, 0xb6, 0x3c, 0x94, 0xf1, 0x95, 0x50, 0x41, 0x4f, 0xe0, 0x11, 0x15, 0x4d,
-	0x4b, 0xc6, 0xd6, 0xc8, 0xb0, 0x2f, 0x64, 0x75, 0x38, 0xc2, 0x8a, 0x50, 0x45, 0xfb, 0x80, 0x98,
-	0x42, 0x1d, 0x68, 0xf2, 0xd0, 0xee, 0x2b, 0x03, 0x2c, 0xf7, 0x15, 0x61, 0x2b, 0x35, 0xe8, 0x63,
-	0xf5, 0xc2, 0xb2, 0xf5, 0x0b, 0xfb, 0x83, 0xaa, 0xf5, 0xf5, 0x0f, 0x42, 0x0d, 0x1d, 0x82, 0x48,
-	0x15, 0x43, 0xdd, 0x34, 0x29, 0xae, 0x5f, 0xf5, 0x54, 0xbb, 0xf7, 0x5e, 0xd6, 0x34, 0x65, 0x28,
-	0xd4, 0xb3, 0x38, 0xcc, 0x9d, 0x99, 0xc5, 0x69, 0xa0, 0x17, 0xf0, 0x5f, 0xaa, 0xb0, 0xb0, 0xac,
-	0x99, 0x57, 0xaa, 0x69, 0xaa, 0xba, 0x66, 0xab, 0x9a, 0xa5, 0xe0, 0x0b, 0x05, 0x2b, 0x5a, 0x4f,
-	0xb1, 0x3f, 0xc8, 0x58, 0x53, 0xb5, 0x81, 0xd0, 0x44, 0x07, 0xb0, 0xcf, 0x52, 0xef, 0x59, 0xea,
-	0xb5, 0x6c, 0x51, 0x62, 0xea, 0xa6, 0x85, 0x44, 0x36, 0x72, 0xdb, 0xc0, 0x7a, 0x4f, 0x31, 0x4d,
-	0x5a, 0xaf, 0x82, 0xb1, 0x8e, 0x05, 0x40, 0x47, 0x70, 0x98, 0xcf, 0xeb, 0x52, 0xf9, 0x68, 0x9b,
-	0x1f, 0xb5, 0x5e, 0x66, 0xdb, 0x46, 0x7b, 0xb0, 0x4b, 0x19, 0xaa, 0x35, 0xb2, 0x0d, 0x5d, 0xa3,
-	0xbd, 0xb0, 0x4c, 0x61, 0x1b, 0xed, 0x42, 0x27, 0xeb, 0x14, 0x35, 0x17, 0x3a, 0x0f, 0xa1, 0x73,
-	0xa1, 0x9b, 0x16, 0x96, 0x42, 0x46, 0xcf, 0xa6, 0x55, 0x08, 0x3b, 0x69, 0x3f, 0x0a, 0x8a, 0x1e,
-	0xcf, 0x4a, 0x40, 0x08, 0xba, 0x79, 0xed, 0x85, 0x2a, 0xec, 0xa2, 0x47, 0xb0, 0x93, 0xc7, 0xe4,
-	0x2b, 0x55, 0x40, 0xd2, 0x5b, 0xe8, 0xb2, 0xf9, 0x1a, 0x4e, 0xe8, 0xcc, 0x48, 0x4c, 0x42, 0x24,
-	0x40, 0xf5, 0x92, 0x7c, 0xe1, 0x37, 0x87, 0x1e, 0xd1, 0x63, 0xa8, 0x5d, 0x3b, 0xde, 0x22, 0xdd,
-	0x76, 0x89, 0x20, 0xfd, 0x54, 0x66, 0xfe, 0x98, 0x75, 0xee, 0x32, 0x65, 0xb7, 0x85, 0x7b, 0x58,
-	0x02, 0x1b, 0xed, 0x86, 0x7d, 0xa8, 0xd3, 0x07, 0x7c, 0x11, 0xf1, 0xc5, 0xc0, 0x25, 0xf4, 0x1d,
-	0x40, 0x96, 0x62, 0x24, 0x6e, 0xb1, 0xa7, 0x61, 0x8f, 0x3f, 0x0d, 0xc5, 0x02, 0x70, 0x8e, 0x28,
-	0x7d, 0x82, 0x1d, 0x7d, 0x68, 0x15, 0x72, 0x3c, 0x82, 0x36, 0x5b, 0x25, 0xb7, 0xce, 0x98, 0xf0,
-	0xd5, 0xd5, 0xc1, 0x79, 0x28, 0xdb, 0x40, 0x54, 0x64, 0x95, 0x54, 0x72, 0x1b, 0x28, 0x05, 0xbf,
-	0x96, 0xa9, 0xf4, 0x63, 0x19, 0x3a, 0xd7, 0x24, 0x8c, 0xdc, 0xc0, 0xe7, 0x35, 0x89, 0xd0, 0xf8,
-	0x9c, 0x00, 0xbc, 0x27, 0xa9, 0x48, 0xfb, 0x75, 0xb3, 0x70, 0xbd, 0x89, 0xe5, 0xce, 0xb2, 0x77,
-	0x49, 0x06, 0xa0, 0x7f, 0x03, 0x8c, 0x83, 0xd9, 0xcc, 0x8d, 0xdf, 0x3b, 0xd1, 0x94, 0x47, 0xc9,
-	0x21, 0xd4, 0xfa, 0xce, 0x8d, 0x79, 0x12, 0xc9, 0x96, 0x5c, 0x02, 0xd2, 0x5b, 0x68, 0x0e, 0x83,
-	0xbb, 0x21, 0xf9, 0x4c, 0x3c, 0x3a, 0x41, 0x8f, 0x1e, 0x78, 0xfc, 0x44, 0xa0, 0x15, 0x8c, 0x1d,
-	0xcf, 0xe3, 0x93, 0x68, 0x62, 0x2e, 0x49, 0x0a, 0x34, 0x31, 0x89, 0xe6, 0x81, 0x1f, 0x11, 0xf4,
-	0x0c, 0xda, 0x11, 0xf3, 0x67, 0x8f, 0x83, 0x09, 0xe1, 0x8b, 0x1e, 0x12, 0xa8, 0x17, 0x4c, 0x08,
-	0x2d, 0x6e, 0x46, 0xa2, 0xc8, 0xb9, 0x4b, 0x0b, 0x48, 0x45, 0x29, 0x82, 0xb6, 0x7a, 0x37, 0x9b,
-	0xa7, 0x7d, 0x7f, 0x01, 0x75, 0xdd, 0x5f, 0x60, 0xf2, 0x89, 0x2f, 0xc5, 0xdd, 0xdc, 0x2e, 0x4b,
-	0x28, 0x98, 0x13, 0xd0, 0x3b, 0xd8, 0x36, 0x17, 0x37, 0xf2, 0x38, 0x76, 0x03, 0xff, 0xda, 0xf1,
-	0x98, 0xe3, 0x6e, 0x36, 0xee, 0x4c, 0xc5, 0x56, 0x11, 0x2e, 0x50, 0xa5, 0x4b, 0xa8, 0x5d, 0x78,
-	0xc1, 0x7d, 0x84, 0xfe, 0x05, 0x70, 0xeb, 0x05, 0xf7, 0xf6, 0x38, 0x58, 0xf8, 0x71, 0xba, 0xd8,
-	0x28, 0xd2, 0xa3, 0x00, 0xfa, 0x0f, 0xd4, 0xa8, 0x10, 0x89, 0x15, 0x76, 0x95, 0x3a, 0x27, 0xe9,
-	0xa7, 0x05, 0xb5, 0xc6, 0x89, 0x4e, 0x6a, 0x40, 0x4d, 0x99, 0xcd, 0xe3, 0x2f, 0x2f, 0xdf, 0x40,
-	0xb7, 0x18, 0x15, 0x35, 0x61, 0xeb, 0x07, 0x5d, 0xd5, 0x84, 0x12, 0x6a, 0x41, 0x6d, 0xa8, 0xc8,
-	0xd7, 0x8a, 0x50, 0x46, 0x00, 0x75, 0x0a, 0x5e, 0x9f, 0x09, 0x95, 0xd3, 0x5f, 0x9b, 0x50, 0x3b,
-	0x3f, 0x37, 0xdd, 0x19, 0x7a, 0x0d, 0x0d, 0x7e, 0x1f, 0xd0, 0x36, 0x2f, 0x81, 0x79, 0x3d, 0x78,
-	0xcc, 0xa5, 0xc2, 0x6d, 0x91, 0x4a, 0xe8, 0x0d, 0xb4, 0x4d, 0x12, 0x67, 0xc3, 0xdb, 0xe1, 0xb4,
-	0x14, 0x38, 0x78, 0x08, 0x48, 0x25, 0xf4, 0x1c, 0xea, 0x03, 0x12, 0xd3, 0x0f, 0x8f, 0x62, 0x88,
-	0xec, 0x85, 0xe1, 0xc5, 0x52, 0x09, 0xbd, 0x02, 0x30, 0x82, 0x7b, 0x12, 0x06, 0xfe, 0x2a, 0x33,
-	0x75, 0x9a, 0x4e, 0x5e, 0x2a, 0xa1, 0x13, 0x68, 0x9b, 0xd3, 0x45, 0x3c, 0x09, 0xee, 0x37, 0xe3,
-	0xff, 0x1f, 0x5a, 0x98, 0xdc, 0x04, 0x41, 0xbc, 0x11, 0xfb, 0x45, 0x92, 0xb2, 0x36, 0x42, 0xab,
-	0x37, 0xe1, 0x20, 0xf7, 0xa2, 0x93, 0x4a, 0xe8, 0x7f, 0xd0, 0x48, 0xa8, 0xd1, 0x03, 0xb7, 0xed,
-	0x25, 0x2d, 0x92, 0x4a, 0xe8, 0x2c, 0x97, 0xf0, 0x7a, 0xbf, 0x6b, 0xf2, 0x38, 0x85, 0x9d, 0xd4,
-	0x48, 0xf6, 0xbc, 0x35, 0x41, 0xd6, 0xd8, 0xbc, 0x83, 0xdd, 0x5c, 0xa0, 0x48, 0xf7, 0x0d, 0x5d,
-	0xcb, 0xc2, 0x2d, 0x5f, 0xae, 0xeb, 0xc3, 0x65, 0x33, 0xd8, 0x38, 0xc5, 0x37, 0xd0, 0xe5, 0x36,
-	0x1b, 0x67, 0xf8, 0x16, 0x84, 0x65, 0x98, 0xbf, 0x94, 0xe0, 0xb7, 0xb0, 0x8d, 0x49, 0x14, 0x3b,
-	0x61, 0xac, 0x38, 0xf3, 0xc0, 0xdb, 0x30, 0xc5, 0x33, 0x68, 0x73, 0xab, 0xfe, 0x74, 0x3c, 0xdf,
-	0xd0, 0xe8, 0x1c, 0xf6, 0x4c, 0x12, 0xeb, 0xfe, 0x82, 0x2d, 0x68, 0xd5, 0x9f, 0xb8, 0x63, 0x87,
-	0x3e, 0x62, 0x68, 0x7f, 0x69, 0x9e, 0xdf, 0xdd, 0x7f, 0xe2, 0xc3, 0x8b, 0xbf, 0xea, 0xa3, 0xb8,
-	0xff, 0xd7, 0xf9, 0x78, 0x05, 0xcd, 0x01, 0x89, 0x93, 0xbd, 0xb1, 0x26, 0xf3, 0xb4, 0xd9, 0x8c,
-	0xc0, 0x7a, 0xbb, 0xd3, 0x9b, 0x3a, 0xfe, 0x1d, 0xa1, 0xeb, 0x2d, 0xf9, 0x1c, 0x45, 0x9c, 0x92,
-	0x5b, 0x78, 0xeb, 0x02, 0x5d, 0xc2, 0x93, 0x01, 0x2b, 0x78, 0xf5, 0xe3, 0x71, 0x4d, 0xdc, 0xa7,
-	0x4b, 0x68, 0x85, 0x2f, 0x95, 0x6e, 0xea, 0xec, 0x3f, 0xce, 0xd9, 0x1f, 0x01, 0x00, 0x00, 0xff,
-	0xff, 0x42, 0x70, 0xbe, 0x17, 0x42, 0x0d, 0x00, 0x00,
+	// 1501 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xcb, 0x6e, 0xdb, 0xc6,
+	0x1a, 0xd6, 0xc5, 0xba, 0xfd, 0xb2, 0x64, 0x7a, 0x12, 0x3b, 0x84, 0xe3, 0x73, 0x22, 0xf0, 0xe4,
+	0x1c, 0x38, 0xc1, 0x89, 0xd3, 0xd8, 0xbd, 0x24, 0x4b, 0x5a, 0xa2, 0x15, 0xd6, 0xf2, 0x50, 0x18,
+	0x4a, 0x0e, 0xb2, 0x22, 0x68, 0x69, 0x6c, 0x13, 0xa0, 0x48, 0x85, 0xa4, 0x6c, 0xe4, 0x01, 0xfa,
+	0x22, 0xdd, 0xf7, 0x39, 0xba, 0xed, 0x13, 0x74, 0xd7, 0xc7, 0x28, 0x50, 0xcc, 0x70, 0x48, 0x91,
+	0x96, 0x52, 0xb8, 0xdd, 0x74, 0x63, 0xcc, 0xff, 0xfd, 0xf7, 0x8b, 0xfe, 0x9f, 0x86, 0x1d, 0x7b,
+	0xee, 0xbc, 0xbe, 0xbc, 0x0c, 0x9d, 0x59, 0xfc, 0xf7, 0x70, 0x1e, 0xf8, 0x91, 0x8f, 0x2a, 0x9c,
+	0xd8, 0x7b, 0x7a, 0xeb, 0xbb, 0xd1, 0x8d, 0x6d, 0x71, 0x30, 0x7c, 0xed, 0xcf, 0xa9, 0xe7, 0xbb,
+	0x51, 0x2c, 0xb3, 0xd7, 0xc9, 0x33, 0x23, 0x3a, 0xb9, 0x61, 0xef, 0x2b, 0xc7, 0xa5, 0xb1, 0x84,
+	0xf2, 0x1d, 0xd4, 0x86, 0x06, 0x1e, 0xfa, 0x41, 0x84, 0xda, 0x50, 0xd2, 0x7b, 0x72, 0xb1, 0x53,
+	0x3c, 0xa8, 0x90, 0x92, 0xde, 0x43, 0xfb, 0xd0, 0x30, 0xe6, 0x34, 0x30, 0x23, 0x3b, 0xa2, 0x72,
+	0xa9, 0x53, 0x3c, 0x68, 0x90, 0x25, 0xc0, 0x14, 0x31, 0xd6, 0xff, 0x86, 0xe2, 0x6f, 0x45, 0x28,
+	0x1b, 0xee, 0xaa, 0x96, 0x02, 0x9b, 0x26, 0x0d, 0x1c, 0xdb, 0xc5, 0x8b, 0xd9, 0x25, 0x0d, 0x84,
+	0x62, 0x0e, 0xcb, 0x5b, 0x2e, 0xdf, 0xb3, 0x8c, 0x9e, 0x43, 0x4b, 0xf7, 0x22, 0x1a, 0x78, 0xb6,
+	0x1b, 0x4b, 0x6c, 0x70, 0x89, 0x3c, 0xc8, 0xfd, 0x0e, 0xe5, 0x1a, 0x67, 0x95, 0xf4, 0x21, 0x7a,
+	0x09, 0x75, 0x91, 0x48, 0x28, 0x57, 0x3a, 0xe5, 0x83, 0xe6, 0x51, 0xfb, 0x30, 0xae, 0xb3, 0x80,
+	0x49, 0xca, 0x67, 0xb2, 0xa2, 0x5a, 0xa1, 0x5c, 0xcd, 0xc9, 0x0a, 0x98, 0xa4, 0x7c, 0xe5, 0x77,
+	0x96, 0x27, 0x1e, 0xff, 0x63, 0x79, 0xee, 0x43, 0x63, 0xe8, 0x7b, 0x2c, 0x16, 0xbd, 0x27, 0x57,
+	0xb8, 0xfb, 0x25, 0xc0, 0xb8, 0xef, 0xef, 0xd4, 0xe9, 0x34, 0xa0, 0x61, 0x28, 0xd7, 0x63, 0x0f,
+	0x29, 0x80, 0x76, 0xa1, 0xca, 0xe4, 0xb0, 0x2f, 0x37, 0xb8, 0xa2, 0xa0, 0x58, 0xfe, 0x21, 0x0d,
+	0x6e, 0x9d, 0x09, 0x0d, 0x65, 0xc8, 0xe5, 0x6f, 0xc6, 0x30, 0x49, 0xf9, 0xca, 0x4f, 0x25, 0xa8,
+	0x09, 0x14, 0x21, 0xd8, 0xc0, 0xf6, 0x8c, 0xf2, 0x2a, 0x34, 0x08, 0x7f, 0xe7, 0x23, 0x28, 0xdd,
+	0x8f, 0xe0, 0x31, 0x54, 0x0c, 0x6f, 0x61, 0x7a, 0x22, 0xfb, 0x98, 0x60, 0x76, 0xcc, 0x91, 0x7d,
+	0xcd, 0x13, 0xae, 0x10, 0xfe, 0x66, 0x58, 0x97, 0x61, 0x71, 0x8a, 0xfc, 0x8d, 0xfe, 0x0d, 0x80,
+	0x29, 0x9d, 0x86, 0x9a, 0x3d, 0xf7, 0x5d, 0xb9, 0xda, 0x29, 0x1e, 0xd4, 0x49, 0x06, 0x61, 0xbe,
+	0x39, 0xd5, 0xbb, 0x99, 0xcc, 0xf9, 0x28, 0xd4, 0xc9, 0x12, 0x48, 0xb9, 0xfa, 0xf5, 0x6c, 0xce,
+	0x6b, 0x93, 0x70, 0x19, 0x80, 0x64, 0xa8, 0xf5, 0xe9, 0x8c, 0x15, 0x44, 0x14, 0x27, 0x21, 0x99,
+	0x57, 0x6e, 0x3e, 0x6e, 0x0a, 0xf0, 0xc0, 0x33, 0x08, 0xb3, 0xcb, 0xec, 0xc7, 0xec, 0x66, 0x9c,
+	0x71, 0x0a, 0x28, 0x36, 0x3c, 0x36, 0xf0, 0x78, 0x14, 0xd8, 0x57, 0x57, 0xce, 0xc4, 0x9c, 0xdc,
+	0xd0, 0xe9, 0xc2, 0xa5, 0x41, 0x88, 0x74, 0xd8, 0x8a, 0x18, 0xb8, 0x84, 0x78, 0x19, 0x9b, 0x47,
+	0xcf, 0x0e, 0x73, 0xbf, 0xe7, 0x15, 0x4d, 0x72, 0x5f, 0x4f, 0x39, 0x80, 0x0d, 0x03, 0x8f, 0x43,
+	0xd4, 0x81, 0x8a, 0x13, 0xd1, 0x19, 0x33, 0xc4, 0x7a, 0x08, 0xa2, 0x87, 0x06, 0x1e, 0x93, 0x98,
+	0xa1, 0x7c, 0x05, 0x75, 0xd1, 0xbb, 0x10, 0x3d, 0xcf, 0x4b, 0xdf, 0xef, 0x78, 0xaa, 0x01, 0x4c,
+	0x9f, 0x7e, 0x5a, 0xd0, 0x30, 0x5a, 0x19, 0xf2, 0xe2, 0xea, 0x90, 0x2b, 0x2f, 0x01, 0x86, 0x06,
+	0x4e, 0x34, 0x32, 0xe3, 0x3a, 0xe5, 0xe2, 0xad, 0xe5, 0xb8, 0x4e, 0x95, 0x5f, 0xcb, 0xd0, 0x50,
+	0x5d, 0x3b, 0x98, 0x8d, 0x3e, 0xcf, 0xa9, 0xf2, 0x4b, 0x19, 0x2a, 0xec, 0x11, 0xa2, 0x1a, 0x94,
+	0x07, 0x86, 0x29, 0x15, 0x50, 0x1b, 0xa0, 0xf7, 0x51, 0xc7, 0x7d, 0xab, 0xaf, 0x9a, 0x43, 0xa9,
+	0x88, 0x5a, 0xd0, 0x30, 0xf0, 0xd8, 0x52, 0x07, 0x2a, 0x39, 0x97, 0x4a, 0xe8, 0x09, 0x3c, 0x62,
+	0xa4, 0x39, 0x52, 0xc9, 0x68, 0x3c, 0xb4, 0x4e, 0x55, 0x7d, 0x30, 0x26, 0x9a, 0x54, 0x46, 0xbb,
+	0x80, 0x38, 0x43, 0xef, 0x63, 0x75, 0x60, 0xf5, 0xb4, 0x3e, 0x51, 0x7b, 0x9a, 0xb4, 0x91, 0x28,
+	0xf4, 0x88, 0x7e, 0x3a, 0xb2, 0x8c, 0x53, 0xeb, 0x83, 0x8e, 0x7b, 0xc6, 0x07, 0xa9, 0x82, 0xf6,
+	0x41, 0x66, 0x8c, 0x81, 0x61, 0x9a, 0x0c, 0x37, 0xce, 0xbb, 0xba, 0xd5, 0x7d, 0xaf, 0x62, 0xac,
+	0x0d, 0xa4, 0x6a, 0xea, 0x87, 0x9b, 0x33, 0x53, 0x3f, 0x35, 0xf4, 0x02, 0xfe, 0xcb, 0x18, 0x23,
+	0xa2, 0x62, 0xf3, 0x5c, 0x37, 0x4d, 0xdd, 0xc0, 0x96, 0x8e, 0x47, 0x1a, 0x39, 0xd5, 0x88, 0x86,
+	0xbb, 0x9a, 0xf5, 0x41, 0x25, 0x58, 0xc7, 0x7d, 0xa9, 0x8e, 0xf6, 0x60, 0x97, 0x87, 0xde, 0x1d,
+	0xe9, 0x17, 0xea, 0x88, 0x09, 0x26, 0x66, 0x1a, 0x48, 0xe6, 0x43, 0x62, 0x0d, 0x89, 0xd1, 0xd5,
+	0x4c, 0x93, 0xe5, 0xab, 0x11, 0x62, 0x10, 0x09, 0x50, 0x07, 0xf6, 0xb3, 0x71, 0x9d, 0x69, 0x1f,
+	0x2d, 0xf3, 0x23, 0xee, 0xa6, 0xba, 0x4d, 0xb4, 0x03, 0xdb, 0x4c, 0x42, 0x1f, 0x8d, 0xad, 0xa1,
+	0x81, 0x59, 0x2d, 0x46, 0xa6, 0xb4, 0x89, 0xb6, 0xa1, 0x95, 0x56, 0x8a, 0xa9, 0x4b, 0xad, 0xfb,
+	0xd0, 0x89, 0xd4, 0x4e, 0x12, 0x4b, 0xa0, 0x61, 0xd7, 0x62, 0x59, 0x48, 0x5b, 0x49, 0x3d, 0x72,
+	0x8c, 0xae, 0x88, 0x4a, 0x42, 0x08, 0xda, 0x59, 0xee, 0xa9, 0x2e, 0x6d, 0xa3, 0x47, 0xb0, 0x95,
+	0xc5, 0xd4, 0x73, 0x5d, 0x42, 0xca, 0x5b, 0x68, 0xf3, 0xfe, 0x0e, 0xed, 0xc0, 0x9e, 0xd1, 0x88,
+	0x06, 0x48, 0x82, 0xf2, 0x19, 0xfd, 0x2c, 0x26, 0x87, 0x3d, 0xd9, 0x4e, 0xb8, 0xb0, 0xdd, 0x45,
+	0x72, 0x53, 0x62, 0x42, 0xf9, 0xb1, 0xc8, 0xed, 0x71, 0xed, 0xcc, 0x30, 0xa5, 0xd3, 0x22, 0x2c,
+	0x2c, 0x81, 0x07, 0x6d, 0xe0, 0x5d, 0xa8, 0xb2, 0x9f, 0xe5, 0x22, 0x14, 0x0b, 0x48, 0x50, 0xe8,
+	0x1b, 0x80, 0x34, 0xc4, 0x50, 0xde, 0xe0, 0xbf, 0x88, 0x1d, 0xf1, 0x8b, 0xc8, 0x27, 0x40, 0x32,
+	0x82, 0xca, 0x27, 0xd8, 0x32, 0x06, 0xa3, 0x5c, 0x8c, 0x1d, 0x68, 0xf2, 0x85, 0x7d, 0x65, 0x4f,
+	0xa8, 0x38, 0x10, 0x2d, 0x92, 0x85, 0xd2, 0x3d, 0xcf, 0x48, 0x9e, 0x49, 0x29, 0xb3, 0xe7, 0x13,
+	0xf0, 0x4b, 0x91, 0x2a, 0x3f, 0x14, 0xa1, 0x75, 0x41, 0x83, 0xd0, 0xf1, 0x3d, 0x91, 0x93, 0x0c,
+	0xb5, 0xdb, 0x18, 0x10, 0x35, 0x49, 0x48, 0x56, 0xaf, 0xcb, 0x85, 0xe3, 0x4e, 0x47, 0xce, 0x2c,
+	0xbd, 0xd8, 0x29, 0xc0, 0xf6, 0xda, 0xc4, 0x9f, 0xcd, 0x9c, 0xe8, 0xbd, 0x1d, 0xde, 0x08, 0x2f,
+	0x19, 0x84, 0x69, 0x5f, 0x3b, 0x91, 0x08, 0x22, 0xbe, 0x45, 0x4b, 0x40, 0x79, 0x0b, 0xf5, 0x81,
+	0x7f, 0x3d, 0xa0, 0xb7, 0xd4, 0x65, 0x1d, 0x74, 0xd9, 0x43, 0xf8, 0x8f, 0x09, 0x96, 0xc1, 0xc4,
+	0x76, 0x5d, 0xd1, 0x89, 0x3a, 0x11, 0x94, 0xa2, 0x41, 0x9d, 0xd0, 0x70, 0xee, 0x7b, 0x21, 0x45,
+	0xcf, 0xa0, 0x19, 0x72, 0x7b, 0xd6, 0xc4, 0x9f, 0x52, 0x71, 0x4e, 0x21, 0x86, 0xba, 0xfe, 0x94,
+	0xb2, 0xe4, 0x66, 0x34, 0x0c, 0xed, 0xeb, 0x24, 0x81, 0x84, 0x54, 0x42, 0x68, 0xb2, 0xc5, 0x9d,
+	0xd4, 0xfd, 0x05, 0x54, 0x0d, 0x6f, 0x41, 0xe8, 0x27, 0xb1, 0x46, 0xb7, 0x33, 0xdb, 0x2f, 0x16,
+	0x21, 0x42, 0x00, 0xbd, 0x83, 0x4d, 0x73, 0x71, 0xa9, 0x4e, 0x22, 0xc7, 0xf7, 0x2e, 0x6c, 0x97,
+	0x1b, 0x6e, 0xa7, 0xed, 0x4e, 0x59, 0x7c, 0x15, 0x91, 0x9c, 0xa8, 0x72, 0x06, 0x95, 0x53, 0xd7,
+	0xbf, 0x0b, 0xd1, 0xbf, 0x00, 0xae, 0x5c, 0xff, 0xce, 0x9a, 0xf8, 0x0b, 0x2f, 0x4a, 0x16, 0x1b,
+	0x43, 0xba, 0x0c, 0x40, 0xff, 0x81, 0x0a, 0x23, 0xd8, 0x05, 0x64, 0xa3, 0xd4, 0x3a, 0x4c, 0x3e,
+	0xe0, 0x98, 0x36, 0x89, 0x79, 0x4a, 0x0d, 0x2a, 0xda, 0x6c, 0x1e, 0x7d, 0x7e, 0xf9, 0x06, 0xda,
+	0x79, 0xaf, 0xa8, 0x0e, 0x1b, 0xdf, 0x1b, 0x3a, 0x96, 0x0a, 0xa8, 0x01, 0x95, 0x81, 0xa6, 0x5e,
+	0x68, 0x52, 0x11, 0x01, 0x54, 0x19, 0x78, 0x71, 0x2c, 0x95, 0x8e, 0x7e, 0x6e, 0x40, 0xe5, 0xe4,
+	0xc4, 0x74, 0x66, 0xe8, 0x35, 0xd4, 0xc4, 0x3c, 0xa0, 0x4d, 0x91, 0x02, 0xb7, 0xba, 0xf7, 0x58,
+	0x50, 0xb9, 0x69, 0x51, 0x0a, 0xe8, 0x0d, 0x34, 0x4d, 0x1a, 0xa5, 0xcd, 0xdb, 0x12, 0x62, 0x09,
+	0xb0, 0x77, 0x1f, 0x50, 0x0a, 0xe8, 0x39, 0x54, 0xfb, 0x34, 0x62, 0x9f, 0x77, 0x79, 0x17, 0xe9,
+	0x89, 0x71, 0x23, 0xa5, 0x80, 0x5e, 0x01, 0x0c, 0xfd, 0x3b, 0x1a, 0xf8, 0xde, 0xaa, 0x64, 0x62,
+	0x34, 0xe9, 0xbc, 0x52, 0x40, 0x87, 0xd0, 0x34, 0x6f, 0x16, 0xd1, 0xd4, 0xbf, 0x7b, 0x98, 0xfc,
+	0xff, 0xa1, 0x41, 0xe8, 0xa5, 0xef, 0x47, 0x0f, 0x92, 0x7e, 0x11, 0x87, 0x8c, 0xc7, 0x68, 0x75,
+	0x12, 0xf6, 0x32, 0xa7, 0x51, 0x29, 0xa0, 0xff, 0xb1, 0xd3, 0x1f, 0xf1, 0x13, 0x9a, 0x37, 0xdb,
+	0x5c, 0x8a, 0x85, 0x71, 0xc0, 0x7d, 0x1a, 0xa5, 0x07, 0x74, 0x7d, 0x08, 0x09, 0x5b, 0x29, 0xa0,
+	0x6f, 0xa1, 0xcd, 0xec, 0x7a, 0x8b, 0x54, 0x65, 0x4d, 0x28, 0x6b, 0xf4, 0x8e, 0x33, 0x85, 0x59,
+	0x1f, 0xff, 0x9a, 0x7c, 0x8f, 0x60, 0x2b, 0x51, 0x52, 0x5d, 0x77, 0x4d, 0x32, 0x6b, 0x74, 0xde,
+	0xc1, 0x76, 0xc6, 0x51, 0x68, 0x78, 0x43, 0x03, 0xa7, 0xee, 0x96, 0x47, 0x7c, 0xbd, 0xbb, 0xb4,
+	0xd7, 0x0f, 0x0e, 0xf1, 0x0d, 0xb4, 0x85, 0xce, 0x83, 0x23, 0x7c, 0x0b, 0xd2, 0xd2, 0xcd, 0x5f,
+	0x0a, 0xf0, 0x6b, 0xd8, 0x24, 0x34, 0x8c, 0xec, 0x20, 0x8a, 0xbf, 0x0d, 0x1f, 0x16, 0xe2, 0x31,
+	0x34, 0x85, 0x16, 0xff, 0x64, 0x7c, 0x98, 0xd2, 0x09, 0xec, 0x98, 0xbc, 0xcf, 0xfc, 0x10, 0xe8,
+	0xde, 0xd4, 0x99, 0xd8, 0xec, 0xa7, 0x8c, 0x76, 0x97, 0xea, 0xd9, 0x1b, 0xf1, 0x27, 0x36, 0xdc,
+	0xe8, 0x8b, 0x36, 0xf2, 0x77, 0x66, 0x9d, 0x8d, 0x57, 0x50, 0xef, 0xd3, 0x28, 0xde, 0x4f, 0x6b,
+	0x22, 0x4f, 0x8a, 0xcd, 0x05, 0x78, 0x6d, 0xb7, 0xba, 0x37, 0xb6, 0x77, 0x4d, 0xd9, 0x1a, 0x8d,
+	0x3f, 0x65, 0x91, 0x10, 0xc9, 0x2c, 0xd6, 0x75, 0x8e, 0xce, 0xe0, 0x49, 0x3c, 0xd8, 0xab, 0x9f,
+	0xb5, 0x6b, 0xfc, 0x3e, 0x5d, 0x42, 0x2b, 0xf2, 0x4a, 0xe1, 0xb2, 0xca, 0xff, 0x63, 0x3d, 0xfe,
+	0x23, 0x00, 0x00, 0xff, 0xff, 0xdb, 0xfb, 0x7c, 0xc5, 0x10, 0x0f, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -1198,6 +1359,10 @@
 	GetONU(ctx context.Context, in *ONURequest, opts ...grpc.CallOption) (*ONU, error)
 	// Get status of all ONUs
 	GetONUs(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*ONUs, error)
+	// Get all the Services
+	GetServices(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Services, error)
+	// Get all the Services of an ONU by serial number
+	GetOnuServices(ctx context.Context, in *ONURequest, opts ...grpc.CallOption) (*Services, error)
 	// Shutdown an ONU by serial number
 	ShutdownONU(ctx context.Context, in *ONURequest, opts ...grpc.CallOption) (*Response, error)
 	// Shutdown all ONUs in OLT
@@ -1306,6 +1471,24 @@
 	return out, nil
 }
 
+func (c *bBSimClient) GetServices(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Services, error) {
+	out := new(Services)
+	err := c.cc.Invoke(ctx, "/bbsim.BBSim/GetServices", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *bBSimClient) GetOnuServices(ctx context.Context, in *ONURequest, opts ...grpc.CallOption) (*Services, error) {
+	out := new(Services)
+	err := c.cc.Invoke(ctx, "/bbsim.BBSim/GetOnuServices", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 func (c *bBSimClient) ShutdownONU(ctx context.Context, in *ONURequest, opts ...grpc.CallOption) (*Response, error) {
 	out := new(Response)
 	err := c.cc.Invoke(ctx, "/bbsim.BBSim/ShutdownONU", in, out, opts...)
@@ -1441,6 +1624,10 @@
 	GetONU(context.Context, *ONURequest) (*ONU, error)
 	// Get status of all ONUs
 	GetONUs(context.Context, *Empty) (*ONUs, error)
+	// Get all the Services
+	GetServices(context.Context, *Empty) (*Services, error)
+	// Get all the Services of an ONU by serial number
+	GetOnuServices(context.Context, *ONURequest) (*Services, error)
 	// Shutdown an ONU by serial number
 	ShutdownONU(context.Context, *ONURequest) (*Response, error)
 	// Shutdown all ONUs in OLT
@@ -1497,6 +1684,12 @@
 func (*UnimplementedBBSimServer) GetONUs(ctx context.Context, req *Empty) (*ONUs, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method GetONUs not implemented")
 }
+func (*UnimplementedBBSimServer) GetServices(ctx context.Context, req *Empty) (*Services, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetServices not implemented")
+}
+func (*UnimplementedBBSimServer) GetOnuServices(ctx context.Context, req *ONURequest) (*Services, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetOnuServices not implemented")
+}
 func (*UnimplementedBBSimServer) ShutdownONU(ctx context.Context, req *ONURequest) (*Response, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method ShutdownONU not implemented")
 }
@@ -1685,6 +1878,42 @@
 	return interceptor(ctx, in, info, handler)
 }
 
+func _BBSim_GetServices_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.(BBSimServer).GetServices(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/bbsim.BBSim/GetServices",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(BBSimServer).GetServices(ctx, req.(*Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _BBSim_GetOnuServices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ONURequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(BBSimServer).GetOnuServices(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/bbsim.BBSim/GetOnuServices",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(BBSimServer).GetOnuServices(ctx, req.(*ONURequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _BBSim_ShutdownONU_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(ONURequest)
 	if err := dec(in); err != nil {
@@ -1956,6 +2185,14 @@
 			Handler:    _BBSim_GetONUs_Handler,
 		},
 		{
+			MethodName: "GetServices",
+			Handler:    _BBSim_GetServices_Handler,
+		},
+		{
+			MethodName: "GetOnuServices",
+			Handler:    _BBSim_GetOnuServices_Handler,
+		},
+		{
 			MethodName: "ShutdownONU",
 			Handler:    _BBSim_ShutdownONU_Handler,
 		},