// Generated by the protocol buffer compiler.  DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: components/optimization_guide/proto/models.proto
// Protobuf C++ Version: 7.35.1

#include "components/optimization_guide/proto/models.pb.h"

#include <algorithm>
#include <type_traits>
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/generated_message_tctable_impl.h"
#include "google/protobuf/internal_visibility.h"
#include "google/protobuf/extension_set.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/wire_format_lite.h"
#include "google/protobuf/io/zero_copy_stream_impl_lite.h"
// @@protoc_insertion_point(includes)

// Must be included last.
#include "google/protobuf/port_def.inc"
PROTOBUF_PRAGMA_INIT_SEG
namespace _pb = ::google::protobuf;
namespace _pbi = ::google::protobuf::internal;
namespace _fl = ::google::protobuf::internal::field_layout;
namespace optimization_guide {
namespace proto {
class ModelCacheKey::_Internal {
 public:
  using HasBits = decltype(::std::declval<ModelCacheKey>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ModelCacheKey, _impl_._has_bits_);
};

constexpr ModelCacheKey::ParseTableT_ ModelCacheKey::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ModelCacheKey, _impl_._has_bits_),
      0, // no _extensions_
      1, 0,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967294,  // skipmap
      offsetof(ParseTableT_, field_entries),
      1,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::GenericFallbackLite,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::optimization_guide::proto::ModelCacheKey>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional string locale = 1;
      {::_pbi::TcParser::FastBS1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(ModelCacheKey, _impl_.locale_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional string locale = 1;
      {PROTOBUF_FIELD_OFFSET(ModelCacheKey, _impl_.locale_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr ModelCacheKey::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : _cached_size_{0},
        locale_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()) {}

template <typename>
constexpr ModelCacheKey::ModelCacheKey(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : ::google::protobuf::MessageLite(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ModelCacheKey::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ModelCacheKey(arena);
}
constexpr auto ModelCacheKey::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ModelCacheKey), alignof(ModelCacheKey));
}
constexpr auto ModelCacheKey::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataLite{
      {
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ModelCacheKey::MergeImpl,
          ::google::protobuf::MessageLite::GetNewImpl<ModelCacheKey>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ModelCacheKey::SharedDtor,
          ::google::protobuf::MessageLite::GetClearImpl<ModelCacheKey>(), &ModelCacheKey::ByteSizeLong,
              &ModelCacheKey::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ModelCacheKey, _impl_._cached_size_),
          true,
      },
      "optimization_guide.proto.ModelCacheKey",
  };
}
struct ModelCacheKeyGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ModelCacheKeyGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ModelCacheKey_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ModelCacheKey::InternalGenerateClassData_(
            _default, &ModelCacheKey_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ModelCacheKey>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ModelCacheKeyGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ModelCacheKey _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ModelCacheKey>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ModelCacheKeyGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ModelCacheKeyGlobalsTypeInternal ModelCacheKey_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ModelCacheKey_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ModelCacheKey_globals_.GetClassData();
#else
  return ModelCacheKey_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class Model::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
      PROTOBUF_FIELD_OFFSET(::optimization_guide::proto::Model, _impl_._oneof_case_);
};

constexpr Model::ParseTableT_ Model::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(Model,
                            _impl_._cached_size_),  // no hasbits
      0, // no _extensions_
      5, 0,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967279,  // skipmap
      offsetof(ParseTableT_, field_entries),
      1,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::GenericFallbackLite,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::optimization_guide::proto::Model>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // string download_url = 5;
      {PROTOBUF_FIELD_OFFSET(Model, _impl_.model_.download_url_), _Internal::kOneofCaseOffset + 0, 0, (0 | ::_fl::kFcOneof | ::_fl::kBytes | ::_fl::kRepAString)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr Model::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : model_{},
        _cached_size_{0},
        _oneof_case_{} {}

template <typename>
constexpr Model::Model(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : ::google::protobuf::MessageLite(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL Model::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) Model(arena);
}
constexpr auto Model::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(Model), alignof(Model));
}
constexpr auto Model::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataLite{
      {
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &Model::MergeImpl,
          ::google::protobuf::MessageLite::GetNewImpl<Model>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &Model::SharedDtor,
          ::google::protobuf::MessageLite::GetClearImpl<Model>(), &Model::ByteSizeLong,
              &Model::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(Model, _impl_._cached_size_),
          true,
      },
      "optimization_guide.proto.Model",
  };
}
struct ModelGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ModelGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 Model_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(Model::InternalGenerateClassData_(
            _default, &Model_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<Model>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ModelGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) Model _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<Model>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ModelGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ModelGlobalsTypeInternal Model_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* Model_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return Model_globals_.GetClassData();
#else
  return Model_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class AdditionalModelFile::_Internal {
 public:
  using HasBits = decltype(::std::declval<AdditionalModelFile>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(AdditionalModelFile, _impl_._has_bits_);
};

constexpr AdditionalModelFile::ParseTableT_ AdditionalModelFile::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(AdditionalModelFile, _impl_._has_bits_),
      0, // no _extensions_
      1, 0,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967294,  // skipmap
      offsetof(ParseTableT_, field_entries),
      1,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::GenericFallbackLite,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::optimization_guide::proto::AdditionalModelFile>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional string file_path = 1;
      {::_pbi::TcParser::FastBS1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(AdditionalModelFile, _impl_.file_path_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional string file_path = 1;
      {PROTOBUF_FIELD_OFFSET(AdditionalModelFile, _impl_.file_path_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr AdditionalModelFile::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : _cached_size_{0},
        file_path_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()) {}

template <typename>
constexpr AdditionalModelFile::AdditionalModelFile(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : ::google::protobuf::MessageLite(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL AdditionalModelFile::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) AdditionalModelFile(arena);
}
constexpr auto AdditionalModelFile::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(AdditionalModelFile), alignof(AdditionalModelFile));
}
constexpr auto AdditionalModelFile::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataLite{
      {
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &AdditionalModelFile::MergeImpl,
          ::google::protobuf::MessageLite::GetNewImpl<AdditionalModelFile>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &AdditionalModelFile::SharedDtor,
          ::google::protobuf::MessageLite::GetClearImpl<AdditionalModelFile>(), &AdditionalModelFile::ByteSizeLong,
              &AdditionalModelFile::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(AdditionalModelFile, _impl_._cached_size_),
          true,
      },
      "optimization_guide.proto.AdditionalModelFile",
  };
}
struct AdditionalModelFileGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr AdditionalModelFileGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 AdditionalModelFile_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(AdditionalModelFile::InternalGenerateClassData_(
            _default, &AdditionalModelFile_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<AdditionalModelFile>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~AdditionalModelFileGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) AdditionalModelFile _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<AdditionalModelFile>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(AdditionalModelFileGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST AdditionalModelFileGlobalsTypeInternal AdditionalModelFile_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* AdditionalModelFile_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return AdditionalModelFile_globals_.GetClassData();
#else
  return AdditionalModelFile_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ModelInfo::_Internal {
 public:
  using HasBits = decltype(::std::declval<ModelInfo>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_._has_bits_);
};

constexpr ModelInfo::ParseTableT_ ModelInfo::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_._has_bits_),
      0, // no _extensions_
      10, 120,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294966276,  // skipmap
      offsetof(ParseTableT_, field_entries),
      9,  // num_field_entries
      6,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::GenericFallbackLite,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::optimization_guide::proto::ModelInfo>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional .optimization_guide.proto.OptimizationTarget optimization_target = 1;
      {::_pbi::TcParser::FastEvS1,
       {8, 7, 4,
        PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.optimization_target_)}},
      // optional int64 version = 2;
      {::_pbi::TcParser::FastV64S1,
       {16, 6, 0,
        PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.version_)}},
      {::_pbi::TcParser::MiniParse, {}},
      // repeated .optimization_guide.proto.ModelEngineVersion supported_model_engine_versions = 4;
      {::_pbi::TcParser::FastEvR1,
       {32, 0, 5,
        PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.supported_model_engine_versions_)}},
      // repeated string supported_host_model_features = 5;
      {::_pbi::TcParser::FastBR1,
       {42, 1, 0,
        PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.supported_host_model_features_)}},
      // optional .optimization_guide.proto.Any model_metadata = 6;
      {::_pbi::TcParser::FastMtS1,
       {50, 3, 0,
        PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.model_metadata_)}},
      // repeated .optimization_guide.proto.AdditionalModelFile additional_files = 7;
      {::_pbi::TcParser::FastMtR1,
       {58, 2, 1,
        PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.additional_files_)}},
      // optional .optimization_guide.proto.Duration valid_duration = 8;
      {::_pbi::TcParser::FastMtS1,
       {66, 4, 2,
        PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.valid_duration_)}},
      // optional bool keep_beyond_valid_duration = 9;
      {::_pbi::TcParser::FastV8S1,
       {72, 8, 0,
        PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.keep_beyond_valid_duration_)}},
      // optional .optimization_guide.proto.ModelCacheKey model_cache_key = 10;
      {::_pbi::TcParser::FastMtS1,
       {82, 5, 3,
        PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.model_cache_key_)}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // optional .optimization_guide.proto.OptimizationTarget optimization_target = 1;
      {PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.optimization_target_), _Internal::kHasBitsOffset + 7, 4, (0 | ::_fl::kFcOptional | ::_fl::kEnum)},
      // optional int64 version = 2;
      {PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.version_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt64)},
      // repeated .optimization_guide.proto.ModelEngineVersion supported_model_engine_versions = 4;
      {PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.supported_model_engine_versions_), _Internal::kHasBitsOffset + 0, 5, (0 | ::_fl::kFcRepeated | ::_fl::kEnum)},
      // repeated string supported_host_model_features = 5;
      {PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.supported_host_model_features_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kBytes | ::_fl::kRepSString)},
      // optional .optimization_guide.proto.Any model_metadata = 6;
      {PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.model_metadata_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated .optimization_guide.proto.AdditionalModelFile additional_files = 7;
      {PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.additional_files_), _Internal::kHasBitsOffset + 2, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .optimization_guide.proto.Duration valid_duration = 8;
      {PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.valid_duration_), _Internal::kHasBitsOffset + 4, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional bool keep_beyond_valid_duration = 9;
      {PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.keep_beyond_valid_duration_), _Internal::kHasBitsOffset + 8, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional .optimization_guide.proto.ModelCacheKey model_cache_key = 10;
      {PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.model_cache_key_), _Internal::kHasBitsOffset + 5, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::optimization_guide::proto::Any>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::optimization_guide::proto::Any_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::optimization_guide::proto::AdditionalModelFile>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::optimization_guide::proto::AdditionalModelFile_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::optimization_guide::proto::Duration>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::optimization_guide::proto::Duration_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::optimization_guide::proto::ModelCacheKey>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::optimization_guide::proto::ModelCacheKey_globals_},
        #endif
        {::_pbi::FieldAuxEnumData{}, ::optimization_guide::proto::OptimizationTarget_internal_data_},
        {::_pbi::FieldAuxEnumData{}, ::optimization_guide::proto::ModelEngineVersion_internal_data_},
    }},
    {{
    }},
  };
}


