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

#include "components/optimization_guide/proto/features/content_annotation.equal.h"



#include "components/optimization_guide/proto/features/common_quality_data.equal.h"
#include "components/optimization_guide/proto/features/common_quality_data.pb.h"
#include "components/optimization_guide/proto/features/content_annotation.pb.h"
#include "components/optimization_guide/proto/model_quality_metadata.equal.h"
#include "components/optimization_guide/proto/model_quality_metadata.pb.h"


namespace optimization_guide {
namespace proto {
bool operator==(const ContentAnnotationLoggingData& lhs, const ContentAnnotationLoggingData& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_request() != rhs.has_request()) return false;
  if (lhs.has_request() && lhs.request() != rhs.request()) return false;
  if (lhs.has_response() != rhs.has_response()) return false;
  if (lhs.has_response() && lhs.response() != rhs.response()) return false;
  if (lhs.has_model_execution_info() != rhs.has_model_execution_info()) return false;
  if (lhs.has_model_execution_info() && lhs.model_execution_info() != rhs.model_execution_info()) return false;
  return true;
}

bool operator!=(const ContentAnnotationLoggingData& lhs, const ContentAnnotationLoggingData& rhs) {
  return !(lhs == rhs);
}
bool operator==(const ContentAnnotationRequest& lhs, const ContentAnnotationRequest& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_page_context() != rhs.has_page_context()) return false;
  if (lhs.has_page_context() && lhs.page_context() != rhs.page_context()) return false;
  return true;
}

bool operator!=(const ContentAnnotationRequest& lhs, const ContentAnnotationRequest& rhs) {
  return !(lhs == rhs);
}
bool operator==(const ContentAnnotationResponse& lhs, const ContentAnnotationResponse& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_extracted_data() != rhs.has_extracted_data()) return false;
  if (lhs.has_extracted_data() && lhs.extracted_data() != rhs.extracted_data()) return false;
  if (lhs.has_content_annotation() != rhs.has_content_annotation()) return false;
  if (lhs.has_content_annotation() && lhs.content_annotation() != rhs.content_annotation()) return false;
  return true;
}

bool operator!=(const ContentAnnotationResponse& lhs, const ContentAnnotationResponse& rhs) {
  return !(lhs == rhs);
}
bool operator==(const ContentAnnotation& lhs, const ContentAnnotation& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_description() != rhs.has_description()) return false;
  if (lhs.has_description() && lhs.description() != rhs.description()) return false;
  if (lhs.has_status() != rhs.has_status()) return false;
  if (lhs.has_status() && lhs.status() != rhs.status()) return false;
  if (lhs.has_structured_data() != rhs.has_structured_data()) return false;
  if (lhs.has_structured_data() && lhs.structured_data() != rhs.structured_data()) return false;
  if (lhs.supplemental_data().size() != rhs.supplemental_data().size()) return false;
  for (int i = 0; i < lhs.supplemental_data().size(); ++i) {
    if (lhs.supplemental_data()[i] != rhs.supplemental_data()[i]) return false;
  }
  return true;
}

bool operator!=(const ContentAnnotation& lhs, const ContentAnnotation& rhs) {
  return !(lhs == rhs);
}
bool operator==(const StructuredData& lhs, const StructuredData& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.orders().size() != rhs.orders().size()) return false;
  for (int i = 0; i < lhs.orders().size(); ++i) {
    if (lhs.orders()[i] != rhs.orders()[i]) return false;
  }
  if (lhs.shipments().size() != rhs.shipments().size()) return false;
  for (int i = 0; i < lhs.shipments().size(); ++i) {
    if (lhs.shipments()[i] != rhs.shipments()[i]) return false;
  }
  if (lhs.flight_reservations().size() != rhs.flight_reservations().size()) return false;
  for (int i = 0; i < lhs.flight_reservations().size(); ++i) {
    if (lhs.flight_reservations()[i] != rhs.flight_reservations()[i]) return false;
  }
  if (lhs.hotel_bookings().size() != rhs.hotel_bookings().size()) return false;
  for (int i = 0; i < lhs.hotel_bookings().size(); ++i) {
    if (lhs.hotel_bookings()[i] != rhs.hotel_bookings()[i]) return false;
  }
  if (lhs.car_rentals().size() != rhs.car_rentals().size()) return false;
  for (int i = 0; i < lhs.car_rentals().size(); ++i) {
    if (lhs.car_rentals()[i] != rhs.car_rentals()[i]) return false;
  }
  return true;
}

bool operator!=(const StructuredData& lhs, const StructuredData& 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_id() != rhs.has_id()) return false;
  if (lhs.has_id() && lhs.id() != rhs.id()) return false;
  if (lhs.products().size() != rhs.products().size()) return false;
  for (int i = 0; i < lhs.products().size(); ++i) {
    if (lhs.products()[i] != rhs.products()[i]) 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_grand_total() != rhs.has_grand_total()) return false;
  if (lhs.has_grand_total() && lhs.grand_total() != rhs.grand_total()) return false;
  return true;
}

bool operator!=(const Order& lhs, const Order& rhs) {
  return !(lhs == rhs);
}
bool operator==(const Product& lhs, const Product& 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_quantity() != rhs.has_quantity()) return false;
  if (lhs.has_quantity() && lhs.quantity() != rhs.quantity()) return false;
  return true;
}

