// Generated by the proto_extras plugin. DO NOT EDIT!
// source: components/personal_context/proto/features/common_data.proto

#include "components/personal_context/proto/features/common_data.equal.h"



#include "components/personal_context/proto/features/common_data.pb.h"


namespace personal_context {
namespace proto {
bool operator==(const Duration& lhs, const Duration& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_seconds() != rhs.has_seconds()) return false;
  if (lhs.has_seconds() && lhs.seconds() != rhs.seconds()) return false;
  if (lhs.has_nanos() != rhs.has_nanos()) return false;
  if (lhs.has_nanos() && lhs.nanos() != rhs.nanos()) return false;
  return true;
}

bool operator!=(const Duration& lhs, const Duration& rhs) {
  return !(lhs == rhs);
}
bool operator==(const Date& lhs, const Date& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_year() != rhs.has_year()) return false;
  if (lhs.has_year() && lhs.year() != rhs.year()) return false;
  if (lhs.has_month() != rhs.has_month()) return false;
  if (lhs.has_month() && lhs.month() != rhs.month()) return false;
  if (lhs.has_day() != rhs.has_day()) return false;
  if (lhs.has_day() && lhs.day() != rhs.day()) return false;
  return true;
}

bool operator!=(const Date& lhs, const Date& rhs) {
  return !(lhs == rhs);
}
bool operator==(const DateTime& lhs, const DateTime& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.time_offset_case() != rhs.time_offset_case()) return false;
  switch (lhs.time_offset_case()) {
    case DateTime::kUtcOffset:
      if (lhs.utc_offset() != rhs.utc_offset()) return false;
      break;
    case DateTime::TIME_OFFSET_NOT_SET:
      break;
  }
  if (lhs.has_year() != rhs.has_year()) return false;
  if (lhs.has_year() && lhs.year() != rhs.year()) return false;
  if (lhs.has_month() != rhs.has_month()) return false;
  if (lhs.has_month() && lhs.month() != rhs.month()) return false;
  if (lhs.has_day() != rhs.has_day()) return false;
  if (lhs.has_day() && lhs.day() != rhs.day()) return false;
  if (lhs.has_hours() != rhs.has_hours()) return false;
  if (lhs.has_hours() && lhs.hours() != rhs.hours()) return false;
  if (lhs.has_minutes() != rhs.has_minutes()) return false;
  if (lhs.has_minutes() && lhs.minutes() != rhs.minutes()) return false;
  if (lhs.has_seconds() != rhs.has_seconds()) return false;
  if (lhs.has_seconds() && lhs.seconds() != rhs.seconds()) return false;
  if (lhs.has_nanos() != rhs.has_nanos()) return false;
  if (lhs.has_nanos() && lhs.nanos() != rhs.nanos()) return false;
  return true;
}

bool operator!=(const DateTime& lhs, const DateTime& rhs) {
  return !(lhs == rhs);
}
bool operator==(const Entity& lhs, const Entity& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.entity_case() != rhs.entity_case()) return false;
  switch (lhs.entity_case()) {
    case Entity::kOrder:
      if (lhs.order() != rhs.order()) return false;
      break;
    case Entity::kShipment:
      if (lhs.shipment() != rhs.shipment()) return false;
      break;
    case Entity::kDriversLicense:
      if (lhs.drivers_license() != rhs.drivers_license()) return false;
      break;
    case Entity::kPassport:
      if (lhs.passport() != rhs.passport()) return false;
      break;
    case Entity::kNationalId:
      if (lhs.national_id() != rhs.national_id()) return false;
      break;
    case Entity::kFlightReservation:
      if (lhs.flight_reservation() != rhs.flight_reservation()) return false;
      break;
    case Entity::kVehicle:
      if (lhs.vehicle() != rhs.vehicle()) return false;
      break;
    case Entity::kSensitivePiiPresence:
      if (lhs.sensitive_pii_presence() != rhs.sensitive_pii_presence()) return false;
      break;
    case Entity::kKnownTravelerNumber:
      if (lhs.known_traveler_number() != rhs.known_traveler_number()) return false;
      break;
    case Entity::kEncryptedEntity:
      if (lhs.encrypted_entity() != rhs.encrypted_entity()) return false;
      break;
    case Entity::ENTITY_NOT_SET:
      break;
  }
  if (lhs.source_references().size() != rhs.source_references().size()) return false;
  for (int i = 0; i < lhs.source_references().size(); ++i) {
    if (lhs.source_references()[i] != rhs.source_references()[i]) return false;
  }
  return true;
}

