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

#include "futatabi_midi_mapping.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/descriptor.h"
#include "google/protobuf/generated_message_reflection.h"
#include "google/protobuf/reflection_ops.h"
#include "google/protobuf/wire_format.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;
#ifdef PROTOBUF_MESSAGE_GLOBALS
namespace {
PROTOBUF_CONSTINIT ::google::protobuf::internal::ReflectionData
    file_reflection_data[] = {
        // ::CameraMIDIMappingProto
        {&::_pbi::kDescriptorMethods, &::descriptor_table_futatabi_5fmidi_5fmapping_2eproto, /* tracker*/ nullptr,},
        // ::MIDIMappingProto
        {&::_pbi::kDescriptorMethods, &::descriptor_table_futatabi_5fmidi_5fmapping_2eproto, /* tracker*/ nullptr,},
};
}  // namespace
#endif
class CameraMIDIMappingProto::_Internal {
 public:
  using HasBits = decltype(::std::declval<CameraMIDIMappingProto>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(CameraMIDIMappingProto, _impl_._has_bits_);
};

constexpr CameraMIDIMappingProto::ParseTableT_ CameraMIDIMappingProto::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(CameraMIDIMappingProto, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      2,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::CameraMIDIMappingProto>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional .MIDIButtonProto button = 1;
      {::_pbi::TcParser::FastMtS1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(CameraMIDIMappingProto, _impl_.button_)}},
      // optional int32 bank = 2;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CameraMIDIMappingProto, _impl_.bank_), 2>(),
       {16, 2, 0,
        PROTOBUF_FIELD_OFFSET(CameraMIDIMappingProto, _impl_.bank_)}},
      // optional .MIDILightProto is_current = 3;
      {::_pbi::TcParser::FastMtS1,
       {26, 1, 1,
        PROTOBUF_FIELD_OFFSET(CameraMIDIMappingProto, _impl_.is_current_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional .MIDIButtonProto button = 1;
      {PROTOBUF_FIELD_OFFSET(CameraMIDIMappingProto, _impl_.button_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional int32 bank = 2;
      {PROTOBUF_FIELD_OFFSET(CameraMIDIMappingProto, _impl_.bank_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional .MIDILightProto is_current = 3;
      {PROTOBUF_FIELD_OFFSET(CameraMIDIMappingProto, _impl_.is_current_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDIButtonProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDIButtonProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDILightProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDILightProto_globals_},
        #endif
    }},
    {{
    }},
  };
}


inline constexpr CameraMIDIMappingProto::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : button_{nullptr},
        is_current_{nullptr},
        bank_{0} {}

template <typename>
constexpr CameraMIDIMappingProto::CameraMIDIMappingProto(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL CameraMIDIMappingProto::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) CameraMIDIMappingProto(arena);
}
constexpr auto CameraMIDIMappingProto::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(CameraMIDIMappingProto), alignof(CameraMIDIMappingProto));
}
constexpr auto CameraMIDIMappingProto::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          CameraMIDIMappingProto::IsInitializedImpl,
          &CameraMIDIMappingProto::MergeImpl,
          Super_::GetNewImpl<CameraMIDIMappingProto>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &CameraMIDIMappingProto::SharedDtor,
          Super_::GetClearImpl<CameraMIDIMappingProto>(), &CameraMIDIMappingProto::ByteSizeLong,
              &CameraMIDIMappingProto::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(CameraMIDIMappingProto, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[0],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_futatabi_5fmidi_5fmapping_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct CameraMIDIMappingProtoGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr CameraMIDIMappingProtoGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 CameraMIDIMappingProto_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(CameraMIDIMappingProto::InternalGenerateClassData_(
            _default, &CameraMIDIMappingProto_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<CameraMIDIMappingProto>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~CameraMIDIMappingProtoGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) CameraMIDIMappingProto _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<CameraMIDIMappingProto>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(CameraMIDIMappingProtoGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

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

constexpr MIDIMappingProto::ParseTableT_ MIDIMappingProto::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_._has_bits_),
      0, // no _extensions_
      47, 248,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      24576,  // skipmap
      offsetof(ParseTableT_, field_entries),
      45,  // num_field_entries
      33,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::MIDIMappingProto>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional int32 num_controller_banks = 1 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MIDIMappingProto, _impl_.num_controller_banks_), 22>(),
       {8, 22, 0,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.num_controller_banks_)}},
      // optional .MIDIButtonProto prev_bank = 2;
      {::_pbi::TcParser::FastMtS1,
       {18, 0, 0,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.prev_bank_)}},
      // optional .MIDIButtonProto next_bank = 3;
      {::_pbi::TcParser::FastMtS1,
       {26, 1, 1,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.next_bank_)}},
      // optional .MIDIButtonProto select_bank_1 = 4;
      {::_pbi::TcParser::FastMtS1,
       {34, 2, 2,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.select_bank_1_)}},
      // optional .MIDIButtonProto select_bank_2 = 5;
      {::_pbi::TcParser::FastMtS1,
       {42, 3, 3,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.select_bank_2_)}},
      // optional .MIDIButtonProto select_bank_3 = 6;
      {::_pbi::TcParser::FastMtS1,
       {50, 4, 4,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.select_bank_3_)}},
      // optional .MIDIButtonProto select_bank_4 = 7;
      {::_pbi::TcParser::FastMtS1,
       {58, 5, 5,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.select_bank_4_)}},
      // optional .MIDIButtonProto select_bank_5 = 8;
      {::_pbi::TcParser::FastMtS1,
       {66, 6, 6,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.select_bank_5_)}},
      // optional .MIDILightProto bank_1_is_selected = 9;
      {::_pbi::TcParser::FastMtS1,
       {74, 7, 7,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.bank_1_is_selected_)}},
      // optional .MIDILightProto bank_2_is_selected = 10;
      {::_pbi::TcParser::FastMtS1,
       {82, 8, 8,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.bank_2_is_selected_)}},
      // optional .MIDILightProto bank_3_is_selected = 11;
      {::_pbi::TcParser::FastMtS1,
       {90, 9, 9,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.bank_3_is_selected_)}},
      // optional .MIDILightProto bank_4_is_selected = 12;
      {::_pbi::TcParser::FastMtS1,
       {98, 10, 10,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.bank_4_is_selected_)}},
      // optional .MIDILightProto bank_5_is_selected = 13;
      {::_pbi::TcParser::FastMtS1,
       {106, 11, 11,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.bank_5_is_selected_)}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      // optional .MIDIControllerProto jog = 16;
      {::_pbi::TcParser::FastMtS2,
       {386, 12, 12,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.jog_)}},
      // optional int32 jog_bank = 17;
      {::_pbi::TcParser::FastV32S2,
       {392, 23, 0,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.jog_bank_)}},
      // optional .MIDIButtonProto preview = 18;
      {::_pbi::TcParser::FastMtS2,
       {402, 13, 13,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.preview_)}},
      // optional int32 preview_bank = 19;
      {::_pbi::TcParser::FastV32S2,
       {408, 24, 0,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.preview_bank_)}},
      // optional .MIDILightProto preview_ready = 20;
      {::_pbi::TcParser::FastMtS2,
       {418, 14, 14,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.preview_ready_)}},
      // optional .MIDIButtonProto queue = 21;
      {::_pbi::TcParser::FastMtS2,
       {426, 15, 15,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.queue_)}},
      // optional int32 queue_bank = 22;
      {::_pbi::TcParser::FastV32S2,
       {432, 25, 0,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.queue_bank_)}},
      // optional .MIDILightProto queue_enabled = 23;
      {::_pbi::TcParser::FastMtS2,
       {442, 16, 16,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.queue_enabled_)}},
      // optional .MIDIButtonProto play = 24;
      {::_pbi::TcParser::FastMtS2,
       {450, 17, 17,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.play_)}},
      // optional int32 play_bank = 25;
      {::_pbi::TcParser::FastV32S2,
       {456, 26, 0,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.play_bank_)}},
      // optional .MIDILightProto playing = 26;
      {::_pbi::TcParser::FastMtS2,
       {466, 18, 18,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.playing_)}},
      // optional .MIDIButtonProto cue_in = 27;
      {::_pbi::TcParser::FastMtS2,
       {474, 19, 19,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.cue_in_)}},
      // optional int32 cue_in_bank = 28;
      {::_pbi::TcParser::FastV32S2,
       {480, 27, 0,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.cue_in_bank_)}},
      // optional .MIDILightProto cue_in_enabled = 29;
      {::_pbi::TcParser::FastMtS2,
       {490, 20, 20,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.cue_in_enabled_)}},
      // optional .MIDIButtonProto cue_out = 30;
      {::_pbi::TcParser::FastMtS2,
       {498, 21, 21,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.cue_out_)}},
      // optional int32 cue_out_bank = 31;
      {::_pbi::TcParser::FastV32S2,
       {504, 28, 0,
        PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.cue_out_bank_)}},
    }}, {{
      33, 0, 1,
      32768, 30,
      65535, 65535
    }}, {{
      // optional int32 num_controller_banks = 1 [default = 0];
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.num_controller_banks_), _Internal::kHasBitsOffset + 22, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional .MIDIButtonProto prev_bank = 2;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.prev_bank_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDIButtonProto next_bank = 3;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.next_bank_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDIButtonProto select_bank_1 = 4;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.select_bank_1_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDIButtonProto select_bank_2 = 5;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.select_bank_2_), _Internal::kHasBitsOffset + 3, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDIButtonProto select_bank_3 = 6;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.select_bank_3_), _Internal::kHasBitsOffset + 4, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDIButtonProto select_bank_4 = 7;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.select_bank_4_), _Internal::kHasBitsOffset + 5, 5, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDIButtonProto select_bank_5 = 8;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.select_bank_5_), _Internal::kHasBitsOffset + 6, 6, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDILightProto bank_1_is_selected = 9;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.bank_1_is_selected_), _Internal::kHasBitsOffset + 7, 7, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDILightProto bank_2_is_selected = 10;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.bank_2_is_selected_), _Internal::kHasBitsOffset + 8, 8, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDILightProto bank_3_is_selected = 11;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.bank_3_is_selected_), _Internal::kHasBitsOffset + 9, 9, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDILightProto bank_4_is_selected = 12;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.bank_4_is_selected_), _Internal::kHasBitsOffset + 10, 10, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDILightProto bank_5_is_selected = 13;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.bank_5_is_selected_), _Internal::kHasBitsOffset + 11, 11, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDIControllerProto jog = 16;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.jog_), _Internal::kHasBitsOffset + 12, 12, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional int32 jog_bank = 17;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.jog_bank_), _Internal::kHasBitsOffset + 23, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional .MIDIButtonProto preview = 18;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.preview_), _Internal::kHasBitsOffset + 13, 13, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional int32 preview_bank = 19;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.preview_bank_), _Internal::kHasBitsOffset + 24, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional .MIDILightProto preview_ready = 20;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.preview_ready_), _Internal::kHasBitsOffset + 14, 14, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDIButtonProto queue = 21;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.queue_), _Internal::kHasBitsOffset + 15, 15, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional int32 queue_bank = 22;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.queue_bank_), _Internal::kHasBitsOffset + 25, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional .MIDILightProto queue_enabled = 23;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.queue_enabled_), _Internal::kHasBitsOffset + 16, 16, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDIButtonProto play = 24;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.play_), _Internal::kHasBitsOffset + 17, 17, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional int32 play_bank = 25;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.play_bank_), _Internal::kHasBitsOffset + 26, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional .MIDILightProto playing = 26;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.playing_), _Internal::kHasBitsOffset + 18, 18, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDIButtonProto cue_in = 27;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.cue_in_), _Internal::kHasBitsOffset + 19, 19, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional int32 cue_in_bank = 28;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.cue_in_bank_), _Internal::kHasBitsOffset + 27, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional .MIDILightProto cue_in_enabled = 29;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.cue_in_enabled_), _Internal::kHasBitsOffset + 20, 20, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDIButtonProto cue_out = 30;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.cue_out_), _Internal::kHasBitsOffset + 21, 21, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional int32 cue_out_bank = 31;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.cue_out_bank_), _Internal::kHasBitsOffset + 28, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional .MIDILightProto cue_out_enabled = 32;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.cue_out_enabled_), _Internal::kHasBitsOffset + 30, 22, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated .CameraMIDIMappingProto camera = 33;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.camera_), _Internal::kHasBitsOffset + 29, 23, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDIControllerProto master_speed = 34;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.master_speed_), _Internal::kHasBitsOffset + 31, 24, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional int32 master_speed_bank = 35;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.master_speed_bank_), _Internal::kHasBitsOffset + 40, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional .MIDIButtonProto toggle_lock = 36;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.toggle_lock_), _Internal::kHasBitsOffset + 32, 25, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional int32 toggle_lock_bank = 37;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.toggle_lock_bank_), _Internal::kHasBitsOffset + 41, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional .MIDILightProto locked = 38;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.locked_), _Internal::kHasBitsOffset + 33, 26, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDILightProto locked_blinking = 39;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.locked_blinking_), _Internal::kHasBitsOffset + 34, 27, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDILightProto play_ready = 40;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.play_ready_), _Internal::kHasBitsOffset + 35, 28, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDILightProto preview_playing = 41;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.preview_playing_), _Internal::kHasBitsOffset + 36, 29, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .MIDIControllerProto master_speed_light = 42;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.master_speed_light_), _Internal::kHasBitsOffset + 37, 30, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional int32 master_speed_light_min = 43;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.master_speed_light_min_), _Internal::kHasBitsOffset + 42, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 master_speed_light_max = 44 [default = 127];
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.master_speed_light_max_), _Internal::kHasBitsOffset + 44, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional .MIDIButtonProto next = 45;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.next_), _Internal::kHasBitsOffset + 38, 31, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional int32 next_button_bank = 46;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.next_button_bank_), _Internal::kHasBitsOffset + 43, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional .MIDILightProto next_ready = 47;
      {PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.next_ready_), _Internal::kHasBitsOffset + 39, 32, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDIButtonProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDIButtonProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDIButtonProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDIButtonProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDIButtonProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDIButtonProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDIButtonProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDIButtonProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDIButtonProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDIButtonProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDIButtonProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDIButtonProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDIButtonProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDIButtonProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDILightProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDILightProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDILightProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDILightProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDILightProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDILightProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDILightProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDILightProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDILightProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDILightProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDIControllerProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDIControllerProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDIButtonProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDIButtonProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDILightProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDILightProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDIButtonProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDIButtonProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDILightProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDILightProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDIButtonProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDIButtonProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDILightProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDILightProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDIButtonProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDIButtonProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDILightProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDILightProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDIButtonProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDIButtonProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDILightProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDILightProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::CameraMIDIMappingProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::CameraMIDIMappingProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDIControllerProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDIControllerProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDIButtonProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDIButtonProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDILightProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDILightProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDILightProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDILightProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDILightProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDILightProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDILightProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDILightProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDIControllerProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDIControllerProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDIButtonProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDIButtonProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::MIDILightProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::MIDILightProto_globals_},
        #endif
    }},
    {{
    }},
  };
}


