// DO NOT EDIT.
// swift-format-ignore-file
//
// Generated by the Swift generator plugin for the protocol buffer compiler.
// Source: rideos/dispatch/v3/metrics.proto
//
// For information on using the generated types, please see the documentation:
//   https://github.com/apple/swift-protobuf/

//
// Copyright 2018-2019 rideOS, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

import Foundation
import SwiftProtobuf

// If the compiler emits an error on this type, it is because this file
// was generated by a version of the `protoc` Swift plug-in that is
// incompatible with the version of SwiftProtobuf to which you are linking.
// Please ensure that you are building against the same version of the API
// that was used to generate this file.
fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck {
  struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {}
  typealias Version = _2
}

public struct Rideos_Dispatch_V3_GetTimeSeriesRequest {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  public var fleetID: String = String()

  /// If vehicle is not specified, metrics returned will be on a fleet level.
  public var vehicleID: String = String()

  public var metric: Rideos_Dispatch_V3_GetTimeSeriesRequest.Metric = .unknownMetric

  public var from: SwiftProtobuf.Google_Protobuf_Timestamp {
    get {return _from ?? SwiftProtobuf.Google_Protobuf_Timestamp()}
    set {_from = newValue}
  }
  /// Returns true if `from` has been explicitly set.
  public var hasFrom: Bool {return self._from != nil}
  /// Clears the value of `from`. Subsequent reads from it will return its default value.
  public mutating func clearFrom() {self._from = nil}

  /// The end of the time range (exclusive) from which to return data. The maximum time range is 31 days.
  public var to: SwiftProtobuf.Google_Protobuf_Timestamp {
    get {return _to ?? SwiftProtobuf.Google_Protobuf_Timestamp()}
    set {_to = newValue}
  }
  /// Returns true if `to` has been explicitly set.
  public var hasTo: Bool {return self._to != nil}
  /// Clears the value of `to`. Subsequent reads from it will return its default value.
  public mutating func clearTo() {self._to = nil}

  public var unknownFields = SwiftProtobuf.UnknownStorage()

  public enum Metric: SwiftProtobuf.Enum {
    public typealias RawValue = Int
    case unknownMetric // = 0
    case vehiclesDispatchableMinutes // = 1
    case vehiclesOnTripWithPassengersMinutes // = 2
    case vehiclesOnTripWithoutPassengersMinutes // = 3
    case vehiclesIdleMinutes // = 4
    case drivingToPickupSeconds // = 5
    case drivingToDropoffSeconds // = 6
    case waitingForPickupSeconds // = 7
    case waitingForDropoffSeconds // = 8
    case idleSeconds // = 9
    case UNRECOGNIZED(Int)

    public init() {
      self = .unknownMetric
    }

    public init?(rawValue: Int) {
      switch rawValue {
      case 0: self = .unknownMetric
      case 1: self = .vehiclesDispatchableMinutes
      case 2: self = .vehiclesOnTripWithPassengersMinutes
      case 3: self = .vehiclesOnTripWithoutPassengersMinutes
      case 4: self = .vehiclesIdleMinutes
      case 5: self = .drivingToPickupSeconds
      case 6: self = .drivingToDropoffSeconds
      case 7: self = .waitingForPickupSeconds
      case 8: self = .waitingForDropoffSeconds
      case 9: self = .idleSeconds
      default: self = .UNRECOGNIZED(rawValue)
      }
    }

    public var rawValue: Int {
      switch self {
      case .unknownMetric: return 0
      case .vehiclesDispatchableMinutes: return 1
      case .vehiclesOnTripWithPassengersMinutes: return 2
      case .vehiclesOnTripWithoutPassengersMinutes: return 3
      case .vehiclesIdleMinutes: return 4
      case .drivingToPickupSeconds: return 5
      case .drivingToDropoffSeconds: return 6
      case .waitingForPickupSeconds: return 7
      case .waitingForDropoffSeconds: return 8
      case .idleSeconds: return 9
      case .UNRECOGNIZED(let i): return i
      }
    }

  }

  public init() {}

  fileprivate var _from: SwiftProtobuf.Google_Protobuf_Timestamp? = nil
  fileprivate var _to: SwiftProtobuf.Google_Protobuf_Timestamp? = nil
}

