494 lines
16 KiB
Go
494 lines
16 KiB
Go
// Code generated by protoc-gen-go. DO NOT EDIT.
|
|
// versions:
|
|
// protoc-gen-go v1.36.11
|
|
// protoc v6.33.4
|
|
// source: meshtastic/connection_status.proto
|
|
|
|
package pb
|
|
|
|
import (
|
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
|
reflect "reflect"
|
|
sync "sync"
|
|
unsafe "unsafe"
|
|
)
|
|
|
|
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 DeviceConnectionStatus struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
// WiFi Status
|
|
Wifi *WifiConnectionStatus `protobuf:"bytes,1,opt,name=wifi,proto3,oneof" json:"wifi,omitempty"`
|
|
// WiFi Status
|
|
Ethernet *EthernetConnectionStatus `protobuf:"bytes,2,opt,name=ethernet,proto3,oneof" json:"ethernet,omitempty"`
|
|
// Bluetooth Status
|
|
Bluetooth *BluetoothConnectionStatus `protobuf:"bytes,3,opt,name=bluetooth,proto3,oneof" json:"bluetooth,omitempty"`
|
|
// Serial Status
|
|
Serial *SerialConnectionStatus `protobuf:"bytes,4,opt,name=serial,proto3,oneof" json:"serial,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *DeviceConnectionStatus) Reset() {
|
|
*x = DeviceConnectionStatus{}
|
|
mi := &file_meshtastic_connection_status_proto_msgTypes[0]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *DeviceConnectionStatus) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*DeviceConnectionStatus) ProtoMessage() {}
|
|
|
|
func (x *DeviceConnectionStatus) ProtoReflect() protoreflect.Message {
|
|
mi := &file_meshtastic_connection_status_proto_msgTypes[0]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use DeviceConnectionStatus.ProtoReflect.Descriptor instead.
|
|
func (*DeviceConnectionStatus) Descriptor() ([]byte, []int) {
|
|
return file_meshtastic_connection_status_proto_rawDescGZIP(), []int{0}
|
|
}
|
|
|
|
func (x *DeviceConnectionStatus) GetWifi() *WifiConnectionStatus {
|
|
if x != nil {
|
|
return x.Wifi
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DeviceConnectionStatus) GetEthernet() *EthernetConnectionStatus {
|
|
if x != nil {
|
|
return x.Ethernet
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DeviceConnectionStatus) GetBluetooth() *BluetoothConnectionStatus {
|
|
if x != nil {
|
|
return x.Bluetooth
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DeviceConnectionStatus) GetSerial() *SerialConnectionStatus {
|
|
if x != nil {
|
|
return x.Serial
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// WiFi connection status
|
|
type WifiConnectionStatus struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
// Connection status
|
|
Status *NetworkConnectionStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
|
|
// WiFi access point SSID
|
|
Ssid string `protobuf:"bytes,2,opt,name=ssid,proto3" json:"ssid,omitempty"`
|
|
// RSSI of wireless connection
|
|
Rssi int32 `protobuf:"varint,3,opt,name=rssi,proto3" json:"rssi,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *WifiConnectionStatus) Reset() {
|
|
*x = WifiConnectionStatus{}
|
|
mi := &file_meshtastic_connection_status_proto_msgTypes[1]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *WifiConnectionStatus) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*WifiConnectionStatus) ProtoMessage() {}
|
|
|
|
func (x *WifiConnectionStatus) ProtoReflect() protoreflect.Message {
|
|
mi := &file_meshtastic_connection_status_proto_msgTypes[1]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use WifiConnectionStatus.ProtoReflect.Descriptor instead.
|
|
func (*WifiConnectionStatus) Descriptor() ([]byte, []int) {
|
|
return file_meshtastic_connection_status_proto_rawDescGZIP(), []int{1}
|
|
}
|
|
|
|
func (x *WifiConnectionStatus) GetStatus() *NetworkConnectionStatus {
|
|
if x != nil {
|
|
return x.Status
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *WifiConnectionStatus) GetSsid() string {
|
|
if x != nil {
|
|
return x.Ssid
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *WifiConnectionStatus) GetRssi() int32 {
|
|
if x != nil {
|
|
return x.Rssi
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// Ethernet connection status
|
|
type EthernetConnectionStatus struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
// Connection status
|
|
Status *NetworkConnectionStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *EthernetConnectionStatus) Reset() {
|
|
*x = EthernetConnectionStatus{}
|
|
mi := &file_meshtastic_connection_status_proto_msgTypes[2]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *EthernetConnectionStatus) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*EthernetConnectionStatus) ProtoMessage() {}
|
|
|
|
func (x *EthernetConnectionStatus) ProtoReflect() protoreflect.Message {
|
|
mi := &file_meshtastic_connection_status_proto_msgTypes[2]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use EthernetConnectionStatus.ProtoReflect.Descriptor instead.
|
|
func (*EthernetConnectionStatus) Descriptor() ([]byte, []int) {
|
|
return file_meshtastic_connection_status_proto_rawDescGZIP(), []int{2}
|
|
}
|
|
|
|
func (x *EthernetConnectionStatus) GetStatus() *NetworkConnectionStatus {
|
|
if x != nil {
|
|
return x.Status
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Ethernet or WiFi connection status
|
|
type NetworkConnectionStatus struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
// IP address of device
|
|
IpAddress uint32 `protobuf:"fixed32,1,opt,name=ip_address,json=ipAddress,proto3" json:"ipAddress,omitempty"`
|
|
// Whether the device has an active connection or not
|
|
IsConnected bool `protobuf:"varint,2,opt,name=is_connected,json=isConnected,proto3" json:"isConnected,omitempty"`
|
|
// Whether the device has an active connection to an MQTT broker or not
|
|
IsMqttConnected bool `protobuf:"varint,3,opt,name=is_mqtt_connected,json=isMqttConnected,proto3" json:"isMqttConnected,omitempty"`
|
|
// Whether the device is actively remote syslogging or not
|
|
IsSyslogConnected bool `protobuf:"varint,4,opt,name=is_syslog_connected,json=isSyslogConnected,proto3" json:"isSyslogConnected,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *NetworkConnectionStatus) Reset() {
|
|
*x = NetworkConnectionStatus{}
|
|
mi := &file_meshtastic_connection_status_proto_msgTypes[3]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *NetworkConnectionStatus) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*NetworkConnectionStatus) ProtoMessage() {}
|
|
|
|
func (x *NetworkConnectionStatus) ProtoReflect() protoreflect.Message {
|
|
mi := &file_meshtastic_connection_status_proto_msgTypes[3]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use NetworkConnectionStatus.ProtoReflect.Descriptor instead.
|
|
func (*NetworkConnectionStatus) Descriptor() ([]byte, []int) {
|
|
return file_meshtastic_connection_status_proto_rawDescGZIP(), []int{3}
|
|
}
|
|
|
|
func (x *NetworkConnectionStatus) GetIpAddress() uint32 {
|
|
if x != nil {
|
|
return x.IpAddress
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *NetworkConnectionStatus) GetIsConnected() bool {
|
|
if x != nil {
|
|
return x.IsConnected
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (x *NetworkConnectionStatus) GetIsMqttConnected() bool {
|
|
if x != nil {
|
|
return x.IsMqttConnected
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (x *NetworkConnectionStatus) GetIsSyslogConnected() bool {
|
|
if x != nil {
|
|
return x.IsSyslogConnected
|
|
}
|
|
return false
|
|
}
|
|
|
|
// Bluetooth connection status
|
|
type BluetoothConnectionStatus struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
// The pairing PIN for bluetooth
|
|
Pin uint32 `protobuf:"varint,1,opt,name=pin,proto3" json:"pin,omitempty"`
|
|
// RSSI of bluetooth connection
|
|
Rssi int32 `protobuf:"varint,2,opt,name=rssi,proto3" json:"rssi,omitempty"`
|
|
// Whether the device has an active connection or not
|
|
IsConnected bool `protobuf:"varint,3,opt,name=is_connected,json=isConnected,proto3" json:"isConnected,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *BluetoothConnectionStatus) Reset() {
|
|
*x = BluetoothConnectionStatus{}
|
|
mi := &file_meshtastic_connection_status_proto_msgTypes[4]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *BluetoothConnectionStatus) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*BluetoothConnectionStatus) ProtoMessage() {}
|
|
|
|
func (x *BluetoothConnectionStatus) ProtoReflect() protoreflect.Message {
|
|
mi := &file_meshtastic_connection_status_proto_msgTypes[4]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use BluetoothConnectionStatus.ProtoReflect.Descriptor instead.
|
|
func (*BluetoothConnectionStatus) Descriptor() ([]byte, []int) {
|
|
return file_meshtastic_connection_status_proto_rawDescGZIP(), []int{4}
|
|
}
|
|
|
|
func (x *BluetoothConnectionStatus) GetPin() uint32 {
|
|
if x != nil {
|
|
return x.Pin
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *BluetoothConnectionStatus) GetRssi() int32 {
|
|
if x != nil {
|
|
return x.Rssi
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *BluetoothConnectionStatus) GetIsConnected() bool {
|
|
if x != nil {
|
|
return x.IsConnected
|
|
}
|
|
return false
|
|
}
|
|
|
|
// Serial connection status
|
|
type SerialConnectionStatus struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
// Serial baud rate
|
|
Baud uint32 `protobuf:"varint,1,opt,name=baud,proto3" json:"baud,omitempty"`
|
|
// Whether the device has an active connection or not
|
|
IsConnected bool `protobuf:"varint,2,opt,name=is_connected,json=isConnected,proto3" json:"isConnected,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *SerialConnectionStatus) Reset() {
|
|
*x = SerialConnectionStatus{}
|
|
mi := &file_meshtastic_connection_status_proto_msgTypes[5]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *SerialConnectionStatus) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*SerialConnectionStatus) ProtoMessage() {}
|
|
|
|
func (x *SerialConnectionStatus) ProtoReflect() protoreflect.Message {
|
|
mi := &file_meshtastic_connection_status_proto_msgTypes[5]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use SerialConnectionStatus.ProtoReflect.Descriptor instead.
|
|
func (*SerialConnectionStatus) Descriptor() ([]byte, []int) {
|
|
return file_meshtastic_connection_status_proto_rawDescGZIP(), []int{5}
|
|
}
|
|
|
|
func (x *SerialConnectionStatus) GetBaud() uint32 {
|
|
if x != nil {
|
|
return x.Baud
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *SerialConnectionStatus) GetIsConnected() bool {
|
|
if x != nil {
|
|
return x.IsConnected
|
|
}
|
|
return false
|
|
}
|
|
|
|
var File_meshtastic_connection_status_proto protoreflect.FileDescriptor
|
|
|
|
const file_meshtastic_connection_status_proto_rawDesc = "" +
|
|
"\n" +
|
|
"\"meshtastic/connection_status.proto\x12\n" +
|
|
"meshtastic\"\xd4\x02\n" +
|
|
"\x16DeviceConnectionStatus\x129\n" +
|
|
"\x04wifi\x18\x01 \x01(\v2 .meshtastic.WifiConnectionStatusH\x00R\x04wifi\x88\x01\x01\x12E\n" +
|
|
"\bethernet\x18\x02 \x01(\v2$.meshtastic.EthernetConnectionStatusH\x01R\bethernet\x88\x01\x01\x12H\n" +
|
|
"\tbluetooth\x18\x03 \x01(\v2%.meshtastic.BluetoothConnectionStatusH\x02R\tbluetooth\x88\x01\x01\x12?\n" +
|
|
"\x06serial\x18\x04 \x01(\v2\".meshtastic.SerialConnectionStatusH\x03R\x06serial\x88\x01\x01B\a\n" +
|
|
"\x05_wifiB\v\n" +
|
|
"\t_ethernetB\f\n" +
|
|
"\n" +
|
|
"_bluetoothB\t\n" +
|
|
"\a_serial\"{\n" +
|
|
"\x14WifiConnectionStatus\x12;\n" +
|
|
"\x06status\x18\x01 \x01(\v2#.meshtastic.NetworkConnectionStatusR\x06status\x12\x12\n" +
|
|
"\x04ssid\x18\x02 \x01(\tR\x04ssid\x12\x12\n" +
|
|
"\x04rssi\x18\x03 \x01(\x05R\x04rssi\"W\n" +
|
|
"\x18EthernetConnectionStatus\x12;\n" +
|
|
"\x06status\x18\x01 \x01(\v2#.meshtastic.NetworkConnectionStatusR\x06status\"\xb7\x01\n" +
|
|
"\x17NetworkConnectionStatus\x12\x1d\n" +
|
|
"\n" +
|
|
"ip_address\x18\x01 \x01(\aR\tipAddress\x12!\n" +
|
|
"\fis_connected\x18\x02 \x01(\bR\visConnected\x12*\n" +
|
|
"\x11is_mqtt_connected\x18\x03 \x01(\bR\x0fisMqttConnected\x12.\n" +
|
|
"\x13is_syslog_connected\x18\x04 \x01(\bR\x11isSyslogConnected\"d\n" +
|
|
"\x19BluetoothConnectionStatus\x12\x10\n" +
|
|
"\x03pin\x18\x01 \x01(\rR\x03pin\x12\x12\n" +
|
|
"\x04rssi\x18\x02 \x01(\x05R\x04rssi\x12!\n" +
|
|
"\fis_connected\x18\x03 \x01(\bR\visConnected\"O\n" +
|
|
"\x16SerialConnectionStatus\x12\x12\n" +
|
|
"\x04baud\x18\x01 \x01(\rR\x04baud\x12!\n" +
|
|
"\fis_connected\x18\x02 \x01(\bR\visConnectedBf\n" +
|
|
"\x14org.meshtastic.protoB\x10ConnStatusProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00b\x06proto3"
|
|
|
|
var (
|
|
file_meshtastic_connection_status_proto_rawDescOnce sync.Once
|
|
file_meshtastic_connection_status_proto_rawDescData []byte
|
|
)
|
|
|
|
func file_meshtastic_connection_status_proto_rawDescGZIP() []byte {
|
|
file_meshtastic_connection_status_proto_rawDescOnce.Do(func() {
|
|
file_meshtastic_connection_status_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_meshtastic_connection_status_proto_rawDesc), len(file_meshtastic_connection_status_proto_rawDesc)))
|
|
})
|
|
return file_meshtastic_connection_status_proto_rawDescData
|
|
}
|
|
|
|
var file_meshtastic_connection_status_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
|
|
var file_meshtastic_connection_status_proto_goTypes = []any{
|
|
(*DeviceConnectionStatus)(nil), // 0: meshtastic.DeviceConnectionStatus
|
|
(*WifiConnectionStatus)(nil), // 1: meshtastic.WifiConnectionStatus
|
|
(*EthernetConnectionStatus)(nil), // 2: meshtastic.EthernetConnectionStatus
|
|
(*NetworkConnectionStatus)(nil), // 3: meshtastic.NetworkConnectionStatus
|
|
(*BluetoothConnectionStatus)(nil), // 4: meshtastic.BluetoothConnectionStatus
|
|
(*SerialConnectionStatus)(nil), // 5: meshtastic.SerialConnectionStatus
|
|
}
|
|
var file_meshtastic_connection_status_proto_depIdxs = []int32{
|
|
1, // 0: meshtastic.DeviceConnectionStatus.wifi:type_name -> meshtastic.WifiConnectionStatus
|
|
2, // 1: meshtastic.DeviceConnectionStatus.ethernet:type_name -> meshtastic.EthernetConnectionStatus
|
|
4, // 2: meshtastic.DeviceConnectionStatus.bluetooth:type_name -> meshtastic.BluetoothConnectionStatus
|
|
5, // 3: meshtastic.DeviceConnectionStatus.serial:type_name -> meshtastic.SerialConnectionStatus
|
|
3, // 4: meshtastic.WifiConnectionStatus.status:type_name -> meshtastic.NetworkConnectionStatus
|
|
3, // 5: meshtastic.EthernetConnectionStatus.status:type_name -> meshtastic.NetworkConnectionStatus
|
|
6, // [6:6] is the sub-list for method output_type
|
|
6, // [6:6] is the sub-list for method input_type
|
|
6, // [6:6] is the sub-list for extension type_name
|
|
6, // [6:6] is the sub-list for extension extendee
|
|
0, // [0:6] is the sub-list for field type_name
|
|
}
|
|
|
|
func init() { file_meshtastic_connection_status_proto_init() }
|
|
func file_meshtastic_connection_status_proto_init() {
|
|
if File_meshtastic_connection_status_proto != nil {
|
|
return
|
|
}
|
|
file_meshtastic_connection_status_proto_msgTypes[0].OneofWrappers = []any{}
|
|
type x struct{}
|
|
out := protoimpl.TypeBuilder{
|
|
File: protoimpl.DescBuilder{
|
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
|
RawDescriptor: unsafe.Slice(unsafe.StringData(file_meshtastic_connection_status_proto_rawDesc), len(file_meshtastic_connection_status_proto_rawDesc)),
|
|
NumEnums: 0,
|
|
NumMessages: 6,
|
|
NumExtensions: 0,
|
|
NumServices: 0,
|
|
},
|
|
GoTypes: file_meshtastic_connection_status_proto_goTypes,
|
|
DependencyIndexes: file_meshtastic_connection_status_proto_depIdxs,
|
|
MessageInfos: file_meshtastic_connection_status_proto_msgTypes,
|
|
}.Build()
|
|
File_meshtastic_connection_status_proto = out.File
|
|
file_meshtastic_connection_status_proto_goTypes = nil
|
|
file_meshtastic_connection_status_proto_depIdxs = nil
|
|
}
|