inline constexpr ModelInfo::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : _cached_size_{0},
        supported_model_engine_versions_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::optimization_guide::proto::ModelInfo,
            PROTOBUF_FIELD_OFFSET(::optimization_guide::proto::ModelInfo, _impl_.supported_model_engine_versions_)>()
         }
        ,
        supported_host_model_features_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::optimization_guide::proto::ModelInfo,
            PROTOBUF_FIELD_OFFSET(::optimization_guide::proto::ModelInfo, _impl_.supported_host_model_features_)>()
         }
        ,
        additional_files_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::optimization_guide::proto::ModelInfo,
            PROTOBUF_FIELD_OFFSET(::optimization_guide::proto::ModelInfo, _impl_.additional_files_)>()
         }
        ,
        model_metadata_{nullptr},
        valid_duration_{nullptr},
        model_cache_key_{nullptr},
        version_{::int64_t{0}},
        optimization_target_{static_cast< ::optimization_guide::proto::OptimizationTarget >(0)},
        keep_beyond_valid_duration_{false} {}

template <typename>
constexpr ModelInfo::ModelInfo(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : ::google::protobuf::MessageLite(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ModelInfo::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ModelInfo(arena);
}
constexpr auto ModelInfo::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ModelInfo), alignof(ModelInfo));
}
constexpr auto ModelInfo::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataLite{
      {
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ModelInfo::MergeImpl,
          ::google::protobuf::MessageLite::GetNewImpl<ModelInfo>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ModelInfo::SharedDtor,
          ::google::protobuf::MessageLite::GetClearImpl<ModelInfo>(), &ModelInfo::ByteSizeLong,
              &ModelInfo::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_._cached_size_),
          true,
      },
      "optimization_guide.proto.ModelInfo",
  };
}
struct ModelInfoGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ModelInfoGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ModelInfo_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ModelInfo::InternalGenerateClassData_(
            _default, &ModelInfo_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ModelInfo>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ModelInfoGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ModelInfo _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ModelInfo>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ModelInfoGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ModelInfoGlobalsTypeInternal ModelInfo_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ModelInfo_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ModelInfo_globals_.GetClassData();
#else
  return ModelInfo_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class PredictionModel::_Internal {
 public:
  using HasBits = decltype(::std::declval<PredictionModel>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(PredictionModel, _impl_._has_bits_);
};

constexpr PredictionModel::ParseTableT_ PredictionModel::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(PredictionModel, _impl_._has_bits_),
      0, // no _extensions_
      2, 8,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967292,  // skipmap
      offsetof(ParseTableT_, field_entries),
      2,  // num_field_entries
      2,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::GenericFallbackLite,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::optimization_guide::proto::PredictionModel>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional .optimization_guide.proto.Model model = 2;
      {::_pbi::TcParser::FastMtS1,
       {18, 1, 1,
        PROTOBUF_FIELD_OFFSET(PredictionModel, _impl_.model_)}},
      // optional .optimization_guide.proto.ModelInfo model_info = 1;
      {::_pbi::TcParser::FastMtS1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(PredictionModel, _impl_.model_info_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional .optimization_guide.proto.ModelInfo model_info = 1;
      {PROTOBUF_FIELD_OFFSET(PredictionModel, _impl_.model_info_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .optimization_guide.proto.Model model = 2;
      {PROTOBUF_FIELD_OFFSET(PredictionModel, _impl_.model_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::optimization_guide::proto::ModelInfo>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::optimization_guide::proto::ModelInfo_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::optimization_guide::proto::Model>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::optimization_guide::proto::Model_globals_},
        #endif
    }},
    {{
    }},
  };
}


inline constexpr PredictionModel::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : _cached_size_{0},
        model_info_{nullptr},
        model_{nullptr} {}

template <typename>
constexpr PredictionModel::PredictionModel(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : ::google::protobuf::MessageLite(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL PredictionModel::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) PredictionModel(arena);
}
constexpr auto PredictionModel::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(PredictionModel), alignof(PredictionModel));
}
constexpr auto PredictionModel::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataLite{
      {
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &PredictionModel::MergeImpl,
          ::google::protobuf::MessageLite::GetNewImpl<PredictionModel>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &PredictionModel::SharedDtor,
          ::google::protobuf::MessageLite::GetClearImpl<PredictionModel>(), &PredictionModel::ByteSizeLong,
              &PredictionModel::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(PredictionModel, _impl_._cached_size_),
          true,
      },
      "optimization_guide.proto.PredictionModel",
  };
}
struct PredictionModelGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr PredictionModelGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 PredictionModel_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(PredictionModel::InternalGenerateClassData_(
            _default, &PredictionModel_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<PredictionModel>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~PredictionModelGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) PredictionModel _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<PredictionModel>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(PredictionModelGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST PredictionModelGlobalsTypeInternal PredictionModel_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* PredictionModel_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return PredictionModel_globals_.GetClassData();
#else
  return PredictionModel_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class GetModelsRequest::_Internal {
 public:
  using HasBits = decltype(::std::declval<GetModelsRequest>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(GetModelsRequest, _impl_._has_bits_);
};

constexpr GetModelsRequest::ParseTableT_ GetModelsRequest::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(GetModelsRequest, _impl_._has_bits_),
      0, // no _extensions_
      6, 56,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967242,  // skipmap
      offsetof(ParseTableT_, field_entries),
      4,  // num_field_entries
      3,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::GenericFallbackLite,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::optimization_guide::proto::GetModelsRequest>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // repeated .optimization_guide.proto.ModelInfo requested_models = 1;
      {::_pbi::TcParser::FastMtR1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(GetModelsRequest, _impl_.requested_models_)}},
      {::_pbi::TcParser::MiniParse, {}},
      // optional .optimization_guide.proto.RequestContext request_context = 3;
      {::_pbi::TcParser::FastEvS1,
       {24, 3, 2,
        PROTOBUF_FIELD_OFFSET(GetModelsRequest, _impl_.request_context_)}},
      {::_pbi::TcParser::MiniParse, {}},
      // optional string locale = 5;
      {::_pbi::TcParser::FastBS1,
       {42, 1, 0,
        PROTOBUF_FIELD_OFFSET(GetModelsRequest, _impl_.locale_)}},
      // optional .optimization_guide.proto.OriginInfo origin_info = 6;
      {::_pbi::TcParser::FastMtS1,
       {50, 2, 1,
        PROTOBUF_FIELD_OFFSET(GetModelsRequest, _impl_.origin_info_)}},
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // repeated .optimization_guide.proto.ModelInfo requested_models = 1;
      {PROTOBUF_FIELD_OFFSET(GetModelsRequest, _impl_.requested_models_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .optimization_guide.proto.RequestContext request_context = 3;
      {PROTOBUF_FIELD_OFFSET(GetModelsRequest, _impl_.request_context_), _Internal::kHasBitsOffset + 3, 2, (0 | ::_fl::kFcOptional | ::_fl::kEnum)},
      // optional string locale = 5;
      {PROTOBUF_FIELD_OFFSET(GetModelsRequest, _impl_.locale_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional .optimization_guide.proto.OriginInfo origin_info = 6;
      {PROTOBUF_FIELD_OFFSET(GetModelsRequest, _impl_.origin_info_), _Internal::kHasBitsOffset + 2, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::optimization_guide::proto::ModelInfo>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::optimization_guide::proto::ModelInfo_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::optimization_guide::proto::OriginInfo>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::optimization_guide::proto::OriginInfo_globals_},
        #endif
        {::_pbi::FieldAuxEnumData{}, ::optimization_guide::proto::RequestContext_internal_data_},
    }},
    {{
    }},
  };
}


inline constexpr GetModelsRequest::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : _cached_size_{0},
        requested_models_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::optimization_guide::proto::GetModelsRequest,
            PROTOBUF_FIELD_OFFSET(::optimization_guide::proto::GetModelsRequest, _impl_.requested_models_)>()
         }
        ,
        locale_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        origin_info_{nullptr},
        request_context_{static_cast< ::optimization_guide::proto::RequestContext >(0)} {}

template <typename>
constexpr GetModelsRequest::GetModelsRequest(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : ::google::protobuf::MessageLite(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL GetModelsRequest::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) GetModelsRequest(arena);
}
constexpr auto GetModelsRequest::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(GetModelsRequest), alignof(GetModelsRequest));
}
constexpr auto GetModelsRequest::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataLite{
      {
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &GetModelsRequest::MergeImpl,
          ::google::protobuf::MessageLite::GetNewImpl<GetModelsRequest>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &GetModelsRequest::SharedDtor,
          ::google::protobuf::MessageLite::GetClearImpl<GetModelsRequest>(), &GetModelsRequest::ByteSizeLong,
              &GetModelsRequest::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(GetModelsRequest, _impl_._cached_size_),
          true,
      },
      "optimization_guide.proto.GetModelsRequest",
  };
}
struct GetModelsRequestGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr GetModelsRequestGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 GetModelsRequest_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(GetModelsRequest::InternalGenerateClassData_(
            _default, &GetModelsRequest_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<GetModelsRequest>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~GetModelsRequestGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) GetModelsRequest _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<GetModelsRequest>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(GetModelsRequestGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST GetModelsRequestGlobalsTypeInternal GetModelsRequest_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* GetModelsRequest_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return GetModelsRequest_globals_.GetClassData();
#else
  return GetModelsRequest_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class GetModelsResponse::_Internal {
 public:
  using HasBits = decltype(::std::declval<GetModelsResponse>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(GetModelsResponse, _impl_._has_bits_);
};

constexpr GetModelsResponse::ParseTableT_ GetModelsResponse::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(GetModelsResponse, _impl_._has_bits_),
      0, // no _extensions_
      1, 0,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967294,  // skipmap
      offsetof(ParseTableT_, field_entries),
      1,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::GenericFallbackLite,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::optimization_guide::proto::GetModelsResponse>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // repeated .optimization_guide.proto.PredictionModel models = 1;
      {::_pbi::TcParser::FastMtR1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(GetModelsResponse, _impl_.models_)}},
    }}, {{
      65535, 65535
    }}, {{
      // repeated .optimization_guide.proto.PredictionModel models = 1;
      {PROTOBUF_FIELD_OFFSET(GetModelsResponse, _impl_.models_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::optimization_guide::proto::PredictionModel>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::optimization_guide::proto::PredictionModel_globals_},
        #endif
    }},
    {{
    }},
  };
}


inline constexpr GetModelsResponse::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : _cached_size_{0},
        models_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::optimization_guide::proto::GetModelsResponse,
            PROTOBUF_FIELD_OFFSET(::optimization_guide::proto::GetModelsResponse, _impl_.models_)>()
         }
     {}