#if swift(>=4.2)

extension Rideos_Dispatch_V3_GetTimeSeriesRequest.Metric: CaseIterable {
  // The compiler won't synthesize support with the UNRECOGNIZED case.
  public static var allCases: [Rideos_Dispatch_V3_GetTimeSeriesRequest.Metric] = [
    .unknownMetric,
    .vehiclesDispatchableMinutes,
    .vehiclesOnTripWithPassengersMinutes,
    .vehiclesOnTripWithoutPassengersMinutes,
    .vehiclesIdleMinutes,
    .drivingToPickupSeconds,
    .drivingToDropoffSeconds,
    .waitingForPickupSeconds,
    .waitingForDropoffSeconds,
    .idleSeconds,
  ]
}

#endif  // swift(>=4.2)

public struct Rideos_Dispatch_V3_GetTimeSeriesResponse {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  public var data: [Rideos_Dispatch_V3_GetTimeSeriesResponse.Datapoint] = []

  public var unknownFields = SwiftProtobuf.UnknownStorage()

  public struct Datapoint {
    // SwiftProtobuf.Message conformance is added in an extension below. See the
    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
    // methods supported on all messages.

    public var timestamp: SwiftProtobuf.Google_Protobuf_Timestamp {
      get {return _timestamp ?? SwiftProtobuf.Google_Protobuf_Timestamp()}
      set {_timestamp = newValue}
    }
    /// Returns true if `timestamp` has been explicitly set.
    public var hasTimestamp: Bool {return self._timestamp != nil}
    /// Clears the value of `timestamp`. Subsequent reads from it will return its default value.
    public mutating func clearTimestamp() {self._timestamp = nil}

    public var value: Double = 0

    public var unknownFields = SwiftProtobuf.UnknownStorage()

    public init() {}

    fileprivate var _timestamp: SwiftProtobuf.Google_Protobuf_Timestamp? = nil
  }

  public init() {}
}

public struct Rideos_Dispatch_V3_GetSpatialDataRequest {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  public var fleetID: String = String()

  public var metric: Rideos_Dispatch_V3_GetSpatialDataRequest.Metric = .unknownMetric

  /// The beginning of the time range (inclusive) from which to return data.
  public var from: SwiftProtobuf.Google_Protobuf_Timestamp {
    get {return _from ?? SwiftProtobuf.Google_Protobuf_Timestamp()}
    set {_from = newValue}
  }
  /// Returns true if `from` has been explicitly set.
  public var hasFrom: Bool {return self._from != nil}
  /// Clears the value of `from`. Subsequent reads from it will return its default value.
  public mutating func clearFrom() {self._from = nil}

  /// The end of the time range (exclusive) from which to return data. The maximum time range is 7 days.
  public var to: SwiftProtobuf.Google_Protobuf_Timestamp {
    get {return _to ?? SwiftProtobuf.Google_Protobuf_Timestamp()}
    set {_to = newValue}
  }
  /// Returns true if `to` has been explicitly set.
  public var hasTo: Bool {return self._to != nil}
  /// Clears the value of `to`. Subsequent reads from it will return its default value.
  public mutating func clearTo() {self._to = nil}

  public var unknownFields = SwiftProtobuf.UnknownStorage()

  public enum Metric: SwiftProtobuf.Enum {
    public typealias RawValue = Int
    case unknownMetric // = 0
    case initialPickupEtaMs // = 1
    case UNRECOGNIZED(Int)

    public init() {
      self = .unknownMetric
    }

    public init?(rawValue: Int) {
      switch rawValue {
      case 0: self = .unknownMetric
      case 1: self = .initialPickupEtaMs
      default: self = .UNRECOGNIZED(rawValue)
      }
    }

    public var rawValue: Int {
      switch self {
      case .unknownMetric: return 0
      case .initialPickupEtaMs: return 1
      case .UNRECOGNIZED(let i): return i
      }
    }

  }

  public init() {}

  fileprivate var _from: SwiftProtobuf.Google_Protobuf_Timestamp? = nil
  fileprivate var _to: SwiftProtobuf.Google_Protobuf_Timestamp? = nil
}

#if swift(>=4.2)

