VOL-2172: Delete tech-profile on ONU
- Changes to supporting DELETE_TCONT_REQ and DELETE_GEM_PORT_REQ
- Bug fix to not delete tp instance for ONU-SingleInstance case
- Use voltha proto version 2.1.1
- Use voltha-lib-go version 2.2.19
- Bump voltha-openolt-adapter version to 2.2.4

Change-Id: I8caa4d13fec37227befddbe2444489b923169fbe
diff --git a/VERSION b/VERSION
index 5859406..530cdd9 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.2.3
+2.2.4
diff --git a/adaptercore/openolt_flowmgr.go b/adaptercore/openolt_flowmgr.go
index 67d2a2a..565c8c8 100644
--- a/adaptercore/openolt_flowmgr.go
+++ b/adaptercore/openolt_flowmgr.go
@@ -1220,6 +1220,56 @@
 	return id, Downstream
 }
 
+func (f *OpenOltFlowMgr) sendDeleteGemPortToChild(intfID uint32, onuID uint32, uniID uint32, gemPortID uint32, tpPath string) error {
+	onuDevice, err := f.getOnuChildDevice(intfID, onuID)
+	if err != nil {
+		log.Errorw("error fetching child device from core", log.Fields{"onuId": onuID})
+		return err
+	}
+
+	delGemPortMsg := &ic.InterAdapterDeleteGemPortMessage{UniId: uniID, TpPath: tpPath, GemPortId: gemPortID}
+	log.Debugw("sending gem port delete to openonu adapter", log.Fields{"msg": *delGemPortMsg})
+	if sendErr := f.deviceHandler.AdapterProxy.SendInterAdapterMessage(context.Background(),
+		delGemPortMsg,
+		ic.InterAdapterMessageType_DELETE_GEM_PORT_REQUEST,
+		f.deviceHandler.deviceType,
+		onuDevice.Type,
+		onuDevice.Id,
+		onuDevice.ProxyAddress.DeviceId, ""); sendErr != nil {
+		log.Errorw("failure sending del gem port to onu adapter", log.Fields{"fromAdapter": f.deviceHandler.deviceType,
+			"toAdapter": onuDevice.Type, "onuId": onuDevice.Id,
+			"proxyDeviceId": onuDevice.ProxyAddress.DeviceId})
+		return sendErr
+	}
+	log.Debugw("success sending del gem port to onu adapter", log.Fields{"msg": delGemPortMsg})
+	return nil
+}
+
+func (f *OpenOltFlowMgr) sendDeleteTcontToChild(intfID uint32, onuID uint32, uniID uint32, allocID uint32, tpPath string) error {
+	onuDevice, err := f.getOnuChildDevice(intfID, onuID)
+	if err != nil {
+		log.Errorw("error fetching child device from core", log.Fields{"onuId": onuID})
+		return err
+	}
+
+	delTcontMsg := &ic.InterAdapterDeleteTcontMessage{UniId: uniID, TpPath: tpPath, AllocId: allocID}
+	log.Debugw("sending tcont delete to openonu adapter", log.Fields{"msg": *delTcontMsg})
+	if sendErr := f.deviceHandler.AdapterProxy.SendInterAdapterMessage(context.Background(),
+		delTcontMsg,
+		ic.InterAdapterMessageType_DELETE_TCONT_REQUEST,
+		f.deviceHandler.deviceType,
+		onuDevice.Type,
+		onuDevice.Id,
+		onuDevice.ProxyAddress.DeviceId, ""); sendErr != nil {
+		log.Errorw("failure sending del tcont to onu adapter", log.Fields{"fromAdapter": f.deviceHandler.deviceType,
+			"toAdapter": onuDevice.Type, "onuId": onuDevice.Id,
+			"proxyDeviceId": onuDevice.ProxyAddress.DeviceId})
+		return sendErr
+	}
+	log.Debugw("success sending del tcont to onu adapter", log.Fields{"msg": delTcontMsg})
+	return nil
+}
+
 //clearResources clears pon resources in kv store and the device
 func (f *OpenOltFlowMgr) clearResources(flow *ofp.OfpFlowStats, Intf uint32, onuID int32, uniID int32,
 	gemPortID int32, flowID uint32, flowDirection string,
@@ -1282,6 +1332,11 @@
 			f.resourceMgr.DeleteFlowIDsForGem(Intf, uint32(gemPortID))
 			f.resourceMgr.FreeGemPortID(Intf, uint32(onuID), uint32(uniID), uint32(gemPortID))
 			f.onuIdsLock.Unlock()
+			// Delete the gem port on the ONU.
+			if err := f.sendDeleteGemPortToChild(Intf, uint32(onuID), uint32(uniID), uint32(gemPortID), tpPath); err != nil {
+				log.Errorw("error processing delete gem-port towards onu",
+					log.Fields{"err": err, "pon": Intf, "onuID": onuID, "uniID": uniID, "gemPortId": gemPortID})
+			}
 
 			ok, _ := f.isTechProfileUsedByAnotherGem(Intf, uint32(onuID), uint32(uniID), tpID, techprofileInst, uint32(gemPortID))
 			if !ok {
@@ -1290,7 +1345,11 @@
 				f.RemoveSchedulerQueues(schedQueue{direction: tp_pb.Direction_DOWNSTREAM, intfID: Intf, onuID: uint32(onuID), uniID: uint32(uniID), tpID: tpID, uniPort: portNum, tpInst: techprofileInst})
 				f.DeleteTechProfileInstance(Intf, uint32(onuID), uint32(uniID), "", tpID)
 				f.resourceMgr.FreeAllocID(Intf, uint32(onuID), uint32(uniID), techprofileInst.UsScheduler.AllocID)
-				// TODO: Send a "Delete TechProfile" message to ONU to do its own clean up on ONU OMCI stack
+				// Delete the TCONT on the ONU.
+				if err := f.sendDeleteTcontToChild(Intf, uint32(onuID), uint32(uniID), uint32(techprofileInst.UsScheduler.AllocID), tpPath); err != nil {
+					log.Errorw("error processing delete tcont towards onu",
+						log.Fields{"pon": Intf, "onuID": onuID, "uniID": uniID, "allocId": techprofileInst.UsScheduler.AllocID})
+				}
 			}
 		}
 	}
@@ -1834,20 +1893,19 @@
 		// So, we need to check and make sure that no other gem port is referring to the given TP ID
 		// on any other uni port.
 		tpInstances := f.techprofile[ponIntf].FindAllTpInstances(tpID, ponIntf, onuID)
+		log.Debugw("got single instance tp instances", log.Fields{"tpInstances": tpInstances})
 		for i := 0; i < len(tpInstances); i++ {
 			tpI := tpInstances[i]
 			tpGemPorts := tpI.UpstreamGemPortAttributeList
-			for _, currentGemPort := range currentGemPorts {
-				for _, tpGemPort := range tpGemPorts {
-					if (currentGemPort == tpGemPort.GemportID) && (currentGemPort != gemPortID) {
-						log.Debugw("tech-profile-is-in-use-by-gem", log.Fields{"gemPort": currentGemPort})
-						return true, currentGemPort
-					}
+			for _, tpGemPort := range tpGemPorts {
+				if tpGemPort.GemportID != gemPortID {
+					log.Debugw("single instance tp is in use by gem", log.Fields{"gemPort": tpGemPort.GemportID})
+					return true, tpGemPort.GemportID
 				}
 			}
 		}
 	}
-	log.Debug("tech-profile-is-not-in-use-by-any-gem")
+	log.Debug("tech profile is not in use by any gem")
 	return false, 0
 }
 