template <typename>
constexpr GetModelsResponse::GetModelsResponse(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : ::google::protobuf::MessageLite(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL GetModelsResponse::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) GetModelsResponse(arena);
}
constexpr auto GetModelsResponse::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(GetModelsResponse), alignof(GetModelsResponse));
}
constexpr auto GetModelsResponse::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataLite{
      {
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &GetModelsResponse::MergeImpl,
          ::google::protobuf::MessageLite::GetNewImpl<GetModelsResponse>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &GetModelsResponse::SharedDtor,
          ::google::protobuf::MessageLite::GetClearImpl<GetModelsResponse>(), &GetModelsResponse::ByteSizeLong,
              &GetModelsResponse::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(GetModelsResponse, _impl_._cached_size_),
          true,
      },
      "optimization_guide.proto.GetModelsResponse",
  };
}
struct GetModelsResponseGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr GetModelsResponseGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 GetModelsResponse_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(GetModelsResponse::InternalGenerateClassData_(
            _default, &GetModelsResponse_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<GetModelsResponse>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~GetModelsResponseGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) GetModelsResponse _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<GetModelsResponse>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(GetModelsResponseGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST GetModelsResponseGlobalsTypeInternal GetModelsResponse_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* GetModelsResponse_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return GetModelsResponse_globals_.GetClassData();
#else
  return GetModelsResponse_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
}  // namespace proto
}  // namespace optimization_guide
namespace optimization_guide {
namespace proto {
PROTOBUF_CONSTINIT const uint32_t OptimizationTarget_internal_data_[] = {
    917504u, 64u, 4294967294u, 4294967295u, };
static const char OptimizationTarget_names[] = {
    "OPTIMIZATION_TARGET_AUTOFILL_FIELD_CLASSIFICATION"
    "OPTIMIZATION_TARGET_CAMERA_BACKGROUND_SEGMENTATION"
    "OPTIMIZATION_TARGET_CLIENT_SIDE_PHISHING"
    "OPTIMIZATION_TARGET_CLIENT_SIDE_PHISHING_IMAGE_EMBEDDER"
    "OPTIMIZATION_TARGET_COMPOSE"
    "OPTIMIZATION_TARGET_CONTEXTUAL_PAGE_ACTION_PRICE_TRACKING"
    "OPTIMIZATION_TARGET_CONTEXTUAL_TASKS_MULTI_TURN_TAB_RELEVANCE"
    "OPTIMIZATION_TARGET_CONTEXTUAL_TASKS_TAB_RELEVANCE"
    "OPTIMIZATION_TARGET_EDU_CLASSIFIER"
    "OPTIMIZATION_TARGET_EXPERIMENTAL_EMBEDDER"
    "OPTIMIZATION_TARGET_GENERALIZED_SAFETY"
    "OPTIMIZATION_TARGET_GEOLOCATION_IMAGE_PERMISSION_RELEVANCE"
    "OPTIMIZATION_TARGET_GEOLOCATION_PERMISSION_PREDICTIONS"
    "OPTIMIZATION_TARGET_LANGUAGE_DETECTION"
    "OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_CLASSIFIER"
    "OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_HISTORY_QUERY_INTENT"
    "OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_HISTORY_SEARCH"
    "OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_ON_DEVICE_SPEECH_RECOGNITION"
    "OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_ON_DEVICE_SPEECH_RECOGNITION_TINY_GEMMA"
    "OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_PERMISSIONS_AI"
    "OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_PROMPT_API"
    "OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_PROOFREADER_API"
    "OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_SCAM_DETECTION"
    "OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_SUMMARIZE"
    "OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_WRITING_ASSISTANCE_API"
    "OPTIMIZATION_TARGET_MODEL_VALIDATION"
    "OPTIMIZATION_TARGET_NEW_TAB_PAGE_HISTORY_CLUSTERS_MODULE_RANKING"
    "OPTIMIZATION_TARGET_NOTIFICATION_CONTENT_DETECTION"
    "OPTIMIZATION_TARGET_NOTIFICATION_IMAGE_PERMISSION_RELEVANCE"
    "OPTIMIZATION_TARGET_NOTIFICATION_PERMISSION_PREDICTIONS"
    "OPTIMIZATION_TARGET_OMNIBOX_ON_DEVICE_TAIL_SUGGEST"
    "OPTIMIZATION_TARGET_OMNIBOX_URL_SCORING"
    "OPTIMIZATION_TARGET_PAGE_ENTITIES"
    "OPTIMIZATION_TARGET_PAGE_TOPICS"
    "OPTIMIZATION_TARGET_PAGE_TOPICS_V2"
    "OPTIMIZATION_TARGET_PAGE_VISIBILITY"
    "OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD"
    "OPTIMIZATION_TARGET_PASSAGE_EMBEDDER"
    "OPTIMIZATION_TARGET_PASSWORD_MANAGER_FORM_CLASSIFICATION"
    "OPTIMIZATION_TARGET_PERMISSIONS_AIV4_GEOLOCATION_ANDROID"
    "OPTIMIZATION_TARGET_PERMISSIONS_AIV4_GEOLOCATION_DESKTOP"
    "OPTIMIZATION_TARGET_PERMISSIONS_AIV4_NOTIFICATIONS_ANDROID"
    "OPTIMIZATION_TARGET_PERMISSIONS_AIV4_NOTIFICATIONS_DESKTOP"
    "OPTIMIZATION_TARGET_PHRASE_SEGMENTATION"
    "OPTIMIZATION_TARGET_PRELOADING_HEURISTICS"
    "OPTIMIZATION_TARGET_SEGMENTATION_ADAPTIVE_TOOLBAR"
    "OPTIMIZATION_TARGET_SEGMENTATION_ANDROID_HOME_MODULE_RANKER"
    "OPTIMIZATION_TARGET_SEGMENTATION_BOTTOM_TOOLBAR"
    "OPTIMIZATION_TARGET_SEGMENTATION_CHROME_LOW_USER_ENGAGEMENT"
    "OPTIMIZATION_TARGET_SEGMENTATION_CHROME_START_ANDROID"
    "OPTIMIZATION_TARGET_SEGMENTATION_CHROME_START_ANDROID_V2"
    "OPTIMIZATION_TARGET_SEGMENTATION_COMPOSE_PROMOTION"
    "OPTIMIZATION_TARGET_SEGMENTATION_DESKTOP_NTP_MODULE"
    "OPTIMIZATION_TARGET_SEGMENTATION_DEVICE_SWITCHER"
    "OPTIMIZATION_TARGET_SEGMENTATION_DUMMY"
    "OPTIMIZATION_TARGET_SEGMENTATION_FEDCM_USER"
    "OPTIMIZATION_TARGET_SEGMENTATION_FEED_USER"
    "OPTIMIZATION_TARGET_SEGMENTATION_IOS_DEFAULT_BROWSER_PROMO"
    "OPTIMIZATION_TARGET_SEGMENTATION_IOS_MODULE_RANKER"
    "OPTIMIZATION_TARGET_SEGMENTATION_METRICS_CLUSTERING"
    "OPTIMIZATION_TARGET_SEGMENTATION_NEW_TAB"
    "OPTIMIZATION_TARGET_SEGMENTATION_QUERY_TILES"
    "OPTIMIZATION_TARGET_SEGMENTATION_SEARCH_USER"
    "OPTIMIZATION_TARGET_SEGMENTATION_SHARE"
    "OPTIMIZATION_TARGET_SEGMENTATION_SHOPPING_USER"
    "OPTIMIZATION_TARGET_SEGMENTATION_TABLET_PRODUCTIVITY_USER"
    "OPTIMIZATION_TARGET_SEGMENTATION_VOICE"
    "OPTIMIZATION_TARGET_SHOPPING_CLASSIFIER"
    "OPTIMIZATION_TARGET_TEXT_CLASSIFIER"
    "OPTIMIZATION_TARGET_TEXT_EMBEDDER"
    "OPTIMIZATION_TARGET_TEXT_SAFETY"
    "OPTIMIZATION_TARGET_UNKNOWN"
    "OPTIMIZATION_TARGET_URL_VISIT_RESUMPTION_RANKER"
    "OPTIMIZATION_TARGET_VISUAL_SEARCH_CLASSIFICATION"
    "OPTIMIZATION_TARGET_WEBRTC_NEURAL_RESIDUAL_ECHO_ESTIMATOR"
    "OPTIMIZATION_TARGET_WEBRTC_VOICE_ISOLATION_DENOISER"
    "OPTIMIZATION_TARGET_WEB_APP_INSTALLATION_PROMO"
};

static const ::google::protobuf::internal::EnumEntry OptimizationTarget_entries[] = {
    {{&OptimizationTarget_names[0], 49}, 36},
    {{&OptimizationTarget_names[49], 50}, 47},
    {{&OptimizationTarget_names[99], 40}, 25},
    {{&OptimizationTarget_names[139], 55}, 30},
    {{&OptimizationTarget_names[194], 27}, 42},
    {{&OptimizationTarget_names[221], 57}, 18},
    {{&OptimizationTarget_names[278], 61}, 76},
    {{&OptimizationTarget_names[339], 50}, 73},
    {{&OptimizationTarget_names[389], 34}, 64},
    {{&OptimizationTarget_names[423], 41}, 57},
    {{&OptimizationTarget_names[464], 38}, 67},
    {{&OptimizationTarget_names[502], 58}, 60},
    {{&OptimizationTarget_names[560], 54}, 20},
    {{&OptimizationTarget_names[614], 38}, 2},
    {{&OptimizationTarget_names[652], 54}, 72},
    {{&OptimizationTarget_names[706], 64}, 54},
    {{&OptimizationTarget_names[770], 58}, 48},
    {{&OptimizationTarget_names[828], 72}, 70},
    {{&OptimizationTarget_names[900], 83}, 75},
    {{&OptimizationTarget_names[983], 58}, 56},
    {{&OptimizationTarget_names[1041], 54}, 49},
    {{&OptimizationTarget_names[1095], 59}, 62},
    {{&OptimizationTarget_names[1154], 58}, 55},
    {{&OptimizationTarget_names[1212], 53}, 51},
    {{&OptimizationTarget_names[1265], 66}, 59},
    {{&OptimizationTarget_names[1331], 36}, 7},
    {{&OptimizationTarget_names[1367], 64}, 31},
    {{&OptimizationTarget_names[1431], 50}, 53},
    {{&OptimizationTarget_names[1481], 59}, 61},
    {{&OptimizationTarget_names[1540], 55}, 9},
    {{&OptimizationTarget_names[1595], 50}, 24},
    {{&OptimizationTarget_names[1645], 39}, 26},
    {{&OptimizationTarget_names[1684], 33}, 8},
    {{&OptimizationTarget_names[1717], 31}, 3},
    {{&OptimizationTarget_names[1748], 34}, 15},
    {{&OptimizationTarget_names[1782], 35}, 13},
    {{&OptimizationTarget_names[1817], 37}, 1},
    {{&OptimizationTarget_names[1854], 36}, 43},
    {{&OptimizationTarget_names[1890], 56}, 52},
    {{&OptimizationTarget_names[1946], 56}, 68},
    {{&OptimizationTarget_names[2002], 56}, 65},
    {{&OptimizationTarget_names[2058], 58}, 69},
    {{&OptimizationTarget_names[2116], 58}, 66},
    {{&OptimizationTarget_names[2174], 39}, 44},
    {{&OptimizationTarget_names[2213], 41}, 39},
    {{&OptimizationTarget_names[2254], 49}, 28},
    {{&OptimizationTarget_names[2303], 59}, 41},
    {{&OptimizationTarget_names[2362], 47}, 35},
    {{&OptimizationTarget_names[2409], 59}, 16},
    {{&OptimizationTarget_names[2468], 53}, 11},
    {{&OptimizationTarget_names[2521], 56}, 22},
    {{&OptimizationTarget_names[2577], 50}, 45},
    {{&OptimizationTarget_names[2627], 51}, 38},
    {{&OptimizationTarget_names[2678], 48}, 27},
    {{&OptimizationTarget_names[2726], 38}, 10},
    {{&OptimizationTarget_names[2764], 43}, 58},
    {{&OptimizationTarget_names[2807], 42}, 17},
    {{&OptimizationTarget_names[2849], 58}, 63},
    {{&OptimizationTarget_names[2907], 50}, 37},
    {{&OptimizationTarget_names[2957], 51}, 50},
    {{&OptimizationTarget_names[3008], 40}, 4},
    {{&OptimizationTarget_names[3048], 44}, 12},
    {{&OptimizationTarget_names[3092], 44}, 23},
    {{&OptimizationTarget_names[3136], 38}, 5},
    {{&OptimizationTarget_names[3174], 46}, 21},
    {{&OptimizationTarget_names[3220], 57}, 29},
    {{&OptimizationTarget_names[3277], 38}, 6},
    {{&OptimizationTarget_names[3315], 39}, 74},
    {{&OptimizationTarget_names[3354], 35}, 19},
    {{&OptimizationTarget_names[3389], 33}, 33},
    {{&OptimizationTarget_names[3422], 31}, 40},
    {{&OptimizationTarget_names[3453], 27}, 0},
    {{&OptimizationTarget_names[3480], 47}, 46},
    {{&OptimizationTarget_names[3527], 48}, 34},
    {{&OptimizationTarget_names[3575], 57}, 71},
    {{&OptimizationTarget_names[3632], 51}, 77},
    {{&OptimizationTarget_names[3683], 46}, 32},
};

static const int OptimizationTarget_entries_by_number[] = {
    71,  // 0 -> OPTIMIZATION_TARGET_UNKNOWN
    36,  // 1 -> OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD
    13,  // 2 -> OPTIMIZATION_TARGET_LANGUAGE_DETECTION
    33,  // 3 -> OPTIMIZATION_TARGET_PAGE_TOPICS
    60,  // 4 -> OPTIMIZATION_TARGET_SEGMENTATION_NEW_TAB
    63,  // 5 -> OPTIMIZATION_TARGET_SEGMENTATION_SHARE
    66,  // 6 -> OPTIMIZATION_TARGET_SEGMENTATION_VOICE
    25,  // 7 -> OPTIMIZATION_TARGET_MODEL_VALIDATION
    32,  // 8 -> OPTIMIZATION_TARGET_PAGE_ENTITIES
    29,  // 9 -> OPTIMIZATION_TARGET_NOTIFICATION_PERMISSION_PREDICTIONS
    54,  // 10 -> OPTIMIZATION_TARGET_SEGMENTATION_DUMMY
    49,  // 11 -> OPTIMIZATION_TARGET_SEGMENTATION_CHROME_START_ANDROID
    61,  // 12 -> OPTIMIZATION_TARGET_SEGMENTATION_QUERY_TILES
    35,  // 13 -> OPTIMIZATION_TARGET_PAGE_VISIBILITY
    34,  // 15 -> OPTIMIZATION_TARGET_PAGE_TOPICS_V2
    48,  // 16 -> OPTIMIZATION_TARGET_SEGMENTATION_CHROME_LOW_USER_ENGAGEMENT
    56,  // 17 -> OPTIMIZATION_TARGET_SEGMENTATION_FEED_USER
    5,  // 18 -> OPTIMIZATION_TARGET_CONTEXTUAL_PAGE_ACTION_PRICE_TRACKING
    68,  // 19 -> OPTIMIZATION_TARGET_TEXT_CLASSIFIER
    12,  // 20 -> OPTIMIZATION_TARGET_GEOLOCATION_PERMISSION_PREDICTIONS
    64,  // 21 -> OPTIMIZATION_TARGET_SEGMENTATION_SHOPPING_USER
    50,  // 22 -> OPTIMIZATION_TARGET_SEGMENTATION_CHROME_START_ANDROID_V2
    62,  // 23 -> OPTIMIZATION_TARGET_SEGMENTATION_SEARCH_USER
    30,  // 24 -> OPTIMIZATION_TARGET_OMNIBOX_ON_DEVICE_TAIL_SUGGEST
    2,  // 25 -> OPTIMIZATION_TARGET_CLIENT_SIDE_PHISHING
    31,  // 26 -> OPTIMIZATION_TARGET_OMNIBOX_URL_SCORING
    53,  // 27 -> OPTIMIZATION_TARGET_SEGMENTATION_DEVICE_SWITCHER
    45,  // 28 -> OPTIMIZATION_TARGET_SEGMENTATION_ADAPTIVE_TOOLBAR
    65,  // 29 -> OPTIMIZATION_TARGET_SEGMENTATION_TABLET_PRODUCTIVITY_USER
    3,  // 30 -> OPTIMIZATION_TARGET_CLIENT_SIDE_PHISHING_IMAGE_EMBEDDER
    26,  // 31 -> OPTIMIZATION_TARGET_NEW_TAB_PAGE_HISTORY_CLUSTERS_MODULE_RANKING
    76,  // 32 -> OPTIMIZATION_TARGET_WEB_APP_INSTALLATION_PROMO
    69,  // 33 -> OPTIMIZATION_TARGET_TEXT_EMBEDDER
    73,  // 34 -> OPTIMIZATION_TARGET_VISUAL_SEARCH_CLASSIFICATION
    47,  // 35 -> OPTIMIZATION_TARGET_SEGMENTATION_BOTTOM_TOOLBAR
    0,  // 36 -> OPTIMIZATION_TARGET_AUTOFILL_FIELD_CLASSIFICATION
    58,  // 37 -> OPTIMIZATION_TARGET_SEGMENTATION_IOS_MODULE_RANKER
    52,  // 38 -> OPTIMIZATION_TARGET_SEGMENTATION_DESKTOP_NTP_MODULE
    44,  // 39 -> OPTIMIZATION_TARGET_PRELOADING_HEURISTICS
    70,  // 40 -> OPTIMIZATION_TARGET_TEXT_SAFETY
    46,  // 41 -> OPTIMIZATION_TARGET_SEGMENTATION_ANDROID_HOME_MODULE_RANKER
    4,  // 42 -> OPTIMIZATION_TARGET_COMPOSE
    37,  // 43 -> OPTIMIZATION_TARGET_PASSAGE_EMBEDDER
    43,  // 44 -> OPTIMIZATION_TARGET_PHRASE_SEGMENTATION
    51,  // 45 -> OPTIMIZATION_TARGET_SEGMENTATION_COMPOSE_PROMOTION
    72,  // 46 -> OPTIMIZATION_TARGET_URL_VISIT_RESUMPTION_RANKER
    1,  // 47 -> OPTIMIZATION_TARGET_CAMERA_BACKGROUND_SEGMENTATION
    16,  // 48 -> OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_HISTORY_SEARCH
    20,  // 49 -> OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_PROMPT_API
    59,  // 50 -> OPTIMIZATION_TARGET_SEGMENTATION_METRICS_CLUSTERING
    23,  // 51 -> OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_SUMMARIZE
    38,  // 52 -> OPTIMIZATION_TARGET_PASSWORD_MANAGER_FORM_CLASSIFICATION
    27,  // 53 -> OPTIMIZATION_TARGET_NOTIFICATION_CONTENT_DETECTION
    15,  // 54 -> OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_HISTORY_QUERY_INTENT
    22,  // 55 -> OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_SCAM_DETECTION
    19,  // 56 -> OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_PERMISSIONS_AI
    9,  // 57 -> OPTIMIZATION_TARGET_EXPERIMENTAL_EMBEDDER
    55,  // 58 -> OPTIMIZATION_TARGET_SEGMENTATION_FEDCM_USER
    24,  // 59 -> OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_WRITING_ASSISTANCE_API
    11,  // 60 -> OPTIMIZATION_TARGET_GEOLOCATION_IMAGE_PERMISSION_RELEVANCE
    28,  // 61 -> OPTIMIZATION_TARGET_NOTIFICATION_IMAGE_PERMISSION_RELEVANCE
    21,  // 62 -> OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_PROOFREADER_API
    57,  // 63 -> OPTIMIZATION_TARGET_SEGMENTATION_IOS_DEFAULT_BROWSER_PROMO
    8,  // 64 -> OPTIMIZATION_TARGET_EDU_CLASSIFIER
    40,  // 65 -> OPTIMIZATION_TARGET_PERMISSIONS_AIV4_GEOLOCATION_DESKTOP
    42,  // 66 -> OPTIMIZATION_TARGET_PERMISSIONS_AIV4_NOTIFICATIONS_DESKTOP
    10,  // 67 -> OPTIMIZATION_TARGET_GENERALIZED_SAFETY
    39,  // 68 -> OPTIMIZATION_TARGET_PERMISSIONS_AIV4_GEOLOCATION_ANDROID
    41,  // 69 -> OPTIMIZATION_TARGET_PERMISSIONS_AIV4_NOTIFICATIONS_ANDROID
    17,  // 70 -> OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_ON_DEVICE_SPEECH_RECOGNITION
    74,  // 71 -> OPTIMIZATION_TARGET_WEBRTC_NEURAL_RESIDUAL_ECHO_ESTIMATOR
    14,  // 72 -> OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_CLASSIFIER
    7,  // 73 -> OPTIMIZATION_TARGET_CONTEXTUAL_TASKS_TAB_RELEVANCE
    67,  // 74 -> OPTIMIZATION_TARGET_SHOPPING_CLASSIFIER
    18,  // 75 -> OPTIMIZATION_TARGET_MODEL_EXECUTION_FEATURE_ON_DEVICE_SPEECH_RECOGNITION_TINY_GEMMA
    6,  // 76 -> OPTIMIZATION_TARGET_CONTEXTUAL_TASKS_MULTI_TURN_TAB_RELEVANCE
    75,  // 77 -> OPTIMIZATION_TARGET_WEBRTC_VOICE_ISOLATION_DENOISER
};

bool OptimizationTarget_Parse(::absl::string_view name,
                                  OptimizationTarget* PROTOBUF_NONNULL value) {
  int int_value;
  bool success = ::google::protobuf::internal::LookUpEnumValue(
      OptimizationTarget_entries, 77, name, &int_value);
  if (success) {
    *value = static_cast<OptimizationTarget>(int_value);
  }
  return success;
}
static ::google::protobuf::internal::ExplicitlyConstructed<::std::string>
    OptimizationTarget_strings[77] = {};

const ::std::string& OptimizationTarget_Name(OptimizationTarget value) {
  static const bool kDummy = ::google::protobuf::internal::InitializeEnumStrings(
      OptimizationTarget_entries, OptimizationTarget_entries_by_number, 77,
      OptimizationTarget_strings);
  (void)kDummy;

  int idx = ::google::protobuf::internal::LookUpEnumName(OptimizationTarget_entries,
                                  OptimizationTarget_entries_by_number,
                                  77, value);
  return idx == -1 ? ::google::protobuf::internal::GetEmptyString() : OptimizationTarget_strings[idx].get();
}
PROTOBUF_CONSTINIT const uint32_t ModelEngineVersion_internal_data_[] = {
    65536u, 32u, 4194302u, };
static const char ModelEngineVersion_names[] = {
    "MODEL_ENGINE_VERSION_TFLITE_2_10"
    "MODEL_ENGINE_VERSION_TFLITE_2_11"
    "MODEL_ENGINE_VERSION_TFLITE_2_12"
    "MODEL_ENGINE_VERSION_TFLITE_2_13"
    "MODEL_ENGINE_VERSION_TFLITE_2_14"
    "MODEL_ENGINE_VERSION_TFLITE_2_14_1"
    "MODEL_ENGINE_VERSION_TFLITE_2_16"
    "MODEL_ENGINE_VERSION_TFLITE_2_16_1"
    "MODEL_ENGINE_VERSION_TFLITE_2_17"
    "MODEL_ENGINE_VERSION_TFLITE_2_18"
    "MODEL_ENGINE_VERSION_TFLITE_2_20_0"
    "MODEL_ENGINE_VERSION_TFLITE_2_20_1"
    "MODEL_ENGINE_VERSION_TFLITE_2_20_2"
    "MODEL_ENGINE_VERSION_TFLITE_2_22_0"
    "MODEL_ENGINE_VERSION_TFLITE_2_3_0"
    "MODEL_ENGINE_VERSION_TFLITE_2_3_0_1"
    "MODEL_ENGINE_VERSION_TFLITE_2_4"
    "MODEL_ENGINE_VERSION_TFLITE_2_7"
    "MODEL_ENGINE_VERSION_TFLITE_2_8"
    "MODEL_ENGINE_VERSION_TFLITE_2_9"
    "MODEL_ENGINE_VERSION_TFLITE_2_9_0_1"
    "MODEL_ENGINE_VERSION_UNKNOWN"
};

static const ::google::protobuf::internal::EnumEntry ModelEngineVersion_entries[] = {
    {{&ModelEngineVersion_names[0], 32}, 9},
    {{&ModelEngineVersion_names[32], 32}, 10},
    {{&ModelEngineVersion_names[64], 32}, 11},
    {{&ModelEngineVersion_names[96], 32}, 12},
    {{&ModelEngineVersion_names[128], 32}, 13},
    {{&ModelEngineVersion_names[160], 34}, 14},
    {{&ModelEngineVersion_names[194], 32}, 15},
    {{&ModelEngineVersion_names[226], 34}, 16},
    {{&ModelEngineVersion_names[260], 32}, 17},
    {{&ModelEngineVersion_names[292], 32}, 18},
    {{&ModelEngineVersion_names[324], 34}, 19},
    {{&ModelEngineVersion_names[358], 34}, 20},
    {{&ModelEngineVersion_names[392], 34}, 21},
    {{&ModelEngineVersion_names[426], 34}, 22},
    {{&ModelEngineVersion_names[460], 33}, 2},
    {{&ModelEngineVersion_names[493], 35}, 3},
    {{&ModelEngineVersion_names[528], 31}, 4},
    {{&ModelEngineVersion_names[559], 31}, 5},
    {{&ModelEngineVersion_names[590], 31}, 6},
    {{&ModelEngineVersion_names[621], 31}, 7},
    {{&ModelEngineVersion_names[652], 35}, 8},
    {{&ModelEngineVersion_names[687], 28}, 0},
};

static const int ModelEngineVersion_entries_by_number[] = {
    21,  // 0 -> MODEL_ENGINE_VERSION_UNKNOWN
    14,  // 2 -> MODEL_ENGINE_VERSION_TFLITE_2_3_0
    15,  // 3 -> MODEL_ENGINE_VERSION_TFLITE_2_3_0_1
    16,  // 4 -> MODEL_ENGINE_VERSION_TFLITE_2_4
    17,  // 5 -> MODEL_ENGINE_VERSION_TFLITE_2_7
    18,  // 6 -> MODEL_ENGINE_VERSION_TFLITE_2_8
    19,  // 7 -> MODEL_ENGINE_VERSION_TFLITE_2_9
    20,  // 8 -> MODEL_ENGINE_VERSION_TFLITE_2_9_0_1
    0,  // 9 -> MODEL_ENGINE_VERSION_TFLITE_2_10
    1,  // 10 -> MODEL_ENGINE_VERSION_TFLITE_2_11
    2,  // 11 -> MODEL_ENGINE_VERSION_TFLITE_2_12
    3,  // 12 -> MODEL_ENGINE_VERSION_TFLITE_2_13
    4,  // 13 -> MODEL_ENGINE_VERSION_TFLITE_2_14
    5,  // 14 -> MODEL_ENGINE_VERSION_TFLITE_2_14_1
    6,  // 15 -> MODEL_ENGINE_VERSION_TFLITE_2_16
    7,  // 16 -> MODEL_ENGINE_VERSION_TFLITE_2_16_1
    8,  // 17 -> MODEL_ENGINE_VERSION_TFLITE_2_17
    9,  // 18 -> MODEL_ENGINE_VERSION_TFLITE_2_18
    10,  // 19 -> MODEL_ENGINE_VERSION_TFLITE_2_20_0
    11,  // 20 -> MODEL_ENGINE_VERSION_TFLITE_2_20_1
    12,  // 21 -> MODEL_ENGINE_VERSION_TFLITE_2_20_2
    13,  // 22 -> MODEL_ENGINE_VERSION_TFLITE_2_22_0
};

bool ModelEngineVersion_Parse(::absl::string_view name,
                                  ModelEngineVersion* PROTOBUF_NONNULL value) {
  int int_value;
  bool success = ::google::protobuf::internal::LookUpEnumValue(
      ModelEngineVersion_entries, 22, name, &int_value);
  if (success) {
    *value = static_cast<ModelEngineVersion>(int_value);
  }
  return success;
}
static ::google::protobuf::internal::ExplicitlyConstructed<::std::string>
    ModelEngineVersion_strings[22] = {};

const ::std::string& ModelEngineVersion_Name(ModelEngineVersion value) {
  static const bool kDummy = ::google::protobuf::internal::InitializeEnumStrings(
      ModelEngineVersion_entries, ModelEngineVersion_entries_by_number, 22,
      ModelEngineVersion_strings);
  (void)kDummy;

  int idx = ::google::protobuf::internal::LookUpEnumName(ModelEngineVersion_entries,
                                  ModelEngineVersion_entries_by_number,
                                  22, value);
  return idx == -1 ? ::google::protobuf::internal::GetEmptyString() : ModelEngineVersion_strings[idx].get();
}
// ===================================================================

Model::Model(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : ::google::protobuf::MessageLite(arena, Model_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : ::google::protobuf::MessageLite(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:optimization_guide.proto.Model)
}
PROTOBUF_NDEBUG_INLINE Model::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::optimization_guide::proto::Model& from_msg)
      : model_{},
        _cached_size_{0},
        _oneof_case_{from._oneof_case_[0]} {}

Model::Model(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const Model& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : ::google::protobuf::MessageLite(arena, Model_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : ::google::protobuf::MessageLite(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  Model* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::std::string>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  switch (model_case()) {
    case MODEL_NOT_SET:
      break;
      case kDownloadUrl:
        new (&_impl_.model_.download_url_) decltype(_impl_.model_.download_url_){arena, from._impl_.model_.download_url_};
        break;
  }

  // @@protoc_insertion_point(copy_constructor:optimization_guide.proto.Model)
}
PROTOBUF_NDEBUG_INLINE Model::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : model_{},
        _cached_size_{0},
        _oneof_case_{} {}

inline void Model::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
Model::~Model() {
  // @@protoc_insertion_point(destructor:optimization_guide.proto.Model)
  SharedDtor(*this);
}
inline void Model::SharedDtor(MessageLite& self) {
  Model& this_ = static_cast<Model&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::std::string>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  if (this_.has_model()) {
    this_.clear_model();
  }
  this_._impl_.~Impl_();
}

void Model::clear_model() {
// @@protoc_insertion_point(one_of_clear_start:optimization_guide.proto.Model)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  switch (model_case()) {
    case kDownloadUrl: {
      _impl_.model_.download_url_.Destroy();
      break;
    }
    case MODEL_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = MODEL_NOT_SET;
}


#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
const ::google::protobuf::internal::ClassDataLite Model_class_data_ =
    Model::InternalGenerateClassData_(Model_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
Model::GetClassData() const {
  return Model_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
Model::GetClassData() const {
  return Model_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const Model::ParseTableT_
    Model::_table_ =
        Model::InternalGenerateParseTable_(Model_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void Model::Clear() {
// @@protoc_insertion_point(message_clear_start:optimization_guide.proto.Model)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_model();
  _internal_metadata_.Clear<::std::string>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL Model::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const Model& this_ = static_cast<const Model&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL Model::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const Model& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:optimization_guide.proto.Model)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  // string download_url = 5;
  if (this_.model_case() == kDownloadUrl) {
    const ::std::string& _s = this_._internal_download_url();
    target = stream->WriteStringMaybeAliased(5, _s, target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(
        this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).data(),
        static_cast<int>(this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:optimization_guide.proto.Model)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t Model::ByteSizeLong(const MessageLite& base) {
  const Model& this_ = static_cast<const Model&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t Model::ByteSizeLong() const {
  const Model& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:optimization_guide.proto.Model)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void)cached_has_bits;

  switch (this_.model_case()) {
    // string download_url = 5;
    case kDownloadUrl: {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_download_url());
      break;
    }
    case MODEL_NOT_SET: {
      break;
    }
  }
  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    total_size += this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).size();
  }
  this_._impl_._cached_size_.Set(::_pbi::ToCachedSize(total_size));
  return total_size;
}

void Model::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<Model*>(&to_msg);
  auto& from = static_cast<const Model&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:optimization_guide.proto.Model)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  if (const uint32_t oneof_from_case =
          from._impl_._oneof_case_[0]) {
    const uint32_t oneof_to_case = _this->_impl_._oneof_case_[0];
    const bool oneof_needs_init = oneof_to_case != oneof_from_case;
    if (oneof_needs_init) {
      if (oneof_to_case != 0) {
        _this->clear_model();
      }
      _this->_impl_._oneof_case_[0] = oneof_from_case;
    }

    switch (oneof_from_case) {
      case kDownloadUrl: {
        if (oneof_needs_init) {
          _this->_impl_.model_.download_url_.InitDefault();
        }
        _this->_impl_.model_.download_url_.Set(from._internal_download_url(), arena);
        break;
      }
      case MODEL_NOT_SET:
        break;
    }
  }
  _this->_internal_metadata_.MergeFrom<::std::string>(
      from._internal_metadata_);
}

void Model::CopyFrom(const Model& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:optimization_guide.proto.Model)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}


void Model::InternalSwap(Model* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.model_, other->_impl_.model_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

// ===================================================================

void GetModelsRequest::clear_origin_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.origin_info_ != nullptr) _impl_.origin_info_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
GetModelsRequest::GetModelsRequest(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : ::google::protobuf::MessageLite(arena, GetModelsRequest_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : ::google::protobuf::MessageLite(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:optimization_guide.proto.GetModelsRequest)
}
PROTOBUF_NDEBUG_INLINE GetModelsRequest::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::optimization_guide::proto::GetModelsRequest& from_msg)
      : _has_bits_{from._has_bits_},
        _cached_size_{0},
        requested_models_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::optimization_guide::proto::GetModelsRequest,
              PROTOBUF_FIELD_OFFSET(::optimization_guide::proto::GetModelsRequest, _impl_.requested_models_)>()
          , from.requested_models_
        }
        ,
        locale_(arena, from.locale_) {}

GetModelsRequest::GetModelsRequest(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const GetModelsRequest& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : ::google::protobuf::MessageLite(arena, GetModelsRequest_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : ::google::protobuf::MessageLite(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  GetModelsRequest* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::std::string>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.origin_info_ = (CheckHasBit(cached_has_bits, 0x00000004U))
                ? ::google::protobuf::MessageLite::CopyConstruct(arena, *from._impl_.origin_info_)
                : nullptr;
  _impl_.request_context_ = from._impl_.request_context_;

  // @@protoc_insertion_point(copy_constructor:optimization_guide.proto.GetModelsRequest)
}
PROTOBUF_NDEBUG_INLINE GetModelsRequest::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : _cached_size_{0},
        requested_models_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::optimization_guide::proto::GetModelsRequest,
            PROTOBUF_FIELD_OFFSET(::optimization_guide::proto::GetModelsRequest, _impl_.requested_models_)>()
         }
        ,
        locale_(arena) {}

inline void GetModelsRequest::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, origin_info_),
           0,
           offsetof(Impl_, request_context_) -
               offsetof(Impl_, origin_info_) +
               sizeof(Impl_::request_context_));
}
GetModelsRequest::~GetModelsRequest() {
  // @@protoc_insertion_point(destructor:optimization_guide.proto.GetModelsRequest)
  SharedDtor(*this);
}
inline void GetModelsRequest::SharedDtor(MessageLite& self) {
  GetModelsRequest& this_ = static_cast<GetModelsRequest&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::std::string>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.locale_.Destroy();
  delete this_._impl_.origin_info_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
const ::google::protobuf::internal::ClassDataLite GetModelsRequest_class_data_ =
    GetModelsRequest::InternalGenerateClassData_(GetModelsRequest_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
GetModelsRequest::GetClassData() const {
  return GetModelsRequest_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
GetModelsRequest::GetClassData() const {
  return GetModelsRequest_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const GetModelsRequest::ParseTableT_
    GetModelsRequest::_table_ =
        GetModelsRequest::InternalGenerateParseTable_(GetModelsRequest_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void GetModelsRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:optimization_guide.proto.GetModelsRequest)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.requested_models_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _impl_.locale_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ABSL_DCHECK(_impl_.origin_info_ != nullptr);
      _impl_.origin_info_->Clear();
    }
  }
  _impl_.request_context_ = 0;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::std::string>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL GetModelsRequest::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const GetModelsRequest& this_ = static_cast<const GetModelsRequest&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL GetModelsRequest::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const GetModelsRequest& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:optimization_guide.proto.GetModelsRequest)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // repeated .optimization_guide.proto.ModelInfo requested_models = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_requested_models_size());
         i < n; i++) {
      const auto& repfield = this_._internal_requested_models().Get(i);
      target =
          ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
              1, repfield, repfield.GetCachedSize(),
              target, stream);
    }
  }

  // optional .optimization_guide.proto.RequestContext request_context = 3;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        3, this_._internal_request_context(), target);
  }

  // optional string locale = 5;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    const ::std::string& _s = this_._internal_locale();
    target = stream->WriteStringMaybeAliased(5, _s, target);
  }

  // optional .optimization_guide.proto.OriginInfo origin_info = 6;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        6, *this_._impl_.origin_info_, this_._impl_.origin_info_->GetCachedSize(), target,
        stream);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(
        this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).data(),
        static_cast<int>(this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:optimization_guide.proto.GetModelsRequest)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t GetModelsRequest::ByteSizeLong(const MessageLite& base) {
  const GetModelsRequest& this_ = static_cast<const GetModelsRequest&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t GetModelsRequest::ByteSizeLong() const {
  const GetModelsRequest& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:optimization_guide.proto.GetModelsRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void)cached_has_bits;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000000fU)) {
    // repeated .optimization_guide.proto.ModelInfo requested_models = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1UL * this_._internal_requested_models_size();
      for (const auto& msg : this_._internal_requested_models()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
    // optional string locale = 5;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_locale());
    }
    // optional .optimization_guide.proto.OriginInfo origin_info = 6;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.origin_info_);
    }
    // optional .optimization_guide.proto.RequestContext request_context = 3;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_request_context());
    }
  }
  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    total_size += this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).size();
  }
  this_._impl_._cached_size_.Set(::_pbi::ToCachedSize(total_size));
  return total_size;
}