inline constexpr MIDIMappingProto::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : prev_bank_{nullptr},
        next_bank_{nullptr},
        select_bank_1_{nullptr},
        select_bank_2_{nullptr},
        select_bank_3_{nullptr},
        select_bank_4_{nullptr},
        select_bank_5_{nullptr},
        bank_1_is_selected_{nullptr},
        bank_2_is_selected_{nullptr},
        bank_3_is_selected_{nullptr},
        bank_4_is_selected_{nullptr},
        bank_5_is_selected_{nullptr},
        jog_{nullptr},
        preview_{nullptr},
        preview_ready_{nullptr},
        queue_{nullptr},
        queue_enabled_{nullptr},
        play_{nullptr},
        playing_{nullptr},
        cue_in_{nullptr},
        cue_in_enabled_{nullptr},
        cue_out_{nullptr},
        num_controller_banks_{0},
        jog_bank_{0},
        preview_bank_{0},
        queue_bank_{0},
        play_bank_{0},
        cue_in_bank_{0},
        cue_out_bank_{0},
        camera_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::MIDIMappingProto,
            PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.camera_)>()
         }
        ,
        cue_out_enabled_{nullptr},
        master_speed_{nullptr},
        toggle_lock_{nullptr},
        locked_{nullptr},
        locked_blinking_{nullptr},
        play_ready_{nullptr},
        preview_playing_{nullptr},
        master_speed_light_{nullptr},
        next_{nullptr},
        next_ready_{nullptr},
        master_speed_bank_{0},
        toggle_lock_bank_{0},
        master_speed_light_min_{0},
        next_button_bank_{0},
        master_speed_light_max_{127} {}

template <typename>
constexpr MIDIMappingProto::MIDIMappingProto(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL MIDIMappingProto::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) MIDIMappingProto(arena);
}
constexpr auto MIDIMappingProto::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(MIDIMappingProto), alignof(MIDIMappingProto));
}
constexpr auto MIDIMappingProto::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          MIDIMappingProto::IsInitializedImpl,
          &MIDIMappingProto::MergeImpl,
          Super_::GetNewImpl<MIDIMappingProto>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &MIDIMappingProto::SharedDtor,
          Super_::GetClearImpl<MIDIMappingProto>(), &MIDIMappingProto::ByteSizeLong,
              &MIDIMappingProto::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[1],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_futatabi_5fmidi_5fmapping_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct MIDIMappingProtoGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr MIDIMappingProtoGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 MIDIMappingProto_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(MIDIMappingProto::InternalGenerateClassData_(
            _default, &MIDIMappingProto_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<MIDIMappingProto>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~MIDIMappingProtoGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) MIDIMappingProto _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<MIDIMappingProto>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(MIDIMappingProtoGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST MIDIMappingProtoGlobalsTypeInternal MIDIMappingProto_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* MIDIMappingProto_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return MIDIMappingProto_globals_.GetClassData();
#else
  return MIDIMappingProto_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
static constexpr const ::_pb::EnumDescriptor* PROTOBUF_NONNULL* PROTOBUF_NULLABLE
    file_level_enum_descriptors_futatabi_5fmidi_5fmapping_2eproto = nullptr;
static constexpr const ::_pb::ServiceDescriptor* PROTOBUF_NONNULL* PROTOBUF_NULLABLE
    file_level_service_descriptors_futatabi_5fmidi_5fmapping_2eproto = nullptr;
const ::uint32_t
    TableStruct_futatabi_5fmidi_5fmapping_2eproto::offsets[] ABSL_ATTRIBUTE_SECTION_VARIABLE(
        protodesc_cold) = {
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::CameraMIDIMappingProto, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::CameraMIDIMappingProto, _impl_.button_),
        PROTOBUF_FIELD_OFFSET(::CameraMIDIMappingProto, _impl_.bank_),
        PROTOBUF_FIELD_OFFSET(::CameraMIDIMappingProto, _impl_.is_current_),
        0,
        2,
        1,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_._has_bits_),
        48, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.num_controller_banks_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.prev_bank_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.next_bank_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.select_bank_1_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.select_bank_2_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.select_bank_3_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.select_bank_4_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.select_bank_5_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.bank_1_is_selected_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.bank_2_is_selected_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.bank_3_is_selected_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.bank_4_is_selected_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.bank_5_is_selected_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.jog_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.jog_bank_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.master_speed_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.master_speed_bank_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.master_speed_light_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.master_speed_light_min_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.master_speed_light_max_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.preview_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.preview_bank_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.preview_playing_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.preview_ready_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.queue_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.queue_bank_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.queue_enabled_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.play_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.play_bank_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.playing_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.play_ready_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.next_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.next_button_bank_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.next_ready_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.toggle_lock_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.toggle_lock_bank_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.locked_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.locked_blinking_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.cue_in_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.cue_in_bank_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.cue_in_enabled_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.cue_out_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.cue_out_bank_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.cue_out_enabled_),
        PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.camera_),
        22,
        0,
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        23,
        31,
        40,
        37,
        42,
        44,
        13,
        24,
        36,
        14,
        15,
        25,
        16,
        17,
        26,
        18,
        35,
        38,
        43,
        39,
        32,
        41,
        33,
        34,
        19,
        27,
        20,
        21,
        28,
        30,
        29,
};