bool operator!=(const Entity& lhs, const Entity& rhs) {
  return !(lhs == rhs);
}
bool operator==(const SourceReference& lhs, const SourceReference& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.source_reference_case() != rhs.source_reference_case()) return false;
  switch (lhs.source_reference_case()) {
    case SourceReference::kGmail:
      if (lhs.gmail() != rhs.gmail()) return false;
      break;
    case SourceReference::kPhotos:
      if (lhs.photos() != rhs.photos()) return false;
      break;
    case SourceReference::kDrive:
      if (lhs.drive() != rhs.drive()) return false;
      break;
    case SourceReference::SOURCE_REFERENCE_NOT_SET:
      break;
  }
  return true;
}

bool operator!=(const SourceReference& lhs, const SourceReference& rhs) {
  return !(lhs == rhs);
}
bool operator==(const GmailReference& lhs, const GmailReference& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_message_url() != rhs.has_message_url()) return false;
  if (lhs.has_message_url() && lhs.message_url() != rhs.message_url()) return false;
  if (lhs.has_subject() != rhs.has_subject()) return false;
  if (lhs.has_subject() && lhs.subject() != rhs.subject()) return false;
  return true;
}

bool operator!=(const GmailReference& lhs, const GmailReference& rhs) {
  return !(lhs == rhs);
}
bool operator==(const PhotosReference& lhs, const PhotosReference& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_photos_url() != rhs.has_photos_url()) return false;
  if (lhs.has_photos_url() && lhs.photos_url() != rhs.photos_url()) return false;
  return true;
}

bool operator!=(const PhotosReference& lhs, const PhotosReference& rhs) {
  return !(lhs == rhs);
}
bool operator==(const DriveFile& lhs, const DriveFile& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_name() != rhs.has_name()) return false;
  if (lhs.has_name() && lhs.name() != rhs.name()) return false;
  if (lhs.has_url() != rhs.has_url()) return false;
  if (lhs.has_url() && lhs.url() != rhs.url()) return false;
  return true;
}

bool operator!=(const DriveFile& lhs, const DriveFile& rhs) {
  return !(lhs == rhs);
}
bool operator==(const Order& lhs, const Order& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_order_id() != rhs.has_order_id()) return false;
  if (lhs.has_order_id() && lhs.order_id() != rhs.order_id()) return false;
  if (lhs.has_account() != rhs.has_account()) return false;
  if (lhs.has_account() && lhs.account() != rhs.account()) return false;
  if (lhs.has_order_date() != rhs.has_order_date()) return false;
  if (lhs.has_order_date() && lhs.order_date() != rhs.order_date()) return false;
  if (lhs.has_merchant_name() != rhs.has_merchant_name()) return false;
  if (lhs.has_merchant_name() && lhs.merchant_name() != rhs.merchant_name()) return false;
  if (lhs.has_merchant_domain() != rhs.has_merchant_domain()) return false;
  if (lhs.has_merchant_domain() && lhs.merchant_domain() != rhs.merchant_domain()) return false;
  if (lhs.product_names().size() != rhs.product_names().size()) return false;
  for (int i = 0; i < lhs.product_names().size(); ++i) {
    if (lhs.product_names()[i] != rhs.product_names()[i]) return false;
  }
  return true;
}