void GetModelsRequest::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<GetModelsRequest*>(&to_msg);
  auto& from = static_cast<const GetModelsRequest&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:optimization_guide.proto.GetModelsRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000000fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_requested_models()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_requested_models());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_set_locale(from._internal_locale());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ABSL_DCHECK(from._impl_.origin_info_ != nullptr);
      if (_this->_impl_.origin_info_ == nullptr) {
        _this->_impl_.origin_info_ = ::google::protobuf::MessageLite::CopyConstruct(arena, *from._impl_.origin_info_);
      } else {
        _this->_impl_.origin_info_->MergeFrom(*from._impl_.origin_info_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.request_context_ = from._impl_.request_context_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::std::string>(
      from._internal_metadata_);
}

void GetModelsRequest::CopyFrom(const GetModelsRequest& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:optimization_guide.proto.GetModelsRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}


void GetModelsRequest::InternalSwap(GetModelsRequest* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.requested_models_.InternalSwap(&other->_impl_.requested_models_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.locale_, &other->_impl_.locale_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(GetModelsRequest, _impl_.request_context_)
      + sizeof(GetModelsRequest::_impl_.request_context_)
      - PROTOBUF_FIELD_OFFSET(GetModelsRequest, _impl_.origin_info_)>(
          reinterpret_cast<char*>(&_impl_.origin_info_),
          reinterpret_cast<char*>(&other->_impl_.origin_info_));
}

// ===================================================================

GetModelsResponse::GetModelsResponse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : ::google::protobuf::MessageLite(arena, GetModelsResponse_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : ::google::protobuf::MessageLite(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:optimization_guide.proto.GetModelsResponse)
}
PROTOBUF_NDEBUG_INLINE GetModelsResponse::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::optimization_guide::proto::GetModelsResponse& from_msg)
      : _has_bits_{from._has_bits_},
        _cached_size_{0},
        models_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::optimization_guide::proto::GetModelsResponse,
              PROTOBUF_FIELD_OFFSET(::optimization_guide::proto::GetModelsResponse, _impl_.models_)>()
          , from.models_
        }
     {}