static const ::_pbi::MigrationSchema
    schemas[] ABSL_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
        {0, sizeof(::CameraMIDIMappingProto)},
        {9, sizeof(::MIDIMappingProto)},
};
static const ::_pbi::MessageGlobalsBase* PROTOBUF_NONNULL const
    file_message_globals[] = {
        &::CameraMIDIMappingProto_globals_,
        &::MIDIMappingProto_globals_,
};
const char descriptor_table_protodef_futatabi_5fmidi_5fmapping_2eproto[] ABSL_ATTRIBUTE_SECTION_VARIABLE(
    protodesc_cold) = {
    "\n\033futatabi_midi_mapping.proto\032\022midi_mapp"
    "ing.proto\"m\n\026CameraMIDIMappingProto\022 \n\006b"
    "utton\030\001 \001(\0132\020.MIDIButtonProto\022\014\n\004bank\030\002 "
    "\001(\005\022#\n\nis_current\030\003 \001(\0132\017.MIDILightProto"
    "\"\327\014\n\020MIDIMappingProto\022\037\n\024num_controller_"
    "banks\030\001 \001(\005:\0010\022#\n\tprev_bank\030\002 \001(\0132\020.MIDI"
    "ButtonProto\022#\n\tnext_bank\030\003 \001(\0132\020.MIDIBut"
    "tonProto\022\'\n\rselect_bank_1\030\004 \001(\0132\020.MIDIBu"
    "ttonProto\022\'\n\rselect_bank_2\030\005 \001(\0132\020.MIDIB"
    "uttonProto\022\'\n\rselect_bank_3\030\006 \001(\0132\020.MIDI"
    "ButtonProto\022\'\n\rselect_bank_4\030\007 \001(\0132\020.MID"
    "IButtonProto\022\'\n\rselect_bank_5\030\010 \001(\0132\020.MI"
    "DIButtonProto\022+\n\022bank_1_is_selected\030\t \001("
    "\0132\017.MIDILightProto\022+\n\022bank_2_is_selected"
    "\030\n \001(\0132\017.MIDILightProto\022+\n\022bank_3_is_sel"
    "ected\030\013 \001(\0132\017.MIDILightProto\022+\n\022bank_4_i"
    "s_selected\030\014 \001(\0132\017.MIDILightProto\022+\n\022ban"
    "k_5_is_selected\030\r \001(\0132\017.MIDILightProto\022!"
    "\n\003jog\030\020 \001(\0132\024.MIDIControllerProto\022\020\n\010jog"
    "_bank\030\021 \001(\005\022*\n\014master_speed\030\" \001(\0132\024.MIDI"
    "ControllerProto\022\031\n\021master_speed_bank\030# \001"
    "(\005\0220\n\022master_speed_light\030* \001(\0132\024.MIDICon"
    "trollerProto\022\036\n\026master_speed_light_min\030+"
    " \001(\005\022#\n\026master_speed_light_max\030, \001(\005:\00312"
    "7\022!\n\007preview\030\022 \001(\0132\020.MIDIButtonProto\022\024\n\014"
    "preview_bank\030\023 \001(\005\022(\n\017preview_playing\030) "
    "\001(\0132\017.MIDILightProto\022&\n\rpreview_ready\030\024 "
    "\001(\0132\017.MIDILightProto\022\037\n\005queue\030\025 \001(\0132\020.MI"
    "DIButtonProto\022\022\n\nqueue_bank\030\026 \001(\005\022&\n\rque"
    "ue_enabled\030\027 \001(\0132\017.MIDILightProto\022\036\n\004pla"
    "y\030\030 \001(\0132\020.MIDIButtonProto\022\021\n\tplay_bank\030\031"
    " \001(\005\022 \n\007playing\030\032 \001(\0132\017.MIDILightProto\022#"
    "\n\nplay_ready\030( \001(\0132\017.MIDILightProto\022\036\n\004n"
    "ext\030- \001(\0132\020.MIDIButtonProto\022\030\n\020next_butt"
    "on_bank\030. \001(\005\022#\n\nnext_ready\030/ \001(\0132\017.MIDI"
    "LightProto\022%\n\013toggle_lock\030$ \001(\0132\020.MIDIBu"
    "ttonProto\022\030\n\020toggle_lock_bank\030% \001(\005\022\037\n\006l"
    "ocked\030& \001(\0132\017.MIDILightProto\022(\n\017locked_b"
    "linking\030\' \001(\0132\017.MIDILightProto\022 \n\006cue_in"
    "\030\033 \001(\0132\020.MIDIButtonProto\022\023\n\013cue_in_bank\030"
    "\034 \001(\005\022\'\n\016cue_in_enabled\030\035 \001(\0132\017.MIDILigh"
    "tProto\022!\n\007cue_out\030\036 \001(\0132\020.MIDIButtonProt"
    "o\022\024\n\014cue_out_bank\030\037 \001(\005\022(\n\017cue_out_enabl"
    "ed\030  \001(\0132\017.MIDILightProto\022\'\n\006camera\030! \003("
    "\0132\027.CameraMIDIMappingProto"
};
static const ::_pbi::DescriptorTable* PROTOBUF_NONNULL const
    descriptor_table_futatabi_5fmidi_5fmapping_2eproto_deps[1] = {
        &::descriptor_table_midi_5fmapping_2eproto,
};
static ::absl::once_flag descriptor_table_futatabi_5fmidi_5fmapping_2eproto_once;
PROTOBUF_CONSTINIT const ::_pbi::DescriptorTable descriptor_table_futatabi_5fmidi_5fmapping_2eproto = {
    false,
    false,
    1786,
    descriptor_table_protodef_futatabi_5fmidi_5fmapping_2eproto,
    "futatabi_midi_mapping.proto",
    &descriptor_table_futatabi_5fmidi_5fmapping_2eproto_once,
    descriptor_table_futatabi_5fmidi_5fmapping_2eproto_deps,
    1,
    2,
    schemas,
    file_message_globals,
    TableStruct_futatabi_5fmidi_5fmapping_2eproto::offsets,
    file_level_enum_descriptors_futatabi_5fmidi_5fmapping_2eproto,
    file_level_service_descriptors_futatabi_5fmidi_5fmapping_2eproto,
};
// ===================================================================

void CameraMIDIMappingProto::clear_button() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.button_ != nullptr) _impl_.button_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
void CameraMIDIMappingProto::clear_is_current() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.is_current_ != nullptr) _impl_.is_current_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
CameraMIDIMappingProto::CameraMIDIMappingProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, CameraMIDIMappingProto_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:CameraMIDIMappingProto)
}
PROTOBUF_NDEBUG_INLINE CameraMIDIMappingProto::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::CameraMIDIMappingProto& from_msg)
      : _has_bits_{from._has_bits_} {}

CameraMIDIMappingProto::CameraMIDIMappingProto(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const CameraMIDIMappingProto& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, CameraMIDIMappingProto_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  CameraMIDIMappingProto* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.button_ = (CheckHasBit(cached_has_bits, 0x00000001U))
                 ? Super_::CopyConstruct(arena, *from._impl_.button_)
                 : nullptr;
  _impl_.is_current_ = (CheckHasBit(cached_has_bits, 0x00000002U))
                 ? Super_::CopyConstruct(arena, *from._impl_.is_current_)
                 : nullptr;
  _impl_.bank_ = from._impl_.bank_;

  // @@protoc_insertion_point(copy_constructor:CameraMIDIMappingProto)
}
PROTOBUF_NDEBUG_INLINE CameraMIDIMappingProto::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
     {}