diff --git a/go.mod b/go.mod
index 06cdf31..08c6f75 100644
--- a/go.mod
+++ b/go.mod
@@ -5,9 +5,8 @@
 require (
 	github.com/gogo/protobuf v1.3.1
 	github.com/golang/protobuf v1.3.2
-	github.com/opencord/voltha-lib-go/v2 v2.2.18
-	github.com/opencord/voltha-protos/v2 v2.1.0
-	github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 // indirect
+	github.com/opencord/voltha-lib-go/v2 v2.2.19
+	github.com/opencord/voltha-protos/v2 v2.1.1
 	go.etcd.io/etcd v0.0.0-20190930204107-236ac2a90522
 	google.golang.org/grpc v1.25.1
 )
diff --git a/go.sum b/go.sum
index cee2dca..b1abe82 100644
--- a/go.sum
+++ b/go.sum
@@ -192,10 +192,11 @@
 github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
 github.com/onsi/gomega v1.4.2 h1:3mYCb7aPxS/RU7TI1y4rkEn1oKmPRjNJLNEXgw7MH2I=
 github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
-github.com/opencord/voltha-lib-go/v2 v2.2.18 h1:rie20b5QNhRjh9GL4THHdGiHSUqrx4VMEJw44hZI1Mk=
-github.com/opencord/voltha-lib-go/v2 v2.2.18/go.mod h1:vjd6PeC3vOYDE/ztMjraWFB2Wv1oaPcum1Xz4RJbSoE=
-github.com/opencord/voltha-protos/v2 v2.1.0 h1:Ppl4/3OBwgGuLk0ob9vIEwMGGRC2sqe7WWoxh0Uq/n0=
+github.com/opencord/voltha-lib-go/v2 v2.2.19 h1:t5feQyT+/EmE1nuS1uRIDKLITvaLIaBtX6NsMTfVxs8=
+github.com/opencord/voltha-lib-go/v2 v2.2.19/go.mod h1:CoY2amUEsbO2grCbJRk7G+Fl1Xb7vQLw3/uGLbTz0Ms=
 github.com/opencord/voltha-protos/v2 v2.1.0/go.mod h1:6kOcfYi1CadWowFxI2SH5wLfHrsRECZLZlD2MFK6WDI=
+github.com/opencord/voltha-protos/v2 v2.1.1 h1:Kyo3bL2bDtE5fyV/Ecci3d+Ui8LeXTVq9R3DD+IbKEQ=
+github.com/opencord/voltha-protos/v2 v2.1.1/go.mod h1:6kOcfYi1CadWowFxI2SH5wLfHrsRECZLZlD2MFK6WDI=
 github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
 github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY=
 github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