GetModelsResponse::GetModelsResponse(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const GetModelsResponse& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : ::google::protobuf::MessageLite(arena, GetModelsResponse_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : ::google::protobuf::MessageLite(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  GetModelsResponse* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::std::string>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);

  // @@protoc_insertion_point(copy_constructor:optimization_guide.proto.GetModelsResponse)
}
PROTOBUF_NDEBUG_INLINE GetModelsResponse::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : _cached_size_{0},
        models_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::optimization_guide::proto::GetModelsResponse,
            PROTOBUF_FIELD_OFFSET(::optimization_guide::proto::GetModelsResponse, _impl_.models_)>()
         }
     {}

inline void GetModelsResponse::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
GetModelsResponse::~GetModelsResponse() {
  // @@protoc_insertion_point(destructor:optimization_guide.proto.GetModelsResponse)
  SharedDtor(*this);
}
inline void GetModelsResponse::SharedDtor(MessageLite& self) {
  GetModelsResponse& this_ = static_cast<GetModelsResponse&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::std::string>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
const ::google::protobuf::internal::ClassDataLite GetModelsResponse_class_data_ =
    GetModelsResponse::InternalGenerateClassData_(GetModelsResponse_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
GetModelsResponse::GetClassData() const {
  return GetModelsResponse_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
GetModelsResponse::GetClassData() const {
  return GetModelsResponse_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const GetModelsResponse::ParseTableT_
    GetModelsResponse::_table_ =
        GetModelsResponse::InternalGenerateParseTable_(GetModelsResponse_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void GetModelsResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:optimization_guide.proto.GetModelsResponse)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _impl_.models_.Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::std::string>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL GetModelsResponse::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const GetModelsResponse& this_ = static_cast<const GetModelsResponse&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL GetModelsResponse::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const GetModelsResponse& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:optimization_guide.proto.GetModelsResponse)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // repeated .optimization_guide.proto.PredictionModel models = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_models_size());
         i < n; i++) {
      const auto& repfield = this_._internal_models().Get(i);
      target =
          ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
              1, repfield, repfield.GetCachedSize(),
              target, stream);
    }
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(
        this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).data(),
        static_cast<int>(this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:optimization_guide.proto.GetModelsResponse)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t GetModelsResponse::ByteSizeLong(const MessageLite& base) {
  const GetModelsResponse& this_ = static_cast<const GetModelsResponse&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t GetModelsResponse::ByteSizeLong() const {
  const GetModelsResponse& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:optimization_guide.proto.GetModelsResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void)cached_has_bits;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
   {
    // repeated .optimization_guide.proto.PredictionModel models = 1;
    cached_has_bits = this_._impl_._has_bits_[0];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1UL * this_._internal_models_size();
      for (const auto& msg : this_._internal_models()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
  }
  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    total_size += this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).size();
  }
  this_._impl_._cached_size_.Set(::_pbi::ToCachedSize(total_size));
  return total_size;
}