inline void CameraMIDIMappingProto::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, button_),
           0,
           offsetof(Impl_, bank_) -
               offsetof(Impl_, button_) +
               sizeof(Impl_::bank_));
}
CameraMIDIMappingProto::~CameraMIDIMappingProto() {
  // @@protoc_insertion_point(destructor:CameraMIDIMappingProto)
  SharedDtor(*this);
}
inline void CameraMIDIMappingProto::SharedDtor(MessageLite& self) {
  CameraMIDIMappingProto& this_ = static_cast<CameraMIDIMappingProto&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  delete this_._impl_.button_;
  delete this_._impl_.is_current_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull CameraMIDIMappingProto_class_data_ =
        CameraMIDIMappingProto::InternalGenerateClassData_(CameraMIDIMappingProto_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
CameraMIDIMappingProto::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&CameraMIDIMappingProto_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(CameraMIDIMappingProto_class_data_.tc_table);
  return CameraMIDIMappingProto_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
CameraMIDIMappingProto::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&CameraMIDIMappingProto_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&CameraMIDIMappingProto_globals_));
  return CameraMIDIMappingProto_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const CameraMIDIMappingProto::ParseTableT_
    CameraMIDIMappingProto::_table_ =
        CameraMIDIMappingProto::InternalGenerateParseTable_(CameraMIDIMappingProto_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void CameraMIDIMappingProto::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:CameraMIDIMappingProto)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(this_._impl_.button_ != nullptr);
      this_._impl_.button_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(this_._impl_.is_current_ != nullptr);
      this_._impl_.is_current_->Clear();
    }
  }
  this_._impl_.bank_ = 0;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

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

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

  // optional int32 bank = 2;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<2>(
            stream, this_._internal_bank(), target);
  }

  // optional .MIDILightProto is_current = 3;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        3, *this_._impl_.is_current_, this_._impl_.is_current_->GetCachedSize(), target,
        stream);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:CameraMIDIMappingProto)
  return target;
}

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

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    // optional .MIDIButtonProto button = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.button_);
    }
    // optional .MIDILightProto is_current = 3;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.is_current_);
    }
    // optional int32 bank = 2;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_bank());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void CameraMIDIMappingProto::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<CameraMIDIMappingProto*>(&to_msg);
  auto& from = static_cast<const CameraMIDIMappingProto&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:CameraMIDIMappingProto)
  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, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(from._impl_.button_ != nullptr);
      if (_this->_impl_.button_ == nullptr) {
        _this->_impl_.button_ = Super_::CopyConstruct(arena, *from._impl_.button_);
      } else {
        _this->_impl_.button_->MergeFrom(*from._impl_.button_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(from._impl_.is_current_ != nullptr);
      if (_this->_impl_.is_current_ == nullptr) {
        _this->_impl_.is_current_ = Super_::CopyConstruct(arena, *from._impl_.is_current_);
      } else {
        _this->_impl_.is_current_->MergeFrom(*from._impl_.is_current_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.bank_ = from._impl_.bank_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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

PROTOBUF_NOINLINE bool CameraMIDIMappingProto::IsInitializedImpl(
    const MessageLite& msg) {
  auto& this_ = static_cast<const CameraMIDIMappingProto&>(msg);
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00000001U)) {
    if (!this_._impl_.button_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00000002U)) {
    if (!this_._impl_.is_current_->IsInitialized()) return false;
  }
  return true;
}

void CameraMIDIMappingProto::InternalSwap(CameraMIDIMappingProto* 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(CameraMIDIMappingProto, _impl_.bank_)
      + sizeof(CameraMIDIMappingProto::_impl_.bank_)
      - PROTOBUF_FIELD_OFFSET(CameraMIDIMappingProto, _impl_.button_)>(
          reinterpret_cast<char*>(&_impl_.button_),
          reinterpret_cast<char*>(&other->_impl_.button_));
}

::google::protobuf::Metadata CameraMIDIMappingProto::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

void MIDIMappingProto::clear_prev_bank() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.prev_bank_ != nullptr) _impl_.prev_bank_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
void MIDIMappingProto::clear_next_bank() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.next_bank_ != nullptr) _impl_.next_bank_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
void MIDIMappingProto::clear_select_bank_1() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.select_bank_1_ != nullptr) _impl_.select_bank_1_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
void MIDIMappingProto::clear_select_bank_2() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.select_bank_2_ != nullptr) _impl_.select_bank_2_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
void MIDIMappingProto::clear_select_bank_3() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.select_bank_3_ != nullptr) _impl_.select_bank_3_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
void MIDIMappingProto::clear_select_bank_4() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.select_bank_4_ != nullptr) _impl_.select_bank_4_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
void MIDIMappingProto::clear_select_bank_5() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.select_bank_5_ != nullptr) _impl_.select_bank_5_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
}
void MIDIMappingProto::clear_bank_1_is_selected() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.bank_1_is_selected_ != nullptr) _impl_.bank_1_is_selected_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
}
void MIDIMappingProto::clear_bank_2_is_selected() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.bank_2_is_selected_ != nullptr) _impl_.bank_2_is_selected_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
}
void MIDIMappingProto::clear_bank_3_is_selected() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.bank_3_is_selected_ != nullptr) _impl_.bank_3_is_selected_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000200U);
}
void MIDIMappingProto::clear_bank_4_is_selected() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.bank_4_is_selected_ != nullptr) _impl_.bank_4_is_selected_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000400U);
}
void MIDIMappingProto::clear_bank_5_is_selected() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.bank_5_is_selected_ != nullptr) _impl_.bank_5_is_selected_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000800U);
}
void MIDIMappingProto::clear_jog() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.jog_ != nullptr) _impl_.jog_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00001000U);
}
void MIDIMappingProto::clear_master_speed() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.master_speed_ != nullptr) _impl_.master_speed_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x80000000U);
}
void MIDIMappingProto::clear_master_speed_light() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.master_speed_light_ != nullptr) _impl_.master_speed_light_->Clear();
  ClearHasBit(_impl_._has_bits_[1], 0x00000020U);
}
void MIDIMappingProto::clear_preview() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.preview_ != nullptr) _impl_.preview_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00002000U);
}
void MIDIMappingProto::clear_preview_playing() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.preview_playing_ != nullptr) _impl_.preview_playing_->Clear();
  ClearHasBit(_impl_._has_bits_[1], 0x00000010U);
}
void MIDIMappingProto::clear_preview_ready() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.preview_ready_ != nullptr) _impl_.preview_ready_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00004000U);
}
void MIDIMappingProto::clear_queue() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.queue_ != nullptr) _impl_.queue_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00008000U);
}
void MIDIMappingProto::clear_queue_enabled() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.queue_enabled_ != nullptr) _impl_.queue_enabled_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00010000U);
}
void MIDIMappingProto::clear_play() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.play_ != nullptr) _impl_.play_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00020000U);
}
void MIDIMappingProto::clear_playing() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.playing_ != nullptr) _impl_.playing_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00040000U);
}
void MIDIMappingProto::clear_play_ready() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.play_ready_ != nullptr) _impl_.play_ready_->Clear();
  ClearHasBit(_impl_._has_bits_[1], 0x00000008U);
}
void MIDIMappingProto::clear_next() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.next_ != nullptr) _impl_.next_->Clear();
  ClearHasBit(_impl_._has_bits_[1], 0x00000040U);
}
void MIDIMappingProto::clear_next_ready() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.next_ready_ != nullptr) _impl_.next_ready_->Clear();
  ClearHasBit(_impl_._has_bits_[1], 0x00000080U);
}
void MIDIMappingProto::clear_toggle_lock() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.toggle_lock_ != nullptr) _impl_.toggle_lock_->Clear();
  ClearHasBit(_impl_._has_bits_[1], 0x00000001U);
}
void MIDIMappingProto::clear_locked() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.locked_ != nullptr) _impl_.locked_->Clear();
  ClearHasBit(_impl_._has_bits_[1], 0x00000002U);
}
void MIDIMappingProto::clear_locked_blinking() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.locked_blinking_ != nullptr) _impl_.locked_blinking_->Clear();
  ClearHasBit(_impl_._has_bits_[1], 0x00000004U);
}
void MIDIMappingProto::clear_cue_in() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.cue_in_ != nullptr) _impl_.cue_in_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00080000U);
}
void MIDIMappingProto::clear_cue_in_enabled() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.cue_in_enabled_ != nullptr) _impl_.cue_in_enabled_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00100000U);
}
void MIDIMappingProto::clear_cue_out() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.cue_out_ != nullptr) _impl_.cue_out_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00200000U);
}
void MIDIMappingProto::clear_cue_out_enabled() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.cue_out_enabled_ != nullptr) _impl_.cue_out_enabled_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x40000000U);
}
MIDIMappingProto::MIDIMappingProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, MIDIMappingProto_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:MIDIMappingProto)
}
PROTOBUF_NDEBUG_INLINE MIDIMappingProto::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::MIDIMappingProto& from_msg)
      : _has_bits_{from._has_bits_},
        camera_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::MIDIMappingProto,
              PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.camera_)>()
          , arena, from.camera_
        }
     {}