bool operator!=(const Order& lhs, const Order& rhs) {
  return !(lhs == rhs);
}
bool operator==(const Shipment& lhs, const Shipment& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_tracking_number() != rhs.has_tracking_number()) return false;
  if (lhs.has_tracking_number() && lhs.tracking_number() != rhs.tracking_number()) return false;
  if (lhs.associated_order_ids().size() != rhs.associated_order_ids().size()) return false;
  for (int i = 0; i < lhs.associated_order_ids().size(); ++i) {
    if (lhs.associated_order_ids()[i] != rhs.associated_order_ids()[i]) return false;
  }
  if (lhs.has_carrier_name() != rhs.has_carrier_name()) return false;
  if (lhs.has_carrier_name() && lhs.carrier_name() != rhs.carrier_name()) return false;
  if (lhs.has_carrier_domain() != rhs.has_carrier_domain()) return false;
  if (lhs.has_carrier_domain() && lhs.carrier_domain() != rhs.carrier_domain()) return false;
  if (lhs.has_estimated_delivery_date() != rhs.has_estimated_delivery_date()) return false;
  if (lhs.has_estimated_delivery_date() && lhs.estimated_delivery_date() != rhs.estimated_delivery_date()) return false;
  if (lhs.has_delivery_zip_code() != rhs.has_delivery_zip_code()) return false;
  if (lhs.has_delivery_zip_code() && lhs.delivery_zip_code() != rhs.delivery_zip_code()) return false;
  if (lhs.has_ship_date() != rhs.has_ship_date()) return false;
  if (lhs.has_ship_date() && lhs.ship_date() != rhs.ship_date()) return false;
  if (lhs.has_merchant_name() != rhs.has_merchant_name()) return false;
  if (lhs.has_merchant_name() && lhs.merchant_name() != rhs.merchant_name()) return false;
  if (lhs.product_names().size() != rhs.product_names().size()) return false;
  for (int i = 0; i < lhs.product_names().size(); ++i) {
    if (lhs.product_names()[i] != rhs.product_names()[i]) return false;
  }
  return true;
}

bool operator!=(const Shipment& lhs, const Shipment& rhs) {
  return !(lhs == rhs);
}
bool operator==(const DriversLicense& lhs, const DriversLicense& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_name() != rhs.has_name()) return false;
  if (lhs.has_name() && lhs.name() != rhs.name()) return false;
  if (lhs.has_number() != rhs.has_number()) return false;
  if (lhs.has_number() && lhs.number() != rhs.number()) return false;
  if (lhs.has_expiration_date() != rhs.has_expiration_date()) return false;
  if (lhs.has_expiration_date() && lhs.expiration_date() != rhs.expiration_date()) return false;
  if (lhs.has_issue_date() != rhs.has_issue_date()) return false;
  if (lhs.has_issue_date() && lhs.issue_date() != rhs.issue_date()) return false;
  if (lhs.has_state() != rhs.has_state()) return false;
  if (lhs.has_state() && lhs.state() != rhs.state()) return false;
  return true;
}

bool operator!=(const DriversLicense& lhs, const DriversLicense& rhs) {
  return !(lhs == rhs);
}
bool operator==(const Passport& lhs, const Passport& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_name() != rhs.has_name()) return false;
  if (lhs.has_name() && lhs.name() != rhs.name()) return false;
  if (lhs.has_number() != rhs.has_number()) return false;
  if (lhs.has_number() && lhs.number() != rhs.number()) return false;
  if (lhs.has_expiration_date() != rhs.has_expiration_date()) return false;
  if (lhs.has_expiration_date() && lhs.expiration_date() != rhs.expiration_date()) return false;
  if (lhs.has_issue_date() != rhs.has_issue_date()) return false;
  if (lhs.has_issue_date() && lhs.issue_date() != rhs.issue_date()) return false;
  if (lhs.has_issuing_country() != rhs.has_issuing_country()) return false;
  if (lhs.has_issuing_country() && lhs.issuing_country() != rhs.issuing_country()) return false;
  return true;
}