void GetModelsResponse::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<GetModelsResponse*>(&to_msg);
  auto& from = static_cast<const GetModelsResponse&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:optimization_guide.proto.GetModelsResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _this->_internal_mutable_models()->InternalMergeFromWithArena(
        ::google::protobuf::MessageLite::internal_visibility(), arena,
        from._internal_models());
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::std::string>(
      from._internal_metadata_);
}

void GetModelsResponse::CopyFrom(const GetModelsResponse& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:optimization_guide.proto.GetModelsResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}


void GetModelsResponse::InternalSwap(GetModelsResponse* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.models_.InternalSwap(&other->_impl_.models_);
}

// ===================================================================

PredictionModel::PredictionModel(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : ::google::protobuf::MessageLite(arena, PredictionModel_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : ::google::protobuf::MessageLite(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:optimization_guide.proto.PredictionModel)
}
PROTOBUF_NDEBUG_INLINE PredictionModel::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::optimization_guide::proto::PredictionModel& from_msg)
      : _has_bits_{from._has_bits_},
        _cached_size_{0} {}

PredictionModel::PredictionModel(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const PredictionModel& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : ::google::protobuf::MessageLite(arena, PredictionModel_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : ::google::protobuf::MessageLite(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  PredictionModel* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::std::string>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.model_info_ = (CheckHasBit(cached_has_bits, 0x00000001U))
                ? ::google::protobuf::MessageLite::CopyConstruct(arena, *from._impl_.model_info_)
                : nullptr;
  _impl_.model_ = (CheckHasBit(cached_has_bits, 0x00000002U))
                ? ::google::protobuf::MessageLite::CopyConstruct(arena, *from._impl_.model_)
                : nullptr;

  // @@protoc_insertion_point(copy_constructor:optimization_guide.proto.PredictionModel)
}
PROTOBUF_NDEBUG_INLINE PredictionModel::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : _cached_size_{0} {}

inline void PredictionModel::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, model_info_),
           0,
           offsetof(Impl_, model_) -
               offsetof(Impl_, model_info_) +
               sizeof(Impl_::model_));
}
PredictionModel::~PredictionModel() {
  // @@protoc_insertion_point(destructor:optimization_guide.proto.PredictionModel)
  SharedDtor(*this);
}
inline void PredictionModel::SharedDtor(MessageLite& self) {
  PredictionModel& this_ = static_cast<PredictionModel&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::std::string>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  delete this_._impl_.model_info_;
  delete this_._impl_.model_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
const ::google::protobuf::internal::ClassDataLite PredictionModel_class_data_ =
    PredictionModel::InternalGenerateClassData_(PredictionModel_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
PredictionModel::GetClassData() const {
  return PredictionModel_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
PredictionModel::GetClassData() const {
  return PredictionModel_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const PredictionModel::ParseTableT_
    PredictionModel::_table_ =
        PredictionModel::InternalGenerateParseTable_(PredictionModel_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void PredictionModel::Clear() {
// @@protoc_insertion_point(message_clear_start:optimization_guide.proto.PredictionModel)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(_impl_.model_info_ != nullptr);
      _impl_.model_info_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(_impl_.model_ != nullptr);
      _impl_.model_->Clear();
    }
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::std::string>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL PredictionModel::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const PredictionModel& this_ = static_cast<const PredictionModel&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL PredictionModel::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const PredictionModel& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:optimization_guide.proto.PredictionModel)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional .optimization_guide.proto.ModelInfo model_info = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        1, *this_._impl_.model_info_, this_._impl_.model_info_->GetCachedSize(), target,
        stream);
  }

  // optional .optimization_guide.proto.Model model = 2;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        2, *this_._impl_.model_, this_._impl_.model_->GetCachedSize(), target,
        stream);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(
        this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).data(),
        static_cast<int>(this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:optimization_guide.proto.PredictionModel)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t PredictionModel::ByteSizeLong(const MessageLite& base) {
  const PredictionModel& this_ = static_cast<const PredictionModel&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t PredictionModel::ByteSizeLong() const {
  const PredictionModel& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:optimization_guide.proto.PredictionModel)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void)cached_has_bits;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    // optional .optimization_guide.proto.ModelInfo model_info = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.model_info_);
    }
    // optional .optimization_guide.proto.Model model = 2;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.model_);
    }
  }
  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    total_size += this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).size();
  }
  this_._impl_._cached_size_.Set(::_pbi::ToCachedSize(total_size));
  return total_size;
}