extension Rideos_Dispatch_V3_GetSpatialDataRequest.Metric: CaseIterable {
  // The compiler won't synthesize support with the UNRECOGNIZED case.
  public static var allCases: [Rideos_Dispatch_V3_GetSpatialDataRequest.Metric] = [
    .unknownMetric,
    .initialPickupEtaMs,
  ]
}

#endif  // swift(>=4.2)

public struct Rideos_Dispatch_V3_GetSpatialDataResponse {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  public var data: [Rideos_Dispatch_V3_GetSpatialDataResponse.Datapoint] = []

  public var unknownFields = SwiftProtobuf.UnknownStorage()

  public struct Datapoint {
    // SwiftProtobuf.Message conformance is added in an extension below. See the
    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
    // methods supported on all messages.

    public var timestamp: SwiftProtobuf.Google_Protobuf_Timestamp {
      get {return _timestamp ?? SwiftProtobuf.Google_Protobuf_Timestamp()}
      set {_timestamp = newValue}
    }
    /// Returns true if `timestamp` has been explicitly set.
    public var hasTimestamp: Bool {return self._timestamp != nil}
    /// Clears the value of `timestamp`. Subsequent reads from it will return its default value.
    public mutating func clearTimestamp() {self._timestamp = nil}

    public var position: Rideos_Geo_V1_Position {
      get {return _position ?? Rideos_Geo_V1_Position()}
      set {_position = newValue}
    }
    /// Returns true if `position` has been explicitly set.
    public var hasPosition: Bool {return self._position != nil}
    /// Clears the value of `position`. Subsequent reads from it will return its default value.
    public mutating func clearPosition() {self._position = nil}

    public var value: Double = 0

    public var metadata: Dictionary<String,String> = [:]

    public var unknownFields = SwiftProtobuf.UnknownStorage()

    public init() {}

    fileprivate var _timestamp: SwiftProtobuf.Google_Protobuf_Timestamp? = nil
    fileprivate var _position: Rideos_Geo_V1_Position? = nil
  }

  public init() {}
}

// MARK: - Code below here is support for the SwiftProtobuf runtime.

fileprivate let _protobuf_package = "rideos.dispatch.v3"