bool operator!=(const Passport& lhs, const Passport& rhs) {
  return !(lhs == rhs);
}
bool operator==(const KnownTravelerNumber& lhs, const KnownTravelerNumber& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_name() != rhs.has_name()) return false;
  if (lhs.has_name() && lhs.name() != rhs.name()) return false;
  if (lhs.has_number() != rhs.has_number()) return false;
  if (lhs.has_number() && lhs.number() != rhs.number()) return false;
  return true;
}

bool operator!=(const KnownTravelerNumber& lhs, const KnownTravelerNumber& rhs) {
  return !(lhs == rhs);
}
bool operator==(const NationalId& lhs, const NationalId& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_name() != rhs.has_name()) return false;
  if (lhs.has_name() && lhs.name() != rhs.name()) return false;
  if (lhs.has_number() != rhs.has_number()) return false;
  if (lhs.has_number() && lhs.number() != rhs.number()) return false;
  if (lhs.has_expiration_date() != rhs.has_expiration_date()) return false;
  if (lhs.has_expiration_date() && lhs.expiration_date() != rhs.expiration_date()) return false;
  if (lhs.has_issue_date() != rhs.has_issue_date()) return false;
  if (lhs.has_issue_date() && lhs.issue_date() != rhs.issue_date()) return false;
  if (lhs.has_issuing_country() != rhs.has_issuing_country()) return false;
  if (lhs.has_issuing_country() && lhs.issuing_country() != rhs.issuing_country()) return false;
  return true;
}

bool operator!=(const NationalId& lhs, const NationalId& rhs) {
  return !(lhs == rhs);
}
bool operator==(const FlightReservation& lhs, const FlightReservation& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_flight_number() != rhs.has_flight_number()) return false;
  if (lhs.has_flight_number() && lhs.flight_number() != rhs.flight_number()) return false;
  if (lhs.has_flight_ticket_number() != rhs.has_flight_ticket_number()) return false;
  if (lhs.has_flight_ticket_number() && lhs.flight_ticket_number() != rhs.flight_ticket_number()) return false;
  if (lhs.has_flight_confirmation_code() != rhs.has_flight_confirmation_code()) return false;
  if (lhs.has_flight_confirmation_code() && lhs.flight_confirmation_code() != rhs.flight_confirmation_code()) return false;
  if (lhs.has_passenger_name() != rhs.has_passenger_name()) return false;
  if (lhs.has_passenger_name() && lhs.passenger_name() != rhs.passenger_name()) return false;
  if (lhs.has_departure_airport() != rhs.has_departure_airport()) return false;
  if (lhs.has_departure_airport() && lhs.departure_airport() != rhs.departure_airport()) return false;
  if (lhs.has_arrival_airport() != rhs.has_arrival_airport()) return false;
  if (lhs.has_arrival_airport() && lhs.arrival_airport() != rhs.arrival_airport()) return false;
  if (lhs.has_departure_time() != rhs.has_departure_time()) return false;
  if (lhs.has_departure_time() && lhs.departure_time() != rhs.departure_time()) return false;
  if (lhs.has_arrival_time() != rhs.has_arrival_time()) return false;
  if (lhs.has_arrival_time() && lhs.arrival_time() != rhs.arrival_time()) return false;
  return true;
}