void PredictionModel::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<PredictionModel*>(&to_msg);
  auto& from = static_cast<const PredictionModel&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:optimization_guide.proto.PredictionModel)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(from._impl_.model_info_ != nullptr);
      if (_this->_impl_.model_info_ == nullptr) {
        _this->_impl_.model_info_ = ::google::protobuf::MessageLite::CopyConstruct(arena, *from._impl_.model_info_);
      } else {
        _this->_impl_.model_info_->MergeFrom(*from._impl_.model_info_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(from._impl_.model_ != nullptr);
      if (_this->_impl_.model_ == nullptr) {
        _this->_impl_.model_ = ::google::protobuf::MessageLite::CopyConstruct(arena, *from._impl_.model_);
      } else {
        _this->_impl_.model_->MergeFrom(*from._impl_.model_);
      }
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::std::string>(
      from._internal_metadata_);
}

void PredictionModel::CopyFrom(const PredictionModel& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:optimization_guide.proto.PredictionModel)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}


void PredictionModel::InternalSwap(PredictionModel* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(PredictionModel, _impl_.model_)
      + sizeof(PredictionModel::_impl_.model_)
      - PROTOBUF_FIELD_OFFSET(PredictionModel, _impl_.model_info_)>(
          reinterpret_cast<char*>(&_impl_.model_info_),
          reinterpret_cast<char*>(&other->_impl_.model_info_));
}

// ===================================================================

AdditionalModelFile::AdditionalModelFile(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : ::google::protobuf::MessageLite(arena, AdditionalModelFile_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : ::google::protobuf::MessageLite(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:optimization_guide.proto.AdditionalModelFile)
}
PROTOBUF_NDEBUG_INLINE AdditionalModelFile::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::optimization_guide::proto::AdditionalModelFile& from_msg)
      : _has_bits_{from._has_bits_},
        _cached_size_{0},
        file_path_(arena, from.file_path_) {}

AdditionalModelFile::AdditionalModelFile(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const AdditionalModelFile& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : ::google::protobuf::MessageLite(arena, AdditionalModelFile_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : ::google::protobuf::MessageLite(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  AdditionalModelFile* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::std::string>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);

  // @@protoc_insertion_point(copy_constructor:optimization_guide.proto.AdditionalModelFile)
}
PROTOBUF_NDEBUG_INLINE AdditionalModelFile::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : _cached_size_{0},
        file_path_(arena) {}

inline void AdditionalModelFile::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
AdditionalModelFile::~AdditionalModelFile() {
  // @@protoc_insertion_point(destructor:optimization_guide.proto.AdditionalModelFile)
  SharedDtor(*this);
}
inline void AdditionalModelFile::SharedDtor(MessageLite& self) {
  AdditionalModelFile& this_ = static_cast<AdditionalModelFile&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::std::string>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.file_path_.Destroy();
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
const ::google::protobuf::internal::ClassDataLite AdditionalModelFile_class_data_ =
    AdditionalModelFile::InternalGenerateClassData_(AdditionalModelFile_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
AdditionalModelFile::GetClassData() const {
  return AdditionalModelFile_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
AdditionalModelFile::GetClassData() const {
  return AdditionalModelFile_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const AdditionalModelFile::ParseTableT_
    AdditionalModelFile::_table_ =
        AdditionalModelFile::InternalGenerateParseTable_(AdditionalModelFile_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void AdditionalModelFile::Clear() {
// @@protoc_insertion_point(message_clear_start:optimization_guide.proto.AdditionalModelFile)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _impl_.file_path_.ClearNonDefaultToEmpty();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::std::string>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL AdditionalModelFile::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const AdditionalModelFile& this_ = static_cast<const AdditionalModelFile&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL AdditionalModelFile::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const AdditionalModelFile& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:optimization_guide.proto.AdditionalModelFile)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional string file_path = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    const ::std::string& _s = this_._internal_file_path();
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(
        this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).data(),
        static_cast<int>(this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:optimization_guide.proto.AdditionalModelFile)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t AdditionalModelFile::ByteSizeLong(const MessageLite& base) {
  const AdditionalModelFile& this_ = static_cast<const AdditionalModelFile&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t AdditionalModelFile::ByteSizeLong() const {
  const AdditionalModelFile& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:optimization_guide.proto.AdditionalModelFile)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void)cached_has_bits;

   {
    // optional string file_path = 1;
    cached_has_bits = this_._impl_._has_bits_[0];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_file_path());
    }
  }
  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    total_size += this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).size();
  }
  this_._impl_._cached_size_.Set(::_pbi::ToCachedSize(total_size));
  return total_size;
}

void AdditionalModelFile::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<AdditionalModelFile*>(&to_msg);
  auto& from = static_cast<const AdditionalModelFile&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:optimization_guide.proto.AdditionalModelFile)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _this->_internal_set_file_path(from._internal_file_path());
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::std::string>(
      from._internal_metadata_);
}

void AdditionalModelFile::CopyFrom(const AdditionalModelFile& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:optimization_guide.proto.AdditionalModelFile)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}


void AdditionalModelFile::InternalSwap(AdditionalModelFile* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.file_path_, &other->_impl_.file_path_, arena);
}

// ===================================================================

void ModelInfo::clear_valid_duration() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.valid_duration_ != nullptr) _impl_.valid_duration_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
void ModelInfo::clear_model_metadata() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.model_metadata_ != nullptr) _impl_.model_metadata_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
ModelInfo::ModelInfo(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : ::google::protobuf::MessageLite(arena, ModelInfo_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : ::google::protobuf::MessageLite(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:optimization_guide.proto.ModelInfo)
}
PROTOBUF_NDEBUG_INLINE ModelInfo::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::optimization_guide::proto::ModelInfo& from_msg)
      : _has_bits_{from._has_bits_},
        _cached_size_{0},
        supported_model_engine_versions_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::optimization_guide::proto::ModelInfo,
              PROTOBUF_FIELD_OFFSET(::optimization_guide::proto::ModelInfo, _impl_.supported_model_engine_versions_)>()
          , from.supported_model_engine_versions_
        }
        ,
        supported_host_model_features_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::optimization_guide::proto::ModelInfo,
              PROTOBUF_FIELD_OFFSET(::optimization_guide::proto::ModelInfo, _impl_.supported_host_model_features_)>()
          , from.supported_host_model_features_
        }
        ,
        additional_files_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::optimization_guide::proto::ModelInfo,
              PROTOBUF_FIELD_OFFSET(::optimization_guide::proto::ModelInfo, _impl_.additional_files_)>()
          , from.additional_files_
        }
     {}

ModelInfo::ModelInfo(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const ModelInfo& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : ::google::protobuf::MessageLite(arena, ModelInfo_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : ::google::protobuf::MessageLite(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  ModelInfo* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::std::string>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.model_metadata_ = (CheckHasBit(cached_has_bits, 0x00000008U))
                ? ::google::protobuf::MessageLite::CopyConstruct(arena, *from._impl_.model_metadata_)
                : nullptr;
  _impl_.valid_duration_ = (CheckHasBit(cached_has_bits, 0x00000010U))
                ? ::google::protobuf::MessageLite::CopyConstruct(arena, *from._impl_.valid_duration_)
                : nullptr;
  _impl_.model_cache_key_ = (CheckHasBit(cached_has_bits, 0x00000020U))
                ? ::google::protobuf::MessageLite::CopyConstruct(arena, *from._impl_.model_cache_key_)
                : nullptr;
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, version_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, version_),
           offsetof(Impl_, keep_beyond_valid_duration_) -
               offsetof(Impl_, version_) +
               sizeof(Impl_::keep_beyond_valid_duration_));

  // @@protoc_insertion_point(copy_constructor:optimization_guide.proto.ModelInfo)
}
PROTOBUF_NDEBUG_INLINE ModelInfo::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : _cached_size_{0},
        supported_model_engine_versions_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::optimization_guide::proto::ModelInfo,
            PROTOBUF_FIELD_OFFSET(::optimization_guide::proto::ModelInfo, _impl_.supported_model_engine_versions_)>()
         }
        ,
        supported_host_model_features_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::optimization_guide::proto::ModelInfo,
            PROTOBUF_FIELD_OFFSET(::optimization_guide::proto::ModelInfo, _impl_.supported_host_model_features_)>()
         }
        ,
        additional_files_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::optimization_guide::proto::ModelInfo,
            PROTOBUF_FIELD_OFFSET(::optimization_guide::proto::ModelInfo, _impl_.additional_files_)>()
         }
     {}