extension Rideos_Dispatch_V3_GetTimeSeriesRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  public static let protoMessageName: String = _protobuf_package + ".GetTimeSeriesRequest"
  public static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .standard(proto: "fleet_id"),
    5: .standard(proto: "vehicle_id"),
    2: .same(proto: "metric"),
    3: .same(proto: "from"),
    4: .same(proto: "to"),
  ]

  public mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      // The use of inline closures is to circumvent an issue where the compiler
      // allocates stack space for every case branch when no optimizations are
      // enabled. https://github.com/apple/swift-protobuf/issues/1034
      switch fieldNumber {
      case 1: try { try decoder.decodeSingularStringField(value: &self.fleetID) }()
      case 2: try { try decoder.decodeSingularEnumField(value: &self.metric) }()
      case 3: try { try decoder.decodeSingularMessageField(value: &self._from) }()
      case 4: try { try decoder.decodeSingularMessageField(value: &self._to) }()
      case 5: try { try decoder.decodeSingularStringField(value: &self.vehicleID) }()
      default: break
      }
    }
  }

  public func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if !self.fleetID.isEmpty {
      try visitor.visitSingularStringField(value: self.fleetID, fieldNumber: 1)
    }
    if self.metric != .unknownMetric {
      try visitor.visitSingularEnumField(value: self.metric, fieldNumber: 2)
    }
    if let v = self._from {
      try visitor.visitSingularMessageField(value: v, fieldNumber: 3)
    }
    if let v = self._to {
      try visitor.visitSingularMessageField(value: v, fieldNumber: 4)
    }
    if !self.vehicleID.isEmpty {
      try visitor.visitSingularStringField(value: self.vehicleID, fieldNumber: 5)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  public static func ==(lhs: Rideos_Dispatch_V3_GetTimeSeriesRequest, rhs: Rideos_Dispatch_V3_GetTimeSeriesRequest) -> Bool {
    if lhs.fleetID != rhs.fleetID {return false}
    if lhs.vehicleID != rhs.vehicleID {return false}
    if lhs.metric != rhs.metric {return false}
    if lhs._from != rhs._from {return false}
    if lhs._to != rhs._to {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension Rideos_Dispatch_V3_GetTimeSeriesRequest.Metric: SwiftProtobuf._ProtoNameProviding {
  public static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    0: .same(proto: "UNKNOWN_METRIC"),
    1: .same(proto: "VEHICLES_DISPATCHABLE_MINUTES"),
    2: .same(proto: "VEHICLES_ON_TRIP_WITH_PASSENGERS_MINUTES"),
    3: .same(proto: "VEHICLES_ON_TRIP_WITHOUT_PASSENGERS_MINUTES"),
    4: .same(proto: "VEHICLES_IDLE_MINUTES"),
    5: .same(proto: "DRIVING_TO_PICKUP_SECONDS"),
    6: .same(proto: "DRIVING_TO_DROPOFF_SECONDS"),
    7: .same(proto: "WAITING_FOR_PICKUP_SECONDS"),
    8: .same(proto: "WAITING_FOR_DROPOFF_SECONDS"),
    9: .same(proto: "IDLE_SECONDS"),
  ]
}

extension Rideos_Dispatch_V3_GetTimeSeriesResponse: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  public static let protoMessageName: String = _protobuf_package + ".GetTimeSeriesResponse"
  public static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "data"),
  ]

  public mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      // The use of inline closures is to circumvent an issue where the compiler
      // allocates stack space for every case branch when no optimizations are
      // enabled. https://github.com/apple/swift-protobuf/issues/1034
      switch fieldNumber {
      case 1: try { try decoder.decodeRepeatedMessageField(value: &self.data) }()
      default: break
      }
    }
  }

  public func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if !self.data.isEmpty {
      try visitor.visitRepeatedMessageField(value: self.data, fieldNumber: 1)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  public static func ==(lhs: Rideos_Dispatch_V3_GetTimeSeriesResponse, rhs: Rideos_Dispatch_V3_GetTimeSeriesResponse) -> Bool {
    if lhs.data != rhs.data {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension Rideos_Dispatch_V3_GetTimeSeriesResponse.Datapoint: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  public static let protoMessageName: String = Rideos_Dispatch_V3_GetTimeSeriesResponse.protoMessageName + ".Datapoint"
  public static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "timestamp"),
    2: .same(proto: "value"),
  ]

  public mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      // The use of inline closures is to circumvent an issue where the compiler
      // allocates stack space for every case branch when no optimizations are
      // enabled. https://github.com/apple/swift-protobuf/issues/1034
      switch fieldNumber {
      case 1: try { try decoder.decodeSingularMessageField(value: &self._timestamp) }()
      case 2: try { try decoder.decodeSingularDoubleField(value: &self.value) }()
      default: break
      }
    }
  }

  public func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if let v = self._timestamp {
      try visitor.visitSingularMessageField(value: v, fieldNumber: 1)
    }
    if self.value != 0 {
      try visitor.visitSingularDoubleField(value: self.value, fieldNumber: 2)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  public static func ==(lhs: Rideos_Dispatch_V3_GetTimeSeriesResponse.Datapoint, rhs: Rideos_Dispatch_V3_GetTimeSeriesResponse.Datapoint) -> Bool {
    if lhs._timestamp != rhs._timestamp {return false}
    if lhs.value != rhs.value {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension Rideos_Dispatch_V3_GetSpatialDataRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  public static let protoMessageName: String = _protobuf_package + ".GetSpatialDataRequest"
  public static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .standard(proto: "fleet_id"),
    2: .same(proto: "metric"),
    3: .same(proto: "from"),
    4: .same(proto: "to"),
  ]

  public mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      // The use of inline closures is to circumvent an issue where the compiler
      // allocates stack space for every case branch when no optimizations are
      // enabled. https://github.com/apple/swift-protobuf/issues/1034
      switch fieldNumber {
      case 1: try { try decoder.decodeSingularStringField(value: &self.fleetID) }()
      case 2: try { try decoder.decodeSingularEnumField(value: &self.metric) }()
      case 3: try { try decoder.decodeSingularMessageField(value: &self._from) }()
      case 4: try { try decoder.decodeSingularMessageField(value: &self._to) }()
      default: break
      }
    }
  }

  public func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if !self.fleetID.isEmpty {
      try visitor.visitSingularStringField(value: self.fleetID, fieldNumber: 1)
    }
    if self.metric != .unknownMetric {
      try visitor.visitSingularEnumField(value: self.metric, fieldNumber: 2)
    }
    if let v = self._from {
      try visitor.visitSingularMessageField(value: v, fieldNumber: 3)
    }
    if let v = self._to {
      try visitor.visitSingularMessageField(value: v, fieldNumber: 4)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  public static func ==(lhs: Rideos_Dispatch_V3_GetSpatialDataRequest, rhs: Rideos_Dispatch_V3_GetSpatialDataRequest) -> Bool {
    if lhs.fleetID != rhs.fleetID {return false}
    if lhs.metric != rhs.metric {return false}
    if lhs._from != rhs._from {return false}
    if lhs._to != rhs._to {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension Rideos_Dispatch_V3_GetSpatialDataRequest.Metric: SwiftProtobuf._ProtoNameProviding {
  public static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    0: .same(proto: "UNKNOWN_METRIC"),
    1: .same(proto: "INITIAL_PICKUP_ETA_MS"),
  ]
}

extension Rideos_Dispatch_V3_GetSpatialDataResponse: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  public static let protoMessageName: String = _protobuf_package + ".GetSpatialDataResponse"
  public static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "data"),
  ]

  public mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      // The use of inline closures is to circumvent an issue where the compiler
      // allocates stack space for every case branch when no optimizations are
      // enabled. https://github.com/apple/swift-protobuf/issues/1034
      switch fieldNumber {
      case 1: try { try decoder.decodeRepeatedMessageField(value: &self.data) }()
      default: break
      }
    }
  }

  public func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if !self.data.isEmpty {
      try visitor.visitRepeatedMessageField(value: self.data, fieldNumber: 1)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  public static func ==(lhs: Rideos_Dispatch_V3_GetSpatialDataResponse, rhs: Rideos_Dispatch_V3_GetSpatialDataResponse) -> Bool {
    if lhs.data != rhs.data {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension Rideos_Dispatch_V3_GetSpatialDataResponse.Datapoint: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  public static let protoMessageName: String = Rideos_Dispatch_V3_GetSpatialDataResponse.protoMessageName + ".Datapoint"
  public static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "timestamp"),
    2: .same(proto: "position"),
    3: .same(proto: "value"),
    4: .same(proto: "metadata"),
  ]

  public mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      // The use of inline closures is to circumvent an issue where the compiler
      // allocates stack space for every case branch when no optimizations are
      // enabled. https://github.com/apple/swift-protobuf/issues/1034
      switch fieldNumber {
      case 1: try { try decoder.decodeSingularMessageField(value: &self._timestamp) }()
      case 2: try { try decoder.decodeSingularMessageField(value: &self._position) }()
      case 3: try { try decoder.decodeSingularDoubleField(value: &self.value) }()
      case 4: try { try decoder.decodeMapField(fieldType: SwiftProtobuf._ProtobufMap<SwiftProtobuf.ProtobufString,SwiftProtobuf.ProtobufString>.self, value: &self.metadata) }()
      default: break
      }
    }
  }

  public func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if let v = self._timestamp {
      try visitor.visitSingularMessageField(value: v, fieldNumber: 1)
    }
    if let v = self._position {
      try visitor.visitSingularMessageField(value: v, fieldNumber: 2)
    }
    if self.value != 0 {
      try visitor.visitSingularDoubleField(value: self.value, fieldNumber: 3)
    }
    if !self.metadata.isEmpty {
      try visitor.visitMapField(fieldType: SwiftProtobuf._ProtobufMap<SwiftProtobuf.ProtobufString,SwiftProtobuf.ProtobufString>.self, value: self.metadata, fieldNumber: 4)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  public static func ==(lhs: Rideos_Dispatch_V3_GetSpatialDataResponse.Datapoint, rhs: Rideos_Dispatch_V3_GetSpatialDataResponse.Datapoint) -> Bool {
    if lhs._timestamp != rhs._timestamp {return false}
    if lhs._position != rhs._position {return false}
    if lhs.value != rhs.value {return false}
    if lhs.metadata != rhs.metadata {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}