diff --git a/vendor/github.com/opencord/voltha-lib-go/v2/pkg/techprofile/tech_profile.go b/vendor/github.com/opencord/voltha-lib-go/v2/pkg/techprofile/tech_profile.go
index 2c0edae..12cda8d 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v2/pkg/techprofile/tech_profile.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v2/pkg/techprofile/tech_profile.go
@@ -768,7 +768,7 @@
 // FindAllTpInstances returns all TechProfile instances for a given TechProfile table-id, pon interface ID and onu ID.
 func (t *TechProfileMgr) FindAllTpInstances(techProfiletblID uint32, ponIntf uint32, onuID uint32) []TechProfile {
 	var tp TechProfile
-	onuTpInstancePath := fmt.Sprintf("%d/%s/pon-{%d}/onu-{%d}", techProfiletblID, t.resourceMgr.GetTechnology(), ponIntf, onuID)
+	onuTpInstancePath := fmt.Sprintf("%s/%d/pon-{%d}/onu-{%d}", t.resourceMgr.GetTechnology(), techProfiletblID, ponIntf, onuID)
 
 	if kvPairs, _ := t.config.KVBackend.List(onuTpInstancePath); kvPairs != nil {
 		tpInstances := make([]TechProfile, 0, len(kvPairs))
diff --git a/vendor/github.com/opencord/voltha-protos/v2/go/inter_container/inter_container.pb.go b/vendor/github.com/opencord/voltha-protos/v2/go/inter_container/inter_container.pb.go
index e529427..56bfd36 100644
--- a/vendor/github.com/opencord/voltha-protos/v2/go/inter_container/inter_container.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v2/go/inter_container/inter_container.pb.go
@@ -264,18 +264,22 @@
 	InterAdapterMessageType_ONU_IND_REQUEST               InterAdapterMessageType_Types = 6
 	InterAdapterMessageType_ONU_IND_RESPONSE              InterAdapterMessageType_Types = 7
 	InterAdapterMessageType_TECH_PROFILE_DOWNLOAD_REQUEST InterAdapterMessageType_Types = 8
+	InterAdapterMessageType_DELETE_GEM_PORT_REQUEST       InterAdapterMessageType_Types = 9
+	InterAdapterMessageType_DELETE_TCONT_REQUEST          InterAdapterMessageType_Types = 10
 )
 
 var InterAdapterMessageType_Types_name = map[int32]string{
-	0: "FLOW_REQUEST",
-	1: "FLOW_RESPONSE",
-	2: "OMCI_REQUEST",
-	3: "OMCI_RESPONSE",
-	4: "METRICS_REQUEST",
-	5: "METRICS_RESPONSE",
-	6: "ONU_IND_REQUEST",
-	7: "ONU_IND_RESPONSE",
-	8: "TECH_PROFILE_DOWNLOAD_REQUEST",
+	0:  "FLOW_REQUEST",
+	1:  "FLOW_RESPONSE",
+	2:  "OMCI_REQUEST",
+	3:  "OMCI_RESPONSE",
+	4:  "METRICS_REQUEST",
+	5:  "METRICS_RESPONSE",
+	6:  "ONU_IND_REQUEST",
+	7:  "ONU_IND_RESPONSE",
+	8:  "TECH_PROFILE_DOWNLOAD_REQUEST",
+	9:  "DELETE_GEM_PORT_REQUEST",
+	10: "DELETE_TCONT_REQUEST",
 }
 
 var InterAdapterMessageType_Types_value = map[string]int32{
@@ -288,6 +292,8 @@
 	"ONU_IND_REQUEST":               6,
 	"ONU_IND_RESPONSE":              7,
 	"TECH_PROFILE_DOWNLOAD_REQUEST": 8,
+	"DELETE_GEM_PORT_REQUEST":       9,
+	"DELETE_TCONT_REQUEST":          10,
 }
 
 func (x InterAdapterMessageType_Types) String() string {
@@ -1186,6 +1192,116 @@
 	return ""
 }
 
+type InterAdapterDeleteGemPortMessage struct {
+	UniId                uint32   `protobuf:"varint,1,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
+	TpPath               string   `protobuf:"bytes,2,opt,name=tp_path,json=tpPath,proto3" json:"tp_path,omitempty"`
+	GemPortId            uint32   `protobuf:"varint,3,opt,name=gem_port_id,json=gemPortId,proto3" json:"gem_port_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *InterAdapterDeleteGemPortMessage) Reset()         { *m = InterAdapterDeleteGemPortMessage{} }
+func (m *InterAdapterDeleteGemPortMessage) String() string { return proto.CompactTextString(m) }
+func (*InterAdapterDeleteGemPortMessage) ProtoMessage()    {}
+func (*InterAdapterDeleteGemPortMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_941f0031a549667f, []int{18}
+}
+
+func (m *InterAdapterDeleteGemPortMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_InterAdapterDeleteGemPortMessage.Unmarshal(m, b)
+}
+func (m *InterAdapterDeleteGemPortMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_InterAdapterDeleteGemPortMessage.Marshal(b, m, deterministic)
+}
+func (m *InterAdapterDeleteGemPortMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InterAdapterDeleteGemPortMessage.Merge(m, src)
+}
+func (m *InterAdapterDeleteGemPortMessage) XXX_Size() int {
+	return xxx_messageInfo_InterAdapterDeleteGemPortMessage.Size(m)
+}
+func (m *InterAdapterDeleteGemPortMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_InterAdapterDeleteGemPortMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InterAdapterDeleteGemPortMessage proto.InternalMessageInfo
+
+func (m *InterAdapterDeleteGemPortMessage) GetUniId() uint32 {
+	if m != nil {
+		return m.UniId
+	}
+	return 0
+}
+
+func (m *InterAdapterDeleteGemPortMessage) GetTpPath() string {
+	if m != nil {
+		return m.TpPath
+	}
+	return ""
+}
+
+func (m *InterAdapterDeleteGemPortMessage) GetGemPortId() uint32 {
+	if m != nil {
+		return m.GemPortId
+	}
+	return 0
+}
+
+type InterAdapterDeleteTcontMessage struct {
+	UniId                uint32   `protobuf:"varint,1,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
+	TpPath               string   `protobuf:"bytes,2,opt,name=tp_path,json=tpPath,proto3" json:"tp_path,omitempty"`
+	AllocId              uint32   `protobuf:"varint,3,opt,name=alloc_id,json=allocId,proto3" json:"alloc_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *InterAdapterDeleteTcontMessage) Reset()         { *m = InterAdapterDeleteTcontMessage{} }
+func (m *InterAdapterDeleteTcontMessage) String() string { return proto.CompactTextString(m) }
+func (*InterAdapterDeleteTcontMessage) ProtoMessage()    {}
+func (*InterAdapterDeleteTcontMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_941f0031a549667f, []int{19}
+}
+
+func (m *InterAdapterDeleteTcontMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_InterAdapterDeleteTcontMessage.Unmarshal(m, b)
+}
+func (m *InterAdapterDeleteTcontMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_InterAdapterDeleteTcontMessage.Marshal(b, m, deterministic)
+}
+func (m *InterAdapterDeleteTcontMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InterAdapterDeleteTcontMessage.Merge(m, src)
+}
+func (m *InterAdapterDeleteTcontMessage) XXX_Size() int {
+	return xxx_messageInfo_InterAdapterDeleteTcontMessage.Size(m)
+}
+func (m *InterAdapterDeleteTcontMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_InterAdapterDeleteTcontMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InterAdapterDeleteTcontMessage proto.InternalMessageInfo
+
+func (m *InterAdapterDeleteTcontMessage) GetUniId() uint32 {
+	if m != nil {
+		return m.UniId
+	}
+	return 0
+}
+
+func (m *InterAdapterDeleteTcontMessage) GetTpPath() string {
+	if m != nil {
+		return m.TpPath
+	}
+	return ""
+}
+
+func (m *InterAdapterDeleteTcontMessage) GetAllocId() uint32 {
+	if m != nil {
+		return m.AllocId
+	}
+	return 0
+}
+
 type InterAdapterResponseBody struct {
 	Status bool `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
 	// Types that are valid to be assigned to Payload:
@@ -1201,7 +1317,7 @@
 func (m *InterAdapterResponseBody) String() string { return proto.CompactTextString(m) }
 func (*InterAdapterResponseBody) ProtoMessage()    {}
 func (*InterAdapterResponseBody) Descriptor() ([]byte, []int) {
-	return fileDescriptor_941f0031a549667f, []int{18}
+	return fileDescriptor_941f0031a549667f, []int{20}
 }
 
 func (m *InterAdapterResponseBody) XXX_Unmarshal(b []byte) error {
@@ -1286,7 +1402,7 @@
 func (m *InterAdapterMessage) String() string { return proto.CompactTextString(m) }
 func (*InterAdapterMessage) ProtoMessage()    {}
 func (*InterAdapterMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_941f0031a549667f, []int{19}
+	return fileDescriptor_941f0031a549667f, []int{21}
 }
 
 func (m *InterAdapterMessage) XXX_Unmarshal(b []byte) error {
@@ -1343,6 +1459,8 @@
 	proto.RegisterType((*InterAdapterHeader)(nil), "voltha.InterAdapterHeader")
 	proto.RegisterType((*InterAdapterOmciMessage)(nil), "voltha.InterAdapterOmciMessage")
 	proto.RegisterType((*InterAdapterTechProfileDownloadMessage)(nil), "voltha.InterAdapterTechProfileDownloadMessage")
+	proto.RegisterType((*InterAdapterDeleteGemPortMessage)(nil), "voltha.InterAdapterDeleteGemPortMessage")
+	proto.RegisterType((*InterAdapterDeleteTcontMessage)(nil), "voltha.InterAdapterDeleteTcontMessage")
 	proto.RegisterType((*InterAdapterResponseBody)(nil), "voltha.InterAdapterResponseBody")
 	proto.RegisterType((*InterAdapterMessage)(nil), "voltha.InterAdapterMessage")
 }
@@ -1352,81 +1470,87 @@
 }
 
 var fileDescriptor_941f0031a549667f = []byte{
-	// 1208 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xdb, 0x72, 0xdb, 0x44,
-	0x18, 0xae, 0x13, 0x1f, 0xff, 0x24, 0xae, 0xb3, 0x69, 0x5a, 0x37, 0x69, 0xa7, 0x41, 0x3d, 0x52,
-	0xc0, 0x19, 0xdc, 0x61, 0xa0, 0x57, 0xe0, 0xd8, 0xca, 0x44, 0x4c, 0x62, 0x0b, 0xd9, 0x69, 0x67,
-	0xb8, 0xd1, 0xc8, 0xd2, 0xda, 0xd6, 0x44, 0xd6, 0xaa, 0xab, 0x55, 0x8a, 0x6e, 0x98, 0xe1, 0x8e,
-	0xc7, 0xe0, 0x8a, 0x47, 0xe0, 0x9e, 0x5b, 0x1e, 0x84, 0xe7, 0x60, 0xf6, 0x20, 0x5b, 0x36, 0x0d,
-	0xcc, 0xc0, 0xdd, 0xfe, 0xff, 0xf7, 0xed, 0xe1, 0x3f, 0xec, 0xb7, 0x0b, 0x8f, 0xaf, 0x49, 0xc0,
-	0x66, 0x8e, 0x1d, 0x51, 0xc2, 0x48, 0x7c, 0xec, 0x87, 0x0c, 0x53, 0xdb, 0x25, 0x21, 0x73, 0xfc,
-	0x10, 0xd3, 0x96, 0x70, 0xa3, 0xb2, 0x24, 0x1d, 0x1c, 0xac, 0x92, 0x5d, 0x32, 0x9f, 0x93, 0x50,
-	0x72, 0xd6, 0x31, 0x69, 0x29, 0xec, 0xfe, 0x94, 0x90, 0x69, 0x80, 0x8f, 0x85, 0x35, 0x4e, 0x26,
-	0xc7, 0x4e, 0x98, 0x2a, 0xe8, 0xd1, 0xea, 0x34, 0x12, 0xe1, 0x70, 0x12, 0x90, 0xf7, 0xf6, 0xe7,
-	0xaf, 0x14, 0x41, 0x5b, 0x25, 0x04, 0x64, 0xea, 0xbb, 0x4e, 0x60, 0x7b, 0xf8, 0xda, 0x77, 0xb1,
-	0xe4, 0x68, 0x87, 0x50, 0x19, 0x32, 0x3a, 0x4a, 0x23, 0x8c, 0x1a, 0xb0, 0x79, 0xed, 0x04, 0xcd,
-	0xc2, 0x51, 0xe1, 0x45, 0xcd, 0xe2, 0x43, 0x0e, 0x1a, 0x21, 0x5b, 0x07, 0x37, 0x25, 0xf8, 0x00,
-	0xaa, 0x27, 0x84, 0x04, 0xeb, 0x68, 0x55, 0xa2, 0x1a, 0x94, 0x4d, 0xc7, 0xbd, 0xc2, 0x0c, 0x35,
-	0xa1, 0x12, 0x39, 0x69, 0x40, 0x1c, 0x4f, 0xe0, 0xdb, 0x56, 0x66, 0x6a, 0x3a, 0xd4, 0x74, 0x4a,
-	0x09, 0xed, 0x12, 0x0f, 0x6b, 0x5f, 0x41, 0xc9, 0x25, 0x1e, 0x8e, 0xd1, 0x3d, 0xd8, 0xbb, 0xec,
-	0x0f, 0x2f, 0x4d, 0x73, 0x60, 0x8d, 0xf4, 0x9e, 0x6d, 0xe9, 0xdf, 0x5d, 0xea, 0xc3, 0x51, 0xe3,
-	0x16, 0xba, 0x0b, 0xc8, 0xe8, 0xbf, 0xe9, 0x9c, 0x1b, 0x3d, 0xdb, 0xec, 0x58, 0x9d, 0x0b, 0x7d,
-	0xa4, 0x5b, 0xc3, 0x46, 0x41, 0x3b, 0x85, 0x92, 0x58, 0x06, 0x3d, 0x85, 0x22, 0x5f, 0x42, 0x6c,
-	0xb3, 0xd5, 0xde, 0x6d, 0xa9, 0x44, 0x2e, 0xf6, 0xb0, 0x04, 0x8c, 0xee, 0x42, 0x99, 0x62, 0x27,
-	0x26, 0x61, 0x73, 0x43, 0x84, 0xaa, 0x2c, 0xed, 0xb7, 0x02, 0x94, 0xcf, 0xb0, 0xe3, 0x61, 0x8a,
-	0xea, 0xb0, 0xe1, 0x7b, 0x2a, 0x13, 0x1b, 0xbe, 0x87, 0x9e, 0x43, 0x91, 0xa5, 0x11, 0x16, 0x13,
-	0xea, 0xed, 0xbd, 0x6c, 0xe5, 0x0b, 0x1c, 0xc7, 0xce, 0x14, 0xf3, 0x14, 0x58, 0x82, 0x80, 0x1e,
-	0x02, 0x4c, 0x28, 0x99, 0xdb, 0x8c, 0x44, 0xbe, 0xdb, 0xdc, 0x14, 0x0b, 0xd4, 0xb8, 0x67, 0xc4,
-	0x1d, 0xe8, 0x3e, 0x54, 0x19, 0x51, 0x60, 0x51, 0x80, 0x15, 0x46, 0x24, 0x74, 0x08, 0xb5, 0x2b,
-	0x9c, 0x2a, 0xac, 0x24, 0xb0, 0xea, 0x15, 0x4e, 0x25, 0xf8, 0x00, 0x6a, 0xcc, 0x9f, 0xe3, 0x98,
-	0x39, 0xf3, 0xa8, 0x59, 0x16, 0x35, 0x58, 0x3a, 0xb4, 0x33, 0xa8, 0x76, 0xe8, 0x34, 0x99, 0xe3,
-	0x90, 0xf1, 0x4a, 0x5c, 0xe1, 0x34, 0x2b, 0xe2, 0x15, 0x4e, 0xd1, 0x4b, 0x28, 0x5d, 0x3b, 0x41,
-	0x22, 0x0f, 0xbf, 0xd5, 0xbe, 0xd3, 0x92, 0x1d, 0xd5, 0xca, 0x3a, 0xaa, 0xd5, 0x09, 0x53, 0x4b,
-	0x52, 0x34, 0x1f, 0xf6, 0x0d, 0xde, 0xc6, 0xdd, 0xac, 0x8b, 0x55, 0x84, 0xe8, 0x19, 0x94, 0x67,
-	0x22, 0x35, 0x2a, 0xb9, 0xf5, 0x2c, 0x05, 0x32, 0x61, 0x96, 0x42, 0xd1, 0x0b, 0x28, 0x8e, 0x89,
-	0x97, 0xfe, 0xe3, 0x5e, 0x82, 0xa1, 0xfd, 0x5a, 0x80, 0xfb, 0xab, 0x7b, 0x59, 0xf8, 0x5d, 0x82,
-	0x63, 0x76, 0x42, 0xbc, 0x94, 0x87, 0x41, 0x23, 0x57, 0x15, 0x88, 0x0f, 0xd1, 0x13, 0x28, 0x3a,
-	0x74, 0x1a, 0x37, 0x37, 0x8f, 0x36, 0x5f, 0x6c, 0xb5, 0x1b, 0xd9, 0xfe, 0x59, 0xe0, 0x96, 0x40,
-	0xd1, 0x27, 0xb0, 0x4b, 0x71, 0x1c, 0x91, 0x30, 0xc6, 0x36, 0xc5, 0xef, 0x12, 0x9f, 0x62, 0x4f,
-	0x64, 0xba, 0x6a, 0x35, 0x32, 0xc0, 0x52, 0x7e, 0xf4, 0x04, 0xea, 0x14, 0x47, 0x01, 0x4f, 0xfa,
-	0x4a, 0xde, 0xb7, 0x85, 0x77, 0x24, 0x0b, 0xa3, 0x79, 0x70, 0xb0, 0x7e, 0x4e, 0xb9, 0x8e, 0x38,
-	0x68, 0x13, 0x2a, 0x71, 0xe2, 0xba, 0x38, 0x8e, 0x55, 0xf7, 0x67, 0x26, 0xfa, 0x94, 0xb7, 0x59,
-	0x9c, 0x04, 0x4c, 0xb4, 0xc1, 0x4d, 0xc9, 0x50, 0x1c, 0xed, 0xe7, 0x02, 0x34, 0x86, 0xef, 0x7d,
-	0xe6, 0xce, 0xba, 0x4e, 0xe4, 0x8c, 0xfd, 0xc0, 0x67, 0x29, 0xfa, 0x18, 0x8a, 0x1e, 0x8e, 0x5d,
-	0x95, 0xf3, 0xfd, 0x56, 0xfe, 0x8a, 0x93, 0x49, 0x64, 0x73, 0xd0, 0x12, 0x14, 0x64, 0xc0, 0xed,
-	0x58, 0x4c, 0xb7, 0x27, 0xd8, 0x61, 0x09, 0xc5, 0xb1, 0xaa, 0xc1, 0xd1, 0xdf, 0x66, 0xad, 0xf1,
-	0xac, 0xba, 0x74, 0x9c, 0x2a, 0x5b, 0x7b, 0x0d, 0x75, 0x93, 0x50, 0x96, 0x3b, 0xc7, 0x73, 0x28,
-	0x46, 0x84, 0x32, 0x75, 0x8e, 0x45, 0xfb, 0x9f, 0x4b, 0x41, 0xe1, 0x64, 0x4b, 0x10, 0xb4, 0x1f,
-	0xa1, 0xd1, 0x13, 0xea, 0xd2, 0xf3, 0x63, 0x97, 0x5c, 0x63, 0x9e, 0xe5, 0xf5, 0xbb, 0x74, 0x08,
-	0xb5, 0xc8, 0xa1, 0x38, 0x64, 0xb6, 0xef, 0xa9, 0x02, 0x57, 0xa5, 0xc3, 0xf0, 0xd0, 0x23, 0xd8,
-	0x92, 0xf2, 0x64, 0x8b, 0xfb, 0x26, 0x2f, 0x10, 0x48, 0x97, 0x50, 0x9a, 0x07, 0x50, 0x8b, 0x92,
-	0x71, 0xe0, 0xc7, 0x33, 0x4c, 0xd5, 0x15, 0x5a, 0x3a, 0xb4, 0x3f, 0x0b, 0x70, 0x4f, 0x14, 0xab,
-	0xe3, 0x39, 0x11, 0x5b, 0xb4, 0x2f, 0x9f, 0xa9, 0xfd, 0x51, 0x80, 0x12, 0x1f, 0xc4, 0xa8, 0x01,
-	0xdb, 0xa7, 0xe7, 0x83, 0xb7, 0x39, 0x69, 0xd9, 0x85, 0x1d, 0xe5, 0x19, 0x9a, 0x83, 0xfe, 0x50,
-	0x6f, 0x14, 0x38, 0x69, 0x70, 0xd1, 0x35, 0x16, 0xa4, 0x0d, 0x4e, 0x52, 0x1e, 0x45, 0xda, 0x44,
-	0x7b, 0x70, 0xfb, 0x42, 0x1f, 0x59, 0x46, 0x77, 0xb8, 0xe0, 0x15, 0xd1, 0x1d, 0x68, 0x2c, 0x9d,
-	0x8a, 0x5a, 0xe2, 0xd4, 0x41, 0xff, 0xd2, 0x36, 0xfa, 0x4b, 0x49, 0x2b, 0x73, 0xea, 0xd2, 0xa9,
-	0xa8, 0x15, 0xf4, 0x11, 0x3c, 0x1c, 0xe9, 0xdd, 0x33, 0xdb, 0xb4, 0x06, 0xa7, 0xc6, 0xb9, 0x6e,
-	0xf7, 0x06, 0x6f, 0xfb, 0xe7, 0x83, 0xce, 0x72, 0x62, 0x55, 0xfb, 0x69, 0x03, 0x50, 0x3e, 0xd0,
-	0x1b, 0x74, 0xeb, 0xf5, 0x8a, 0x6e, 0x3d, 0xcd, 0x0a, 0x77, 0x43, 0x8a, 0x5a, 0x22, 0x3d, 0xff,
-	0x5b, 0xc9, 0x8e, 0x60, 0x9b, 0x11, 0xf5, 0xca, 0xf0, 0x1a, 0xcb, 0x4b, 0x05, 0x8c, 0xc8, 0xd6,
-	0x30, 0x3c, 0xf4, 0x0c, 0x6e, 0x47, 0x94, 0xfc, 0x90, 0xe6, 0x48, 0x65, 0x41, 0xda, 0x11, 0xee,
-	0x05, 0x6f, 0x45, 0xf6, 0x2a, 0xeb, 0xb2, 0xf7, 0xfb, 0x5a, 0xb1, 0x07, 0x73, 0xd7, 0xcf, 0xf4,
-	0xaa, 0x09, 0x95, 0xb9, 0x1c, 0x66, 0x8f, 0x8e, 0x32, 0xd1, 0xb7, 0x50, 0x77, 0x49, 0x18, 0x62,
-	0x97, 0xd9, 0x31, 0x73, 0x58, 0x12, 0xab, 0xe4, 0x3c, 0x6e, 0xa9, 0x37, 0xb9, 0x2b, 0xd1, 0xa1,
-	0x00, 0x57, 0x2d, 0x6b, 0xc7, 0xcd, 0x9b, 0xe8, 0x1b, 0x90, 0x07, 0xb6, 0x1d, 0xcf, 0xa3, 0x5c,
-	0x02, 0xe4, 0x4d, 0x3f, 0xcc, 0xf2, 0x2c, 0x03, 0x69, 0x99, 0x9c, 0xd3, 0x91, 0x14, 0x6b, 0x3b,
-	0xca, 0x59, 0xda, 0x10, 0x9e, 0xe5, 0x43, 0x18, 0x61, 0x77, 0x66, 0x52, 0x32, 0xf1, 0x03, 0xdc,
-	0x23, 0xef, 0x43, 0xfe, 0x4a, 0x66, 0x11, 0xed, 0x43, 0x39, 0x09, 0x7d, 0x5b, 0x95, 0x77, 0xc7,
-	0x2a, 0x25, 0xa1, 0x6f, 0x78, 0x08, 0x41, 0x31, 0x72, 0xd8, 0x4c, 0x5d, 0x24, 0x31, 0xd6, 0x7e,
-	0x29, 0x40, 0x33, 0xbf, 0xea, 0x8a, 0x60, 0xdd, 0x85, 0xb2, 0x8a, 0x5b, 0xea, 0x95, 0xb2, 0xd0,
-	0xcb, 0x7f, 0x57, 0xee, 0xb3, 0x5b, 0x52, 0xbb, 0xd1, 0x17, 0x50, 0x24, 0x73, 0xd7, 0x57, 0xe1,
-	0x3e, 0xfa, 0x50, 0x5b, 0xe5, 0x8a, 0xc1, 0xa7, 0x71, 0xfa, 0x49, 0x6d, 0xf1, 0x13, 0xd0, 0x62,
-	0xd8, 0xfb, 0x40, 0x13, 0xa2, 0xf6, 0xda, 0x33, 0x73, 0xf0, 0xa1, 0xa5, 0xff, 0xeb, 0x93, 0xf3,
-	0xf2, 0x6b, 0xd8, 0xca, 0x75, 0x3b, 0xda, 0x82, 0xca, 0x52, 0x01, 0xb6, 0xa1, 0x9a, 0xbb, 0xfc,
-	0xfb, 0xb0, 0xdb, 0xd3, 0xdf, 0x18, 0x5d, 0xdd, 0xee, 0x19, 0xc3, 0xee, 0xe0, 0x8d, 0x6e, 0xe9,
-	0xbd, 0xc6, 0xc6, 0xc9, 0xeb, 0xef, 0xbf, 0x9c, 0xfa, 0x6c, 0x96, 0x8c, 0x79, 0xaf, 0x88, 0x0f,
-	0x97, 0x4b, 0xa8, 0xa7, 0x3e, 0x6c, 0x9f, 0x65, 0xdf, 0xb7, 0xf6, 0xf1, 0x94, 0xac, 0xff, 0x06,
-	0xcd, 0x5b, 0x66, 0xc1, 0x2c, 0x8e, 0xcb, 0x82, 0xf3, 0xea, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff,
-	0x13, 0x5d, 0x07, 0xfd, 0x3b, 0x0a, 0x00, 0x00,
+	// 1303 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x49, 0x6f, 0xdb, 0x46,
+	0x14, 0x8e, 0x76, 0xe9, 0xc9, 0x56, 0xe4, 0x71, 0x1c, 0xcb, 0x76, 0x16, 0x97, 0x59, 0x9b, 0xb6,
+	0x32, 0xea, 0xa0, 0x68, 0x73, 0x6a, 0x65, 0x89, 0x8e, 0x59, 0xd8, 0x92, 0x4a, 0xc9, 0x09, 0xd0,
+	0x0b, 0x41, 0x93, 0x63, 0x89, 0x30, 0xc5, 0x61, 0x86, 0x43, 0xa7, 0xbc, 0x14, 0xe8, 0xad, 0x7f,
+	0xa2, 0x40, 0x4f, 0xfd, 0x09, 0xbd, 0xf7, 0x9f, 0x15, 0xb3, 0x50, 0xa2, 0x94, 0xa4, 0x01, 0xd2,
+	0xdb, 0xbc, 0xf7, 0x7d, 0xb3, 0xbd, 0xe5, 0x9b, 0x81, 0x07, 0xd7, 0xc4, 0x67, 0x53, 0xdb, 0x0a,
+	0x29, 0x61, 0x24, 0x3a, 0xf0, 0x02, 0x86, 0xa9, 0xe5, 0x90, 0x80, 0xd9, 0x5e, 0x80, 0x69, 0x5b,
+	0xb8, 0x51, 0x59, 0x92, 0x76, 0x77, 0x97, 0xc9, 0x0e, 0x99, 0xcd, 0x48, 0x20, 0x39, 0xab, 0x98,
+	0xb4, 0x14, 0xb6, 0x33, 0x21, 0x64, 0xe2, 0xe3, 0x03, 0x61, 0x5d, 0xc4, 0x97, 0x07, 0x76, 0x90,
+	0x28, 0xe8, 0xfe, 0xf2, 0x34, 0x12, 0xe2, 0xe0, 0xd2, 0x27, 0x6f, 0xad, 0xaf, 0x9f, 0x2b, 0x82,
+	0xb6, 0x4c, 0xf0, 0xc9, 0xc4, 0x73, 0x6c, 0xdf, 0x72, 0xf1, 0xb5, 0xe7, 0x60, 0xc9, 0xd1, 0xf6,
+	0xa0, 0x32, 0x62, 0x74, 0x9c, 0x84, 0x18, 0x35, 0xa1, 0x70, 0x6d, 0xfb, 0xad, 0xdc, 0x7e, 0xee,
+	0x69, 0xcd, 0xe4, 0x43, 0x0e, 0x1a, 0x01, 0x5b, 0x05, 0x0b, 0x12, 0xbc, 0x03, 0xd5, 0x23, 0x42,
+	0xfc, 0x55, 0xb4, 0x2a, 0x51, 0x0d, 0xca, 0x43, 0xdb, 0xb9, 0xc2, 0x0c, 0xb5, 0xa0, 0x12, 0xda,
+	0x89, 0x4f, 0x6c, 0x57, 0xe0, 0x6b, 0x66, 0x6a, 0x6a, 0x3a, 0xd4, 0x74, 0x4a, 0x09, 0xed, 0x12,
+	0x17, 0x6b, 0xdf, 0x41, 0xc9, 0x21, 0x2e, 0x8e, 0xd0, 0x36, 0x6c, 0x9e, 0xf7, 0x47, 0xe7, 0xc3,
+	0xe1, 0xc0, 0x1c, 0xeb, 0x3d, 0xcb, 0xd4, 0x7f, 0x3a, 0xd7, 0x47, 0xe3, 0xe6, 0x0d, 0x74, 0x1b,
+	0x90, 0xd1, 0x7f, 0xd5, 0x39, 0x35, 0x7a, 0xd6, 0xb0, 0x63, 0x76, 0xce, 0xf4, 0xb1, 0x6e, 0x8e,
+	0x9a, 0x39, 0xed, 0x18, 0x4a, 0x62, 0x19, 0xf4, 0x08, 0x8a, 0x7c, 0x09, 0xb1, 0x4d, 0xfd, 0x70,
+	0xa3, 0xad, 0x02, 0x39, 0xdf, 0xc3, 0x14, 0x30, 0xba, 0x0d, 0x65, 0x8a, 0xed, 0x88, 0x04, 0xad,
+	0xbc, 0xb8, 0xaa, 0xb2, 0xb4, 0xbf, 0x73, 0x50, 0x3e, 0xc1, 0xb6, 0x8b, 0x29, 0x6a, 0x40, 0xde,
+	0x73, 0x55, 0x24, 0xf2, 0x9e, 0x8b, 0x9e, 0x40, 0x91, 0x25, 0x21, 0x16, 0x13, 0x1a, 0x87, 0x9b,
+	0xe9, 0xca, 0x67, 0x38, 0x8a, 0xec, 0x09, 0xe6, 0x21, 0x30, 0x05, 0x01, 0xdd, 0x05, 0xb8, 0xa4,
+	0x64, 0x66, 0x31, 0x12, 0x7a, 0x4e, 0xab, 0x20, 0x16, 0xa8, 0x71, 0xcf, 0x98, 0x3b, 0xd0, 0x0e,
+	0x54, 0x19, 0x51, 0x60, 0x51, 0x80, 0x15, 0x46, 0x24, 0xb4, 0x07, 0xb5, 0x2b, 0x9c, 0x28, 0xac,
+	0x24, 0xb0, 0xea, 0x15, 0x4e, 0x24, 0x78, 0x07, 0x6a, 0xcc, 0x9b, 0xe1, 0x88, 0xd9, 0xb3, 0xb0,
+	0x55, 0x16, 0x39, 0x58, 0x38, 0xb4, 0x13, 0xa8, 0x76, 0xe8, 0x24, 0x9e, 0xe1, 0x80, 0xf1, 0x4c,
+	0x5c, 0xe1, 0x24, 0x4d, 0xe2, 0x15, 0x4e, 0xd0, 0x33, 0x28, 0x5d, 0xdb, 0x7e, 0x2c, 0x0f, 0x5f,
+	0x3f, 0xbc, 0xd5, 0x96, 0x15, 0xd5, 0x4e, 0x2b, 0xaa, 0xdd, 0x09, 0x12, 0x53, 0x52, 0x34, 0x0f,
+	0xb6, 0x0c, 0x5e, 0xc6, 0xdd, 0xb4, 0x8a, 0xd5, 0x0d, 0xd1, 0x63, 0x28, 0x4f, 0x45, 0x68, 0x54,
+	0x70, 0x1b, 0x69, 0x08, 0x64, 0xc0, 0x4c, 0x85, 0xa2, 0xa7, 0x50, 0xbc, 0x20, 0x6e, 0xf2, 0x9f,
+	0x7b, 0x09, 0x86, 0xf6, 0x57, 0x0e, 0x76, 0x96, 0xf7, 0x32, 0xf1, 0x9b, 0x18, 0x47, 0xec, 0x88,
+	0xb8, 0x09, 0xbf, 0x06, 0x0d, 0x1d, 0x95, 0x20, 0x3e, 0x44, 0x0f, 0xa1, 0x68, 0xd3, 0x49, 0xd4,
+	0x2a, 0xec, 0x17, 0x9e, 0xd6, 0x0f, 0x9b, 0xe9, 0xfe, 0xe9, 0xc5, 0x4d, 0x81, 0xa2, 0x2f, 0x60,
+	0x83, 0xe2, 0x28, 0x24, 0x41, 0x84, 0x2d, 0x8a, 0xdf, 0xc4, 0x1e, 0xc5, 0xae, 0x88, 0x74, 0xd5,
+	0x6c, 0xa6, 0x80, 0xa9, 0xfc, 0xe8, 0x21, 0x34, 0x28, 0x0e, 0x7d, 0x1e, 0xf4, 0xa5, 0xb8, 0xaf,
+	0x09, 0xef, 0x58, 0x26, 0x46, 0x73, 0x61, 0x77, 0xf5, 0x9c, 0x72, 0x1d, 0x71, 0xd0, 0x16, 0x54,
+	0xa2, 0xd8, 0x71, 0x70, 0x14, 0xa9, 0xea, 0x4f, 0x4d, 0xf4, 0x25, 0x2f, 0xb3, 0x28, 0xf6, 0x99,
+	0x28, 0x83, 0x0f, 0x05, 0x43, 0x71, 0xb4, 0xdf, 0x73, 0xd0, 0x1c, 0xbd, 0xf5, 0x98, 0x33, 0xed,
+	0xda, 0xa1, 0x7d, 0xe1, 0xf9, 0x1e, 0x4b, 0xd0, 0xe7, 0x50, 0x74, 0x71, 0xe4, 0xa8, 0x98, 0x6f,
+	0xb5, 0xb3, 0x2d, 0x4e, 0x2e, 0x43, 0x8b, 0x83, 0xa6, 0xa0, 0x20, 0x03, 0x6e, 0x46, 0x62, 0xba,
+	0x75, 0x89, 0x6d, 0x16, 0x53, 0x1c, 0xa9, 0x1c, 0xec, 0xbf, 0x33, 0x6b, 0x85, 0x67, 0x36, 0xa4,
+	0xe3, 0x58, 0xd9, 0xda, 0x0b, 0x68, 0x0c, 0x09, 0x65, 0x99, 0x73, 0x3c, 0x81, 0x62, 0x48, 0x28,
+	0x53, 0xe7, 0x98, 0x97, 0xff, 0xa9, 0x14, 0x14, 0x4e, 0x36, 0x05, 0x41, 0xfb, 0x15, 0x9a, 0x3d,
+	0xa1, 0x2e, 0x3d, 0x2f, 0x72, 0xc8, 0x35, 0xe6, 0x51, 0x5e, 0xed, 0xa5, 0x3d, 0xa8, 0x85, 0x36,
+	0xc5, 0x01, 0xb3, 0x3c, 0x57, 0x25, 0xb8, 0x2a, 0x1d, 0x86, 0x8b, 0xee, 0x43, 0x5d, 0xca, 0x93,
+	0x25, 0xfa, 0x4d, 0x36, 0x10, 0x48, 0x97, 0x50, 0x9a, 0x3b, 0x50, 0x0b, 0xe3, 0x0b, 0xdf, 0x8b,
+	0xa6, 0x98, 0xaa, 0x16, 0x5a, 0x38, 0xb4, 0x3f, 0xf2, 0xb0, 0x2d, 0x92, 0xd5, 0x71, 0xed, 0x90,
+	0xcd, 0xcb, 0x97, 0xcf, 0xd4, 0x7e, 0xcb, 0x43, 0x89, 0x0f, 0x22, 0xd4, 0x84, 0xb5, 0xe3, 0xd3,
+	0xc1, 0xeb, 0x8c, 0xb4, 0x6c, 0xc0, 0xba, 0xf2, 0x8c, 0x86, 0x83, 0xfe, 0x48, 0x6f, 0xe6, 0x38,
+	0x69, 0x70, 0xd6, 0x35, 0xe6, 0xa4, 0x3c, 0x27, 0x29, 0x8f, 0x22, 0x15, 0xd0, 0x26, 0xdc, 0x3c,
+	0xd3, 0xc7, 0xa6, 0xd1, 0x1d, 0xcd, 0x79, 0x45, 0x74, 0x0b, 0x9a, 0x0b, 0xa7, 0xa2, 0x96, 0x38,
+	0x75, 0xd0, 0x3f, 0xb7, 0x8c, 0xfe, 0x42, 0xd2, 0xca, 0x9c, 0xba, 0x70, 0x2a, 0x6a, 0x05, 0x7d,
+	0x06, 0x77, 0xc7, 0x7a, 0xf7, 0xc4, 0x1a, 0x9a, 0x83, 0x63, 0xe3, 0x54, 0xb7, 0x7a, 0x83, 0xd7,
+	0xfd, 0xd3, 0x41, 0x67, 0x31, 0xb1, 0x8a, 0xf6, 0x60, 0xbb, 0xa7, 0x9f, 0xea, 0x63, 0xdd, 0x7a,
+	0xa9, 0x9f, 0x59, 0x5c, 0x2a, 0xe7, 0x60, 0x0d, 0xb5, 0xe0, 0x96, 0x02, 0xc7, 0xdd, 0x41, 0x7f,
+	0x81, 0x00, 0x8f, 0x01, 0xca, 0xc6, 0xe7, 0x03, 0x72, 0xf7, 0x62, 0x49, 0xee, 0x1e, 0xa5, 0xf9,
+	0xfe, 0x40, 0x64, 0xdb, 0x22, 0xaa, 0xff, 0x5b, 0x00, 0xf7, 0x61, 0x8d, 0x11, 0xf5, 0x38, 0xf1,
+	0xd2, 0x90, 0xbd, 0x08, 0x8c, 0xc8, 0x8a, 0x32, 0x5c, 0xf4, 0x18, 0x6e, 0x86, 0x94, 0xfc, 0x92,
+	0x64, 0x48, 0x65, 0x41, 0x5a, 0x17, 0xee, 0x39, 0x6f, 0x49, 0x2d, 0x2b, 0xab, 0x6a, 0xf9, 0x4f,
+	0x6e, 0xb9, 0x46, 0x06, 0x33, 0xc7, 0x4b, 0x65, 0xae, 0x05, 0x95, 0x99, 0x1c, 0xa6, 0x6f, 0x95,
+	0x32, 0xd1, 0x8f, 0xd0, 0x70, 0x48, 0x10, 0x60, 0x87, 0x59, 0x11, 0xb3, 0x59, 0x1c, 0xa9, 0xe0,
+	0x3c, 0x68, 0xab, 0xa7, 0xbc, 0x2b, 0xd1, 0x91, 0x00, 0x97, 0x2d, 0x73, 0xdd, 0xc9, 0x9a, 0xe8,
+	0x07, 0x90, 0x07, 0xb6, 0x6c, 0xd7, 0xa5, 0x5c, 0x39, 0xa4, 0x40, 0xec, 0xa5, 0x71, 0x96, 0x17,
+	0x69, 0x0f, 0x39, 0xa7, 0x23, 0x29, 0xe6, 0x5a, 0x98, 0xb1, 0xb4, 0x11, 0x3c, 0xce, 0x5e, 0x61,
+	0x8c, 0x9d, 0xe9, 0x90, 0x92, 0x4b, 0xcf, 0xc7, 0x3d, 0xf2, 0x36, 0xe0, 0x8f, 0x6b, 0x7a, 0xa3,
+	0x2d, 0x28, 0xc7, 0x81, 0x67, 0xa9, 0xf4, 0xae, 0x9b, 0xa5, 0x38, 0xf0, 0x0c, 0x17, 0x21, 0x28,
+	0x86, 0x36, 0x9b, 0xaa, 0xfe, 0x13, 0x63, 0x8d, 0xc2, 0x7e, 0x76, 0xd1, 0x1e, 0xf6, 0x31, 0xc3,
+	0x2f, 0xf1, 0x8c, 0xf7, 0xf7, 0x47, 0x96, 0xdb, 0x86, 0x0a, 0x0b, 0xad, 0xcc, 0x8a, 0x65, 0x16,
+	0x0e, 0x6d, 0x36, 0x45, 0xf7, 0xa0, 0x3e, 0xc1, 0x33, 0x8b, 0x8b, 0x03, 0x9f, 0x54, 0x10, 0x93,
+	0x6a, 0x13, 0xb9, 0xa8, 0xe1, 0x6a, 0x57, 0x70, 0xef, 0xdd, 0x3d, 0xc7, 0xfc, 0x13, 0xf5, 0xa9,
+	0x3b, 0xee, 0x40, 0xd5, 0xf6, 0x7d, 0xe2, 0x2c, 0xb6, 0xab, 0x08, 0xdb, 0x70, 0xb5, 0x3f, 0x73,
+	0xd0, 0xca, 0xee, 0xb6, 0x24, 0xe4, 0xb7, 0xa1, 0xac, 0x12, 0x2b, 0x75, 0x5c, 0x59, 0xe8, 0xd9,
+	0xc7, 0x5f, 0xb4, 0x93, 0x1b, 0xf2, 0x4d, 0x43, 0xdf, 0x40, 0x91, 0xcc, 0x1c, 0x4f, 0xe5, 0xf3,
+	0xfe, 0xfb, 0xfa, 0x26, 0x53, 0x6d, 0x7c, 0x1a, 0xa7, 0x1f, 0xd5, 0xe6, 0x3f, 0x24, 0x2d, 0x82,
+	0xcd, 0xf7, 0x74, 0x19, 0x3a, 0x5c, 0x79, 0x7e, 0x77, 0xdf, 0xb7, 0xf4, 0xa7, 0x3e, 0xc5, 0xcf,
+	0xbe, 0x87, 0x7a, 0xa6, 0x9d, 0x51, 0x1d, 0x2a, 0x0b, 0x65, 0x5c, 0x83, 0x6a, 0x46, 0x14, 0xb7,
+	0x60, 0xa3, 0xa7, 0xbf, 0x32, 0xba, 0xba, 0xd5, 0x33, 0x46, 0xdd, 0xc1, 0x2b, 0xdd, 0xd4, 0x7b,
+	0xcd, 0xfc, 0xd1, 0x8b, 0x9f, 0xbf, 0x9d, 0x78, 0x6c, 0x1a, 0x5f, 0xf0, 0x66, 0x10, 0x1f, 0x51,
+	0x87, 0x50, 0x57, 0x7d, 0x64, 0xbf, 0x4a, 0xbf, 0xb5, 0x87, 0x07, 0x13, 0xb2, 0xfa, 0x4b, 0x1e,
+	0xde, 0x18, 0xe6, 0x86, 0xc5, 0x8b, 0xb2, 0xe0, 0x3c, 0xff, 0x37, 0x00, 0x00, 0xff, 0xff, 0x4b,
+	0x68, 0xda, 0x8e, 0x53, 0x0b, 0x00, 0x00,
 }
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 1bd48eb..92ac970 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -59,7 +59,7 @@
 github.com/mitchellh/go-homedir
 # github.com/mitchellh/mapstructure v1.1.2
 github.com/mitchellh/mapstructure
-# github.com/opencord/voltha-lib-go/v2 v2.2.18
+# github.com/opencord/voltha-lib-go/v2 v2.2.19
 github.com/opencord/voltha-lib-go/v2/pkg/adapters
 github.com/opencord/voltha-lib-go/v2/pkg/adapters/adapterif
 github.com/opencord/voltha-lib-go/v2/pkg/adapters/common
@@ -72,7 +72,7 @@
 github.com/opencord/voltha-lib-go/v2/pkg/techprofile
 github.com/opencord/voltha-lib-go/v2/pkg/db
 github.com/opencord/voltha-lib-go/v2/pkg/ponresourcemanager
-# github.com/opencord/voltha-protos/v2 v2.1.0
+# github.com/opencord/voltha-protos/v2 v2.1.1
 github.com/opencord/voltha-protos/v2/go/inter_container
 github.com/opencord/voltha-protos/v2/go/voltha
 github.com/opencord/voltha-protos/v2/go/common