inline void ModelInfo::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, model_metadata_),
           0,
           offsetof(Impl_, keep_beyond_valid_duration_) -
               offsetof(Impl_, model_metadata_) +
               sizeof(Impl_::keep_beyond_valid_duration_));
}
ModelInfo::~ModelInfo() {
  // @@protoc_insertion_point(destructor:optimization_guide.proto.ModelInfo)
  SharedDtor(*this);
}
inline void ModelInfo::SharedDtor(MessageLite& self) {
  ModelInfo& this_ = static_cast<ModelInfo&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::std::string>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  delete this_._impl_.model_metadata_;
  delete this_._impl_.valid_duration_;
  delete this_._impl_.model_cache_key_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
const ::google::protobuf::internal::ClassDataLite ModelInfo_class_data_ =
    ModelInfo::InternalGenerateClassData_(ModelInfo_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ModelInfo::GetClassData() const {
  return ModelInfo_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ModelInfo::GetClassData() const {
  return ModelInfo_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ModelInfo::ParseTableT_
    ModelInfo::_table_ =
        ModelInfo::InternalGenerateParseTable_(ModelInfo_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ModelInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:optimization_guide.proto.ModelInfo)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000003fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.supported_model_engine_versions_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _impl_.supported_host_model_features_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _impl_.additional_files_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      ABSL_DCHECK(_impl_.model_metadata_ != nullptr);
      _impl_.model_metadata_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ABSL_DCHECK(_impl_.valid_duration_ != nullptr);
      _impl_.valid_duration_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(_impl_.model_cache_key_ != nullptr);
      _impl_.model_cache_key_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x000000c0U)) {
    ::memset(&_impl_.version_, 0, static_cast<::size_t>(
        reinterpret_cast<char*>(&_impl_.optimization_target_) -
        reinterpret_cast<char*>(&_impl_.version_)) + sizeof(_impl_.optimization_target_));
  }
  _impl_.keep_beyond_valid_duration_ = false;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::std::string>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ModelInfo::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ModelInfo& this_ = static_cast<const ModelInfo&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ModelInfo::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ModelInfo& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:optimization_guide.proto.ModelInfo)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional .optimization_guide.proto.OptimizationTarget optimization_target = 1;
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        1, this_._internal_optimization_target(), target);
  }

  // optional int64 version = 2;
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt64ToArrayWithField<2>(
            stream, this_._internal_version(), target);
  }

  // repeated .optimization_guide.proto.ModelEngineVersion supported_model_engine_versions = 4;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_supported_model_engine_versions_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteEnumToArray(
          4, static_cast<::optimization_guide::proto::ModelEngineVersion>(this_._internal_supported_model_engine_versions().Get(i)),
          target);
    }
  }

  // repeated string supported_host_model_features = 5;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    for (int i = 0, n = this_._internal_supported_host_model_features_size(); i < n; ++i) {
      const auto& s = this_._internal_supported_host_model_features().Get(i);
      target = stream->WriteString(5, s, target);
    }
  }

  // optional .optimization_guide.proto.Any model_metadata = 6;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        6, *this_._impl_.model_metadata_, this_._impl_.model_metadata_->GetCachedSize(), target,
        stream);
  }

  // repeated .optimization_guide.proto.AdditionalModelFile additional_files = 7;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_additional_files_size());
         i < n; i++) {
      const auto& repfield = this_._internal_additional_files().Get(i);
      target =
          ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
              7, repfield, repfield.GetCachedSize(),
              target, stream);
    }
  }

  // optional .optimization_guide.proto.Duration valid_duration = 8;
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        8, *this_._impl_.valid_duration_, this_._impl_.valid_duration_->GetCachedSize(), target,
        stream);
  }

  // optional bool keep_beyond_valid_duration = 9;
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        9, this_._internal_keep_beyond_valid_duration(), target);
  }

  // optional .optimization_guide.proto.ModelCacheKey model_cache_key = 10;
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        10, *this_._impl_.model_cache_key_, this_._impl_.model_cache_key_->GetCachedSize(), target,
        stream);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(
        this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).data(),
        static_cast<int>(this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:optimization_guide.proto.ModelInfo)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ModelInfo::ByteSizeLong(const MessageLite& base) {
  const ModelInfo& this_ = static_cast<const ModelInfo&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ModelInfo::ByteSizeLong() const {
  const ModelInfo& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:optimization_guide.proto.ModelInfo)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void)cached_has_bits;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000100U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    // repeated .optimization_guide.proto.ModelEngineVersion supported_model_engine_versions = 4;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ::size_t data_size =
          ::_pbi::WireFormatLite::EnumSize(this_._internal_supported_model_engine_versions());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_supported_model_engine_versions_size());
      total_size += data_size + tag_size;
    }
    // repeated string supported_host_model_features = 5;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size +=
          1 * ::google::protobuf::internal::FromIntSize(this_._internal_supported_host_model_features().size());
      for (int i = 0, n = this_._internal_supported_host_model_features().size(); i < n; ++i) {
        total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
            this_._internal_supported_host_model_features().Get(i));
      }
    }
    // repeated .optimization_guide.proto.AdditionalModelFile additional_files = 7;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 1UL * this_._internal_additional_files_size();
      for (const auto& msg : this_._internal_additional_files()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
    // optional .optimization_guide.proto.Any model_metadata = 6;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.model_metadata_);
    }
    // optional .optimization_guide.proto.Duration valid_duration = 8;
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.valid_duration_);
    }
    // optional .optimization_guide.proto.ModelCacheKey model_cache_key = 10;
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.model_cache_key_);
    }
    // optional int64 version = 2;
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      total_size += ::_pbi::WireFormatLite::Int64SizePlusOne(
          this_._internal_version());
    }
    // optional .optimization_guide.proto.OptimizationTarget optimization_target = 1;
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_optimization_target());
    }
  }
  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    total_size += this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).size();
  }
  this_._impl_._cached_size_.Set(::_pbi::ToCachedSize(total_size));
  return total_size;
}

void ModelInfo::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ModelInfo*>(&to_msg);
  auto& from = static_cast<const ModelInfo&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:optimization_guide.proto.ModelInfo)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_supported_model_engine_versions()->MergeFrom(from._internal_supported_model_engine_versions());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_mutable_supported_host_model_features()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_supported_host_model_features());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_internal_mutable_additional_files()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_additional_files());
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      ABSL_DCHECK(from._impl_.model_metadata_ != nullptr);
      if (_this->_impl_.model_metadata_ == nullptr) {
        _this->_impl_.model_metadata_ = ::google::protobuf::MessageLite::CopyConstruct(arena, *from._impl_.model_metadata_);
      } else {
        _this->_impl_.model_metadata_->MergeFrom(*from._impl_.model_metadata_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ABSL_DCHECK(from._impl_.valid_duration_ != nullptr);
      if (_this->_impl_.valid_duration_ == nullptr) {
        _this->_impl_.valid_duration_ = ::google::protobuf::MessageLite::CopyConstruct(arena, *from._impl_.valid_duration_);
      } else {
        _this->_impl_.valid_duration_->MergeFrom(*from._impl_.valid_duration_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(from._impl_.model_cache_key_ != nullptr);
      if (_this->_impl_.model_cache_key_ == nullptr) {
        _this->_impl_.model_cache_key_ = ::google::protobuf::MessageLite::CopyConstruct(arena, *from._impl_.model_cache_key_);
      } else {
        _this->_impl_.model_cache_key_->MergeFrom(*from._impl_.model_cache_key_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_impl_.version_ = from._impl_.version_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      _this->_impl_.optimization_target_ = from._impl_.optimization_target_;
    }
  }
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    _this->_impl_.keep_beyond_valid_duration_ = from._impl_.keep_beyond_valid_duration_;
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::std::string>(
      from._internal_metadata_);
}

void ModelInfo::CopyFrom(const ModelInfo& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:optimization_guide.proto.ModelInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}


void ModelInfo::InternalSwap(ModelInfo* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.supported_model_engine_versions_.InternalSwap(&other->_impl_.supported_model_engine_versions_);
  _impl_.supported_host_model_features_.InternalSwap(&other->_impl_.supported_host_model_features_);
  _impl_.additional_files_.InternalSwap(&other->_impl_.additional_files_);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.keep_beyond_valid_duration_)
      + sizeof(ModelInfo::_impl_.keep_beyond_valid_duration_)
      - PROTOBUF_FIELD_OFFSET(ModelInfo, _impl_.model_metadata_)>(
          reinterpret_cast<char*>(&_impl_.model_metadata_),
          reinterpret_cast<char*>(&other->_impl_.model_metadata_));
}

// ===================================================================

ModelCacheKey::ModelCacheKey(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : ::google::protobuf::MessageLite(arena, ModelCacheKey_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : ::google::protobuf::MessageLite(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:optimization_guide.proto.ModelCacheKey)
}
PROTOBUF_NDEBUG_INLINE ModelCacheKey::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::optimization_guide::proto::ModelCacheKey& from_msg)
      : _has_bits_{from._has_bits_},
        _cached_size_{0},
        locale_(arena, from.locale_) {}

ModelCacheKey::ModelCacheKey(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const ModelCacheKey& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : ::google::protobuf::MessageLite(arena, ModelCacheKey_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : ::google::protobuf::MessageLite(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  ModelCacheKey* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::std::string>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);

  // @@protoc_insertion_point(copy_constructor:optimization_guide.proto.ModelCacheKey)
}
PROTOBUF_NDEBUG_INLINE ModelCacheKey::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : _cached_size_{0},
        locale_(arena) {}

inline void ModelCacheKey::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
ModelCacheKey::~ModelCacheKey() {
  // @@protoc_insertion_point(destructor:optimization_guide.proto.ModelCacheKey)
  SharedDtor(*this);
}
inline void ModelCacheKey::SharedDtor(MessageLite& self) {
  ModelCacheKey& this_ = static_cast<ModelCacheKey&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::std::string>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.locale_.Destroy();
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
const ::google::protobuf::internal::ClassDataLite ModelCacheKey_class_data_ =
    ModelCacheKey::InternalGenerateClassData_(ModelCacheKey_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ModelCacheKey::GetClassData() const {
  return ModelCacheKey_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ModelCacheKey::GetClassData() const {
  return ModelCacheKey_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ModelCacheKey::ParseTableT_
    ModelCacheKey::_table_ =
        ModelCacheKey::InternalGenerateParseTable_(ModelCacheKey_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ModelCacheKey::Clear() {
// @@protoc_insertion_point(message_clear_start:optimization_guide.proto.ModelCacheKey)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _impl_.locale_.ClearNonDefaultToEmpty();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::std::string>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ModelCacheKey::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ModelCacheKey& this_ = static_cast<const ModelCacheKey&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ModelCacheKey::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ModelCacheKey& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:optimization_guide.proto.ModelCacheKey)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional string locale = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    const ::std::string& _s = this_._internal_locale();
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(
        this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).data(),
        static_cast<int>(this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:optimization_guide.proto.ModelCacheKey)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ModelCacheKey::ByteSizeLong(const MessageLite& base) {
  const ModelCacheKey& this_ = static_cast<const ModelCacheKey&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ModelCacheKey::ByteSizeLong() const {
  const ModelCacheKey& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:optimization_guide.proto.ModelCacheKey)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void)cached_has_bits;

   {
    // optional string locale = 1;
    cached_has_bits = this_._impl_._has_bits_[0];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_locale());
    }
  }
  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    total_size += this_._internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString).size();
  }
  this_._impl_._cached_size_.Set(::_pbi::ToCachedSize(total_size));
  return total_size;
}

void ModelCacheKey::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ModelCacheKey*>(&to_msg);
  auto& from = static_cast<const ModelCacheKey&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:optimization_guide.proto.ModelCacheKey)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _this->_internal_set_locale(from._internal_locale());
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::std::string>(
      from._internal_metadata_);
}

void ModelCacheKey::CopyFrom(const ModelCacheKey& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:optimization_guide.proto.ModelCacheKey)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}


void ModelCacheKey::InternalSwap(ModelCacheKey* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.locale_, &other->_impl_.locale_, arena);
}

// @@protoc_insertion_point(namespace_scope)
}  // namespace proto
}  // namespace optimization_guide
namespace google {
namespace protobuf {
}  // namespace protobuf
}  // namespace google
// @@protoc_insertion_point(global_scope)
#include "google/protobuf/port_undef.inc"