bool operator!=(const FlightReservation& lhs, const FlightReservation& rhs) {
  return !(lhs == rhs);
}
bool operator==(const Vehicle& lhs, const Vehicle& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_vehicle_make() != rhs.has_vehicle_make()) return false;
  if (lhs.has_vehicle_make() && lhs.vehicle_make() != rhs.vehicle_make()) return false;
  if (lhs.has_vehicle_model() != rhs.has_vehicle_model()) return false;
  if (lhs.has_vehicle_model() && lhs.vehicle_model() != rhs.vehicle_model()) return false;
  if (lhs.has_vehicle_year() != rhs.has_vehicle_year()) return false;
  if (lhs.has_vehicle_year() && lhs.vehicle_year() != rhs.vehicle_year()) return false;
  if (lhs.has_vehicle_identification_number() != rhs.has_vehicle_identification_number()) return false;
  if (lhs.has_vehicle_identification_number() && lhs.vehicle_identification_number() != rhs.vehicle_identification_number()) return false;
  if (lhs.has_vehicle_license_plate() != rhs.has_vehicle_license_plate()) return false;
  if (lhs.has_vehicle_license_plate() && lhs.vehicle_license_plate() != rhs.vehicle_license_plate()) return false;
  if (lhs.has_license_plate_region() != rhs.has_license_plate_region()) return false;
  if (lhs.has_license_plate_region() && lhs.license_plate_region() != rhs.license_plate_region()) return false;
  if (lhs.has_license_plate_country() != rhs.has_license_plate_country()) return false;
  if (lhs.has_license_plate_country() && lhs.license_plate_country() != rhs.license_plate_country()) return false;
  if (lhs.has_owner_name() != rhs.has_owner_name()) return false;
  if (lhs.has_owner_name() && lhs.owner_name() != rhs.owner_name()) return false;
  return true;
}

bool operator!=(const Vehicle& lhs, const Vehicle& rhs) {
  return !(lhs == rhs);
}
bool operator==(const SensitivePiiPresence& lhs, const SensitivePiiPresence& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_type() != rhs.has_type()) return false;
  if (lhs.has_type() && lhs.type() != rhs.type()) return false;
  return true;
}

bool operator!=(const SensitivePiiPresence& lhs, const SensitivePiiPresence& rhs) {
  return !(lhs == rhs);
}
bool operator==(const DecryptedEntity& lhs, const DecryptedEntity& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.entity_case() != rhs.entity_case()) return false;
  switch (lhs.entity_case()) {
    case DecryptedEntity::kPassport:
      if (lhs.passport() != rhs.passport()) return false;
      break;
    case DecryptedEntity::kDriversLicense:
      if (lhs.drivers_license() != rhs.drivers_license()) return false;
      break;
    case DecryptedEntity::ENTITY_NOT_SET:
      break;
  }
  if (lhs.references().size() != rhs.references().size()) return false;
  for (int i = 0; i < lhs.references().size(); ++i) {
    if (lhs.references()[i] != rhs.references()[i]) return false;
  }
  return true;
}

bool operator!=(const DecryptedEntity& lhs, const DecryptedEntity& rhs) {
  return !(lhs == rhs);
}
bool operator==(const DecryptedReference& lhs, const DecryptedReference& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.reference_case() != rhs.reference_case()) return false;
  switch (lhs.reference_case()) {
    case DecryptedReference::kGmailMessage:
      if (lhs.gmail_message() != rhs.gmail_message()) return false;
      break;
    case DecryptedReference::kPhoto:
      if (lhs.photo() != rhs.photo()) return false;
      break;
    case DecryptedReference::kVideo:
      if (lhs.video() != rhs.video()) return false;
      break;
    case DecryptedReference::kPhotosAlbum:
      if (lhs.photos_album() != rhs.photos_album()) return false;
      break;
    case DecryptedReference::kDriveFile:
      if (lhs.drive_file() != rhs.drive_file()) return false;
      break;
    case DecryptedReference::REFERENCE_NOT_SET:
      break;
  }
  return true;
}

bool operator!=(const DecryptedReference& lhs, const DecryptedReference& rhs) {
  return !(lhs == rhs);
}
bool operator==(const DecryptedGmailMessage& lhs, const DecryptedGmailMessage& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_subject() != rhs.has_subject()) return false;
  if (lhs.has_subject() && lhs.subject() != rhs.subject()) return false;
  if (lhs.has_message_url() != rhs.has_message_url()) return false;
  if (lhs.has_message_url() && lhs.message_url() != rhs.message_url()) return false;
  return true;
}

bool operator!=(const DecryptedGmailMessage& lhs, const DecryptedGmailMessage& rhs) {
  return !(lhs == rhs);
}
bool operator==(const DecryptedPhotosPhoto& lhs, const DecryptedPhotosPhoto& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_deeplink_url() != rhs.has_deeplink_url()) return false;
  if (lhs.has_deeplink_url() && lhs.deeplink_url() != rhs.deeplink_url()) return false;
  return true;
}