MIDIMappingProto::MIDIMappingProto(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const MIDIMappingProto& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, MIDIMappingProto_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  MIDIMappingProto* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.prev_bank_ = (CheckHasBit(cached_has_bits, 0x00000001U))
                 ? Super_::CopyConstruct(arena, *from._impl_.prev_bank_)
                 : nullptr;
  _impl_.next_bank_ = (CheckHasBit(cached_has_bits, 0x00000002U))
                 ? Super_::CopyConstruct(arena, *from._impl_.next_bank_)
                 : nullptr;
  _impl_.select_bank_1_ = (CheckHasBit(cached_has_bits, 0x00000004U))
                 ? Super_::CopyConstruct(arena, *from._impl_.select_bank_1_)
                 : nullptr;
  _impl_.select_bank_2_ = (CheckHasBit(cached_has_bits, 0x00000008U))
                 ? Super_::CopyConstruct(arena, *from._impl_.select_bank_2_)
                 : nullptr;
  _impl_.select_bank_3_ = (CheckHasBit(cached_has_bits, 0x00000010U))
                 ? Super_::CopyConstruct(arena, *from._impl_.select_bank_3_)
                 : nullptr;
  _impl_.select_bank_4_ = (CheckHasBit(cached_has_bits, 0x00000020U))
                 ? Super_::CopyConstruct(arena, *from._impl_.select_bank_4_)
                 : nullptr;
  _impl_.select_bank_5_ = (CheckHasBit(cached_has_bits, 0x00000040U))
                 ? Super_::CopyConstruct(arena, *from._impl_.select_bank_5_)
                 : nullptr;
  _impl_.bank_1_is_selected_ = (CheckHasBit(cached_has_bits, 0x00000080U))
                 ? Super_::CopyConstruct(arena, *from._impl_.bank_1_is_selected_)
                 : nullptr;
  _impl_.bank_2_is_selected_ = (CheckHasBit(cached_has_bits, 0x00000100U))
                 ? Super_::CopyConstruct(arena, *from._impl_.bank_2_is_selected_)
                 : nullptr;
  _impl_.bank_3_is_selected_ = (CheckHasBit(cached_has_bits, 0x00000200U))
                 ? Super_::CopyConstruct(arena, *from._impl_.bank_3_is_selected_)
                 : nullptr;
  _impl_.bank_4_is_selected_ = (CheckHasBit(cached_has_bits, 0x00000400U))
                 ? Super_::CopyConstruct(arena, *from._impl_.bank_4_is_selected_)
                 : nullptr;
  _impl_.bank_5_is_selected_ = (CheckHasBit(cached_has_bits, 0x00000800U))
                 ? Super_::CopyConstruct(arena, *from._impl_.bank_5_is_selected_)
                 : nullptr;
  _impl_.jog_ = (CheckHasBit(cached_has_bits, 0x00001000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.jog_)
                 : nullptr;
  _impl_.preview_ = (CheckHasBit(cached_has_bits, 0x00002000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.preview_)
                 : nullptr;
  _impl_.preview_ready_ = (CheckHasBit(cached_has_bits, 0x00004000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.preview_ready_)
                 : nullptr;
  _impl_.queue_ = (CheckHasBit(cached_has_bits, 0x00008000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.queue_)
                 : nullptr;
  _impl_.queue_enabled_ = (CheckHasBit(cached_has_bits, 0x00010000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.queue_enabled_)
                 : nullptr;
  _impl_.play_ = (CheckHasBit(cached_has_bits, 0x00020000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.play_)
                 : nullptr;
  _impl_.playing_ = (CheckHasBit(cached_has_bits, 0x00040000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.playing_)
                 : nullptr;
  _impl_.cue_in_ = (CheckHasBit(cached_has_bits, 0x00080000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.cue_in_)
                 : nullptr;
  _impl_.cue_in_enabled_ = (CheckHasBit(cached_has_bits, 0x00100000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.cue_in_enabled_)
                 : nullptr;
  _impl_.cue_out_ = (CheckHasBit(cached_has_bits, 0x00200000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.cue_out_)
                 : nullptr;
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, num_controller_banks_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, num_controller_banks_),
           offsetof(Impl_, cue_out_bank_) -
               offsetof(Impl_, num_controller_banks_) +
               sizeof(Impl_::cue_out_bank_));
  _impl_.cue_out_enabled_ = (CheckHasBit(cached_has_bits, 0x40000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.cue_out_enabled_)
                 : nullptr;
  _impl_.master_speed_ = (CheckHasBit(cached_has_bits, 0x80000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.master_speed_)
                 : nullptr;
  cached_has_bits = _impl_._has_bits_[1];
  _impl_.toggle_lock_ = (CheckHasBit(cached_has_bits, 0x00000001U))
                 ? Super_::CopyConstruct(arena, *from._impl_.toggle_lock_)
                 : nullptr;
  _impl_.locked_ = (CheckHasBit(cached_has_bits, 0x00000002U))
                 ? Super_::CopyConstruct(arena, *from._impl_.locked_)
                 : nullptr;
  _impl_.locked_blinking_ = (CheckHasBit(cached_has_bits, 0x00000004U))
                 ? Super_::CopyConstruct(arena, *from._impl_.locked_blinking_)
                 : nullptr;
  _impl_.play_ready_ = (CheckHasBit(cached_has_bits, 0x00000008U))
                 ? Super_::CopyConstruct(arena, *from._impl_.play_ready_)
                 : nullptr;
  _impl_.preview_playing_ = (CheckHasBit(cached_has_bits, 0x00000010U))
                 ? Super_::CopyConstruct(arena, *from._impl_.preview_playing_)
                 : nullptr;
  _impl_.master_speed_light_ = (CheckHasBit(cached_has_bits, 0x00000020U))
                 ? Super_::CopyConstruct(arena, *from._impl_.master_speed_light_)
                 : nullptr;
  _impl_.next_ = (CheckHasBit(cached_has_bits, 0x00000040U))
                 ? Super_::CopyConstruct(arena, *from._impl_.next_)
                 : nullptr;
  _impl_.next_ready_ = (CheckHasBit(cached_has_bits, 0x00000080U))
                 ? Super_::CopyConstruct(arena, *from._impl_.next_ready_)
                 : nullptr;
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, master_speed_bank_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, master_speed_bank_),
           offsetof(Impl_, master_speed_light_max_) -
               offsetof(Impl_, master_speed_bank_) +
               sizeof(Impl_::master_speed_light_max_));

  // @@protoc_insertion_point(copy_constructor:MIDIMappingProto)
}
PROTOBUF_NDEBUG_INLINE MIDIMappingProto::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : camera_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::MIDIMappingProto,
            PROTOBUF_FIELD_OFFSET(::MIDIMappingProto, _impl_.camera_)>()
         }
        ,
        master_speed_light_max_{127} {}

inline void MIDIMappingProto::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, prev_bank_),
           0,
           offsetof(Impl_, cue_out_bank_) -
               offsetof(Impl_, prev_bank_) +
               sizeof(Impl_::cue_out_bank_));
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, cue_out_enabled_),
           0,
           offsetof(Impl_, next_button_bank_) -
               offsetof(Impl_, cue_out_enabled_) +
               sizeof(Impl_::next_button_bank_));
}
MIDIMappingProto::~MIDIMappingProto() {
  // @@protoc_insertion_point(destructor:MIDIMappingProto)
  SharedDtor(*this);
}
inline void MIDIMappingProto::SharedDtor(MessageLite& self) {
  MIDIMappingProto& this_ = static_cast<MIDIMappingProto&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  delete this_._impl_.prev_bank_;
  delete this_._impl_.next_bank_;
  delete this_._impl_.select_bank_1_;
  delete this_._impl_.select_bank_2_;
  delete this_._impl_.select_bank_3_;
  delete this_._impl_.select_bank_4_;
  delete this_._impl_.select_bank_5_;
  delete this_._impl_.bank_1_is_selected_;
  delete this_._impl_.bank_2_is_selected_;
  delete this_._impl_.bank_3_is_selected_;
  delete this_._impl_.bank_4_is_selected_;
  delete this_._impl_.bank_5_is_selected_;
  delete this_._impl_.jog_;
  delete this_._impl_.preview_;
  delete this_._impl_.preview_ready_;
  delete this_._impl_.queue_;
  delete this_._impl_.queue_enabled_;
  delete this_._impl_.play_;
  delete this_._impl_.playing_;
  delete this_._impl_.cue_in_;
  delete this_._impl_.cue_in_enabled_;
  delete this_._impl_.cue_out_;
  delete this_._impl_.cue_out_enabled_;
  delete this_._impl_.master_speed_;
  delete this_._impl_.toggle_lock_;
  delete this_._impl_.locked_;
  delete this_._impl_.locked_blinking_;
  delete this_._impl_.play_ready_;
  delete this_._impl_.preview_playing_;
  delete this_._impl_.master_speed_light_;
  delete this_._impl_.next_;
  delete this_._impl_.next_ready_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull MIDIMappingProto_class_data_ =
        MIDIMappingProto::InternalGenerateClassData_(MIDIMappingProto_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
MIDIMappingProto::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&MIDIMappingProto_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(MIDIMappingProto_class_data_.tc_table);
  return MIDIMappingProto_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
MIDIMappingProto::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&MIDIMappingProto_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&MIDIMappingProto_globals_));
  return MIDIMappingProto_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const MIDIMappingProto::ParseTableT_
    MIDIMappingProto::_table_ =
        MIDIMappingProto::InternalGenerateParseTable_(MIDIMappingProto_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void MIDIMappingProto::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:MIDIMappingProto)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(this_._impl_.prev_bank_ != nullptr);
      this_._impl_.prev_bank_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(this_._impl_.next_bank_ != nullptr);
      this_._impl_.next_bank_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ABSL_DCHECK(this_._impl_.select_bank_1_ != nullptr);
      this_._impl_.select_bank_1_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      ABSL_DCHECK(this_._impl_.select_bank_2_ != nullptr);
      this_._impl_.select_bank_2_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ABSL_DCHECK(this_._impl_.select_bank_3_ != nullptr);
      this_._impl_.select_bank_3_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(this_._impl_.select_bank_4_ != nullptr);
      this_._impl_.select_bank_4_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      ABSL_DCHECK(this_._impl_.select_bank_5_ != nullptr);
      this_._impl_.select_bank_5_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      ABSL_DCHECK(this_._impl_.bank_1_is_selected_ != nullptr);
      this_._impl_.bank_1_is_selected_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      ABSL_DCHECK(this_._impl_.bank_2_is_selected_ != nullptr);
      this_._impl_.bank_2_is_selected_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      ABSL_DCHECK(this_._impl_.bank_3_is_selected_ != nullptr);
      this_._impl_.bank_3_is_selected_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      ABSL_DCHECK(this_._impl_.bank_4_is_selected_ != nullptr);
      this_._impl_.bank_4_is_selected_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      ABSL_DCHECK(this_._impl_.bank_5_is_selected_ != nullptr);
      this_._impl_.bank_5_is_selected_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      ABSL_DCHECK(this_._impl_.jog_ != nullptr);
      this_._impl_.jog_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00002000U)) {
      ABSL_DCHECK(this_._impl_.preview_ != nullptr);
      this_._impl_.preview_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00004000U)) {
      ABSL_DCHECK(this_._impl_.preview_ready_ != nullptr);
      this_._impl_.preview_ready_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00008000U)) {
      ABSL_DCHECK(this_._impl_.queue_ != nullptr);
      this_._impl_.queue_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x003f0000U)) {
    if (CheckHasBit(cached_has_bits, 0x00010000U)) {
      ABSL_DCHECK(this_._impl_.queue_enabled_ != nullptr);
      this_._impl_.queue_enabled_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00020000U)) {
      ABSL_DCHECK(this_._impl_.play_ != nullptr);
      this_._impl_.play_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00040000U)) {
      ABSL_DCHECK(this_._impl_.playing_ != nullptr);
      this_._impl_.playing_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00080000U)) {
      ABSL_DCHECK(this_._impl_.cue_in_ != nullptr);
      this_._impl_.cue_in_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00100000U)) {
      ABSL_DCHECK(this_._impl_.cue_in_enabled_ != nullptr);
      this_._impl_.cue_in_enabled_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00200000U)) {
      ABSL_DCHECK(this_._impl_.cue_out_ != nullptr);
      this_._impl_.cue_out_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00c00000U)) {
    ::memset(&this_._impl_.num_controller_banks_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.jog_bank_) -
                 reinterpret_cast<char*>(&this_._impl_.num_controller_banks_)) +
                 sizeof(_impl_.jog_bank_));
  }
  if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
    ::memset(&this_._impl_.preview_bank_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.cue_out_bank_) -
                 reinterpret_cast<char*>(&this_._impl_.preview_bank_)) +
                 sizeof(_impl_.cue_out_bank_));
    if (CheckHasBit(cached_has_bits, 0x20000000U)) {
      _impl_.camera_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x40000000U)) {
      ABSL_DCHECK(this_._impl_.cue_out_enabled_ != nullptr);
      this_._impl_.cue_out_enabled_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x80000000U)) {
      ABSL_DCHECK(this_._impl_.master_speed_ != nullptr);
      this_._impl_.master_speed_->Clear();
    }
  }
  cached_has_bits = this_._impl_._has_bits_[1];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(this_._impl_.toggle_lock_ != nullptr);
      this_._impl_.toggle_lock_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(this_._impl_.locked_ != nullptr);
      this_._impl_.locked_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ABSL_DCHECK(this_._impl_.locked_blinking_ != nullptr);
      this_._impl_.locked_blinking_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      ABSL_DCHECK(this_._impl_.play_ready_ != nullptr);
      this_._impl_.play_ready_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ABSL_DCHECK(this_._impl_.preview_playing_ != nullptr);
      this_._impl_.preview_playing_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(this_._impl_.master_speed_light_ != nullptr);
      this_._impl_.master_speed_light_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      ABSL_DCHECK(this_._impl_.next_ != nullptr);
      this_._impl_.next_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      ABSL_DCHECK(this_._impl_.next_ready_ != nullptr);
      this_._impl_.next_ready_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00001f00U)) {
    ::memset(&this_._impl_.master_speed_bank_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.next_button_bank_) -
                 reinterpret_cast<char*>(&this_._impl_.master_speed_bank_)) +
                 sizeof(_impl_.next_button_bank_));
    this_._impl_.master_speed_light_max_ = 127;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

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

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional int32 num_controller_banks = 1 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00400000U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<1>(
            stream, this_._internal_num_controller_banks(), target);
  }

  // optional .MIDIButtonProto prev_bank = 2;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        2, *this_._impl_.prev_bank_, this_._impl_.prev_bank_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDIButtonProto next_bank = 3;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        3, *this_._impl_.next_bank_, this_._impl_.next_bank_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDIButtonProto select_bank_1 = 4;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        4, *this_._impl_.select_bank_1_, this_._impl_.select_bank_1_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDIButtonProto select_bank_2 = 5;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        5, *this_._impl_.select_bank_2_, this_._impl_.select_bank_2_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDIButtonProto select_bank_3 = 6;
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        6, *this_._impl_.select_bank_3_, this_._impl_.select_bank_3_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDIButtonProto select_bank_4 = 7;
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        7, *this_._impl_.select_bank_4_, this_._impl_.select_bank_4_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDIButtonProto select_bank_5 = 8;
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        8, *this_._impl_.select_bank_5_, this_._impl_.select_bank_5_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDILightProto bank_1_is_selected = 9;
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        9, *this_._impl_.bank_1_is_selected_, this_._impl_.bank_1_is_selected_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDILightProto bank_2_is_selected = 10;
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        10, *this_._impl_.bank_2_is_selected_, this_._impl_.bank_2_is_selected_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDILightProto bank_3_is_selected = 11;
  if (CheckHasBit(cached_has_bits, 0x00000200U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        11, *this_._impl_.bank_3_is_selected_, this_._impl_.bank_3_is_selected_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDILightProto bank_4_is_selected = 12;
  if (CheckHasBit(cached_has_bits, 0x00000400U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        12, *this_._impl_.bank_4_is_selected_, this_._impl_.bank_4_is_selected_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDILightProto bank_5_is_selected = 13;
  if (CheckHasBit(cached_has_bits, 0x00000800U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        13, *this_._impl_.bank_5_is_selected_, this_._impl_.bank_5_is_selected_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDIControllerProto jog = 16;
  if (CheckHasBit(cached_has_bits, 0x00001000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        16, *this_._impl_.jog_, this_._impl_.jog_->GetCachedSize(), target,
        stream);
  }

  // optional int32 jog_bank = 17;
  if (CheckHasBit(cached_has_bits, 0x00800000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        17, this_._internal_jog_bank(), target);
  }

  // optional .MIDIButtonProto preview = 18;
  if (CheckHasBit(cached_has_bits, 0x00002000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        18, *this_._impl_.preview_, this_._impl_.preview_->GetCachedSize(), target,
        stream);
  }

  // optional int32 preview_bank = 19;
  if (CheckHasBit(cached_has_bits, 0x01000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        19, this_._internal_preview_bank(), target);
  }

  // optional .MIDILightProto preview_ready = 20;
  if (CheckHasBit(cached_has_bits, 0x00004000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        20, *this_._impl_.preview_ready_, this_._impl_.preview_ready_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDIButtonProto queue = 21;
  if (CheckHasBit(cached_has_bits, 0x00008000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        21, *this_._impl_.queue_, this_._impl_.queue_->GetCachedSize(), target,
        stream);
  }

  // optional int32 queue_bank = 22;
  if (CheckHasBit(cached_has_bits, 0x02000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        22, this_._internal_queue_bank(), target);
  }

  // optional .MIDILightProto queue_enabled = 23;
  if (CheckHasBit(cached_has_bits, 0x00010000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        23, *this_._impl_.queue_enabled_, this_._impl_.queue_enabled_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDIButtonProto play = 24;
  if (CheckHasBit(cached_has_bits, 0x00020000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        24, *this_._impl_.play_, this_._impl_.play_->GetCachedSize(), target,
        stream);
  }

  // optional int32 play_bank = 25;
  if (CheckHasBit(cached_has_bits, 0x04000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        25, this_._internal_play_bank(), target);
  }

  // optional .MIDILightProto playing = 26;
  if (CheckHasBit(cached_has_bits, 0x00040000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        26, *this_._impl_.playing_, this_._impl_.playing_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDIButtonProto cue_in = 27;
  if (CheckHasBit(cached_has_bits, 0x00080000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        27, *this_._impl_.cue_in_, this_._impl_.cue_in_->GetCachedSize(), target,
        stream);
  }

  // optional int32 cue_in_bank = 28;
  if (CheckHasBit(cached_has_bits, 0x08000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        28, this_._internal_cue_in_bank(), target);
  }

  // optional .MIDILightProto cue_in_enabled = 29;
  if (CheckHasBit(cached_has_bits, 0x00100000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        29, *this_._impl_.cue_in_enabled_, this_._impl_.cue_in_enabled_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDIButtonProto cue_out = 30;
  if (CheckHasBit(cached_has_bits, 0x00200000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        30, *this_._impl_.cue_out_, this_._impl_.cue_out_->GetCachedSize(), target,
        stream);
  }

  // optional int32 cue_out_bank = 31;
  if (CheckHasBit(cached_has_bits, 0x10000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        31, this_._internal_cue_out_bank(), target);
  }

  // optional .MIDILightProto cue_out_enabled = 32;
  if (CheckHasBit(cached_has_bits, 0x40000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        32, *this_._impl_.cue_out_enabled_, this_._impl_.cue_out_enabled_->GetCachedSize(), target,
        stream);
  }

  // repeated .CameraMIDIMappingProto camera = 33;
  if (CheckHasBit(cached_has_bits, 0x20000000U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_camera_size());
         i < n; i++) {
      const auto& repfield = this_._internal_camera().Get(i);
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          33, repfield, repfield.GetCachedSize(), target,
          stream);
    }
  }

  // optional .MIDIControllerProto master_speed = 34;
  if (CheckHasBit(cached_has_bits, 0x80000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        34, *this_._impl_.master_speed_, this_._impl_.master_speed_->GetCachedSize(), target,
        stream);
  }

  cached_has_bits = this_._impl_._has_bits_[1];
  // optional int32 master_speed_bank = 35;
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        35, this_._internal_master_speed_bank(), target);
  }

  // optional .MIDIButtonProto toggle_lock = 36;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        36, *this_._impl_.toggle_lock_, this_._impl_.toggle_lock_->GetCachedSize(), target,
        stream);
  }

  // optional int32 toggle_lock_bank = 37;
  if (CheckHasBit(cached_has_bits, 0x00000200U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        37, this_._internal_toggle_lock_bank(), target);
  }

  // optional .MIDILightProto locked = 38;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        38, *this_._impl_.locked_, this_._impl_.locked_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDILightProto locked_blinking = 39;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        39, *this_._impl_.locked_blinking_, this_._impl_.locked_blinking_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDILightProto play_ready = 40;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        40, *this_._impl_.play_ready_, this_._impl_.play_ready_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDILightProto preview_playing = 41;
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        41, *this_._impl_.preview_playing_, this_._impl_.preview_playing_->GetCachedSize(), target,
        stream);
  }

  // optional .MIDIControllerProto master_speed_light = 42;
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        42, *this_._impl_.master_speed_light_, this_._impl_.master_speed_light_->GetCachedSize(), target,
        stream);
  }

  // optional int32 master_speed_light_min = 43;
  if (CheckHasBit(cached_has_bits, 0x00000400U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        43, this_._internal_master_speed_light_min(), target);
  }

  // optional int32 master_speed_light_max = 44 [default = 127];
  if (CheckHasBit(cached_has_bits, 0x00001000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        44, this_._internal_master_speed_light_max(), target);
  }

  // optional .MIDIButtonProto next = 45;
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        45, *this_._impl_.next_, this_._impl_.next_->GetCachedSize(), target,
        stream);
  }

  // optional int32 next_button_bank = 46;
  if (CheckHasBit(cached_has_bits, 0x00000800U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        46, this_._internal_next_button_bank(), target);
  }

  // optional .MIDILightProto next_ready = 47;
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        47, *this_._impl_.next_ready_, this_._impl_.next_ready_->GetCachedSize(), target,
        stream);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:MIDIMappingProto)
  return target;
}

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

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    // optional .MIDIButtonProto prev_bank = 2;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.prev_bank_);
    }
    // optional .MIDIButtonProto next_bank = 3;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.next_bank_);
    }
    // optional .MIDIButtonProto select_bank_1 = 4;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.select_bank_1_);
    }
    // optional .MIDIButtonProto select_bank_2 = 5;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.select_bank_2_);
    }
    // optional .MIDIButtonProto select_bank_3 = 6;
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.select_bank_3_);
    }
    // optional .MIDIButtonProto select_bank_4 = 7;
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.select_bank_4_);
    }
    // optional .MIDIButtonProto select_bank_5 = 8;
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.select_bank_5_);
    }
    // optional .MIDILightProto bank_1_is_selected = 9;
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.bank_1_is_selected_);
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
    // optional .MIDILightProto bank_2_is_selected = 10;
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.bank_2_is_selected_);
    }
    // optional .MIDILightProto bank_3_is_selected = 11;
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.bank_3_is_selected_);
    }
    // optional .MIDILightProto bank_4_is_selected = 12;
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.bank_4_is_selected_);
    }
    // optional .MIDILightProto bank_5_is_selected = 13;
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.bank_5_is_selected_);
    }
    // optional .MIDIControllerProto jog = 16;
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.jog_);
    }
    // optional .MIDIButtonProto preview = 18;
    if (CheckHasBit(cached_has_bits, 0x00002000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.preview_);
    }
    // optional .MIDILightProto preview_ready = 20;
    if (CheckHasBit(cached_has_bits, 0x00004000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.preview_ready_);
    }
    // optional .MIDIButtonProto queue = 21;
    if (CheckHasBit(cached_has_bits, 0x00008000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.queue_);
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
    // optional .MIDILightProto queue_enabled = 23;
    if (CheckHasBit(cached_has_bits, 0x00010000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.queue_enabled_);
    }
    // optional .MIDIButtonProto play = 24;
    if (CheckHasBit(cached_has_bits, 0x00020000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.play_);
    }
    // optional .MIDILightProto playing = 26;
    if (CheckHasBit(cached_has_bits, 0x00040000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.playing_);
    }
    // optional .MIDIButtonProto cue_in = 27;
    if (CheckHasBit(cached_has_bits, 0x00080000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.cue_in_);
    }
    // optional .MIDILightProto cue_in_enabled = 29;
    if (CheckHasBit(cached_has_bits, 0x00100000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.cue_in_enabled_);
    }
    // optional .MIDIButtonProto cue_out = 30;
    if (CheckHasBit(cached_has_bits, 0x00200000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.cue_out_);
    }
    // optional int32 num_controller_banks = 1 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00400000U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_num_controller_banks());
    }
    // optional int32 jog_bank = 17;
    if (CheckHasBit(cached_has_bits, 0x00800000U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                      this_._internal_jog_bank());
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
    // optional int32 preview_bank = 19;
    if (CheckHasBit(cached_has_bits, 0x01000000U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                      this_._internal_preview_bank());
    }
    // optional int32 queue_bank = 22;
    if (CheckHasBit(cached_has_bits, 0x02000000U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                      this_._internal_queue_bank());
    }
    // optional int32 play_bank = 25;
    if (CheckHasBit(cached_has_bits, 0x04000000U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                      this_._internal_play_bank());
    }
    // optional int32 cue_in_bank = 28;
    if (CheckHasBit(cached_has_bits, 0x08000000U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                      this_._internal_cue_in_bank());
    }
    // optional int32 cue_out_bank = 31;
    if (CheckHasBit(cached_has_bits, 0x10000000U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                      this_._internal_cue_out_bank());
    }
    // repeated .CameraMIDIMappingProto camera = 33;
    if (CheckHasBit(cached_has_bits, 0x20000000U)) {
      total_size += 2UL * this_._internal_camera_size();
      for (const auto& msg : this_._internal_camera()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
    // optional .MIDILightProto cue_out_enabled = 32;
    if (CheckHasBit(cached_has_bits, 0x40000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.cue_out_enabled_);
    }
    // optional .MIDIControllerProto master_speed = 34;
    if (CheckHasBit(cached_has_bits, 0x80000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.master_speed_);
    }
  }
  cached_has_bits = this_._impl_._has_bits_[1];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    // optional .MIDIButtonProto toggle_lock = 36;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.toggle_lock_);
    }
    // optional .MIDILightProto locked = 38;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.locked_);
    }
    // optional .MIDILightProto locked_blinking = 39;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.locked_blinking_);
    }
    // optional .MIDILightProto play_ready = 40;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.play_ready_);
    }
    // optional .MIDILightProto preview_playing = 41;
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.preview_playing_);
    }
    // optional .MIDIControllerProto master_speed_light = 42;
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.master_speed_light_);
    }
    // optional .MIDIButtonProto next = 45;
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.next_);
    }
    // optional .MIDILightProto next_ready = 47;
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.next_ready_);
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00001f00U)) {
    // optional int32 master_speed_bank = 35;
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                      this_._internal_master_speed_bank());
    }
    // optional int32 toggle_lock_bank = 37;
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                      this_._internal_toggle_lock_bank());
    }
    // optional int32 master_speed_light_min = 43;
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                      this_._internal_master_speed_light_min());
    }
    // optional int32 next_button_bank = 46;
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                      this_._internal_next_button_bank());
    }
    // optional int32 master_speed_light_max = 44 [default = 127];
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                      this_._internal_master_speed_light_max());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void MIDIMappingProto::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<MIDIMappingProto*>(&to_msg);
  auto& from = static_cast<const MIDIMappingProto&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:MIDIMappingProto)
  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)) {
      ABSL_DCHECK(from._impl_.prev_bank_ != nullptr);
      if (_this->_impl_.prev_bank_ == nullptr) {
        _this->_impl_.prev_bank_ = Super_::CopyConstruct(arena, *from._impl_.prev_bank_);
      } else {
        _this->_impl_.prev_bank_->MergeFrom(*from._impl_.prev_bank_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(from._impl_.next_bank_ != nullptr);
      if (_this->_impl_.next_bank_ == nullptr) {
        _this->_impl_.next_bank_ = Super_::CopyConstruct(arena, *from._impl_.next_bank_);
      } else {
        _this->_impl_.next_bank_->MergeFrom(*from._impl_.next_bank_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ABSL_DCHECK(from._impl_.select_bank_1_ != nullptr);
      if (_this->_impl_.select_bank_1_ == nullptr) {
        _this->_impl_.select_bank_1_ = Super_::CopyConstruct(arena, *from._impl_.select_bank_1_);
      } else {
        _this->_impl_.select_bank_1_->MergeFrom(*from._impl_.select_bank_1_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      ABSL_DCHECK(from._impl_.select_bank_2_ != nullptr);
      if (_this->_impl_.select_bank_2_ == nullptr) {
        _this->_impl_.select_bank_2_ = Super_::CopyConstruct(arena, *from._impl_.select_bank_2_);
      } else {
        _this->_impl_.select_bank_2_->MergeFrom(*from._impl_.select_bank_2_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ABSL_DCHECK(from._impl_.select_bank_3_ != nullptr);
      if (_this->_impl_.select_bank_3_ == nullptr) {
        _this->_impl_.select_bank_3_ = Super_::CopyConstruct(arena, *from._impl_.select_bank_3_);
      } else {
        _this->_impl_.select_bank_3_->MergeFrom(*from._impl_.select_bank_3_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(from._impl_.select_bank_4_ != nullptr);
      if (_this->_impl_.select_bank_4_ == nullptr) {
        _this->_impl_.select_bank_4_ = Super_::CopyConstruct(arena, *from._impl_.select_bank_4_);
      } else {
        _this->_impl_.select_bank_4_->MergeFrom(*from._impl_.select_bank_4_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      ABSL_DCHECK(from._impl_.select_bank_5_ != nullptr);
      if (_this->_impl_.select_bank_5_ == nullptr) {
        _this->_impl_.select_bank_5_ = Super_::CopyConstruct(arena, *from._impl_.select_bank_5_);
      } else {
        _this->_impl_.select_bank_5_->MergeFrom(*from._impl_.select_bank_5_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      ABSL_DCHECK(from._impl_.bank_1_is_selected_ != nullptr);
      if (_this->_impl_.bank_1_is_selected_ == nullptr) {
        _this->_impl_.bank_1_is_selected_ = Super_::CopyConstruct(arena, *from._impl_.bank_1_is_selected_);
      } else {
        _this->_impl_.bank_1_is_selected_->MergeFrom(*from._impl_.bank_1_is_selected_);
      }
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      ABSL_DCHECK(from._impl_.bank_2_is_selected_ != nullptr);
      if (_this->_impl_.bank_2_is_selected_ == nullptr) {
        _this->_impl_.bank_2_is_selected_ = Super_::CopyConstruct(arena, *from._impl_.bank_2_is_selected_);
      } else {
        _this->_impl_.bank_2_is_selected_->MergeFrom(*from._impl_.bank_2_is_selected_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      ABSL_DCHECK(from._impl_.bank_3_is_selected_ != nullptr);
      if (_this->_impl_.bank_3_is_selected_ == nullptr) {
        _this->_impl_.bank_3_is_selected_ = Super_::CopyConstruct(arena, *from._impl_.bank_3_is_selected_);
      } else {
        _this->_impl_.bank_3_is_selected_->MergeFrom(*from._impl_.bank_3_is_selected_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      ABSL_DCHECK(from._impl_.bank_4_is_selected_ != nullptr);
      if (_this->_impl_.bank_4_is_selected_ == nullptr) {
        _this->_impl_.bank_4_is_selected_ = Super_::CopyConstruct(arena, *from._impl_.bank_4_is_selected_);
      } else {
        _this->_impl_.bank_4_is_selected_->MergeFrom(*from._impl_.bank_4_is_selected_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      ABSL_DCHECK(from._impl_.bank_5_is_selected_ != nullptr);
      if (_this->_impl_.bank_5_is_selected_ == nullptr) {
        _this->_impl_.bank_5_is_selected_ = Super_::CopyConstruct(arena, *from._impl_.bank_5_is_selected_);
      } else {
        _this->_impl_.bank_5_is_selected_->MergeFrom(*from._impl_.bank_5_is_selected_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      ABSL_DCHECK(from._impl_.jog_ != nullptr);
      if (_this->_impl_.jog_ == nullptr) {
        _this->_impl_.jog_ = Super_::CopyConstruct(arena, *from._impl_.jog_);
      } else {
        _this->_impl_.jog_->MergeFrom(*from._impl_.jog_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00002000U)) {
      ABSL_DCHECK(from._impl_.preview_ != nullptr);
      if (_this->_impl_.preview_ == nullptr) {
        _this->_impl_.preview_ = Super_::CopyConstruct(arena, *from._impl_.preview_);
      } else {
        _this->_impl_.preview_->MergeFrom(*from._impl_.preview_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00004000U)) {
      ABSL_DCHECK(from._impl_.preview_ready_ != nullptr);
      if (_this->_impl_.preview_ready_ == nullptr) {
        _this->_impl_.preview_ready_ = Super_::CopyConstruct(arena, *from._impl_.preview_ready_);
      } else {
        _this->_impl_.preview_ready_->MergeFrom(*from._impl_.preview_ready_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00008000U)) {
      ABSL_DCHECK(from._impl_.queue_ != nullptr);
      if (_this->_impl_.queue_ == nullptr) {
        _this->_impl_.queue_ = Super_::CopyConstruct(arena, *from._impl_.queue_);
      } else {
        _this->_impl_.queue_->MergeFrom(*from._impl_.queue_);
      }
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
    if (CheckHasBit(cached_has_bits, 0x00010000U)) {
      ABSL_DCHECK(from._impl_.queue_enabled_ != nullptr);
      if (_this->_impl_.queue_enabled_ == nullptr) {
        _this->_impl_.queue_enabled_ = Super_::CopyConstruct(arena, *from._impl_.queue_enabled_);
      } else {
        _this->_impl_.queue_enabled_->MergeFrom(*from._impl_.queue_enabled_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00020000U)) {
      ABSL_DCHECK(from._impl_.play_ != nullptr);
      if (_this->_impl_.play_ == nullptr) {
        _this->_impl_.play_ = Super_::CopyConstruct(arena, *from._impl_.play_);
      } else {
        _this->_impl_.play_->MergeFrom(*from._impl_.play_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00040000U)) {
      ABSL_DCHECK(from._impl_.playing_ != nullptr);
      if (_this->_impl_.playing_ == nullptr) {
        _this->_impl_.playing_ = Super_::CopyConstruct(arena, *from._impl_.playing_);
      } else {
        _this->_impl_.playing_->MergeFrom(*from._impl_.playing_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00080000U)) {
      ABSL_DCHECK(from._impl_.cue_in_ != nullptr);
      if (_this->_impl_.cue_in_ == nullptr) {
        _this->_impl_.cue_in_ = Super_::CopyConstruct(arena, *from._impl_.cue_in_);
      } else {
        _this->_impl_.cue_in_->MergeFrom(*from._impl_.cue_in_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00100000U)) {
      ABSL_DCHECK(from._impl_.cue_in_enabled_ != nullptr);
      if (_this->_impl_.cue_in_enabled_ == nullptr) {
        _this->_impl_.cue_in_enabled_ = Super_::CopyConstruct(arena, *from._impl_.cue_in_enabled_);
      } else {
        _this->_impl_.cue_in_enabled_->MergeFrom(*from._impl_.cue_in_enabled_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00200000U)) {
      ABSL_DCHECK(from._impl_.cue_out_ != nullptr);
      if (_this->_impl_.cue_out_ == nullptr) {
        _this->_impl_.cue_out_ = Super_::CopyConstruct(arena, *from._impl_.cue_out_);
      } else {
        _this->_impl_.cue_out_->MergeFrom(*from._impl_.cue_out_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00400000U)) {
      _this->_impl_.num_controller_banks_ = from._impl_.num_controller_banks_;
    }
    if (CheckHasBit(cached_has_bits, 0x00800000U)) {
      _this->_impl_.jog_bank_ = from._impl_.jog_bank_;
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
    if (CheckHasBit(cached_has_bits, 0x01000000U)) {
      _this->_impl_.preview_bank_ = from._impl_.preview_bank_;
    }
    if (CheckHasBit(cached_has_bits, 0x02000000U)) {
      _this->_impl_.queue_bank_ = from._impl_.queue_bank_;
    }
    if (CheckHasBit(cached_has_bits, 0x04000000U)) {
      _this->_impl_.play_bank_ = from._impl_.play_bank_;
    }
    if (CheckHasBit(cached_has_bits, 0x08000000U)) {
      _this->_impl_.cue_in_bank_ = from._impl_.cue_in_bank_;
    }
    if (CheckHasBit(cached_has_bits, 0x10000000U)) {
      _this->_impl_.cue_out_bank_ = from._impl_.cue_out_bank_;
    }
    if (CheckHasBit(cached_has_bits, 0x20000000U)) {
      _this->_internal_mutable_camera()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_camera());
    }
    if (CheckHasBit(cached_has_bits, 0x40000000U)) {
      ABSL_DCHECK(from._impl_.cue_out_enabled_ != nullptr);
      if (_this->_impl_.cue_out_enabled_ == nullptr) {
        _this->_impl_.cue_out_enabled_ = Super_::CopyConstruct(arena, *from._impl_.cue_out_enabled_);
      } else {
        _this->_impl_.cue_out_enabled_->MergeFrom(*from._impl_.cue_out_enabled_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x80000000U)) {
      ABSL_DCHECK(from._impl_.master_speed_ != nullptr);
      if (_this->_impl_.master_speed_ == nullptr) {
        _this->_impl_.master_speed_ = Super_::CopyConstruct(arena, *from._impl_.master_speed_);
      } else {
        _this->_impl_.master_speed_->MergeFrom(*from._impl_.master_speed_);
      }
    }
  }
  cached_has_bits = from._impl_._has_bits_[1];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(from._impl_.toggle_lock_ != nullptr);
      if (_this->_impl_.toggle_lock_ == nullptr) {
        _this->_impl_.toggle_lock_ = Super_::CopyConstruct(arena, *from._impl_.toggle_lock_);
      } else {
        _this->_impl_.toggle_lock_->MergeFrom(*from._impl_.toggle_lock_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(from._impl_.locked_ != nullptr);
      if (_this->_impl_.locked_ == nullptr) {
        _this->_impl_.locked_ = Super_::CopyConstruct(arena, *from._impl_.locked_);
      } else {
        _this->_impl_.locked_->MergeFrom(*from._impl_.locked_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ABSL_DCHECK(from._impl_.locked_blinking_ != nullptr);
      if (_this->_impl_.locked_blinking_ == nullptr) {
        _this->_impl_.locked_blinking_ = Super_::CopyConstruct(arena, *from._impl_.locked_blinking_);
      } else {
        _this->_impl_.locked_blinking_->MergeFrom(*from._impl_.locked_blinking_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      ABSL_DCHECK(from._impl_.play_ready_ != nullptr);
      if (_this->_impl_.play_ready_ == nullptr) {
        _this->_impl_.play_ready_ = Super_::CopyConstruct(arena, *from._impl_.play_ready_);
      } else {
        _this->_impl_.play_ready_->MergeFrom(*from._impl_.play_ready_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ABSL_DCHECK(from._impl_.preview_playing_ != nullptr);
      if (_this->_impl_.preview_playing_ == nullptr) {
        _this->_impl_.preview_playing_ = Super_::CopyConstruct(arena, *from._impl_.preview_playing_);
      } else {
        _this->_impl_.preview_playing_->MergeFrom(*from._impl_.preview_playing_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(from._impl_.master_speed_light_ != nullptr);
      if (_this->_impl_.master_speed_light_ == nullptr) {
        _this->_impl_.master_speed_light_ = Super_::CopyConstruct(arena, *from._impl_.master_speed_light_);
      } else {
        _this->_impl_.master_speed_light_->MergeFrom(*from._impl_.master_speed_light_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      ABSL_DCHECK(from._impl_.next_ != nullptr);
      if (_this->_impl_.next_ == nullptr) {
        _this->_impl_.next_ = Super_::CopyConstruct(arena, *from._impl_.next_);
      } else {
        _this->_impl_.next_->MergeFrom(*from._impl_.next_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      ABSL_DCHECK(from._impl_.next_ready_ != nullptr);
      if (_this->_impl_.next_ready_ == nullptr) {
        _this->_impl_.next_ready_ = Super_::CopyConstruct(arena, *from._impl_.next_ready_);
      } else {
        _this->_impl_.next_ready_->MergeFrom(*from._impl_.next_ready_);
      }
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00001f00U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      _this->_impl_.master_speed_bank_ = from._impl_.master_speed_bank_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      _this->_impl_.toggle_lock_bank_ = from._impl_.toggle_lock_bank_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      _this->_impl_.master_speed_light_min_ = from._impl_.master_speed_light_min_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      _this->_impl_.next_button_bank_ = from._impl_.next_button_bank_;
    }
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      _this->_impl_.master_speed_light_max_ = from._impl_.master_speed_light_max_;
    }
  }
  _this->_impl_._has_bits_.Or(from._impl_._has_bits_);
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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

PROTOBUF_NOINLINE bool MIDIMappingProto::IsInitializedImpl(
    const MessageLite& msg) {
  auto& this_ = static_cast<const MIDIMappingProto&>(msg);
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00000001U)) {
    if (!this_._impl_.prev_bank_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00000002U)) {
    if (!this_._impl_.next_bank_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00000004U)) {
    if (!this_._impl_.select_bank_1_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00000008U)) {
    if (!this_._impl_.select_bank_2_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00000010U)) {
    if (!this_._impl_.select_bank_3_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00000020U)) {
    if (!this_._impl_.select_bank_4_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00000040U)) {
    if (!this_._impl_.select_bank_5_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00000080U)) {
    if (!this_._impl_.bank_1_is_selected_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00000100U)) {
    if (!this_._impl_.bank_2_is_selected_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00000200U)) {
    if (!this_._impl_.bank_3_is_selected_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00000400U)) {
    if (!this_._impl_.bank_4_is_selected_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00000800U)) {
    if (!this_._impl_.bank_5_is_selected_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00001000U)) {
    if (!this_._impl_.jog_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00002000U)) {
    if (!this_._impl_.preview_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00004000U)) {
    if (!this_._impl_.preview_ready_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00008000U)) {
    if (!this_._impl_.queue_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00010000U)) {
    if (!this_._impl_.queue_enabled_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00020000U)) {
    if (!this_._impl_.play_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00040000U)) {
    if (!this_._impl_.playing_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00080000U)) {
    if (!this_._impl_.cue_in_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00100000U)) {
    if (!this_._impl_.cue_in_enabled_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00200000U)) {
    if (!this_._impl_.cue_out_->IsInitialized()) return false;
  }
  if (!::google::protobuf::internal::AllAreInitialized(this_._internal_camera()))
    return false;
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x40000000U)) {
    if (!this_._impl_.cue_out_enabled_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x80000000U)) {
    if (!this_._impl_.master_speed_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[1], 0x00000001U)) {
    if (!this_._impl_.toggle_lock_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[1], 0x00000002U)) {
    if (!this_._impl_.locked_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[1], 0x00000004U)) {
    if (!this_._impl_.locked_blinking_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[1], 0x00000008U)) {
    if (!this_._impl_.play_ready_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[1], 0x00000010U)) {
    if (!this_._impl_.preview_playing_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[1], 0x00000020U)) {
    if (!this_._impl_.master_speed_light_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[1], 0x00000040U)) {
    if (!this_._impl_.next_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[1], 0x00000080U)) {
    if (!this_._impl_.next_ready_->IsInitialized()) return false;
  }
  return true;
}

void MIDIMappingProto::InternalSwap(MIDIMappingProto* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_._has_bits_[1], other->_impl_._has_bits_[1]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.cue_out_bank_)
      + sizeof(MIDIMappingProto::_impl_.cue_out_bank_)
      - PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.prev_bank_)>(
          reinterpret_cast<char*>(&_impl_.prev_bank_),
          reinterpret_cast<char*>(&other->_impl_.prev_bank_));
  _impl_.camera_.InternalSwap(&other->_impl_.camera_);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.master_speed_light_max_)
      + sizeof(MIDIMappingProto::_impl_.master_speed_light_max_)
      - PROTOBUF_FIELD_OFFSET(MIDIMappingProto, _impl_.cue_out_enabled_)>(
          reinterpret_cast<char*>(&_impl_.cue_out_enabled_),
          reinterpret_cast<char*>(&other->_impl_.cue_out_enabled_));
}

::google::protobuf::Metadata MIDIMappingProto::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// @@protoc_insertion_point(namespace_scope)
namespace google {
namespace protobuf {
}  // namespace protobuf
}  // namespace google
// @@protoc_insertion_point(global_scope)
PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 static ::std::false_type
    _static_init2_ [[maybe_unused]] =
        (::_pbi::AddDescriptors(&descriptor_table_futatabi_5fmidi_5fmapping_2eproto),
         ::std::false_type{});
#include "google/protobuf/port_undef.inc"
