// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.31.0 // protoc v4.23.1 // source: model.proto package proto import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type DeviceType int32 const ( DeviceType_DeviceType_Unknown DeviceType = 0 DeviceType_DeviceType_PhysicalSection DeviceType = 1 DeviceType_DeviceType_CheckPoint DeviceType = 2 DeviceType_DeviceType_Turnout DeviceType = 3 DeviceType_DeviceType_Signal DeviceType = 4 DeviceType_DeviceType_Transponder DeviceType = 5 DeviceType_DeviceType_Slope DeviceType = 6 DeviceType_DeviceType_SectionalCurvature DeviceType = 7 DeviceType_DeviceType_Link DeviceType = 8 DeviceType_DeviceType_LinkNode DeviceType = 9 DeviceType_DeviceType_Relay DeviceType = 10 DeviceType_DeviceType_PhaseFailureProtector DeviceType = 11 DeviceType_DeviceType_Button DeviceType = 12 DeviceType_DeviceType_Light DeviceType = 13 DeviceType_DeviceType_Alarm DeviceType = 14 DeviceType_DeviceType_Psd DeviceType = 15 DeviceType_DeviceType_Station DeviceType = 16 DeviceType_DeviceType_Mkx DeviceType = 17 DeviceType_DeviceType_Key DeviceType = 18 DeviceType_DeviceType_Platform DeviceType = 19 ) // Enum value maps for DeviceType. var ( DeviceType_name = map[int32]string{ 0: "DeviceType_Unknown", 1: "DeviceType_PhysicalSection", 2: "DeviceType_CheckPoint", 3: "DeviceType_Turnout", 4: "DeviceType_Signal", 5: "DeviceType_Transponder", 6: "DeviceType_Slope", 7: "DeviceType_SectionalCurvature", 8: "DeviceType_Link", 9: "DeviceType_LinkNode", 10: "DeviceType_Relay", 11: "DeviceType_PhaseFailureProtector", 12: "DeviceType_Button", 13: "DeviceType_Light", 14: "DeviceType_Alarm", 15: "DeviceType_Psd", 16: "DeviceType_Station", 17: "DeviceType_Mkx", 18: "DeviceType_Key", 19: "DeviceType_Platform", } DeviceType_value = map[string]int32{ "DeviceType_Unknown": 0, "DeviceType_PhysicalSection": 1, "DeviceType_CheckPoint": 2, "DeviceType_Turnout": 3, "DeviceType_Signal": 4, "DeviceType_Transponder": 5, "DeviceType_Slope": 6, "DeviceType_SectionalCurvature": 7, "DeviceType_Link": 8, "DeviceType_LinkNode": 9, "DeviceType_Relay": 10, "DeviceType_PhaseFailureProtector": 11, "DeviceType_Button": 12, "DeviceType_Light": 13, "DeviceType_Alarm": 14, "DeviceType_Psd": 15, "DeviceType_Station": 16, "DeviceType_Mkx": 17, "DeviceType_Key": 18, "DeviceType_Platform": 19, } ) func (x DeviceType) Enum() *DeviceType { p := new(DeviceType) *p = x return p } func (x DeviceType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (DeviceType) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[0].Descriptor() } func (DeviceType) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[0] } func (x DeviceType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use DeviceType.Descriptor instead. func (DeviceType) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{0} } type Port int32 const ( Port_None Port = 0 //没有端口/未指定端口 Port_A Port = 1 Port_B Port = 2 Port_C Port = 3 ) // Enum value maps for Port. var ( Port_name = map[int32]string{ 0: "None", 1: "A", 2: "B", 3: "C", } Port_value = map[string]int32{ "None": 0, "A": 1, "B": 2, "C": 3, } ) func (x Port) Enum() *Port { p := new(Port) *p = x return p } func (x Port) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Port) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[1].Descriptor() } func (Port) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[1] } func (x Port) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Port.Descriptor instead. func (Port) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{1} } // 左右行 type Direction int32 const ( Direction_LEFT Direction = 0 Direction_RIGHT Direction = 1 ) // Enum value maps for Direction. var ( Direction_name = map[int32]string{ 0: "LEFT", 1: "RIGHT", } Direction_value = map[string]int32{ "LEFT": 0, "RIGHT": 1, } ) func (x Direction) Enum() *Direction { p := new(Direction) *p = x return p } func (x Direction) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Direction) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[2].Descriptor() } func (Direction) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[2] } func (x Direction) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Direction.Descriptor instead. func (Direction) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{2} } // 检测点类型 type CheckPointType int32 const ( CheckPointType_Boundary CheckPointType = 0 //区段边界 CheckPointType_AxleCounter CheckPointType = 1 //计轴器 CheckPointType_InsulatedJoint CheckPointType = 2 //绝缘节 ) // Enum value maps for CheckPointType. var ( CheckPointType_name = map[int32]string{ 0: "Boundary", 1: "AxleCounter", 2: "InsulatedJoint", } CheckPointType_value = map[string]int32{ "Boundary": 0, "AxleCounter": 1, "InsulatedJoint": 2, } ) func (x CheckPointType) Enum() *CheckPointType { p := new(CheckPointType) *p = x return p } func (x CheckPointType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (CheckPointType) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[3].Descriptor() } func (CheckPointType) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[3] } func (x CheckPointType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use CheckPointType.Descriptor instead. func (CheckPointType) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{3} } type Turnout_SwitchMachineType int32 const ( Turnout_Unknown Turnout_SwitchMachineType = 0 Turnout_ZDJ9_Single Turnout_SwitchMachineType = 1 Turnout_ZDJ9_Double Turnout_SwitchMachineType = 2 ) // Enum value maps for Turnout_SwitchMachineType. var ( Turnout_SwitchMachineType_name = map[int32]string{ 0: "Unknown", 1: "ZDJ9_Single", 2: "ZDJ9_Double", } Turnout_SwitchMachineType_value = map[string]int32{ "Unknown": 0, "ZDJ9_Single": 1, "ZDJ9_Double": 2, } ) func (x Turnout_SwitchMachineType) Enum() *Turnout_SwitchMachineType { p := new(Turnout_SwitchMachineType) *p = x return p } func (x Turnout_SwitchMachineType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Turnout_SwitchMachineType) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[4].Descriptor() } func (Turnout_SwitchMachineType) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[4] } func (x Turnout_SwitchMachineType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Turnout_SwitchMachineType.Descriptor instead. func (Turnout_SwitchMachineType) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{3, 0} } // 信号机模型类型枚举 // 从左向右,最左边为靠近灯座的灯 type Signal_Model int32 const ( Signal_HLU Signal_Model = 0 //红绿黄 Signal_HL Signal_Model = 1 //红绿, Signal_HLU_FU Signal_Model = 2 //红绿黄,封黄灯 Signal_HLU_FL Signal_Model = 3 //红绿黄,封绿 Signal_AB Signal_Model = 4 //蓝白 Signal_HBU Signal_Model = 5 //红白黄 ) // Enum value maps for Signal_Model. var ( Signal_Model_name = map[int32]string{ 0: "HLU", 1: "HL", 2: "HLU_FU", 3: "HLU_FL", 4: "AB", 5: "HBU", } Signal_Model_value = map[string]int32{ "HLU": 0, "HL": 1, "HLU_FU": 2, "HLU_FL": 3, "AB": 4, "HBU": 5, } ) func (x Signal_Model) Enum() *Signal_Model { p := new(Signal_Model) *p = x return p } func (x Signal_Model) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Signal_Model) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[5].Descriptor() } func (Signal_Model) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[5] } func (x Signal_Model) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Signal_Model.Descriptor instead. func (Signal_Model) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{4, 0} } type Relay_Model int32 const ( Relay_Unknown Relay_Model = 0 Relay_JPXC_1000 Relay_Model = 1 Relay_JPXC_1700 Relay_Model = 2 Relay_JWJXC_480 Relay_Model = 3 Relay_JWJXC_H125_80 Relay_Model = 4 Relay_JWXC_1700 Relay_Model = 5 Relay_JWXC_H340 Relay_Model = 6 Relay_JYJXC_160_260 Relay_Model = 7 Relay_JZXC_H18 Relay_Model = 8 ) // Enum value maps for Relay_Model. var ( Relay_Model_name = map[int32]string{ 0: "Unknown", 1: "JPXC_1000", 2: "JPXC_1700", 3: "JWJXC_480", 4: "JWJXC_H125_80", 5: "JWXC_1700", 6: "JWXC_H340", 7: "JYJXC_160_260", 8: "JZXC_H18", } Relay_Model_value = map[string]int32{ "Unknown": 0, "JPXC_1000": 1, "JPXC_1700": 2, "JWJXC_480": 3, "JWJXC_H125_80": 4, "JWXC_1700": 5, "JWXC_H340": 6, "JYJXC_160_260": 7, "JZXC_H18": 8, } ) func (x Relay_Model) Enum() *Relay_Model { p := new(Relay_Model) *p = x return p } func (x Relay_Model) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Relay_Model) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[6].Descriptor() } func (Relay_Model) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[6] } func (x Relay_Model) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Relay_Model.Descriptor instead. func (Relay_Model) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{12, 0} } type Button_ButtonType int32 const ( Button_Unknown Button_ButtonType = 0 Button_NO_Reset_Press Button_ButtonType = 1 Button_NO_Reset_Up Button_ButtonType = 2 Button_Reset_Press Button_ButtonType = 3 Button_Reset_Up Button_ButtonType = 4 Button_Key_Knob Button_ButtonType = 5 ) // Enum value maps for Button_ButtonType. var ( Button_ButtonType_name = map[int32]string{ 0: "Unknown", 1: "NO_Reset_Press", 2: "NO_Reset_Up", 3: "Reset_Press", 4: "Reset_Up", 5: "Key_Knob", } Button_ButtonType_value = map[string]int32{ "Unknown": 0, "NO_Reset_Press": 1, "NO_Reset_Up": 2, "Reset_Press": 3, "Reset_Up": 4, "Key_Knob": 5, } ) func (x Button_ButtonType) Enum() *Button_ButtonType { p := new(Button_ButtonType) *p = x return p } func (x Button_ButtonType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Button_ButtonType) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[7].Descriptor() } func (Button_ButtonType) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[7] } func (x Button_ButtonType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Button_ButtonType.Descriptor instead. func (Button_ButtonType) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{15, 0} } type Light_LightAspect int32 const ( Light_L Light_LightAspect = 0 //绿灯 Light_H Light_LightAspect = 1 //红灯 Light_U Light_LightAspect = 2 //黄灯 Light_HU Light_LightAspect = 3 //红黄灯 Light_B Light_LightAspect = 4 //白灯 Light_A Light_LightAspect = 5 //蓝灯 ) // Enum value maps for Light_LightAspect. var ( Light_LightAspect_name = map[int32]string{ 0: "L", 1: "H", 2: "U", 3: "HU", 4: "B", 5: "A", } Light_LightAspect_value = map[string]int32{ "L": 0, "H": 1, "U": 2, "HU": 3, "B": 4, "A": 5, } ) func (x Light_LightAspect) Enum() *Light_LightAspect { p := new(Light_LightAspect) *p = x return p } func (x Light_LightAspect) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Light_LightAspect) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[8].Descriptor() } func (Light_LightAspect) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[8] } func (x Light_LightAspect) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Light_LightAspect.Descriptor instead. func (Light_LightAspect) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{16, 0} } type CjDataItem_PostionType int32 const ( CjDataItem_Q CjDataItem_PostionType = 0 CjDataItem_H CjDataItem_PostionType = 1 ) // Enum value maps for CjDataItem_PostionType. var ( CjDataItem_PostionType_name = map[int32]string{ 0: "Q", 1: "H", } CjDataItem_PostionType_value = map[string]int32{ "Q": 0, "H": 1, } ) func (x CjDataItem_PostionType) Enum() *CjDataItem_PostionType { p := new(CjDataItem_PostionType) *p = x return p } func (x CjDataItem_PostionType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (CjDataItem_PostionType) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[9].Descriptor() } func (CjDataItem_PostionType) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[9] } func (x CjDataItem_PostionType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use CjDataItem_PostionType.Descriptor instead. func (CjDataItem_PostionType) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{26, 0} } type Repository struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` PhysicalSections []*PhysicalSection `protobuf:"bytes,3,rep,name=physicalSections,proto3" json:"physicalSections,omitempty"` CheckPoints []*CheckPoint `protobuf:"bytes,4,rep,name=checkPoints,proto3" json:"checkPoints,omitempty"` Turnouts []*Turnout `protobuf:"bytes,5,rep,name=turnouts,proto3" json:"turnouts,omitempty"` Signals []*Signal `protobuf:"bytes,6,rep,name=signals,proto3" json:"signals,omitempty"` Transponders []*Transponder `protobuf:"bytes,7,rep,name=transponders,proto3" json:"transponders,omitempty"` Slopes []*Slope `protobuf:"bytes,8,rep,name=slopes,proto3" json:"slopes,omitempty"` SectionalCurvatures []*SectionalCurvature `protobuf:"bytes,9,rep,name=sectionalCurvatures,proto3" json:"sectionalCurvatures,omitempty"` KilometerConverts []*KilometerConvert `protobuf:"bytes,10,rep,name=kilometerConverts,proto3" json:"kilometerConverts,omitempty"` Relays []*Relay `protobuf:"bytes,11,rep,name=relays,proto3" json:"relays,omitempty"` PhaseFailureProtectors []*PhaseFailureProtector `protobuf:"bytes,12,rep,name=phaseFailureProtectors,proto3" json:"phaseFailureProtectors,omitempty"` Buttons []*Button `protobuf:"bytes,13,rep,name=buttons,proto3" json:"buttons,omitempty"` Psds []*Psd `protobuf:"bytes,14,rep,name=psds,proto3" json:"psds,omitempty"` Lights []*Light `protobuf:"bytes,15,rep,name=lights,proto3" json:"lights,omitempty"` Alarms []*Alarm `protobuf:"bytes,16,rep,name=alarms,proto3" json:"alarms,omitempty"` Stations []*Station `protobuf:"bytes,17,rep,name=stations,proto3" json:"stations,omitempty"` Mkxs []*Mkx `protobuf:"bytes,18,rep,name=mkxs,proto3" json:"mkxs,omitempty"` Platforms []*Platform `protobuf:"bytes,19,rep,name=platforms,proto3" json:"platforms,omitempty"` MainCoordinateSystem string `protobuf:"bytes,20,opt,name=mainCoordinateSystem,proto3" json:"mainCoordinateSystem,omitempty"` Keys []*Key `protobuf:"bytes,21,rep,name=Keys,proto3" json:"Keys,omitempty"` CentralizedStationRefs []*CentralizedStationRef `protobuf:"bytes,22,rep,name=CentralizedStationRefs,proto3" json:"CentralizedStationRefs,omitempty"` } func (x *Repository) Reset() { *x = Repository{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Repository) String() string { return protoimpl.X.MessageStringOf(x) } func (*Repository) ProtoMessage() {} func (x *Repository) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Repository.ProtoReflect.Descriptor instead. func (*Repository) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{0} } func (x *Repository) GetId() string { if x != nil { return x.Id } return "" } func (x *Repository) GetVersion() string { if x != nil { return x.Version } return "" } func (x *Repository) GetPhysicalSections() []*PhysicalSection { if x != nil { return x.PhysicalSections } return nil } func (x *Repository) GetCheckPoints() []*CheckPoint { if x != nil { return x.CheckPoints } return nil } func (x *Repository) GetTurnouts() []*Turnout { if x != nil { return x.Turnouts } return nil } func (x *Repository) GetSignals() []*Signal { if x != nil { return x.Signals } return nil } func (x *Repository) GetTransponders() []*Transponder { if x != nil { return x.Transponders } return nil } func (x *Repository) GetSlopes() []*Slope { if x != nil { return x.Slopes } return nil } func (x *Repository) GetSectionalCurvatures() []*SectionalCurvature { if x != nil { return x.SectionalCurvatures } return nil } func (x *Repository) GetKilometerConverts() []*KilometerConvert { if x != nil { return x.KilometerConverts } return nil } func (x *Repository) GetRelays() []*Relay { if x != nil { return x.Relays } return nil } func (x *Repository) GetPhaseFailureProtectors() []*PhaseFailureProtector { if x != nil { return x.PhaseFailureProtectors } return nil } func (x *Repository) GetButtons() []*Button { if x != nil { return x.Buttons } return nil } func (x *Repository) GetPsds() []*Psd { if x != nil { return x.Psds } return nil } func (x *Repository) GetLights() []*Light { if x != nil { return x.Lights } return nil } func (x *Repository) GetAlarms() []*Alarm { if x != nil { return x.Alarms } return nil } func (x *Repository) GetStations() []*Station { if x != nil { return x.Stations } return nil } func (x *Repository) GetMkxs() []*Mkx { if x != nil { return x.Mkxs } return nil } func (x *Repository) GetPlatforms() []*Platform { if x != nil { return x.Platforms } return nil } func (x *Repository) GetMainCoordinateSystem() string { if x != nil { return x.MainCoordinateSystem } return "" } func (x *Repository) GetKeys() []*Key { if x != nil { return x.Keys } return nil } func (x *Repository) GetCentralizedStationRefs() []*CentralizedStationRef { if x != nil { return x.CentralizedStationRefs } return nil } // 物理区段 type PhysicalSection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` TurnoutIds []string `protobuf:"bytes,2,rep,name=turnoutIds,proto3" json:"turnoutIds,omitempty"` //道岔物理区段关联的道岔 ADevicePort *DevicePort `protobuf:"bytes,3,opt,name=aDevicePort,proto3" json:"aDevicePort,omitempty"` //非道岔物理区段A端关联的设备端口 BDevicePort *DevicePort `protobuf:"bytes,4,opt,name=bDevicePort,proto3" json:"bDevicePort,omitempty"` // 物理区段所属集中站 CentralizedStation string `protobuf:"bytes,5,opt,name=centralizedStation,proto3" json:"centralizedStation,omitempty"` } func (x *PhysicalSection) Reset() { *x = PhysicalSection{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PhysicalSection) String() string { return protoimpl.X.MessageStringOf(x) } func (*PhysicalSection) ProtoMessage() {} func (x *PhysicalSection) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PhysicalSection.ProtoReflect.Descriptor instead. func (*PhysicalSection) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{1} } func (x *PhysicalSection) GetId() string { if x != nil { return x.Id } return "" } func (x *PhysicalSection) GetTurnoutIds() []string { if x != nil { return x.TurnoutIds } return nil } func (x *PhysicalSection) GetADevicePort() *DevicePort { if x != nil { return x.ADevicePort } return nil } func (x *PhysicalSection) GetBDevicePort() *DevicePort { if x != nil { return x.BDevicePort } return nil } func (x *PhysicalSection) GetCentralizedStation() string { if x != nil { return x.CentralizedStation } return "" } // 区段检测点 type CheckPoint struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Km *Kilometer `protobuf:"bytes,2,opt,name=km,proto3" json:"km,omitempty"` Type CheckPointType `protobuf:"varint,3,opt,name=type,proto3,enum=model.CheckPointType" json:"type,omitempty"` DevicePorts []*DevicePort `protobuf:"bytes,4,rep,name=devicePorts,proto3" json:"devicePorts,omitempty"` } func (x *CheckPoint) Reset() { *x = CheckPoint{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CheckPoint) String() string { return protoimpl.X.MessageStringOf(x) } func (*CheckPoint) ProtoMessage() {} func (x *CheckPoint) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CheckPoint.ProtoReflect.Descriptor instead. func (*CheckPoint) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{2} } func (x *CheckPoint) GetId() string { if x != nil { return x.Id } return "" } func (x *CheckPoint) GetKm() *Kilometer { if x != nil { return x.Km } return nil } func (x *CheckPoint) GetType() CheckPointType { if x != nil { return x.Type } return CheckPointType_Boundary } func (x *CheckPoint) GetDevicePorts() []*DevicePort { if x != nil { return x.DevicePorts } return nil } // 道岔 type Turnout struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Km *Kilometer `protobuf:"bytes,2,opt,name=km,proto3" json:"km,omitempty"` ADevicePort *DevicePort `protobuf:"bytes,3,opt,name=aDevicePort,proto3" json:"aDevicePort,omitempty"` BDevicePort *DevicePort `protobuf:"bytes,4,opt,name=bDevicePort,proto3" json:"bDevicePort,omitempty"` CDevicePort *DevicePort `protobuf:"bytes,5,opt,name=cDevicePort,proto3" json:"cDevicePort,omitempty"` SwitchMachineType Turnout_SwitchMachineType `protobuf:"varint,6,opt,name=switchMachineType,proto3,enum=model.Turnout_SwitchMachineType" json:"switchMachineType,omitempty"` ElectronicComponentGroups []*ElectronicComponentGroup `protobuf:"bytes,7,rep,name=electronicComponentGroups,proto3" json:"electronicComponentGroups,omitempty"` //关联的电子元件组合 } func (x *Turnout) Reset() { *x = Turnout{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Turnout) String() string { return protoimpl.X.MessageStringOf(x) } func (*Turnout) ProtoMessage() {} func (x *Turnout) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Turnout.ProtoReflect.Descriptor instead. func (*Turnout) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{3} } func (x *Turnout) GetId() string { if x != nil { return x.Id } return "" } func (x *Turnout) GetKm() *Kilometer { if x != nil { return x.Km } return nil } func (x *Turnout) GetADevicePort() *DevicePort { if x != nil { return x.ADevicePort } return nil } func (x *Turnout) GetBDevicePort() *DevicePort { if x != nil { return x.BDevicePort } return nil } func (x *Turnout) GetCDevicePort() *DevicePort { if x != nil { return x.CDevicePort } return nil } func (x *Turnout) GetSwitchMachineType() Turnout_SwitchMachineType { if x != nil { return x.SwitchMachineType } return Turnout_Unknown } func (x *Turnout) GetElectronicComponentGroups() []*ElectronicComponentGroup { if x != nil { return x.ElectronicComponentGroups } return nil } // 信号机 type Signal struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Km *Kilometer `protobuf:"bytes,2,opt,name=km,proto3" json:"km,omitempty"` SectionId string `protobuf:"bytes,3,opt,name=sectionId,proto3" json:"sectionId,omitempty"` //关联的区段 TurnoutPort *DevicePort `protobuf:"bytes,4,opt,name=turnoutPort,proto3" json:"turnoutPort,omitempty"` //关联的区段端口 ElectronicComponentGroups []*ElectronicComponentGroup `protobuf:"bytes,7,rep,name=electronicComponentGroups,proto3" json:"electronicComponentGroups,omitempty"` //关联的电子元件组合 Code string `protobuf:"bytes,8,opt,name=code,proto3" json:"code,omitempty"` //信号机组合类型 Model Signal_Model `protobuf:"varint,9,opt,name=model,proto3,enum=model.Signal_Model" json:"model,omitempty"` //信号机模型类型(stationLayoutGraphics.proto Signal.Model枚举值) } func (x *Signal) Reset() { *x = Signal{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Signal) String() string { return protoimpl.X.MessageStringOf(x) } func (*Signal) ProtoMessage() {} func (x *Signal) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Signal.ProtoReflect.Descriptor instead. func (*Signal) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{4} } func (x *Signal) GetId() string { if x != nil { return x.Id } return "" } func (x *Signal) GetKm() *Kilometer { if x != nil { return x.Km } return nil } func (x *Signal) GetSectionId() string { if x != nil { return x.SectionId } return "" } func (x *Signal) GetTurnoutPort() *DevicePort { if x != nil { return x.TurnoutPort } return nil } func (x *Signal) GetElectronicComponentGroups() []*ElectronicComponentGroup { if x != nil { return x.ElectronicComponentGroups } return nil } func (x *Signal) GetCode() string { if x != nil { return x.Code } return "" } func (x *Signal) GetModel() Signal_Model { if x != nil { return x.Model } return Signal_HLU } type Psd struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` PlatformId string `protobuf:"bytes,2,opt,name=platformId,proto3" json:"platformId,omitempty"` AsdAmount int32 `protobuf:"varint,3,opt,name=asdAmount,proto3" json:"asdAmount,omitempty"` AsdGroups []*AsdGroup `protobuf:"bytes,4,rep,name=asdGroups,proto3" json:"asdGroups,omitempty"` ElectronicComponentGroups []*ElectronicComponentGroup `protobuf:"bytes,5,rep,name=electronicComponentGroups,proto3" json:"electronicComponentGroups,omitempty"` //关联的电子元件组合 } func (x *Psd) Reset() { *x = Psd{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Psd) String() string { return protoimpl.X.MessageStringOf(x) } func (*Psd) ProtoMessage() {} func (x *Psd) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Psd.ProtoReflect.Descriptor instead. func (*Psd) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{5} } func (x *Psd) GetId() string { if x != nil { return x.Id } return "" } func (x *Psd) GetPlatformId() string { if x != nil { return x.PlatformId } return "" } func (x *Psd) GetAsdAmount() int32 { if x != nil { return x.AsdAmount } return 0 } func (x *Psd) GetAsdGroups() []*AsdGroup { if x != nil { return x.AsdGroups } return nil } func (x *Psd) GetElectronicComponentGroups() []*ElectronicComponentGroup { if x != nil { return x.ElectronicComponentGroups } return nil } // 应答器 type Transponder struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Km *Kilometer `protobuf:"bytes,2,opt,name=km,proto3" json:"km,omitempty"` SectionId string `protobuf:"bytes,3,opt,name=sectionId,proto3" json:"sectionId,omitempty"` //关联的区段 TurnoutPort *DevicePort `protobuf:"bytes,4,opt,name=turnoutPort,proto3" json:"turnoutPort,omitempty"` //关联的区段端口 } func (x *Transponder) Reset() { *x = Transponder{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Transponder) String() string { return protoimpl.X.MessageStringOf(x) } func (*Transponder) ProtoMessage() {} func (x *Transponder) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Transponder.ProtoReflect.Descriptor instead. func (*Transponder) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{6} } func (x *Transponder) GetId() string { if x != nil { return x.Id } return "" } func (x *Transponder) GetKm() *Kilometer { if x != nil { return x.Km } return nil } func (x *Transponder) GetSectionId() string { if x != nil { return x.SectionId } return "" } func (x *Transponder) GetTurnoutPort() *DevicePort { if x != nil { return x.TurnoutPort } return nil } // 坡度 type Slope struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Kms []*Kilometer `protobuf:"bytes,2,rep,name=kms,proto3" json:"kms,omitempty"` Degree int32 `protobuf:"varint,3,opt,name=degree,proto3" json:"degree,omitempty"` //坡度角的sin * 1000 } func (x *Slope) Reset() { *x = Slope{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Slope) String() string { return protoimpl.X.MessageStringOf(x) } func (*Slope) ProtoMessage() {} func (x *Slope) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Slope.ProtoReflect.Descriptor instead. func (*Slope) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{7} } func (x *Slope) GetId() string { if x != nil { return x.Id } return "" } func (x *Slope) GetKms() []*Kilometer { if x != nil { return x.Kms } return nil } func (x *Slope) GetDegree() int32 { if x != nil { return x.Degree } return 0 } // 分段曲率 type SectionalCurvature struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Kms []*Kilometer `protobuf:"bytes,2,rep,name=kms,proto3" json:"kms,omitempty"` Radius int32 `protobuf:"varint,3,opt,name=radius,proto3" json:"radius,omitempty"` //半径 mm } func (x *SectionalCurvature) Reset() { *x = SectionalCurvature{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SectionalCurvature) String() string { return protoimpl.X.MessageStringOf(x) } func (*SectionalCurvature) ProtoMessage() {} func (x *SectionalCurvature) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SectionalCurvature.ProtoReflect.Descriptor instead. func (*SectionalCurvature) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{8} } func (x *SectionalCurvature) GetId() string { if x != nil { return x.Id } return "" } func (x *SectionalCurvature) GetKms() []*Kilometer { if x != nil { return x.Kms } return nil } func (x *SectionalCurvature) GetRadius() int32 { if x != nil { return x.Radius } return 0 } // 设备及端口 type DevicePort struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DeviceId string `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"` DeviceType DeviceType `protobuf:"varint,2,opt,name=deviceType,proto3,enum=model.DeviceType" json:"deviceType,omitempty"` Port Port `protobuf:"varint,3,opt,name=port,proto3,enum=model.Port" json:"port,omitempty"` } func (x *DevicePort) Reset() { *x = DevicePort{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DevicePort) String() string { return protoimpl.X.MessageStringOf(x) } func (*DevicePort) ProtoMessage() {} func (x *DevicePort) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DevicePort.ProtoReflect.Descriptor instead. func (*DevicePort) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{9} } func (x *DevicePort) GetDeviceId() string { if x != nil { return x.DeviceId } return "" } func (x *DevicePort) GetDeviceType() DeviceType { if x != nil { return x.DeviceType } return DeviceType_DeviceType_Unknown } func (x *DevicePort) GetPort() Port { if x != nil { return x.Port } return Port_None } // 公里标 type Kilometer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` //公里标mm CoordinateSystem string `protobuf:"bytes,2,opt,name=coordinateSystem,proto3" json:"coordinateSystem,omitempty"` //坐标系 Direction Direction `protobuf:"varint,3,opt,name=direction,proto3,enum=model.Direction" json:"direction,omitempty"` //左右行 } func (x *Kilometer) Reset() { *x = Kilometer{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Kilometer) String() string { return protoimpl.X.MessageStringOf(x) } func (*Kilometer) ProtoMessage() {} func (x *Kilometer) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Kilometer.ProtoReflect.Descriptor instead. func (*Kilometer) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{10} } func (x *Kilometer) GetValue() int64 { if x != nil { return x.Value } return 0 } func (x *Kilometer) GetCoordinateSystem() string { if x != nil { return x.CoordinateSystem } return "" } func (x *Kilometer) GetDirection() Direction { if x != nil { return x.Direction } return Direction_LEFT } // 公里标转换 type KilometerConvert struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields KmA *Kilometer `protobuf:"bytes,1,opt,name=kmA,proto3" json:"kmA,omitempty"` KmB *Kilometer `protobuf:"bytes,2,opt,name=kmB,proto3" json:"kmB,omitempty"` SameTrend bool `protobuf:"varint,3,opt,name=sameTrend,proto3" json:"sameTrend,omitempty"` //相同趋势(同增同减)? } func (x *KilometerConvert) Reset() { *x = KilometerConvert{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *KilometerConvert) String() string { return protoimpl.X.MessageStringOf(x) } func (*KilometerConvert) ProtoMessage() {} func (x *KilometerConvert) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use KilometerConvert.ProtoReflect.Descriptor instead. func (*KilometerConvert) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{11} } func (x *KilometerConvert) GetKmA() *Kilometer { if x != nil { return x.KmA } return nil } func (x *KilometerConvert) GetKmB() *Kilometer { if x != nil { return x.KmB } return nil } func (x *KilometerConvert) GetSameTrend() bool { if x != nil { return x.SameTrend } return false } // 继电器 type Relay struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` Model Relay_Model `protobuf:"varint,3,opt,name=model,proto3,enum=model.Relay_Model" json:"model,omitempty"` StationId string `protobuf:"bytes,4,opt,name=stationId,proto3" json:"stationId,omitempty"` // 所属车站id } func (x *Relay) Reset() { *x = Relay{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Relay) String() string { return protoimpl.X.MessageStringOf(x) } func (*Relay) ProtoMessage() {} func (x *Relay) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Relay.ProtoReflect.Descriptor instead. func (*Relay) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{12} } func (x *Relay) GetId() string { if x != nil { return x.Id } return "" } func (x *Relay) GetCode() string { if x != nil { return x.Code } return "" } func (x *Relay) GetModel() Relay_Model { if x != nil { return x.Model } return Relay_Unknown } func (x *Relay) GetStationId() string { if x != nil { return x.StationId } return "" } // 断相保护器 type PhaseFailureProtector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` } func (x *PhaseFailureProtector) Reset() { *x = PhaseFailureProtector{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PhaseFailureProtector) String() string { return protoimpl.X.MessageStringOf(x) } func (*PhaseFailureProtector) ProtoMessage() {} func (x *PhaseFailureProtector) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PhaseFailureProtector.ProtoReflect.Descriptor instead. func (*PhaseFailureProtector) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{13} } func (x *PhaseFailureProtector) GetId() string { if x != nil { return x.Id } return "" } func (x *PhaseFailureProtector) GetCode() string { if x != nil { return x.Code } return "" } // 电子元件组合 type ElectronicComponentGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` //组合的编号(名称) ComponentIds []string `protobuf:"bytes,2,rep,name=componentIds,proto3" json:"componentIds,omitempty"` //组合内电子元件的id } func (x *ElectronicComponentGroup) Reset() { *x = ElectronicComponentGroup{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ElectronicComponentGroup) String() string { return protoimpl.X.MessageStringOf(x) } func (*ElectronicComponentGroup) ProtoMessage() {} func (x *ElectronicComponentGroup) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ElectronicComponentGroup.ProtoReflect.Descriptor instead. func (*ElectronicComponentGroup) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{14} } func (x *ElectronicComponentGroup) GetCode() string { if x != nil { return x.Code } return "" } func (x *ElectronicComponentGroup) GetComponentIds() []string { if x != nil { return x.ComponentIds } return nil } // 开关、按钮、旋钮 type Button struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` ButtonType Button_ButtonType `protobuf:"varint,3,opt,name=buttonType,proto3,enum=model.Button_ButtonType" json:"buttonType,omitempty"` HasLight bool `protobuf:"varint,4,opt,name=hasLight,proto3" json:"hasLight,omitempty"` } func (x *Button) Reset() { *x = Button{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Button) String() string { return protoimpl.X.MessageStringOf(x) } func (*Button) ProtoMessage() {} func (x *Button) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Button.ProtoReflect.Descriptor instead. func (*Button) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{15} } func (x *Button) GetId() string { if x != nil { return x.Id } return "" } func (x *Button) GetCode() string { if x != nil { return x.Code } return "" } func (x *Button) GetButtonType() Button_ButtonType { if x != nil { return x.ButtonType } return Button_Unknown } func (x *Button) GetHasLight() bool { if x != nil { return x.HasLight } return false } // 灯 type Light struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` Aspect Light_LightAspect `protobuf:"varint,3,opt,name=aspect,proto3,enum=model.Light_LightAspect" json:"aspect,omitempty"` } func (x *Light) Reset() { *x = Light{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Light) String() string { return protoimpl.X.MessageStringOf(x) } func (*Light) ProtoMessage() {} func (x *Light) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Light.ProtoReflect.Descriptor instead. func (*Light) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{16} } func (x *Light) GetId() string { if x != nil { return x.Id } return "" } func (x *Light) GetCode() string { if x != nil { return x.Code } return "" } func (x *Light) GetAspect() Light_LightAspect { if x != nil { return x.Aspect } return Light_L } // 报警器 type Alarm struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` } func (x *Alarm) Reset() { *x = Alarm{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Alarm) String() string { return protoimpl.X.MessageStringOf(x) } func (*Alarm) ProtoMessage() {} func (x *Alarm) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Alarm.ProtoReflect.Descriptor instead. func (*Alarm) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{17} } func (x *Alarm) GetId() string { if x != nil { return x.Id } return "" } func (x *Alarm) GetCode() string { if x != nil { return x.Code } return "" } // 车站 type Station struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` ElectronicGroup []*ElectronicGroup `protobuf:"bytes,3,rep,name=electronicGroup,proto3" json:"electronicGroup,omitempty"` // 关联电子元件组合 } func (x *Station) Reset() { *x = Station{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Station) String() string { return protoimpl.X.MessageStringOf(x) } func (*Station) ProtoMessage() {} func (x *Station) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Station.ProtoReflect.Descriptor instead. func (*Station) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{18} } func (x *Station) GetId() string { if x != nil { return x.Id } return "" } func (x *Station) GetCode() string { if x != nil { return x.Code } return "" } func (x *Station) GetElectronicGroup() []*ElectronicGroup { if x != nil { return x.ElectronicGroup } return nil } // 元器件组信息 type ElectronicGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` //组合的编号(名称) Components []*ElectronicComponent `protobuf:"bytes,2,rep,name=components,proto3" json:"components,omitempty"` //组合内电子元件 } func (x *ElectronicGroup) Reset() { *x = ElectronicGroup{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ElectronicGroup) String() string { return protoimpl.X.MessageStringOf(x) } func (*ElectronicGroup) ProtoMessage() {} func (x *ElectronicGroup) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ElectronicGroup.ProtoReflect.Descriptor instead. func (*ElectronicGroup) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{19} } func (x *ElectronicGroup) GetCode() string { if x != nil { return x.Code } return "" } func (x *ElectronicGroup) GetComponents() []*ElectronicComponent { if x != nil { return x.Components } return nil } // 关联电子元件 type ElectronicComponent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // 元器件ID DeviceType DeviceType `protobuf:"varint,3,opt,name=deviceType,proto3,enum=model.DeviceType" json:"deviceType,omitempty"` // 元器件类型 } func (x *ElectronicComponent) Reset() { *x = ElectronicComponent{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ElectronicComponent) String() string { return protoimpl.X.MessageStringOf(x) } func (*ElectronicComponent) ProtoMessage() {} func (x *ElectronicComponent) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ElectronicComponent.ProtoReflect.Descriptor instead. func (*ElectronicComponent) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{20} } func (x *ElectronicComponent) GetId() string { if x != nil { return x.Id } return "" } func (x *ElectronicComponent) GetDeviceType() DeviceType { if x != nil { return x.DeviceType } return DeviceType_DeviceType_Unknown } // 门控箱 type Mkx struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` PsdId string `protobuf:"bytes,2,opt,name=psdId,proto3" json:"psdId,omitempty"` PcbButtonId string `protobuf:"bytes,3,opt,name=pcbButtonId,proto3" json:"pcbButtonId,omitempty"` PobButtonId string `protobuf:"bytes,4,opt,name=pobButtonId,proto3" json:"pobButtonId,omitempty"` PabButtonId string `protobuf:"bytes,5,opt,name=pabButtonId,proto3" json:"pabButtonId,omitempty"` PcbjId string `protobuf:"bytes,6,opt,name=pcbjId,proto3" json:"pcbjId,omitempty"` PobjId string `protobuf:"bytes,7,opt,name=pobjId,proto3" json:"pobjId,omitempty"` PabjId string `protobuf:"bytes,8,opt,name=pabjId,proto3" json:"pabjId,omitempty"` } func (x *Mkx) Reset() { *x = Mkx{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Mkx) String() string { return protoimpl.X.MessageStringOf(x) } func (*Mkx) ProtoMessage() {} func (x *Mkx) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Mkx.ProtoReflect.Descriptor instead. func (*Mkx) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{21} } func (x *Mkx) GetId() string { if x != nil { return x.Id } return "" } func (x *Mkx) GetPsdId() string { if x != nil { return x.PsdId } return "" } func (x *Mkx) GetPcbButtonId() string { if x != nil { return x.PcbButtonId } return "" } func (x *Mkx) GetPobButtonId() string { if x != nil { return x.PobButtonId } return "" } func (x *Mkx) GetPabButtonId() string { if x != nil { return x.PabButtonId } return "" } func (x *Mkx) GetPcbjId() string { if x != nil { return x.PcbjId } return "" } func (x *Mkx) GetPobjId() string { if x != nil { return x.PobjId } return "" } func (x *Mkx) GetPabjId() string { if x != nil { return x.PabjId } return "" } // 站台 type Platform struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` StationId string `protobuf:"bytes,3,opt,name=stationId,proto3" json:"stationId,omitempty"` PhysicalSectionId string `protobuf:"bytes,4,opt,name=physicalSectionId,proto3" json:"physicalSectionId,omitempty"` } func (x *Platform) Reset() { *x = Platform{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Platform) String() string { return protoimpl.X.MessageStringOf(x) } func (*Platform) ProtoMessage() {} func (x *Platform) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Platform.ProtoReflect.Descriptor instead. func (*Platform) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{22} } func (x *Platform) GetId() string { if x != nil { return x.Id } return "" } func (x *Platform) GetCode() string { if x != nil { return x.Code } return "" } func (x *Platform) GetStationId() string { if x != nil { return x.StationId } return "" } func (x *Platform) GetPhysicalSectionId() string { if x != nil { return x.PhysicalSectionId } return "" } // 报警器 type Key struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` Gear int32 `protobuf:"varint,3,opt,name=gear,proto3" json:"gear,omitempty"` // 挡位数量 } func (x *Key) Reset() { *x = Key{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Key) String() string { return protoimpl.X.MessageStringOf(x) } func (*Key) ProtoMessage() {} func (x *Key) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Key.ProtoReflect.Descriptor instead. func (*Key) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{23} } func (x *Key) GetId() string { if x != nil { return x.Id } return "" } func (x *Key) GetCode() string { if x != nil { return x.Code } return "" } func (x *Key) GetGear() int32 { if x != nil { return x.Gear } return 0 } // 集中站关联信息 type CentralizedStationRef struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields StationId string `protobuf:"bytes,1,opt,name=stationId,proto3" json:"stationId,omitempty"` // 集中站ID TransponderId []string `protobuf:"bytes,2,rep,name=transponderId,proto3" json:"transponderId,omitempty"` // 应答器ID CjList []*CjData `protobuf:"bytes,3,rep,name=cjList,proto3" json:"cjList,omitempty"` // 采集继电器配置信息 QdList []*QdData `protobuf:"bytes,4,rep,name=qdList,proto3" json:"qdList,omitempty"` // 驱动继电器配置信息 } func (x *CentralizedStationRef) Reset() { *x = CentralizedStationRef{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CentralizedStationRef) String() string { return protoimpl.X.MessageStringOf(x) } func (*CentralizedStationRef) ProtoMessage() {} func (x *CentralizedStationRef) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CentralizedStationRef.ProtoReflect.Descriptor instead. func (*CentralizedStationRef) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{24} } func (x *CentralizedStationRef) GetStationId() string { if x != nil { return x.StationId } return "" } func (x *CentralizedStationRef) GetTransponderId() []string { if x != nil { return x.TransponderId } return nil } func (x *CentralizedStationRef) GetCjList() []*CjData { if x != nil { return x.CjList } return nil } func (x *CentralizedStationRef) GetQdList() []*QdData { if x != nil { return x.QdList } return nil } type CjData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Row int32 `protobuf:"varint,1,opt,name=row,proto3" json:"row,omitempty"` // 所在行 Col int32 `protobuf:"varint,2,opt,name=col,proto3" json:"col,omitempty"` // 所在列 RefRelays []*CjDataItem `protobuf:"bytes,3,rep,name=refRelays,proto3" json:"refRelays,omitempty"` //采集的继电器 } func (x *CjData) Reset() { *x = CjData{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CjData) String() string { return protoimpl.X.MessageStringOf(x) } func (*CjData) ProtoMessage() {} func (x *CjData) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CjData.ProtoReflect.Descriptor instead. func (*CjData) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{25} } func (x *CjData) GetRow() int32 { if x != nil { return x.Row } return 0 } func (x *CjData) GetCol() int32 { if x != nil { return x.Col } return 0 } func (x *CjData) GetRefRelays() []*CjDataItem { if x != nil { return x.RefRelays } return nil } type CjDataItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RelayId string `protobuf:"bytes,1,opt,name=relayId,proto3" json:"relayId,omitempty"` //采集对应的继电器Id Position CjDataItem_PostionType `protobuf:"varint,2,opt,name=position,proto3,enum=model.CjDataItem_PostionType" json:"position,omitempty"` //继电器的位置,QH对应着吸合 } func (x *CjDataItem) Reset() { *x = CjDataItem{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CjDataItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*CjDataItem) ProtoMessage() {} func (x *CjDataItem) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CjDataItem.ProtoReflect.Descriptor instead. func (*CjDataItem) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{26} } func (x *CjDataItem) GetRelayId() string { if x != nil { return x.RelayId } return "" } func (x *CjDataItem) GetPosition() CjDataItem_PostionType { if x != nil { return x.Position } return CjDataItem_Q } type QdData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Row int32 `protobuf:"varint,1,opt,name=row,proto3" json:"row,omitempty"` // 所在行 Col int32 `protobuf:"varint,2,opt,name=col,proto3" json:"col,omitempty"` // 所在列 RefRelays []string `protobuf:"bytes,3,rep,name=refRelays,proto3" json:"refRelays,omitempty"` //驱动的继电器Id } func (x *QdData) Reset() { *x = QdData{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *QdData) String() string { return protoimpl.X.MessageStringOf(x) } func (*QdData) ProtoMessage() {} func (x *QdData) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use QdData.ProtoReflect.Descriptor instead. func (*QdData) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{27} } func (x *QdData) GetRow() int32 { if x != nil { return x.Row } return 0 } func (x *QdData) GetCol() int32 { if x != nil { return x.Col } return 0 } func (x *QdData) GetRefRelays() []string { if x != nil { return x.RefRelays } return nil } // 滑动门编组 type AsdGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Group int32 `protobuf:"varint,1,opt,name=group,proto3" json:"group,omitempty"` //编组 Start int32 `protobuf:"varint,2,opt,name=start,proto3" json:"start,omitempty"` //起始子门索引 End int32 `protobuf:"varint,3,opt,name=end,proto3" json:"end,omitempty"` //终止子门索引 } func (x *AsdGroup) Reset() { *x = AsdGroup{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AsdGroup) String() string { return protoimpl.X.MessageStringOf(x) } func (*AsdGroup) ProtoMessage() {} func (x *AsdGroup) ProtoReflect() protoreflect.Message { mi := &file_model_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AsdGroup.ProtoReflect.Descriptor instead. func (*AsdGroup) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{28} } func (x *AsdGroup) GetGroup() int32 { if x != nil { return x.Group } return 0 } func (x *AsdGroup) GetStart() int32 { if x != nil { return x.Start } return 0 } func (x *AsdGroup) GetEnd() int32 { if x != nil { return x.End } return 0 } var File_model_proto protoreflect.FileDescriptor var file_model_proto_rawDesc = []byte{ 0x0a, 0x0b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0xac, 0x08, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x10, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x0b, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0b, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x54, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x52, 0x08, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x12, 0x36, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x06, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x53, 0x6c, 0x6f, 0x70, 0x65, 0x52, 0x06, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x13, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x75, 0x72, 0x76, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x75, 0x72, 0x76, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x13, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x75, 0x72, 0x76, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x11, 0x6b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x52, 0x11, 0x6b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x06, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x06, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x73, 0x12, 0x54, 0x0a, 0x16, 0x70, 0x68, 0x61, 0x73, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x16, 0x70, 0x68, 0x61, 0x73, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x07, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x07, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x04, 0x70, 0x73, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x73, 0x64, 0x52, 0x04, 0x70, 0x73, 0x64, 0x73, 0x12, 0x24, 0x0a, 0x06, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x06, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x52, 0x06, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x04, 0x6d, 0x6b, 0x78, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4d, 0x6b, 0x78, 0x52, 0x04, 0x6d, 0x6b, 0x78, 0x73, 0x12, 0x2d, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1e, 0x0a, 0x04, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x54, 0x0a, 0x16, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x52, 0x16, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x73, 0x22, 0xdb, 0x01, 0x0a, 0x0f, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x49, 0x64, 0x73, 0x12, 0x33, 0x0a, 0x0b, 0x61, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x0b, 0x61, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x62, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x0b, 0x62, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9e, 0x01, 0x0a, 0x0a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x02, 0x6b, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x02, 0x6b, 0x6d, 0x12, 0x29, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x22, 0xcd, 0x03, 0x0a, 0x07, 0x54, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x02, 0x6b, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x02, 0x6b, 0x6d, 0x12, 0x33, 0x0a, 0x0b, 0x61, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x0b, 0x61, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x62, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x0b, 0x62, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x63, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x0b, 0x63, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x4e, 0x0a, 0x11, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x54, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5d, 0x0a, 0x19, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x19, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0x42, 0x0a, 0x11, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x5a, 0x44, 0x4a, 0x39, 0x5f, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x5a, 0x44, 0x4a, 0x39, 0x5f, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x10, 0x02, 0x22, 0xee, 0x02, 0x0a, 0x06, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x02, 0x6b, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x02, 0x6b, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0b, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x0b, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x5d, 0x0a, 0x19, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x19, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x41, 0x0a, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x07, 0x0a, 0x03, 0x48, 0x4c, 0x55, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x48, 0x4c, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x48, 0x4c, 0x55, 0x5f, 0x46, 0x55, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x48, 0x4c, 0x55, 0x5f, 0x46, 0x4c, 0x10, 0x03, 0x12, 0x06, 0x0a, 0x02, 0x41, 0x42, 0x10, 0x04, 0x12, 0x07, 0x0a, 0x03, 0x48, 0x42, 0x55, 0x10, 0x05, 0x22, 0xe1, 0x01, 0x0a, 0x03, 0x50, 0x73, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x12, 0x5d, 0x0a, 0x19, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x19, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0x92, 0x01, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x02, 0x6b, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x02, 0x6b, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0b, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x0b, 0x74, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x53, 0x0a, 0x05, 0x53, 0x6c, 0x6f, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x03, 0x6b, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x03, 0x6b, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x22, 0x60, 0x0a, 0x12, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x75, 0x72, 0x76, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x03, 0x6b, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x03, 0x6b, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x22, 0x7c, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0b, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x7d, 0x0a, 0x09, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x2e, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x78, 0x0a, 0x10, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x12, 0x22, 0x0a, 0x03, 0x6b, 0x6d, 0x41, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x03, 0x6b, 0x6d, 0x41, 0x12, 0x22, 0x0a, 0x03, 0x6b, 0x6d, 0x42, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4b, 0x69, 0x6c, 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x03, 0x6b, 0x6d, 0x42, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x61, 0x6d, 0x65, 0x54, 0x72, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x61, 0x6d, 0x65, 0x54, 0x72, 0x65, 0x6e, 0x64, 0x22, 0x89, 0x02, 0x0a, 0x05, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x93, 0x01, 0x0a, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x50, 0x58, 0x43, 0x5f, 0x31, 0x30, 0x30, 0x30, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x50, 0x58, 0x43, 0x5f, 0x31, 0x37, 0x30, 0x30, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x57, 0x4a, 0x58, 0x43, 0x5f, 0x34, 0x38, 0x30, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x4a, 0x57, 0x4a, 0x58, 0x43, 0x5f, 0x48, 0x31, 0x32, 0x35, 0x5f, 0x38, 0x30, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x57, 0x58, 0x43, 0x5f, 0x31, 0x37, 0x30, 0x30, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x57, 0x58, 0x43, 0x5f, 0x48, 0x33, 0x34, 0x30, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x4a, 0x59, 0x4a, 0x58, 0x43, 0x5f, 0x31, 0x36, 0x30, 0x5f, 0x32, 0x36, 0x30, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x4a, 0x5a, 0x58, 0x43, 0x5f, 0x48, 0x31, 0x38, 0x10, 0x08, 0x22, 0x3b, 0x0a, 0x15, 0x50, 0x68, 0x61, 0x73, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x52, 0x0a, 0x18, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x22, 0xef, 0x01, 0x0a, 0x06, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x68, 0x61, 0x73, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x22, 0x6b, 0x0a, 0x0a, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x4f, 0x5f, 0x52, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x50, 0x72, 0x65, 0x73, 0x73, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x5f, 0x52, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x55, 0x70, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x50, 0x72, 0x65, 0x73, 0x73, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x55, 0x70, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x5f, 0x4b, 0x6e, 0x6f, 0x62, 0x10, 0x05, 0x22, 0x97, 0x01, 0x0a, 0x05, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x06, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x22, 0x38, 0x0a, 0x0b, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x12, 0x05, 0x0a, 0x01, 0x4c, 0x10, 0x00, 0x12, 0x05, 0x0a, 0x01, 0x48, 0x10, 0x01, 0x12, 0x05, 0x0a, 0x01, 0x55, 0x10, 0x02, 0x12, 0x06, 0x0a, 0x02, 0x48, 0x55, 0x10, 0x03, 0x12, 0x05, 0x0a, 0x01, 0x42, 0x10, 0x04, 0x12, 0x05, 0x0a, 0x01, 0x41, 0x10, 0x05, 0x22, 0x2b, 0x0a, 0x05, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x6f, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x40, 0x0a, 0x0f, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0f, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x61, 0x0a, 0x0f, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x58, 0x0a, 0x13, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x31, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0xf6, 0x01, 0x0a, 0x03, 0x4d, 0x6b, 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x73, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x73, 0x64, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x63, 0x62, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x63, 0x62, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6f, 0x62, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6f, 0x62, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x61, 0x62, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x61, 0x62, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x5d, 0x0a, 0x19, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x19, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0x7a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x65, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x67, 0x65, 0x61, 0x72, 0x22, 0xa9, 0x01, 0x0a, 0x15, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x06, 0x63, 0x6a, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x6a, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x63, 0x6a, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x71, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x51, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x71, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x5d, 0x0a, 0x06, 0x43, 0x6a, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x6f, 0x77, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x63, 0x6f, 0x6c, 0x12, 0x2f, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x6a, 0x44, 0x61, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x09, 0x72, 0x65, 0x66, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x73, 0x22, 0x7e, 0x0a, 0x0a, 0x43, 0x6a, 0x44, 0x61, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x6a, 0x44, 0x61, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1b, 0x0a, 0x0b, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x05, 0x0a, 0x01, 0x51, 0x10, 0x00, 0x12, 0x05, 0x0a, 0x01, 0x48, 0x10, 0x01, 0x22, 0x4a, 0x0a, 0x06, 0x51, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x6f, 0x77, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x63, 0x6f, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x73, 0x2a, 0xe4, 0x03, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x6f, 0x75, 0x74, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x6c, 0x6f, 0x70, 0x65, 0x10, 0x06, 0x12, 0x21, 0x0a, 0x1d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x75, 0x72, 0x76, 0x61, 0x74, 0x75, 0x72, 0x65, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4c, 0x69, 0x6e, 0x6b, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x10, 0x0a, 0x12, 0x24, 0x0a, 0x20, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x68, 0x61, 0x73, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0x0b, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x10, 0x0c, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x10, 0x0d, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x50, 0x73, 0x64, 0x10, 0x0f, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x6b, 0x78, 0x10, 0x11, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4b, 0x65, 0x79, 0x10, 0x12, 0x2a, 0x25, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x05, 0x0a, 0x01, 0x41, 0x10, 0x01, 0x12, 0x05, 0x0a, 0x01, 0x42, 0x10, 0x02, 0x12, 0x05, 0x0a, 0x01, 0x43, 0x10, 0x03, 0x2a, 0x20, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x45, 0x46, 0x54, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, 0x01, 0x2a, 0x43, 0x0a, 0x0e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x78, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x4a, 0x6f, 0x69, 0x6e, 0x74, 0x10, 0x02, 0x42, 0x1a, 0x5a, 0x18, 0x2e, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_model_proto_rawDescOnce sync.Once file_model_proto_rawDescData = file_model_proto_rawDesc ) func file_model_proto_rawDescGZIP() []byte { file_model_proto_rawDescOnce.Do(func() { file_model_proto_rawDescData = protoimpl.X.CompressGZIP(file_model_proto_rawDescData) }) return file_model_proto_rawDescData } var file_model_proto_enumTypes = make([]protoimpl.EnumInfo, 10) var file_model_proto_msgTypes = make([]protoimpl.MessageInfo, 29) var file_model_proto_goTypes = []interface{}{ (DeviceType)(0), // 0: model.DeviceType (Port)(0), // 1: model.Port (Direction)(0), // 2: model.Direction (CheckPointType)(0), // 3: model.CheckPointType (Turnout_SwitchMachineType)(0), // 4: model.Turnout.SwitchMachineType (Signal_Model)(0), // 5: model.Signal.Model (Relay_Model)(0), // 6: model.Relay.Model (Button_ButtonType)(0), // 7: model.Button.ButtonType (Light_LightAspect)(0), // 8: model.Light.LightAspect (CjDataItem_PostionType)(0), // 9: model.CjDataItem.PostionType (*Repository)(nil), // 10: model.Repository (*PhysicalSection)(nil), // 11: model.PhysicalSection (*CheckPoint)(nil), // 12: model.CheckPoint (*Turnout)(nil), // 13: model.Turnout (*Signal)(nil), // 14: model.Signal (*Psd)(nil), // 15: model.Psd (*Transponder)(nil), // 16: model.Transponder (*Slope)(nil), // 17: model.Slope (*SectionalCurvature)(nil), // 18: model.SectionalCurvature (*DevicePort)(nil), // 19: model.DevicePort (*Kilometer)(nil), // 20: model.Kilometer (*KilometerConvert)(nil), // 21: model.KilometerConvert (*Relay)(nil), // 22: model.Relay (*PhaseFailureProtector)(nil), // 23: model.PhaseFailureProtector (*ElectronicComponentGroup)(nil), // 24: model.ElectronicComponentGroup (*Button)(nil), // 25: model.Button (*Light)(nil), // 26: model.Light (*Alarm)(nil), // 27: model.Alarm (*Station)(nil), // 28: model.Station (*ElectronicGroup)(nil), // 29: model.ElectronicGroup (*ElectronicComponent)(nil), // 30: model.ElectronicComponent (*Mkx)(nil), // 31: model.Mkx (*Platform)(nil), // 32: model.Platform (*Key)(nil), // 33: model.Key (*CentralizedStationRef)(nil), // 34: model.CentralizedStationRef (*CjData)(nil), // 35: model.CjData (*CjDataItem)(nil), // 36: model.CjDataItem (*QdData)(nil), // 37: model.QdData (*AsdGroup)(nil), // 38: model.AsdGroup } var file_model_proto_depIdxs = []int32{ 11, // 0: model.Repository.physicalSections:type_name -> model.PhysicalSection 12, // 1: model.Repository.checkPoints:type_name -> model.CheckPoint 13, // 2: model.Repository.turnouts:type_name -> model.Turnout 14, // 3: model.Repository.signals:type_name -> model.Signal 16, // 4: model.Repository.transponders:type_name -> model.Transponder 17, // 5: model.Repository.slopes:type_name -> model.Slope 18, // 6: model.Repository.sectionalCurvatures:type_name -> model.SectionalCurvature 21, // 7: model.Repository.kilometerConverts:type_name -> model.KilometerConvert 22, // 8: model.Repository.relays:type_name -> model.Relay 23, // 9: model.Repository.phaseFailureProtectors:type_name -> model.PhaseFailureProtector 25, // 10: model.Repository.buttons:type_name -> model.Button 15, // 11: model.Repository.psds:type_name -> model.Psd 26, // 12: model.Repository.lights:type_name -> model.Light 27, // 13: model.Repository.alarms:type_name -> model.Alarm 28, // 14: model.Repository.stations:type_name -> model.Station 31, // 15: model.Repository.mkxs:type_name -> model.Mkx 32, // 16: model.Repository.platforms:type_name -> model.Platform 33, // 17: model.Repository.Keys:type_name -> model.Key 34, // 18: model.Repository.CentralizedStationRefs:type_name -> model.CentralizedStationRef 19, // 19: model.PhysicalSection.aDevicePort:type_name -> model.DevicePort 19, // 20: model.PhysicalSection.bDevicePort:type_name -> model.DevicePort 20, // 21: model.CheckPoint.km:type_name -> model.Kilometer 3, // 22: model.CheckPoint.type:type_name -> model.CheckPointType 19, // 23: model.CheckPoint.devicePorts:type_name -> model.DevicePort 20, // 24: model.Turnout.km:type_name -> model.Kilometer 19, // 25: model.Turnout.aDevicePort:type_name -> model.DevicePort 19, // 26: model.Turnout.bDevicePort:type_name -> model.DevicePort 19, // 27: model.Turnout.cDevicePort:type_name -> model.DevicePort 4, // 28: model.Turnout.switchMachineType:type_name -> model.Turnout.SwitchMachineType 24, // 29: model.Turnout.electronicComponentGroups:type_name -> model.ElectronicComponentGroup 20, // 30: model.Signal.km:type_name -> model.Kilometer 19, // 31: model.Signal.turnoutPort:type_name -> model.DevicePort 24, // 32: model.Signal.electronicComponentGroups:type_name -> model.ElectronicComponentGroup 5, // 33: model.Signal.model:type_name -> model.Signal.Model 38, // 34: model.Psd.asdGroups:type_name -> model.AsdGroup 24, // 35: model.Psd.electronicComponentGroups:type_name -> model.ElectronicComponentGroup 20, // 36: model.Transponder.km:type_name -> model.Kilometer 19, // 37: model.Transponder.turnoutPort:type_name -> model.DevicePort 20, // 38: model.Slope.kms:type_name -> model.Kilometer 20, // 39: model.SectionalCurvature.kms:type_name -> model.Kilometer 0, // 40: model.DevicePort.deviceType:type_name -> model.DeviceType 1, // 41: model.DevicePort.port:type_name -> model.Port 2, // 42: model.Kilometer.direction:type_name -> model.Direction 20, // 43: model.KilometerConvert.kmA:type_name -> model.Kilometer 20, // 44: model.KilometerConvert.kmB:type_name -> model.Kilometer 6, // 45: model.Relay.model:type_name -> model.Relay.Model 7, // 46: model.Button.buttonType:type_name -> model.Button.ButtonType 8, // 47: model.Light.aspect:type_name -> model.Light.LightAspect 29, // 48: model.Station.electronicGroup:type_name -> model.ElectronicGroup 30, // 49: model.ElectronicGroup.components:type_name -> model.ElectronicComponent 0, // 50: model.ElectronicComponent.deviceType:type_name -> model.DeviceType 35, // 51: model.CentralizedStationRef.cjList:type_name -> model.CjData 37, // 52: model.CentralizedStationRef.qdList:type_name -> model.QdData 36, // 53: model.CjData.refRelays:type_name -> model.CjDataItem 9, // 54: model.CjDataItem.position:type_name -> model.CjDataItem.PostionType 55, // [55:55] is the sub-list for method output_type 55, // [55:55] is the sub-list for method input_type 55, // [55:55] is the sub-list for extension type_name 55, // [55:55] is the sub-list for extension extendee 0, // [0:55] is the sub-list for field type_name } func init() { file_model_proto_init() } func file_model_proto_init() { if File_model_proto != nil { return } if !protoimpl.UnsafeEnabled { file_model_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Repository); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PhysicalSection); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckPoint); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Turnout); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Signal); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Psd); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Transponder); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Slope); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SectionalCurvature); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DevicePort); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Kilometer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*KilometerConvert); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Relay); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PhaseFailureProtector); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ElectronicComponentGroup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Button); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Light); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Alarm); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Station); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ElectronicGroup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ElectronicComponent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Mkx); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Platform); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Key); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CentralizedStationRef); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CjData); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CjDataItem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QdData); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AsdGroup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_model_proto_rawDesc, NumEnums: 10, NumMessages: 29, NumExtensions: 0, NumServices: 0, }, GoTypes: file_model_proto_goTypes, DependencyIndexes: file_model_proto_depIdxs, EnumInfos: file_model_proto_enumTypes, MessageInfos: file_model_proto_msgTypes, }.Build() File_model_proto = out.File file_model_proto_rawDesc = nil file_model_proto_goTypes = nil file_model_proto_depIdxs = nil }