bool operator!=(const DecryptedPhotosPhoto& lhs, const DecryptedPhotosPhoto& rhs) {
  return !(lhs == rhs);
}
bool operator==(const DecryptedPhotosVideo& lhs, const DecryptedPhotosVideo& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_deeplink_url() != rhs.has_deeplink_url()) return false;
  if (lhs.has_deeplink_url() && lhs.deeplink_url() != rhs.deeplink_url()) return false;
  return true;
}

bool operator!=(const DecryptedPhotosVideo& lhs, const DecryptedPhotosVideo& rhs) {
  return !(lhs == rhs);
}
bool operator==(const DecryptedPhotosAlbum& lhs, const DecryptedPhotosAlbum& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_deeplink_url() != rhs.has_deeplink_url()) return false;
  if (lhs.has_deeplink_url() && lhs.deeplink_url() != rhs.deeplink_url()) return false;
  return true;
}

bool operator!=(const DecryptedPhotosAlbum& lhs, const DecryptedPhotosAlbum& rhs) {
  return !(lhs == rhs);
}
bool operator==(const DecryptedDriveFile& lhs, const DecryptedDriveFile& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_name() != rhs.has_name()) return false;
  if (lhs.has_name() && lhs.name() != rhs.name()) return false;
  if (lhs.has_url() != rhs.has_url()) return false;
  if (lhs.has_url() && lhs.url() != rhs.url()) return false;
  return true;
}

bool operator!=(const DecryptedDriveFile& lhs, const DecryptedDriveFile& rhs) {
  return !(lhs == rhs);
}
bool operator==(const DecryptedPassport& lhs, const DecryptedPassport& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_full_name() != rhs.has_full_name()) return false;
  if (lhs.has_full_name() && lhs.full_name() != rhs.full_name()) return false;
  if (lhs.has_number() != rhs.has_number()) return false;
  if (lhs.has_number() && lhs.number() != rhs.number()) return false;
  if (lhs.has_issue_date() != rhs.has_issue_date()) return false;
  if (lhs.has_issue_date() && lhs.issue_date() != rhs.issue_date()) return false;
  if (lhs.has_expiration_date() != rhs.has_expiration_date()) return false;
  if (lhs.has_expiration_date() && lhs.expiration_date() != rhs.expiration_date()) return false;
  if (lhs.has_issuing_country() != rhs.has_issuing_country()) return false;
  if (lhs.has_issuing_country() && lhs.issuing_country() != rhs.issuing_country()) return false;
  return true;
}

bool operator!=(const DecryptedPassport& lhs, const DecryptedPassport& rhs) {
  return !(lhs == rhs);
}
bool operator==(const DecryptedDriversLicense& lhs, const DecryptedDriversLicense& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_full_name() != rhs.has_full_name()) return false;
  if (lhs.has_full_name() && lhs.full_name() != rhs.full_name()) return false;
  if (lhs.has_number() != rhs.has_number()) return false;
  if (lhs.has_number() && lhs.number() != rhs.number()) return false;
  if (lhs.has_issuing_region() != rhs.has_issuing_region()) return false;
  if (lhs.has_issuing_region() && lhs.issuing_region() != rhs.issuing_region()) return false;
  if (lhs.has_issue_date() != rhs.has_issue_date()) return false;
  if (lhs.has_issue_date() && lhs.issue_date() != rhs.issue_date()) return false;
  if (lhs.has_expiration_date() != rhs.has_expiration_date()) return false;
  if (lhs.has_expiration_date() && lhs.expiration_date() != rhs.expiration_date()) return false;
  return true;
}

bool operator!=(const DecryptedDriversLicense& lhs, const DecryptedDriversLicense& rhs) {
  return !(lhs == rhs);
}
}  // namespace proto
}  // namespace personal_context