bool operator!=(const Product& lhs, const Product& 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 Shipment& lhs, const Shipment& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_associated_order_id() != rhs.has_associated_order_id()) return false;
  if (lhs.has_associated_order_id() && lhs.associated_order_id() != rhs.associated_order_id()) 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.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_delivery_address() != rhs.has_delivery_address()) return false;
  if (lhs.has_delivery_address() && lhs.delivery_address() != rhs.delivery_address()) return false;
  return true;
}

bool operator!=(const Shipment& lhs, const Shipment& 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_confirmation_code() != rhs.has_confirmation_code()) return false;
  if (lhs.has_confirmation_code() && lhs.confirmation_code() != rhs.confirmation_code()) return false;
  if (lhs.has_grand_total() != rhs.has_grand_total()) return false;
  if (lhs.has_grand_total() && lhs.grand_total() != rhs.grand_total()) 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_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_date() != rhs.has_departure_date()) return false;
  if (lhs.has_departure_date() && lhs.departure_date() != rhs.departure_date()) return false;
  return true;
}

bool operator!=(const FlightReservation& lhs, const FlightReservation& rhs) {
  return !(lhs == rhs);
}
bool operator==(const HotelBooking& lhs, const HotelBooking& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_confirmation_code() != rhs.has_confirmation_code()) return false;
  if (lhs.has_confirmation_code() && lhs.confirmation_code() != rhs.confirmation_code()) return false;
  if (lhs.has_grand_total() != rhs.has_grand_total()) return false;
  if (lhs.has_grand_total() && lhs.grand_total() != rhs.grand_total()) return false;
  if (lhs.has_property_name() != rhs.has_property_name()) return false;
  if (lhs.has_property_name() && lhs.property_name() != rhs.property_name()) return false;
  if (lhs.has_check_in_date() != rhs.has_check_in_date()) return false;
  if (lhs.has_check_in_date() && lhs.check_in_date() != rhs.check_in_date()) return false;
  if (lhs.has_check_out_date() != rhs.has_check_out_date()) return false;
  if (lhs.has_check_out_date() && lhs.check_out_date() != rhs.check_out_date()) return false;
  if (lhs.has_city() != rhs.has_city()) return false;
  if (lhs.has_city() && lhs.city() != rhs.city()) return false;
  if (lhs.has_guest_name() != rhs.has_guest_name()) return false;
  if (lhs.has_guest_name() && lhs.guest_name() != rhs.guest_name()) return false;
  if (lhs.has_number_of_guests() != rhs.has_number_of_guests()) return false;
  if (lhs.has_number_of_guests() && lhs.number_of_guests() != rhs.number_of_guests()) return false;
  return true;
}

bool operator!=(const HotelBooking& lhs, const HotelBooking& rhs) {
  return !(lhs == rhs);
}
bool operator==(const CarRental& lhs, const CarRental& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_confirmation_code() != rhs.has_confirmation_code()) return false;
  if (lhs.has_confirmation_code() && lhs.confirmation_code() != rhs.confirmation_code()) return false;
  if (lhs.has_grand_total() != rhs.has_grand_total()) return false;
  if (lhs.has_grand_total() && lhs.grand_total() != rhs.grand_total()) return false;
  if (lhs.has_car_model() != rhs.has_car_model()) return false;
  if (lhs.has_car_model() && lhs.car_model() != rhs.car_model()) return false;
  if (lhs.has_guest_name() != rhs.has_guest_name()) return false;
  if (lhs.has_guest_name() && lhs.guest_name() != rhs.guest_name()) return false;
  if (lhs.has_pickup_location_name() != rhs.has_pickup_location_name()) return false;
  if (lhs.has_pickup_location_name() && lhs.pickup_location_name() != rhs.pickup_location_name()) return false;
  if (lhs.has_dropoff_location_name() != rhs.has_dropoff_location_name()) return false;
  if (lhs.has_dropoff_location_name() && lhs.dropoff_location_name() != rhs.dropoff_location_name()) return false;
  if (lhs.has_pickup_date() != rhs.has_pickup_date()) return false;
  if (lhs.has_pickup_date() && lhs.pickup_date() != rhs.pickup_date()) return false;
  if (lhs.has_dropoff_date() != rhs.has_dropoff_date()) return false;
  if (lhs.has_dropoff_date() && lhs.dropoff_date() != rhs.dropoff_date()) return false;
  if (lhs.has_merchant() != rhs.has_merchant()) return false;
  if (lhs.has_merchant() && lhs.merchant() != rhs.merchant()) return false;
  return true;
}

bool operator!=(const CarRental& lhs, const CarRental& rhs) {
  return !(lhs == rhs);
}
bool operator==(const DynamicAttribute& lhs, const DynamicAttribute& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.value_case() != rhs.value_case()) return false;
  switch (lhs.value_case()) {
    case DynamicAttribute::kStringValue:
      if (lhs.string_value() != rhs.string_value()) return false;
      break;
    case DynamicAttribute::kNumberValue:
      if (lhs.number_value() != rhs.number_value()) return false;
      break;
    case DynamicAttribute::VALUE_NOT_SET:
      break;
  }
  if (lhs.has_key() != rhs.has_key()) return false;
  if (lhs.has_key() && lhs.key() != rhs.key()) return false;
  return true;
}

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

